Skip to content

Commit b417b90

Browse files
grimmerkclaude
andcommitted
docs: add normal + late-start flow diagrams
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent d65ba38 commit b417b90

1 file changed

Lines changed: 22 additions & 8 deletions

File tree

docs/session-status-hooks-design.md

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,32 @@ Show active session status (working / idle / needs-attention) via colored dots i
1515

1616
## Architecture
1717

18-
```
19-
Claude Code session
20-
→ hook fires (Stop/PermissionRequest/UserPromptSubmit/etc.)
21-
→ runs ~/.claude/codev-status-hook.sh
22-
→ writes ~/.claude/codev-status/{sessionId}.json
18+
### Normal flow (CodeV already running)
2319

24-
CodeV (main process)
25-
← fs.watch(~/.claude/codev-status/) detects file change
26-
← reads status file
20+
```text
21+
Claude Code session starts/receives prompt/stops
22+
→ hook event fires (Stop/UserPromptSubmit/PermissionRequest/etc.)
23+
→ runs ~/.claude/codev-status-hook.sh
24+
→ writes ~/.claude/codev-status/{sessionId}.json (atomic: tmp + mv)
25+
→ CodeV fs.watch detects file change
2726
→ IPC to renderer → dot color update
2827
```
2928

29+
### CodeV late-start flow (sessions already running)
30+
31+
```text
32+
CodeV starts
33+
→ get-session-statuses IPC handler:
34+
1. readAllStatuses() — read existing status files
35+
2. detectActiveSessions() — find active sessions (PID files)
36+
3. Compare: which active sessions have no status file?
37+
4. scanInitialStatuses() — read JSONL tail (100 lines) for those
38+
→ find last assistant entry → determine idle / needs-attention
39+
5. writeStatusFile() — persist scan results as status files
40+
(so fs.watch replace won't lose them)
41+
6. cleanupStaleStatuses() — delete files for sessions no longer active
42+
```
43+
3044
### On CodeV startup (catch-up for sessions started before CodeV)
3145

3246
```

0 commit comments

Comments
 (0)