feat: DevDesk v0.1.0, a persistent browser terminal for Claude Code
ttyd serves a single-file xterm.js UI styled with the LotusGuild TDS (web_template base.css). Sessions live in a dedicated tmux server unit (devdesk-tmux.service), so restarting or upgrading the web unit never stops Claude. Each named session maps to a project directory. A Claude SessionStart hook records the conversation ID, so after a reboot the session resumes that exact conversation. - bin/devdesk: attach / new / ls / end / pick, with an fzf picker - ttyd requires a credential that NPM injects; origin check enabled - debian/: dh 13 with --no-stop-on-upgrade for the tmux unit, bundled sha256-verified ttyd 1.7.7, lintian overrides, man page - CI: lint, test, build, smoke-test, artifact; v* tags publish to the Gitea apt registry and create a release Refs: tinker ticket 887531976 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Vendored
+29
@@ -0,0 +1,29 @@
|
||||
[Unit]
|
||||
Description=DevDesk tmux server (persistent Claude Code sessions)
|
||||
Documentation=https://code.lotusguild.org/LotusGuild/devdesk
|
||||
Wants=network-online.target
|
||||
After=network-online.target
|
||||
|
||||
# Deliberately an unrestricted root shell host: no ProtectSystem/ProtectHome/PrivateTmp.
|
||||
[Service]
|
||||
Type=simple
|
||||
User=root
|
||||
Environment=HOME=/root USER=root LOGNAME=root SHELL=/bin/bash LANG=C.UTF-8
|
||||
Environment=PATH=/root/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
|
||||
EnvironmentFile=-/etc/devdesk/env
|
||||
WorkingDirectory=-/root
|
||||
RuntimeDirectory=devdesk
|
||||
RuntimeDirectoryMode=0700
|
||||
StateDirectory=devdesk
|
||||
StateDirectoryMode=0700
|
||||
ExecStart=/usr/bin/tmux -u -D -S /run/devdesk/tmux.sock -f /usr/share/devdesk/tmux.conf
|
||||
ExecStartPost=/usr/lib/devdesk/devdesk-tmux-ready
|
||||
# One OOM-killed build inside a session must not take every session down.
|
||||
OOMPolicy=continue
|
||||
KillMode=mixed
|
||||
Restart=on-failure
|
||||
RestartSec=5
|
||||
TimeoutStopSec=30
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
Reference in New Issue
Block a user