Skip to content

feat(compact): one header-action tier, tags in the search field, tighter list header - #574

Merged
alchaplinsky merged 3 commits into
mainfrom
feat/compact-header-actions
Oct 11, 2026
Merged

alchaplinsky merged 3 commits into
mainfrom
feat/compact-header-actions

Conversation

@alchaplinsky

Copy link
Copy Markdown
Member

Summary

Follows up the swipe-back PR (#573) with the list root's header and the size of header actions across the phone screens. Independent of #573; based on main.

  • One header-action tier. HEADER_ACTION in chrome.ts: a 44px target over a 20px glyph with no box of its own — the nav bar's proportion on iOS (22pt in 44) and Android (24dp in 48). Applied to sort, regenerate, the sync chip, and the entry's menu and star. Sort drew a 16px glyph and the menu a 14px one in the same 44px target; regenerate was the only bordered tile, which is why it looked twice the size of its neighbours. The glyph is sized by the button, so shared desktop controls need no size prop.
  • Sort stays in the title row, tags move into the search field. Sort alone keeps the title row's corner, as on the desktop. The tag filter is set into the end of the 44px search field (FIELD_ACTION: a 36px tile inset 4px, with the field's full 44px as its hit area via a pseudo-element), its own control beside the query it narrows the list with. Its menu drops below the field.
  • The field lights on the input's focus only. SearchBox keyed its lit state on :focus-within, which the tag tile and the clear button would now trigger; it is :has(input:focus) instead. The clear button gets a 44px target on coarse pointers.
  • Tighter header. 8px from the title row to the field instead of 16; the field's run-out before the first row 4px instead of 10 on the phone. The 56px title row itself stays, since pushed screens align their back control to it.
  • Docs updated; a new compact test asserts where sort and the tag filter live.

Verification

  • bun run typecheck, bun run lint (0 warnings), bun run build: clean
  • bun run test: 1073 passed
  • Not run on a device. Worth a look: the tag tile's inset in dark mode, and the sync chip at 44px on the Settings root.

Decisions

  • adopted · implementation · [compact-shell] — Every icon action in a phone header corner uses one tier: 44px target, 20px glyph, no border box (HEADER_ACTION). — Mixed glyph sizes and one bordered tile read as inconsistent; the nav-bar proportion is the platform standard.
  • adopted · implementation · [compact-shell] — The tag filter lives in the end of the search field, not the title row; sort alone keeps the title row's corner. — Tags narrow the list the way a query does, and the desktop keeps only sort by the title.
  • adopted · implementation · [compact-shell] — The search field lights on the input's own focus (:has(input:focus)), not any focus within it. — Controls set into the field take focus too, and pressing one is not searching.

…ter list header

Every icon action in a phone header corner — sort, regenerate, the sync chip,
the entry's menu and star — now sits on one tier (HEADER_ACTION): a 44px
target over a 20px glyph with no box of its own, the nav bar's proportion.
Sort drew 16px and the menu 14px in the same target, and regenerate was the
one bordered tile, which made it look twice the size of its neighbours.

The list root keeps sort alone in the title row, as on the desktop, and sets
the tag filter into the end of the search field (FIELD_ACTION: a 36px tile
whose hit area is the field's full 44px) beside the query it narrows the list
with. The field lights on the input's own focus rather than any focus within
it, so pressing the tile or the clear button is not searching; the clear
button gets a 44px target under a finger. The title row to the field is 8px
instead of 16, and the field's run-out before the first row 4px instead of
10, so the list starts higher.
@greptile-apps

greptile-apps Bot commented Oct 10, 2026 •

Copy link
Copy Markdown
Contributor

RetriggerConfidence Score: 5/5

[Medium impact] The PR appears safe to merge; no actionable defects remain.

Summary

The PR gives phone header actions one size, moves tags into the search field, and reduces space above the list.

  • The compact list keeps sort by the title and puts tags in search.
  • Compact screen header actions share one size and icon scale.
  • Search focus follows the input, not its trailing controls.

Reviews (3) · Last reviewed commit: "Merge remote-tracking branch 'origin/mai..." · Reviewed by Greptile

Comment thread src/components/Main/Body/ListColumn/Search.tsx Outdated
The touch tier for the clear button was keyed on the pointer alone, so a wide
layout under a finger (an iPad) put a 44px button in its 32px field. It is
now the compact field's only, on the same 768px cut the field itself is
chosen on.
…ctions

# Conflicts:
#	src/components/Main/Compact/Detail/Read.tsx
@alchaplinsky
alchaplinsky merged commit 1258663 into main Oct 11, 2026
13 checks passed
@alchaplinsky
alchaplinsky deleted the feat/compact-header-actions branch October 11, 2026 00:47
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