Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
7447008
docs(specs): resource monitor design — footprint and CPU per session,…
tdody Oct 30, 2026
2cedca1
docs(specs): resource monitor — webview by responsible pid, an elsewh…
tdody Oct 31, 2026
cde6b15
docs(plans): resource monitor implementation plan, 11 tasks (THI-448)
tdody Oct 31, 2026
4707271
resources: footprint, CPU time and machine figures through libproc/sy…
tdody Oct 31, 2026
ffcadd0
resources: every process lands in one group — server, webview by resp…
tdody Oct 31, 2026
26c9bb7
resources: a group's CPU counts children reaped within it and never d…
tdody Oct 31, 2026
c995876
resources: measure() reads every process once per tick under a lock, …
tdody Oct 31, 2026
a4f1aee
tests: an autouse stub keeps resources off the real machine (THI-448)
tdody Oct 31, 2026
e4fd04d
resources: find periscope-app by the kernel's process name — ps trunc…
tdody Oct 31, 2026
cb94622
resources: measure() commits its samples and the throttle clock toget…
tdody Oct 31, 2026
404bdb9
resources: _APP_NAME's comment points at _name instead of repeating i…
tdody Oct 31, 2026
4c81905
state: each row carries its pane's res and the blob the resources tot…
tdody Oct 31, 2026
1dc320d
cycle hint: the ↻ chip reads claude's footprint, not RSS, and says wh…
tdody Oct 31, 2026
08d2529
ui: resources formatting, and memHint labels from the server's trigge…
tdody Oct 31, 2026
c1a1087
ui: a header pill with each owner's memory and CPU, panes heaviest fi…
tdody Oct 31, 2026
2d97793
session_status, window_view: docstrings state what each imports and w…
tdody Oct 31, 2026
d9f11d1
ui: the detail header shows the pane's memory and CPU, labelled (THI-…
tdody Oct 31, 2026
f02e8b2
ui: the resource pill's own wrapper class, keyboard-reachable pane li…
tdody Oct 31, 2026
4ad74b7
util: the PR-URL comment sits on prUrl, not on memHint (THI-448)
tdody Oct 31, 2026
0c55e36
build: static/dist with the resource pill (THI-448)
tdody Oct 31, 2026
7f64680
docs: resources.py in the module table; the spec describes what was b…
tdody Oct 31, 2026
f28465b
resources: measure() takes the process snapshot only after the thrott…
tdody Oct 31, 2026
b5db04a
docs: CLAUDE.md lists the resource pill; the spec states when measuri…
tdody Oct 31, 2026
c75f348
resources: CPU is a share of the whole machine, not per core — owners…
tdody Oct 31, 2026
53cfd5d
build: static/dist with machine-share CPU (THI-448)
tdody Oct 31, 2026
9af1432
resources: the machine line leads with physical RAM, so owners adding…
tdody Oct 31, 2026
a380f2b
build: static/dist with RAM on the machine line (THI-448)
tdody Oct 31, 2026
2d0eb6c
tests: ruff-format the conftest machine stub (THI-448)
tdody Oct 31, 2026
d76784a
resources: _Sample.cpu_ns, not totals, and 'group' throughout (THI-448)
tdody Oct 31, 2026
992283c
resources: build_state takes the tick's snapshot once, before the fan…
tdody Oct 31, 2026
e08581e
resources: CPU is accounted per process across the tick, a reaped pro…
tdody Oct 31, 2026
66d9e86
resources: the 0.5 s throttle reuses the previous measurement only fo…
tdody Oct 31, 2026
28a9caf
resources: a previous sample goes stale after 60 s, not 10, so slow t…
tdody Oct 31, 2026
060cd1a
session_status: an unreadable claude footprint is no live claude, so …
tdody Oct 31, 2026
a424963
tests: two measure callers forced to overlap, so the lock test fails …
tdody Oct 31, 2026
aa1aa96
tests: the failed-pass test compares state by value, so an in-place c…
tdody Oct 31, 2026
a2cb793
tests: a server inside a pane's subtree is counted once, in server (T…
tdody Oct 31, 2026
4426386
tests: a reaped child's CPU shows up in the real rusage read (THI-448)
tdody Oct 31, 2026
7be98d2
docs: resource monitor spec matches the rendered strings, one measure…
tdody Oct 31, 2026
25a15ed
resources: ruff format, and contextlib.suppress in the lock test (THI…
tdody Oct 31, 2026
a1713bd
ui: extract usePopoverDismiss, share .pill-dd across the four header …
tdody Oct 31, 2026
996f625
ui: show the panes' combined memory and CPU in the resource popover (…
tdody Oct 31, 2026
01e7ed7
ui: cap the resource popover's width and scroll its pane list (THI-448)
tdody Oct 31, 2026
12e8580
ui: return focus to the resource pill on close, name its dialog (THI-…
tdody Oct 31, 2026
221f6bc
ui: fix contrast on the resource popover's CPU column and machine lin…
tdody Oct 31, 2026
35cbc62
ui: fix the detail header's mem/cpu chip to a constant width (THI-448)
tdody Oct 31, 2026
93cc591
ui: simplify memHint to one title now the server always sends gb (THI…
tdody Oct 31, 2026
d121100
docs: correct paneLines' comment on why a row has no res (THI-448)
tdody Oct 31, 2026
c69cc15
build: static/dist with the review fixes (THI-448)
tdody Oct 31, 2026
15c4962
ui: the detail header's mem/cpu box fits its widest form, 1023M mem ·…
tdody Oct 31, 2026
37fcfe7
resources: own and children CPU kept apart; a vanished process is cha…
tdody Oct 31, 2026
f4e7e78
tests: the pid-reuse case splits its two pids into groups, so identit…
tdody Oct 31, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,7 @@ would double-load every global.
| `worktrees.py` / `worktree_spawn.py` / `repo_locks.py` / `gitutil.py` | Worktree cache + affiliation / spawn + two-window layout / per-repo git lock + per-dir open lock / shared git helpers |
| `pids.py` | `@periscope_id` mint / stamp / rebind / resolve — pane identity |
| `session_status.py` | Authoritative Claude-session state from `<config_dir>/sessions/<pid>.json` |
| `resources.py` | Memory footprint + CPU per owner (each pane, server, webview, elsewhere) through libproc on the tick's process snapshot; `measure()` feeds `/api/state` |
| `turns.py` | Pane transcript view (`GET /api/pane/turns`) |
| `bg_commander.py` | Background command jobs + status sync |
| `poke.py` | Daily session poke: one Haiku message per account at 08:00 so the 5h window resets ~13:00; verified, logged, prod-only |
Expand All @@ -143,7 +144,7 @@ commit `static/dist/` whenever `static/src/` changes** — boot has no build ste
| Area | Modules |
|---|---|
| entry / state | `main.jsx`, `store.js` (transient signals), `prefs.js` (server-prefs cache — the persistence boundary), `poll.js` (the single `/api/state` loop) |
| chrome | `chrome/{Header,FilterBar,UsagePill}.jsx` |
| chrome | `chrome/{Header,FilterBar,UsagePill,ResourcePill}.jsx` (`chrome/resources.js`: the resource pill's pure formatting) |
| split view | `split/{Split,Rail,RailRows,Detail,…}.jsx` + `split/railTree.js` — the only view. Rail is TRACK-anchored: Track → (derived Branch) → Pane; branch rows are derived from live `w.branch`, not entities |
| review | `review/{Walkthrough,ReviewsQueue}.jsx` + `walkthrough.js` (the PR walkthrough view, the cross-track reviews queue, their pure helpers) |
| terminal | `terminal/{Terminal,TerminalSearch}.jsx` + `terminalCore.js` (imperative xterm + `/ws/pane`) |
Expand Down
Loading
Loading