Repository navigation
feat(ui): let ListRow carry hints, a dense density and keep-focus presses - #3576
Merged
Merged
Conversation
…h the shared ListRow The automations list and an automation's runs panel drew bespoke rows. Both now draw @luke/ui's List and ListRow. List gains a finite variant (PLAIN, CARD) so the automations keep their card, and a finite density (REGULAR, COMPACT) so run rows keep their 44px height. A right-click on an automation's switch stays the switch's own, and the row's Copy-link menu hands focus back to the row's press as it closes. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… ListRow The Issues list's rows and Home's Recent rows (also a person page's Created rows) are now @luke/ui List/ListRow. An issue row hands its press to the page through ListRow's ref for focus return, opens Issue actions on right-click through onContextMenu (focus going back to the row's press) and on the menu key or Shift-F10 through onKeyDown. The arrow keys keep moving through the page's rows, now ListRow presses too. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…and keep Recent's time at narrow widths Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
ListRow gains unread (the title in the bold weight), a finite current kind (LIST_ROW_CURRENT: PAGE or ITEM, announced as aria-current page or true), and a hint slot that wraps the row's press with the app's tooltip, as FoldingButton's does. The Inbox's item rows, on the Inbox page, a task's Inbox tab, Home, and a person's page, move onto it; the Inbox finds a row's press through a map its rows' refs keep, in place of data-item-id queries. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
…le's room, and drop a gone row's ref Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
charleslpan
added a commit
that referenced
this pull request
Oct 18, 2026
charleslpan
marked this pull request as ready for review
October 18, 2026 15:32
charleslpan
enabled auto-merge
October 18, 2026 15:32
github-merge-queue
Bot
removed this pull request from the merge queue due to a conflict with the base branch
Oct 18, 2026
charleslpan
enabled auto-merge
October 18, 2026 17:39
github-merge-queue
Bot
removed this pull request from the merge queue due to a conflict with the base branch
Oct 18, 2026
charleslpan
enabled auto-merge
October 18, 2026 18:11
github-merge-queue
Bot
removed this pull request from the merge queue due to a conflict with the base branch
Oct 18, 2026
This branch was successfully deployed
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.
What
S13 of phase 2.
@luke/ui'sListRowgets the options the remaining bespoke rows needed, and those rows now draw with it.New ListRow options. Each is an
as constvalue or a plain boolean, and none takes a class.LIST_DENSITY.DENSE: one line at a control's height. The title is in body type, with the description after it on the same line. Set it on aList, or on a singleListRow(density) when the row stands in the app's own list, such as the sidebar's drag lists.LIST_ROW_INK{TEXT, SIDEBAR}:SIDEBARdraws the title in--luke-color-sidebar-ink, and full ink while the row is hovered, current, unread or has its menu open.actionsShown: ACTIONS_SHOWN.ON_HOVER: the row's acts sit over the meta. They show while the row is hovered, focused from the keyboard, or has its menu open.menuOpen: rings the row while its menu is open, as Finder does.chevron: a chevron at the row's end, shown while the row is hovered, focused or current.keepFocusandtabbable: work like Button's props of the same names.id: set on the row's<li>, so a search field can pointaria-activedescendantat the row.disabled.onTitleClipped(clipped): tells the app whether the title is cut short, so it can show the full title in a hint only then.This builds on #3555 (
LIST_VARIANT/LIST_DENSITY) and #3571 (hint,unread,LIST_ROW_CURRENT). On the desktop side,RowHint/RowHintOptions(tooltip.tsx) pass the window's Tooltip into the hint slot. The card and the shortcut it shows come through context, so the hint component stays the same component across renders.Rows moved:
task-actions.tsx,sidebar-pinned-tab.tsx,sidebar-agent.tsx).onTitleClipped).Screenshots (Linux, Xvfb,
--fixture smoke)Sidebar rows are unchanged: same height, inset, ink and current fill.
Visible changes (cleanup-level)
Bundle budget
No change in this PR. #3305 re-recorded `apps/desktop/bundle-budget.json` on main (`renderer/panel.js` 901,571). This branch measures 902,302 there, so it adds 731 gzipped bytes and stays under the ceiling. The bytes come from ListRow's new options, `RowHint`/`RowHintOptions`, and the moved rows' markup.
Tests
jsdom tests of behaviour only:
list-row.test.ts: keep-focus press; a row out of the tab order; an unavailable row; a row found by id; the chevron hidden from screen readers; acts shown on hover still reached by Tab; title-clip reporting.agent-servers.test.ts: the pointer moves the tool highlight. This test fails without the hint wiring.Not verified on a Mac.
🤖 Generated with Claude Code