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>
25 lines
725 B
JSON
25 lines
725 B
JSON
{
|
|
"name": "devdesk",
|
|
"private": true,
|
|
"description": "Persistent browser terminal for Claude Code (ttyd + tmux), LotusGuild TDS styling",
|
|
"license": "MIT",
|
|
"type": "module",
|
|
"engines": { "node": ">=18" },
|
|
"scripts": {
|
|
"build": "node web/build.mjs",
|
|
"lint": "eslint --ext .js,.mjs web/src web/build.mjs tests/protocol.test.mjs",
|
|
"test": "node --test tests/"
|
|
},
|
|
"devDependencies": {
|
|
"@fontsource/jetbrains-mono": "5.3.0",
|
|
"@xterm/addon-clipboard": "0.2.0",
|
|
"@xterm/addon-fit": "0.11.0",
|
|
"@xterm/addon-unicode11": "0.9.0",
|
|
"@xterm/addon-web-links": "0.12.0",
|
|
"@xterm/addon-webgl": "0.19.0",
|
|
"@xterm/xterm": "6.0.0",
|
|
"esbuild": "0.28.2",
|
|
"eslint": "8.57.1"
|
|
}
|
|
}
|