Align Settings styling and shared glyphs with the redesigned onboarding#703
Merged
Merged
Conversation
The onboarding redesign (#701) and the Settings revamp (#699) landed in parallel with convergent but not identical vocabularies. This closes the gaps so a user who finishes onboarding lands in Settings that speak the same language: - Promote the brand palette to CotabbyBrand (shared file); onboarding's OnboardingTheme references rename, and the Settings Home hero logo now casts the same brand-blue glow as the onboarding welcome hero - Promote the physical keycap to a shared KeycapView and render it in the Shortcuts pane's KeybindRow, replacing the flat quaternary pill, so a binding looks like the same object on both surfaces - Permission rows in Settings derive their glyph from CotabbyPermissionKind.systemImageName instead of hardcoding divergent symbols, matching onboarding and the permission reminder - Add SuggestionEngineKind.systemImageName (one canonical engine glyph: apple.logo / cpu.fill) and use it in the Home status card and onboarding's engine selector and tier-card footers, which previously disagreed (cpu.fill vs internaldrive)
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
The onboarding redesign (#701) and the Settings revamp (#699) landed in parallel with convergent but not identical design vocabularies. This PR closes the visible gaps so finishing onboarding and landing in Settings reads as one product: the brand palette is promoted to a shared
CotabbyBrand(and the Settings Home hero logo now casts the same brand-blue glow as onboarding's welcome hero), the physical keycap chrome from the onboarding keys step is promoted to a sharedKeycapViewand replaces the flat gray pill in the Shortcuts pane, Settings permission rows derive their glyphs fromCotabbyPermissionKind.systemImageNameinstead of hardcoding divergent symbols, and a newSuggestionEngineKind.systemImageNamegives the engine one canonical glyph (apple.logo/cpu.fill) across the Home status card and onboarding's engine selector and tier footers, which previously disagreed (cpu.fillvsinternaldrive).Validation
Skip notes: same two environmental exclusions as #701 (drift eval mirrors CI; the screenshot-context class hangs while this machine is screen-locked and runs normally on CI).
Visual verification: rendered the Home, Shortcuts, and Permissions panes plus the onboarding template and keys steps off-screen via NSHostingView in light and dark (10 PNGs reviewed; saved locally, happy to attach). Confirmed: Shortcuts bindings render as the same raised keycaps onboarding shows (Tab / backtick / None), the Home hero glow is brand blue, permission rows show the canonical glyphs (
keyboard.fill,rectangle.dashed.badge.record), and the onboarding engine cards show the sharedcpu.fillglyph that the Home status card uses.The new
systemImageNamecontract is pinned inSuggestionEngineModelsTests.Linked issues
Refs #701, #699 (the two parallel redesigns this reconciles).
Risk / rollout notes
OnboardingThemeis renamed toCotabbyBrand(now inCotabby/UI/CotabbyBrand.swift); the onboarding-only layout constant moved toOnboardingLayout. Mechanical rename, no values changed.internaldrivetocpu.fillto match Settings; if we prefer the disk metaphor everywhere instead, it is a one-line change inSuggestionEngineKind.systemImageName.Greptile Summary
This PR reconciles the design vocabulary between the onboarding redesign (#701) and the Settings revamp (#699) by promoting three previously-siloed primitives to shared, codebase-wide components. All changes are purely presentational with no effect on behavior, persistence, or recorded/reset flows.
CotabbyBrandextracts the brand-blue palette from the onboarding-onlyOnboardingTheme(renamedOnboardingLayout, now layout-constants only); every surface that references the brand color now reads from one place.KeycapViewpromotes the privateOnboardingKeycapstruct so the Settings Shortcuts pane renders bindings with the same raised-keycap chrome as the onboarding keys step.SuggestionEngineKind.systemImageNameand the existingCotabbyPermissionKind.systemImageNameare now the single source of glyphs for both onboarding and Settings, eliminating theinternaldrive/cpu.filldisagreement; the new contract is pinned inSuggestionEngineModelsTests.Confidence Score: 5/5
Pure presentation refactoring with no changes to behavior, persistence, or user-facing flows — safe to merge.
Every changed file is UI-only. The three promoted abstractions (CotabbyBrand, KeycapView, systemImageName) are mechanical lifts of existing, working code with values identical to what they replace. OnboardingTheme has zero remaining references after the rename, confirmed by grep. The new systemImageName switch is exhaustive with no default, so adding a future engine case will be a compile error rather than a silent wrong glyph. The pinning test locks the cross-surface glyph contract. Build and full test suite pass per the PR description.
No files require special attention — the most structurally interesting changes (the OnboardingTheme → CotabbyBrand/OnboardingLayout split and the PermissionsPaneView glyph delegation) are correct and verified against the model layer.
Important Files Changed
Class Diagram
%%{init: {'theme': 'neutral'}}%% classDiagram class CotabbyBrand { +accent: Color +accentSoft: Color } class KeycapView { +label: String +fontSize: CGFloat +minWidth: CGFloat } class SuggestionEngineKind { <<enum>> appleIntelligence llamaOpenSource +systemImageName: String } class CotabbyPermissionKind { <<enum>> +systemImageName: String } class OnboardingLayout { +horizontalPadding: CGFloat } class HomePaneView class ShortcutsPaneView class PermissionsPaneView class WelcomeKeybindStepView class WelcomeTemplateStepView class WelcomeView class OnboardingStyle OnboardingStyle ..> CotabbyBrand : accent/accentSoft OnboardingStyle ..> OnboardingLayout : horizontalPadding WelcomeKeybindStepView ..> KeycapView : shared chrome WelcomeTemplateStepView ..> CotabbyBrand : accent tints WelcomeTemplateStepView ..> SuggestionEngineKind : systemImageName WelcomeView ..> CotabbyBrand : logo shadow WelcomeView ..> OnboardingLayout : padding HomePaneView ..> CotabbyBrand : brand-blue glow HomePaneView ..> SuggestionEngineKind : systemImageName ShortcutsPaneView ..> KeycapView : shared chrome PermissionsPaneView ..> CotabbyPermissionKind : systemImageNameReviews (1): Last reviewed commit: "feat(ui): align Settings styling with th..." | Re-trigger Greptile