fix(tmux): merge-time fixes for the exited-agent report (#466)

- docs/wiki/The-Dashboard.md: the tab-appearance table gains the exited
  state (muted dot plus an `exited (137)` badge) and explains the bare
  `exited` variant.
- The detailed sidebar and rail no longer pair the muted dot with an "idle"
  pill: an exited session's pill reads "exited" (neutral styling) and its
  since stamp measures from the observed exit. This is a label override on
  the row model, not a new state, so SESSION_ACTIVITY_RANK and the home
  screen order are untouched, and a pending alert still keeps its own pill.
  The row signature includes the flag so the incremental path repaints it.
- The exited badge is aria-hidden like its sibling badges, and the exit is
  appended to the tab's aria-label in both render paths through one helper.
- test/tmux-manager.test.ts re-adds the junk-trailing-field parser case
  against parsePaneRows.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Codeman maintainer
2026-09-23 11:40:27 +02:00
parent 43d4be8eeb
commit cbd1fa639d
6 changed files with 140 additions and 10 deletions
+5
View File
@@ -1003,6 +1003,11 @@ describe('parsePaneRows', () => {
expect(row.exitStatus).toBe(0);
});
it('still reads the pid when a trailing field is junk', () => {
// Carried over from the retired parsePaneList case 'splits on the first separator only'.
expect(pids('codeman-aaaa|1234|extra-field').get('codeman-aaaa')).toBe(1234);
});
it('calls a non-numeric dead flag unknown rather than false', () => {
const [row] = parsePaneRows('codeman-aaaa|1234|?||');
expect(row.dead).toBeUndefined();