Commit Graph

16 Commits

Author SHA1 Message Date
d125a8d6ec fix(tmux): hide web terminal proxy sessions 2026-08-12 11:20:58 +08:00
50371cfb0c ops: use host-managed local service list 2026-08-12 11:20:48 +08:00
176119ca29 fix(auth): persist login and skip redundant login page 2026-08-12 11:20:34 +08:00
76b2ac69f8 fix: let active tmux clients control window size
Keep the global window-size=latest policy for linked web and iOS sessions so switching between phone and Mac sends SIGWINCH and reflows the shared pane.
2026-07-28 23:53:01 +08:00
998dfc9f8e ops: pin node 24 from nvm in start script
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-28 21:21:06 +08:00
e5d9799018 feat(ui): GPU + Live Agents dashboard, dark theme
- drop quota / repos / headless-task panels; page is now GPU board +
  Live Agents (frontend only, headless task API still available)
- Live Agents: grouped by tmux session, launch form (engine/session/cwd/
  window name), open-terminal link per agent
- compact GPU board: multi-column host cards, fixed 4-per-row GPU thumbs
  with status glow, expanded host spans full row
- permanent dark theme tuned for a monitoring dashboard; terminal-styled
  session group headers; refresh now polls three light endpoints instead
  of the full dashboard aggregate

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-28 21:20:52 +08:00
cd1e9e09e7 ops: ttyd web terminal sidecar behind nginx auth_request
- tmux-web-attach.sh: attach browser to one window via link-window into a
  private temp session (no session-group pollution); window-size smallest
  while attached so the browser never gets cut off; mouse on for natural
  wheel/touch scrolling; status bar off; destroy-unattached cleanup
- start-ttyd.sh: ttyd on 127.0.0.1:7681, base path /term, url-arg enabled,
  Tokyo Night theme, system mono stack, fontSize 14
- systemd user unit + install script registration
- nginx: /term/ proxied with websocket upgrade, gated by auth_request to
  the kanban cookie check; unauthenticated -> 302 /login

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-28 21:20:40 +08:00
f7d6df8756 feat: tmux live agent discovery and launch API
- src/services/tmux.js: parse tmux panes (claude/node->codex engine match),
  collect running agents, launch agent in new or existing session via
  new-window/new-session + send-keys (window survives agent exit)
- routes: GET/POST /api/tmux/agents, GET /api/auth/check (for nginx
  auth_request), liveAgents in /api/dashboard aggregate
- tests for the pure parser

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-28 21:20:26 +08:00
bf926e327f feat(ui): persist expand state, GPU abnormal indicator, slower auto-refresh
- Remember history task and stdout/stderr terminal open state across the 60s refresh so they no longer collapse on every poll.
- Mark GPUs with allocated memory but near-zero utilization as `abnormal` (orange) — covers stuck processes that previously rendered as busy.
- Bump dashboard auto-refresh from 30s to 60s.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-15 15:08:40 +08:00
7ab826ac7e feat: add Claude Code and Qoder agent engines
- Introduce `engine` field on agent profiles (codex/claude/qoder); auto-inferred from command when omitted.
- Default profiles now include `claude-bypass` (mirrors `ccx='claude --permission-mode bypassPermissions'`) and `qoder-yolo` (mirrors `qxx='qodercli --yolo'`), both running headless with `-p --output-format stream-json` so session ids can be extracted for resume.
- Stream-json engines share parsing: session_id pulled from `system.init`, task stdout shows only assistant text plus a `[done]` line, tool_use/tool_result noise dropped.
- Resume builds `--resume <sid> <prompt>` for stream-json engines, keeps Codex's `resume <sid> <prompt>` positional form.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-15 15:08:28 +08:00
677d41074b docs: add project README and deployment guide
Document how to start, configure, and deploy the local Kanban app
including auth, GPU hosts, Gitea integration, quota checking, and
agent session management.
2026-05-15 11:14:27 +08:00
72289d2c75 ops: add deployment scripts and nginx/systemd configs
Scripts for installing and starting the app and nginx proxy.
Includes systemd user service units and nginx configs for
both user-mode 8443 and system-mode 443.
2026-05-15 11:14:16 +08:00
a9d36e3ccf test: add GPU and quota service tests 2026-05-15 11:14:06 +08:00
74279b9d35 feat: add frontend dashboard, login page and portal entry
Public directory contains the Kanban SPA with dashboard UI, login
page, and styles. Portal directory provides a standalone service
entry page with CSS styling.
2026-05-15 11:13:59 +08:00
673a5f9f62 feat: add backend server and service modules
Includes HTTP server with auth, static file serving, and API routes.
Services cover GPU monitoring, quota checking, Gitea repo listing,
workspace management, agent task orchestration, and settings persistence.
2026-05-15 11:12:30 +08:00
4fdd41a05a chore: initialize project with package.json, .env.example and .gitignore
Set up the Node.js project skeleton, define environment variable
template, and exclude secrets, certs, and nginx runtime from version control.
2026-05-15 11:12:14 +08:00