feat(settings): complete the search index and give every row a symbol and subtext#672
Merged
Conversation
… and subtext The Settings search index had drifted from the panes: Ghost Text Size, Suggest in Integrated Terminals, and the runtime Status row were not findable, and several index titles/symbols no longer matched the rows they navigate to (Toggle Tabby vs Toggle Cotabby, Battery Model vs On Battery, battery.100 vs battery.100.bolt). - Index: add ghostTextSize, suggestInIntegratedTerminals, modelStatus; align titles and symbols with the actual rows. - Symbols: the integrated-terminal toggle and the three typo toggles had no leading symbol; the Apple Intelligence Availability and models folder Path rows were bare LabeledContent with no symbol or subtext. All rows now use SettingsRowLabel with a symbol and a one-line description. - Naming: Toggle Tabby -> Toggle Cotabby (stale pre-rename title); Title Case for 'Switch Based on Power Source' and 'Also Use LM Studio Models'; About's update button gains its symbol. - Tests: new SettingsIndexTests pin the hygiene rules (every item has a title/symbol/keywords, unique ids, and real queries land on recently shipped settings) so the index can't silently drift again. - project.pbxproj regenerated by xcodegen for the new test file.
The Engine & Model "Runtime" status row rendered as "Status" while the search index lists it as "Model Status", so a search result and the row it navigates to disagreed. Promote the row label to "Model Status" so the two match and the label stays descriptive in the flat search results list, outside its pane's "Runtime" section context.
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.
Summary
Audit of every Settings row against the search index. The index had drifted from the panes: recently shipped settings (Ghost Text Size, Suggest in Integrated Terminals, the runtime Status row) were unfindable in search, several rows had no leading SF Symbol (the integrated-terminal toggle and all three typo toggles), two rows were bare
LabeledContentwith neither symbol nor subtext (Apple Intelligence "Availability", models folder "Path"), and a few titles were stale or inconsistently cased ("Toggle Tabby" predates the Cotabby rename). Every settings row now usesSettingsRowLabelwith a symbol and a clear one-line description, and the index matches the rows it navigates to.Validation
NSImage(systemSymbolName:)(symbol names are not compile-checked; a typo renders an empty icon).SettingsIndexTestspin the hygiene rules: every item has a non-empty title/symbol/keywords, ids are unique, and real queries ("ghost text size", "terminal", "vscode", "typo", "battery") land on the right items, so the next shipped-but-unindexed setting fails CI instead of silently vanishing from search.SettingsRowLabelcomponent and layout.Linked issues
None.
Risk / rollout notes
LabeledContent("Availability") { … }andLabeledContent("Path") { … }became explicitlabel:closures withSettingsRowLabel, which adds the standard description line under those two rows (Engine & Model pane).project.pbxprojregenerated by XcodeGen for the new test file (CI verifies it matchesproject.yml).Greptile Summary
This PR audits every Settings row against the search index, adding missing
SettingsItementries (ghostTextSize,modelStatus,suggestInIntegratedTerminals), adding SF Symbols to rows that had none (typo toggles, integrated-terminal toggle), converting two bareLabeledContentrows toSettingsRowLabel(Apple Intelligence "Availability" and models "Path"), and fixing stale/inconsistent titles ("Toggle Tabby" → "Toggle Cotabby", casing fixes). A newSettingsIndexTestsfile pins hygiene rules and query-to-item expectations so future drift fails CI.ghostTextSize,modelStatus,suggestInIntegratedTerminals) are now indexed with titles, symbols, and keyword lists; several index titles were updated to match their rendered pane labels.SettingsRowLabelusages now carrysystemImage; the two bareLabeledContentrows gain aSettingsRowLabellabel closure with a description line, and titles for battery/power rows were shortened to match the pane copy.SettingsIndexTestschecks uniqueness of ids, non-emptiness of title/symbol/keywords for every item, and that real user queries resolve to the correct items.Confidence Score: 4/5
Safe to merge after reconciling the index title for Apple Intelligence Availability with its rendered pane label.
The change is UI-only: label text, SF Symbols, and search-index entries — no storage, bindings, or behavior is touched. One title mismatch was introduced: the index advertises "Apple Intelligence Availability" while the pane still renders the row as "Availability", repeating the exact pattern that was just fixed for modelStatus. That divergence means a user who finds the row through search sees a different label in results than on the settings pane itself. Everything else — new index entries, symbol additions, test hygiene — is correct and well-covered by the new SettingsIndexTests.
Cotabby/UI/Settings/SettingsIndex.swift and Cotabby/UI/Settings/Panes/EngineAndModelPaneView.swift — the appleIntelligenceAvailability title needs to be consistent between the index and the pane label.
Important Files Changed
Flowchart
%%{init: {'theme': 'neutral'}}%% flowchart TD subgraph Index["SettingsIndex.swift (single source)"] A[SettingsItem enum case] B[title: String] C[systemImage: String] D[keywords: String array] E[category: SettingsCategory] end subgraph Search["Search flow"] F[User types query] G["results(for:) filters allCases"] H[Matches title / category / keywords] I[Search result shown with index title + symbol] J[User taps → navigates to pane] end subgraph Panes["Settings Pane Views"] K["SettingsRowLabel(title:description:systemImage:)"] end A --> B & C & D & E F --> G --> H --> I --> J --> K style Index fill:#e8f4f8,stroke:#4a90d9 style Search fill:#f8f4e8,stroke:#d9a44a style Panes fill:#f4f8e8,stroke:#4ad9a4Reviews (2): Last reviewed commit: "fix(settings): match Model Status row la..." | Re-trigger Greptile