[Feature]: Mobile: add the Legacy features menu (Plan mode toggle) for parity with web/desktop #6970
amanthanvi
started this conversation in
Ideas
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Before submitting
Area
apps/mobile
Problem or use case
On web/desktop, Settings → General has a "Legacy features" section (
LegacyFeaturesSection,apps/web/src/components/settings/SettingsPanels.tsx) with three toggles:planModeEnabled(ClientSettings): restores the Build/Plan composer toggle, the/planand/defaultcommands, and Shift+Tab.enableLegacyTokenStreaming(ServerSettings).legacySidebarEnabled(ClientSettings).The mobile app has no equivalent menu. Its Settings screen has a one-row "Legacy" section containing only "Legacy Thread List" (device-local
legacyThreadListEnabled,apps/mobile/src/features/settings/SettingsRouteScreen.tsx). Meanwhile, plan mode on mobile is in a strange in-between state:/planand/defaultare always present in the composer's slash-command menu (apps/mobile/src/features/threads/ThreadComposer.tsx) — there is no way to hide them, and no toggle that corresponds to web'splanModeEnabled.ClientSettingsat all (apps/mobile/src/persistence/mobile-preferences.tsnotes "Mobile has no client-settings sync"), so a user who enables Plan mode (legacy) on desktop gets inconsistent behavior when they pick up their phone.Concretely: I use Plan mode (legacy) on desktop. When I open the same environment from mobile there is no Legacy features menu, no mode toggle, and no way to control any of this — the two clients disagree about which legacy features exist.
Proposed solution
Add a Legacy features section to mobile Settings mirroring the web/desktop one, scoped to what makes sense on mobile:
planModeEnabledkey frompackages/contracts/src/settings.ts(ClientSettingsSchema/ClientSettingsPatch) so the preference syncs with web/desktop rather than adding another device-local flag. When on, surface a Chat/Plan mode control in the mobile composer (parity with web's "Mode" radio with "Chat" and "Plan" items inCompactComposerControlsMenu.tsx); when off, hide/planand/defaultfrom the slash menu and force default mode, matching web's gating inChatView.tsx.(
Stream token by token (legacy)is server-authoritative and mobile has no server-settings editor, so it is reasonably out of scope.)Why this matters
Cross-client consistency: legacy features are already a first-class, discoverable concept on web/desktop, and the settings keys already live in shared contracts. Mobile users who rely on plan mode currently get an undiscoverable, unconfigurable subset — and users who don't want plan mode can't turn the slash commands off, unlike on desktop.
Smallest useful scope
A "Legacy features" section on the mobile Settings screen with a single Plan mode (legacy) toggle backed by the shared
planModeEnabledclient setting, gating the/plan//defaultslash commands the way web does. Everything else (mode picker UI, folding in Legacy Thread List) can come later.Alternatives considered
legacyThreadListEnabled): works, but adds a third divergence instead of reusing the contract key that web/desktop already share.Risks or tradeoffs
ClientSettingssync at all, so the first shared-setting consumer carries the plumbing cost (or falls back to the device-local pattern with the sync noted as a follow-up).Examples or references
Web/desktop implementation for parity reference:
apps/web/src/components/settings/SettingsPanels.tsx—LegacyFeaturesSection(section header "Legacy features")apps/web/src/components/settings/settingsSearch.ts—legacy-plan-mode,legacy-token-streaming,legacy-sidebarpackages/contracts/src/settings.ts—planModeEnabled,legacySidebarEnabled,enableLegacyTokenStreamingapps/mobile/src/features/settings/SettingsRouteScreen.tsx— mobile's current one-row "Legacy" sectionScreenshots (captured on current
main@ac1264e2c; web via local dev server, mobile via the iOS dev clientcom.t3tools.t3code.devbuilt from source on an iOS 26.5 simulator):Web/desktop — Settings → General → Legacy features (the parity target):
Web/desktop — composer Mode control (Chat/Plan) with Plan mode (legacy) enabled:
Mobile — Settings has only a one-row "Legacy" section (no Legacy features menu, no Plan mode toggle):
Mobile —
/planand/defaultare always in the slash menu, with no setting to control them:Contribution
All reactions