What's Changed
- fix: stop offering a cask update to a build brew does not manage
- release: 7.5.0 — pin a terminal viewer to its pane, and ship the audit fixes
- fix: close five defects an adversarial review found in the previous commit
- fix: close the defects a verified audit surfaced, and issue #53
- fix: minimap dots now point at the messages they represent
- chore: release v7.4.0
- test: cover the six bugs that shipped past 42 suites
- fix: close six re-execution and data-loss bugs
- docs: ship an importable example bot team
- fix(security): sandbox an inline SVG, resolve symlinks in the @-mention search
- chore: release v7.3.0
- ci: run the test suite on every push and PR
- docs: how to upgrade a pre-7.3 Docker install
- fix: migrate a pre-existing config.json/.env onto CCS_CONFIG_PATH
- docs: v7.3.0 — README refresh across all three languages
- test: close the coverage gaps the review named, 41 files
- fix: pre-release hardening pass over the review findings
- feat(config): reset a setting back to its built-in default
- feat(config): settings form with source and precedence view (#40)
- fix(security): never hand an SSH credential to the model or to disk
- feat(ui): global workspace across all projects (#25)
- fix(i18n): translate the untranslated UI surfaces (#26)
- feat(terminal): answer a blocked interactive prompt from the browser (#20)
- feat(import): import Claude CLI sessions from remote SSH hosts (#23)
- chore: ignore .ccs-worktrees/ (agent git worktrees live inside the repo)
- test: cover the filesystem path guard and the tunnel-blocks-terminal rule
- docs(claude): correct the npm test file counts (30 = 10 render + 20 node)
- fix(tasks): do not mark a usage-limited task Done, pause and auto-resume (#27)
- docs: token-usage guide answering #24
- fix(ws): re-attach live turns for noCatchUp subscribers (#38)
- test(terminal): poll tmux state instead of sleeping in the bridge integration test
- docs(planning): status pass over the fix queue
- test(bots): cover the 4000-char task clip (FIX-07 AC-7)
- chore(deps): multer 1.4.5-lts.2 → 2.2.0
- test(session-liveness): refuse a busy port and clean up on a signal
- fix(server): survive a failed listen, and a throwing db.close() on shutdown
- test(running-sessions): replace the tautological duplicate-ids assertion
- test(running-sessions): assert each liveness term and the not-live transition
- test(running-sessions): make the port overridable and refuse to run on a busy one
- test(running-sessions): clean up the spawned server on SIGINT/SIGTERM/SIGHUP
- fix(security): bind to loopback by default, and gate first-run setup from the network
- fix(security): follow the tunnel's X-Forwarded-For instead of a boot-time env read
- test: regression coverage for session liveness (#28, #30)
- fix(ws): broadcast chat done to every watcher, not just the originating socket
- fix(api): one isSessionLive() source of truth for a live chat turn
- test(update-flow): remove the temp dir runShell created
- docs(test): bots-api.test.js is part of
npm test - docs: correct the stale test-suite description in CLAUDE.md
- test(render): assert subscribeAllTabs logs each failure instead of printing stacks
- fix(ui): one failed running-sessions fetch no longer cancels every subscription
- fix(terminal): stop reporting a dead agent as a successful cold start
- fix(delegate): quote Windows prompts so cmd never sees an active metacharacter
- fix(security): create secret-bearing files 0600 and harden existing ones at boot
- fix(kanban): scheduled tasks that never fired, and lost recurrences
- feat(bots): let a bot hand a task to another bot from the same roster
- fix(terminal): move studio terminals onto their own tmux socket
Installation
# Run latest version directly
npx github:Lexus2016/claude-code-studio
# Or install globally
npm install -g github:Lexus2016/claude-code-studio
claude-code-studioOpen http://localhost:3000 in your browser