mirror of
https://github.com/stablyai/orca.git
synced 2026-11-13 09:27:29 +00:00
* Show matching settings as a results list in the Settings sidebar Typing in the Settings search now replaces the nav with a ranked list of individual settings (pane title on the second line, matched text marked). The first result is selected and previewed: its pane opens unfiltered, scrolled to the setting with the target highlight. Arrow keys move and preview, Enter or a click picks and keeps the query, Esc or the clear button returns to the nav while leaving the shown pane open. The sidebar query no longer filters page content. The Back to app row is now 48px so its border lines up with the Settings header. * Highlight settings search targets with a full-bleed bar and find unanchored rows Matches in the results list are marked with semibold text (the jump palette's HighlightedText) instead of a grey box. The landed-on row gets a tint from card edge to card edge with a left bar that fades after ~3s, replacing the inset grey block that sat off-center in the card padding. Integration provider rows get anchors, and rows not wrapped in SearchableSetting are found by their visible label. * Fit the search highlight to each row's enclosing card Settings cards pad differently (groups, plain sections, shadcn cards, the Appearance accordion), so the highlight now measures the gap from the row to its nearest card's inner edges instead of assuming one gutter. A group title match highlights that group's card rather than the heading text. * Give the settings target highlight a single owner Components applied the highlight through SettingsTargetHighlightContext while the page effect applied it to whatever element the jump scrolled to; when those differed (Jira's provider row vs. its card shell) two highlights showed. The effect now owns it alone, and the context, its provider and the macOS Permissions prop are removed. Jira and Linear reuse their existing anchor ids. * Use a plain fading tint for the settings target highlight Drops the left bar; the tint still spans the enclosing card and fades after ~3s. * Mark settings result titles with the ranking fold The title highlight lowercased by hand and skipped titles whose length changed, so İstanbul matching "stan" (or a query of İ) ranked but was never marked. Fold per code point with the ranking's own fold and map offsets back to the title. * Make settings search list-only until a pick and reveal collapsed targets Typing now only changes the result rows: nothing is selected and the page does not move until Enter or a click (arrows move the selection only). This removes previews that discarded the Open in draft, re-ran repo hook checks, mounted a pane per keystroke and drifted after deep links. - Rank once on a deferred query, cap the list at 50 with a 'keep typing' hint, and skip rendering the normal nav while searching. - A settings jump dispatches a reveal event from its target; Appearance sections, Advanced disclosures and the network/mobile collapsibles (now kept mounted) open themselves instead of reading the search query. - Nested scrollers (Shortcuts) scroll the target into view; General sub-page results open their page; mirror recovery deep-links to the mirror field; a target that never mounts drops its pending jump; group-title matches use data-settings-group. * Fix follow-ups from the settings search repair review - Two more e2e specs pick a result with ArrowDown + Enter instead of relying on typing to navigate. - After a jump reveals a growing section, re-scroll once if the row is still cut off. - Hide 'No settings match' while the deferred ranking catches up. - The reveal hook is a ref callback so disclosures that mount later still open. - The Advanced disclosure fixture shows the real forced-open case (unsaved edits). * Give every settings search result a reachable row * Type the General sub-page anchors as a list instead of casting map entries * Keep the reveal callback ref out of render * Match the e2e shortcut labels to main's sentence-case names * Highlight the result's card, not its section title or a bare label