Multiple agents on the same project read better as 'CC1' / 'CC2' /
'frontend' / 'backend' than as auto-generated hex tails. v0.4.7 lets
the user name them.
Rename UX:
- Press `n` on the selected row → drops into rename mode
- Footer becomes 'Rename: <buffer>█ · Enter save · Esc cancel'
- All keystrokes feed the buffer while in rename mode — `q` doesn't
quit, `r` doesn't refresh; the dashboard stays put while you type
- Enter writes the alias and refreshes; Esc cancels; empty+Enter clears
Display:
- Aliased rows render `CC1 · AgentPulse (claude-code)` with the alias
in bold cyan
- Alias replaces the v0.4.4 hex-tail disambiguator (the alias IS the
disambig)
- Aliased rows don't count toward collision detection, so the lone
unaliased session in a project doesn't get a spurious tail
Storage — cwd wins over home:
- <session.cwd>/.agentpulse-aliases.json — per-project, commit
alongside .agentpulse-exceptions.json for team-shared conventions
- ~/.agentpulse/aliases.json — personal default, writes from `n`-Enter
land here. Promoting to the shared file is manual copy/paste.
Architecture:
- New src/aliases.ts mirrors the exceptions.ts pattern
- Orchestrator pulse() now loads aliases per-session at refresh time
and threads the result into SessionState.alias
- New SessionState.alias?: string field
Tests: 158 (was 143). Twelve new alias-storage tests + three new
SessionList rendering tests covering alias-in-front, aliased-rows-
no-hex-tail, and aliased-rows-don't-inflate-collision-count.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>