diff --git a/apps/web/src/components/settings/SettingsPanels.tsx b/apps/web/src/components/settings/SettingsPanels.tsx index 131e8539282c8..6df73fdcf79f4 100644 --- a/apps/web/src/components/settings/SettingsPanels.tsx +++ b/apps/web/src/components/settings/SettingsPanels.tsx @@ -2085,7 +2085,6 @@ function AutoSettleDaysInput({ // expand the section before its target can mount and scroll. const LEGACY_FEATURE_TARGET_IDS: ReadonlySet = new Set([ "legacy-plan-mode", - "legacy-context-window-indicator", "legacy-sidebar", ]); @@ -2140,19 +2139,6 @@ function LegacyFeaturesSection() { /> } /> - - updateSettings({ contextWindowMeterEnabled: Boolean(checked) }) - } - aria-label="Context window indicator (legacy)" - /> - } - /> + + updateSettings({ + contextWindowMeterEnabled: DEFAULT_UNIFIED_SETTINGS.contextWindowMeterEnabled, + }) + } + /> + ) : null + } + control={ + + updateSettings({ contextWindowMeterEnabled: Boolean(checked) }) + } + aria-label="Context window indicator" + /> + } + /> + { const streaming = getSettingsSearchTargetScope("response-streaming")!; expect(streaming.scope).toBe("project-defaults"); expect(isSettingsSearchScopeAvailable(streaming.scope, "project")).toBe(true); - for (const id of ["legacy-plan-mode", "legacy-context-window-indicator", "legacy-sidebar"]) { + for (const id of ["legacy-plan-mode", "legacy-sidebar", "context-window-indicator"]) { expect(getSettingsSearchTargetScope(id)!.scope).toBeNull(); } }); diff --git a/apps/web/src/components/settings/settingsSearch.ts b/apps/web/src/components/settings/settingsSearch.ts index 0ee55ef3785b4..a34266997c649 100644 --- a/apps/web/src/components/settings/settingsSearch.ts +++ b/apps/web/src/components/settings/settingsSearch.ts @@ -459,6 +459,12 @@ export const SETTINGS_SEARCH_ITEMS = [ to: "/settings/general", searchTerms: ["enter return command ctrl multiline prompt new line composer"], }, + { + id: "context-window-indicator", + title: "Context window indicator", + to: "/settings/general", + searchTerms: ["composer meter usage tokens circle compact"], + }, { id: "follow-up-behavior", title: "Follow-up behavior", @@ -601,12 +607,6 @@ export const SETTINGS_SEARCH_ITEMS = [ to: "/settings/general", searchTerms: ["build plan composer old"], }, - { - id: "legacy-context-window-indicator", - title: "Context window indicator (legacy)", - to: "/settings/general", - searchTerms: ["composer meter usage tokens circle old"], - }, { id: "legacy-sidebar", title: "Sidebar (legacy)", diff --git a/packages/contracts/src/settings.ts b/packages/contracts/src/settings.ts index 2d3fd53e31f12..e22ea4e6f7b31 100644 --- a/packages/contracts/src/settings.ts +++ b/packages/contracts/src/settings.ts @@ -445,8 +445,8 @@ export const ClientSettingsSchema = Schema.Struct({ // default UI; this beta flag restores it (plus the /plan and /default slash // commands) for users who still rely on the old workflow. planModeEnabled: Schema.Boolean.pipe(Schema.withDecodingDefault(Effect.succeed(false))), - // Legacy context window meter. The composer hides it by default; users who - // still want the old usage indicator can restore it from Settings. + // Context window meter in the composer. Off by default; users who want to + // track context usage enable it from Settings → General. contextWindowMeterEnabled: Schema.Boolean.pipe(Schema.withDecodingDefault(Effect.succeed(false))), // Desktop resting composer: scrolling an existing thread's conversation // settles the composer into its single-line layout. Losing focus never does.