Add collapsible 'what's included' disclosure to onboarding template cards#454
Merged
Merged
Conversation
… knob
Three tier-shaped changes, plus surface tweaks so the cards reflect them:
- Quick switches to tabby-1-nano (SmolLM2-135M, ~0.1 GB) — the previous
~0.4 GB Qwen3 was the wrong fit for a 'fast and lightweight' tier when
a smaller model exists in the catalog.
- Multi-line completions are now off in every tier. A fresh user should
not opt into block completions through tier choice; the General toggle
remains the way in. The Multi-line row drops out of the per-card
disclosure since it would be identical (off) on all three.
- Clipboard context becomes a per-tier knob: off on Quick (skip the per-
keystroke pasteboard read and the extra prompt bytes), on for Everyday
and Powerful. It takes the slot left by the Multi-line row in the
disclosure.
- The engine-row footer now names the actual model ('tabby-1-nano ·
~0.1 GB download') instead of the generic 'Local model'.
- Powerful's detail copy drops the 'multi-line' phrasing now that the
flag is off.
…s in tests - Add a move(edge: .top) + opacity transition so the "What's included" rows slide open with the chevron instead of popping in. - Assert the suggestion-length detail against OnboardingTemplate.<tier>.wordCountPreset.displayLabel rather than hardcoded strings, so the test tracks the production label instead of snapshotting it.
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
Onboarding template cards (Quick / Everyday / Powerful) now have a collapsed-by-default "What's included" disclosure under the description. Expanding it lists the concrete settings each template will toggle on or off — suggestion length, fast mode, multi-line completions — so users can compare templates without trusting the marketing copy alone.
Implementation
Cotabby/Support/OnboardingTemplateFeatureList.swiftexposes the row list per template, driven from the existingOnboardingTemplateproperties so the source of truth doesn't fork.WelcomeTemplateStepView.TemplateCardis split: the selectionButtonwraps the descriptive content; the disclosure is rendered as a sibling view inside the shared rounded background so its toggle taps never double-fire selection. Each card holds its own@Stateso opening one doesn't expand the others.CotabbyTests/OnboardingTemplateFeatureListTests.swiftcover all three templates.Validation
Manual UI verification on real onboarding flow not performed in this session.
Linked issues
None.
Risk / rollout notes
Cotabby.xcodeprojrows reflect XcodeGen rediscovering the two new files; the XcodeGen drift check should pass..easeInOut(duration: 0.18)— short enough to feel responsive, long enough to read as a deliberate expansion.Greptile Summary
This PR adds a collapsed-by-default "What's included" disclosure to each onboarding template card, and introduces
enablesClipboardContextas a new per-template behavior flag (off for Quick, on for Everyday/Powerful). TheenablesMultiLineflag is also flattened to always-falseacross all tiers, and the Quick tier's open-source model is switched to SmolLM2.OnboardingTemplateFeatureListhelper returns ordered feature rows per template driven from the existing properties, keeping the UI and tests in sync with a single source of truth.TemplateCardis restructured so the selectionButtonand the disclosure toggle are sibling views sharing one rounded background, preventing disclosure taps from double-firing template selection.ResolvedTemplatePlanandWelcomeVieware updated to carry and applyenablesClipboardContext, completing the end-to-end wiring for the new flag.Confidence Score: 4/5
Safe to merge after fixing the clip-shape omission on the card container; everything else is correct.
The disclosure animation uses
.move(edge: .top)combined with an.opacitytransition, but the outerVStackonly has a.backgroundmodifier — not a.clipShape. On macOS,.backgroundpaints behind the content without clipping it, so the animating rows will visibly overflow the card's rounded rectangle for the entire 0.18 s animation. The rest of the PR — the newenablesClipboardContextwiring, the pure feature-list helper, the test coverage, and the Xcode project additions — is straightforward and correct.Cotabby/UI/WelcomeTemplateStepView.swift — the body of TemplateCard needs a .clipShape modifier to contain the disclosure animation.
Important Files Changed
Flowchart
%%{init: {'theme': 'neutral'}}%% flowchart TD A[WelcomeTemplateStepView] --> B[ForEach OnboardingTemplate.allCases] B --> C[TemplateCard] C --> D[selectionButton] C --> E[featureDisclosure] D -->|onTap| F[onSelect template] E --> G{isFeatureListExpanded} G -->|false| H[Show chevron toggle] G -->|true| I[Show feature rows] I --> J[OnboardingTemplateFeatureList.rows] F --> N[WelcomeView.applyTemplate] N --> S[setClipboardContextEnabled]Reviews (3): Last reviewed commit: "Address Greptile review: animate disclos..." | Re-trigger Greptile