Skip to content

Mark a list column that continues off screen - #14

Merged
tdwd merged 2 commits into
mainfrom
list-overflow-marker
Sep 18, 2026
Merged

tdwd merged 2 commits into
mainfrom
list-overflow-marker

Conversation

@tdwd

@tdwd tdwd commented Sep 18, 2026

Copy link
Copy Markdown
Contributor

Both dashboard columns already scroll — window keeps the cursor visible and slides only when it has to. Nothing said so. A list that fits and one that is cut looked identical, and arrowing past the edge was the only way to find out which you were looking at.

A clipped edge is now the ellipsis truncate already appends, so it means the same thing it means everywhere else in the frame.

 PROJECTS                        …
                                   project-07
 ▸ project-00                      project-08
   project-01                      project-09
   project-02                    ▸ project-10
   project-03                      project-11
   project-04                      project-12
   project-05                      project-13
 …                                …

Decisions

No count. The project list's lines are projects; the sidebar's are thirds of a session card. One number cannot be right in both columns, so the marker says "more this way" and the edge it sits on says which way.

One glyph, not a new one. util.go:23 already uses … for "cut off, there is more". A second symbol for the same fact is a second thing to learn.

The heading still scrolls away. Making it sticky costs two rows permanently, and the marker now tells you that you are scrolled. That is a real trade with no obvious winner, so it is left alone rather than decided quietly.

Three things the markers must not do, each pinned

  • Cover the cursor. They cost the first and last row, and a cursor behind one would make the arrows look like they had stopped working. window centres focus, so the row it is on is never an edge when a marker goes there — TestWindowNeverMarksOverTheCursor checks every focus at heights 3 to 9.
  • Edit the list. The slice window returns aliases its input, so marking in place would replace real rows in the caller's own list. TestWindowDoesNotEditTheList.
  • Appear when they should not — on a list that fits, or on a column too short to spare the rows. Below three lines a clipped column would be all marker and no content.

Verification

Rendered at both call sites rather than trusted from unit tests: the marker lands in the cursor's own column in the project list, and replaces a card line cleanly in the sidebar with the selected card intact between them.

Marking was disabled and the suite rerun. TestWindowMarksAClippedEdge fails; the three guard tests pass, which is correct for guards.

Second commit

Describe both outcomes of x in the README — PR #12 gave x a modal and updated the key table, but left the prose under Sessions and worktrees describing only closing. Docs only.

Both dashboard columns scroll: window keeps the cursor visible and slides
only when it has to. Nothing said so. A list that fits and one that is cut
looked identical, and arrowing past the edge was the only way to find out
which you were looking at.

A clipped edge is now the ellipsis truncate already appends, which means
"cut off, there is more" everywhere else in the frame. One glyph rather
than a second symbol for the same fact.

No count. The project list's lines are projects, the sidebar's are thirds
of a session card, and one number cannot be right in both columns. Which
edge it sits on is the direction.

Three things the markers must not do, each pinned:

  - Cover the cursor. They cost the first and last row, and a cursor
    hidden behind one would make the arrows look like they had stopped
    working at the edge of a long list. window centres focus, so the row
    it is on is never an edge when a marker goes there — checked across
    every focus at heights 3 to 9.
  - Edit the list. The slice window returns aliases its input, so marking
    in place would replace real rows in the caller's own list.
  - Appear on a list that fits, or on a column too short to spare the
    rows. Below three lines a clipped column would be all marker.

Rendered at both call sites to check it rather than assuming: the marker
lands in the cursor's own column in the project list, and replaces a card
line cleanly in the sidebar.
PR #12 gave x a modal with Close and Delete, and updated the key table,
but left the prose under "Sessions and worktrees" describing only closing.
It was not wrong, it was half the feature: a reader of that section would
not learn Delete exists, or that nothing is forced.

Docs only.
@tdwd
tdwd merged commit 93a77fb into main Sep 18, 2026
3 checks passed
@tdwd
tdwd deleted the list-overflow-marker branch September 18, 2026 15:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant