Repository navigation
Description
The problem
Coach is currently buried in the Insights/More navigation. It is easy to miss, particularly on iPhone, and entering it requires leaving Today.
The idea
Add Coach as an optional, off-by-default card in Today customization across iOS, macOS, and Android.
Tapping the card would open a compact platform-native Coach launcher:
- iOS: modal sheet
- macOS: sheet
- Android: bottom sheet
When Coach is configured, the launcher would offer the existing suggested questions and a compact composer. When it is not configured, it would explain the opt-in, bring-your-own-key model and route to the existing Coach setup screen.
Constraints:
- Opening the card or sheet must not make a network request.
- Existing provider, key storage, consent, system prompt, BLE, and offline-by-default behavior remain unchanged.
- Use the existing shared
DashboardCardpreference contract so card selection stays consistent across platforms. - Keep the existing full Coach screen as the configuration and fallback surface.
Alternatives you've considered
- Leave Coach in More/Insights. This keeps Today uncluttered but leaves the feature hard to discover.
- Add Coach as a permanent Today section. An optional card is preferable because users who do not use a provider should not get another fixed dashboard element.
- Redesign Coach immediately as a persistent ChatGPT-style workspace. That is a larger follow-up: it needs local conversation/thread storage, retention and deletion controls, backup policy, and a decision about when prior turns may be sent to a provider.
Additional context
The first contribution should stay limited to the launcher. Persistent conversation history, training plans, a thread list, provider changes, and changes to consent behavior are out of scope.
Verification should confirm that the card is absent by default, can be added/moved/removed through Today customization, opens the expected platform-native surface, routes unconfigured users to existing setup, and does not make a provider request until the user explicitly sends a question.
Activity
today: make the Android Coach launcher actually reach Coach (#1862)
today: handle the Coach destination in the iOS tab shell too (#1862)
today: import StrandDesign in the Coach launcher sheet (#1862)
today: add an optional, default-OFF Coach launcher card (#1862)
today: make the Android Coach launcher actually reach Coach (#1862)
today: handle the Coach destination in the iOS tab shell too (#1862)
today: import StrandDesign in the Coach launcher sheet (#1862)
today: add an optional, default-OFF Coach launcher card (#1862)
feat: AI Coach — streaming, voice, brief, history, widgets, Siri (K1-…
fix: remove duplicate openCoach() declaration in NavRouter
merge: bring in 95 upstream RyanBR commits (through 64ddc81)
iOS: drop the unreachable second case .coach in RootTabView (#2349)