Repository navigation
Closed
Labels
accessibilityBarrier affecting people with disabilitiesBarrier affecting people with disabilitiesenhancementNew feature or requestNew feature or requestready-for-agentFully specified, ready for an AFK agentFully specified, ready for an AFK agent
Description
What to build
The settings surface becomes the kit's settings component: pages and groups of named rows, each row a title, a description, a help line, and one control. Search filters the rows and lands on the page that holds a match.
Today the surface is a hand-built stack of section cards, with a house helper for the card chrome and another for the label-and-help column, and two other views borrow those helpers. Adopting the component removes the house chrome and gives the rows search.
Acceptance criteria
- The settings surface is built from pages and groups: connection, general, limits, sync, tagging, and storage.
- Search filters rows by title and description, lands on the matching page, and produces a sane empty result.
- Every row keeps what it has now: the label, the help sentence, the unit, the accepted bounds, the element id, and the accessible name. Keyboard paths are unchanged — Enter and Space on switches and radios, Up and Down on numeric fields.
- Rows with no kit field type render as custom items and stay keyboard reachable and correctly named: the sign-in method radios, the album-scope radios, the read-only storage paths, and the tag-page link.
- Invalid values are still refused with the same wording, and a save failure still shows its notice without closing the surface.
- The house card and label helpers leave this surface, and the views that borrowed them end up using whichever of this ticket or the diagnostics ticket is left.
- Both themes and the narrowest supported window still lay out every row without clipping a control.
Notes
The kit has no radio field type in the pinned version, so the two radio rows need the custom-item path. Connection state, save results, and the backfill line are read from the existing models; this ticket moves layout, not state.
Metadata
Metadata
Assignees
Labels
accessibilityBarrier affecting people with disabilitiesBarrier affecting people with disabilitiesenhancementNew feature or requestNew feature or requestready-for-agentFully specified, ready for an AFK agentFully specified, ready for an AFK agent
Activity
elementalvoid commentedon Oct 31, 2026
Landed in
mainat35691b2, merged fromintegration/kit-surface(CI green at43223e2). Gate on the merged tree:cargo fmt --all -- --check,cargo clippy --workspace --all-targets -D warnings,cargo test --workspace— all clean.What the reviews changed. Three passes, each finding what a green suite could not:
Role::Tabelements (the samecrate::tab::Tabas Shell: switch surfaces with the kit tab bar #75), and a keyboard walk test reaches every page and every control with no pointer click.InputEvent::Changesubscription, and the harness's per-frame render hid it. Now pinned by a view-notification count that reads zero without the subscription.Still manual. Real screen readers, macOS/Windows. Known: 0.8.1 offers no switch to drop the sidebar's resize handle, so it is covered — no paint, no hit test, no resize cursor — rather than removed; a tree dump still shows it.