Put a session's status on its title line - #15
Merged
Merged
Conversation
They were labelled "next / previous session". Sessions sort newest-first (store/query.go:79), so j moves down the list to an older session — which reads as going backwards, and "next" is what made it read that way. The binding is not the problem and is untouched: j is down, which is what the arrow keys and every other TUI agree on. Only the claim changes.
The sidebar card spent a third of its height on a line that said "Idle" beside a dot already saying it. The glyph moves up to the title line and that row goes, so a quiet session is two lines instead of three — and most sessions in a sidebar are quiet ones. The glyph set had to change for this to lose nothing. Idle and working were both ◉, told apart by accent against muted. That was a hint while the word sat next to it and would have been the whole answer without it, and a colour is not an answer: a low-contrast theme flattens it and a reader who cannot separate two hues never had it. Filled is busy, hollow is quiet, closed is a dot so it does not compete with idle, and a dead process is a cross because it is not a degree of running. ● working ○ idle ◆ needs you ✕ exited · closed TestStatusGlyphsAreDistinct is the regression: pairwise distinct, and one cell each, because the title line budgets a fixed width for the glyph. The card still grows a third line for what a glyph cannot say — an exit error, and the mail, claim and review badges. Those are facts about a session rather than a restatement of its dot. statusOf returns a struct rather than a fourth value. form.update grew to four and the architecture doc records what that cost; detail is the field that carries an exit error to whichever caller has room for it. The dashboard row joins it to the label as before, so nothing is lost there — that regression was in this change until it was caught. Both card tests were checked by making the third line unconditional. Both fail.
tdwd
force-pushed
the
session-card-status
branch
from
September 18, 2026 14:22
9b8244d to
48fc7b2
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The sidebar card spent a third of its height on a line saying "Idle" beside a dot already saying it. The glyph moves to the title line and that row goes.
The glyph set had to change
Idle and working were both
◉, told apart by accent against muted. That was a hint while the word sat beside it. Without the word it would have been the whole answer, and a colour is not one — a low-contrast theme flattens it, and a reader who cannot separate two hues never had it.◉●◉○◆◆◍✕○·Filled is busy, hollow is quiet. Closed is a dot so it does not compete with idle, and a dead process is a cross because it is not a degree of running.
TestStatusGlyphsAreDistinctpins pairwise distinctness and single-cell width — the title line budgets a fixed width for the glyph, so a two-cell one would silently eat a column of every session name.The third line still exists, conditionally
An exit error and the mail/claim/review badges are facts about a session rather than a restatement of its dot, so they still earn a row. Most cards have none of them.
statusOfnow returns a struct rather than a fourth return value —form.updategrew to four anddocs/architecture.mdrecords what that cost. The newdetailfield carries an exit error to whichever caller has room for it.A regression this change introduced, and caught
Moving the error out of
labeldropped it from the dashboard row too, where it had been shown asExited: <err>.sessionLinenow joinsdetailback to the label, so that view is unchanged.Second commit
^g j/kwas labelled "next / previous session". Sessions sort newest-first (store/query.go:79), sojmoves down the list to an older session — "next" was the false claim, not the binding. It now says "down / up the session list". The keys are untouched:jis down, which is what every vim user expects.Stale, and I cannot fix it
assets/deck-dashboard.pngandassets/deck-codex.pngshow three-line cards with the old glyphs. PerCLAUDE.mdthose are photographed by hand againstmake demo, not generated, so they need a human with a terminal.