You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(kanban): deterministic footer packing for narrow widths (#242)
* fix(kanban): deterministic footer packing kills narrow-width wrap + flicker
At narrow widths (~80-120 cols) the kanban footer wrapped mid-word ("na" / "v",
"att" / "ach") because each of its ~30 sub-<Text>s wrapped independently. The
total width also varied with cursor position — hasItem/hasSession/hasWorktree
toggled whole hint groups, so moving selection changed wrap row count and
shifted the board: the "flicker".
Refactor Footer to atomic hint chunks with a constant chunk list:
- buildFooterChunks() returns the canonical list. Each chunk has a `plain`
width (constant) and a `render` callback (state-aware). Unavailable hints
render dimmed, never disappear — footer width is selection-independent.
- packFooterChunks() greedily packs chunks into rows separated by ` · `
without ever splitting a chunk mid-label.
- Footer takes termCols, packs, renders one Box per row.
- colHeight subtracts the actual packed row count (max 3 footer rows at the
narrowest), so the wrapped footer never pushes the board off-screen.
Tests:
- New per-width assertions (80/96/100/120) verify every footer row splits
on ` · ` into known chunks — catches mid-word wrap regressions.
- New stability test renders the same width twice with different cursor
positions and asserts footer row count matches.
- Golden ASCII frame at tests/fixtures/kanban-narrow-footer.txt for visual
diffing.
- Relaxed minSpan in the existing "column boxes occupy most of the
terminal height" assertion from height-4 to height-6 (footer can take
up to 3 rows at narrow widths now).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* tracker: add notes/requirements/implementation for kanban-narrow-bottom-bar
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* docs(changelog): note kanban-footer narrow-width fix
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: CHANGELOG.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,6 +10,7 @@ The format is based on Keep a Changelog, and this project adheres to Semantic Ve
10
10
- Diff view: `.md` lines render as styled markdown (headings/bold/italic/code/lists/blockquotes/HRs) instead of raw source. A pre-rendering pass scans each `.md` file’s pre/post images so per-line styling has full block context (e.g. lines inside fenced code render verbatim)
11
11
- 8 markdown themes (`bright`, `forest`, `sunset`, `ocean`, `neon`, `autumn`, `candy`, `mono`) with distinct colour palettes; press `[t]` to cycle
12
12
- Kanban board uses the full terminal width: columns abut directly (no per-column margin, no inter-group separator, no internal padding) and the column floor drops to 12 cols so narrow terminals stop overflowing. Card secondary-row gutter tightens from 4 to 2 cols so descriptions have more room
13
+
- Kanban footer no longer wraps mid-word at narrow widths. Hints are packed as atomic chunks separated by ` · `, and footer width is now independent of cursor position — so moving between items with/without a worktree no longer shifts the board up/down (the “flicker”)
13
14
- Add changes here. The first bullet under each release is used as the short “what’s new” message in the app’s update notice.
0 commit comments