Skip to content

fix: remove tmux, fix transcript viewer, and resolve stale session bugs#25

Merged
amahpour merged 1 commit intomainfrom
fix/transcript-viewer-and-stale-sessions
Mar 30, 2026
Merged

fix: remove tmux, fix transcript viewer, and resolve stale session bugs#25
amahpour merged 1 commit intomainfrom
fix/transcript-viewer-and-stale-sessions

Conversation

@amahpour
Copy link
Copy Markdown
Owner

@amahpour amahpour commented Mar 30, 2026

Summary

  • Remove all terminal/tmux/xterm code — clicking a session now opens a live transcript instantly (no WebSocket round-trip delay). Transcript uses incremental after_id fetching + DOM appending instead of full re-renders every 2 seconds.
  • Fix stale session handling — stale sessions excluded from dashboard, stale subagents auto-completed, parent sessions stay alive while subagents work, watcher infers "working" status from tool activity as hook fallback.
  • Unify transcript rendering — history and live transcript now use the same rich renderer (chat bubbles, markdown, tool grouping, plan/agent blocks). History tab back/forward navigation fixed.
  • Fix port configuration — default port changed from 3000 to 4700 to avoid conflicts. Hook handler port is now configurable via --port arg or CCCC_SERVER_URL env var. make up auto-syncs hooks with server port.

Test plan

  • All 256 tests pass (make check)
  • make up starts server on port 4700 and hooks are installed correctly
  • Dashboard shows only actively running sessions (no stale tiles)
  • Clicking a session opens transcript instantly (no delay)
  • Live transcript appends new messages without flickering
  • History transcript uses same rich rendering as live view
  • History back/forward buttons work correctly
  • Subagent activity keeps parent session alive on dashboard
  • Completed subagents disappear from parent tile within 60s
  • Jira ticket extracted from branch even after server restart

🤖 Generated with Claude Code

Remove all terminal/tmux/xterm code — sessions now open directly to a
live transcript view with no WebSocket round-trip delay. The transcript
viewer uses incremental fetching (after_id) and DOM appending instead
of full re-renders every 2 seconds.

Key changes:
- Remove server/terminal.py, terminal WebSocket endpoint, xterm.js deps
- Add after_id param to transcript API for incremental polling
- Unify history and live transcript to use the same rich renderer
- Fix history tab back/forward browser navigation
- Watcher infers "working" status from tool activity (hook fallback)
- Watcher propagates subagent activity to parent session
- Watcher fixes orphaned subagent parent_session_id from file path
- Stale checker skips parents with active subagents
- Stale checker auto-completes inactive subagents after 5 minutes
- Exclude stale sessions from dashboard (live command center only)
- Ticket extraction uses existing branch from DB, not just new entries
- Hook handler port configurable via --port arg or CCCC_SERVER_URL env
- Setup script updates existing hooks when port changes
- make up auto-runs setup to keep hooks in sync with server port
- Default port changed from 3000 to 4700 to avoid conflicts
- e2e test cleans up session to avoid dashboard litter

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown

Coverage

Unit Test Coverage
FileStmtsMissCoverMissing
__init__.py00100% 
db.py158298%133–134
hooks.py1921990%222–230, 236–242, 258, 262, 265
main.py370100% 
pr_lookup.py113298%53–54
sessions.py00100% 
watcher.py4102494%26–29, 338, 418, 487, 568, 573–579, 613–621
routes
   __init__.py00100% 
   api.py1390100% 
   ws.py41392%47, 64–65
TOTAL10905095% 

Tests Skipped Failures Errors Time
248 0 💤 0 ❌ 0 🔥 3.905s ⏱️

@amahpour amahpour merged commit b9a79e8 into main Mar 30, 2026
6 checks passed
@amahpour amahpour deleted the fix/transcript-viewer-and-stale-sessions branch March 30, 2026 23:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant