From 4b385d8c25eeaa91a2dadfaa0bcbbe11a205ca8a Mon Sep 17 00:00:00 2001 From: Brennan Benson <79079362+brennanb2025@users.noreply.github.com> Date: Thu, 27 Aug 2026 18:00:53 -0700 Subject: [PATCH] feat(settings): unlock hidden experimental group via Option-click on the Experimental page title Replaces the Shift-click-sidebar unlock with the Updates-header idiom: Option-click the Experimental page title toggles the hidden group. Removes the now-unused click-modifier plumbing from the settings sidebar. --- .../components/settings/ExperimentalPane.tsx | 2 +- .../src/components/settings/Settings.tsx | 18 ++++---- .../components/settings/SettingsSection.tsx | 11 ++++- .../components/settings/SettingsSidebar.tsx | 46 +++---------------- 4 files changed, 25 insertions(+), 52 deletions(-) diff --git a/src/renderer/src/components/settings/ExperimentalPane.tsx b/src/renderer/src/components/settings/ExperimentalPane.tsx index bccd7989a90..b54e7ce75f2 100644 --- a/src/renderer/src/components/settings/ExperimentalPane.tsx +++ b/src/renderer/src/components/settings/ExperimentalPane.tsx @@ -25,7 +25,7 @@ type ExperimentalPaneProps = { settings: GlobalSettings updateSettings: (updates: Partial) => void /** Hidden-experimental group is only rendered once the user has unlocked - * it via Shift-clicking the Experimental sidebar entry. */ + * it via Option-clicking the Experimental page title. */ hiddenExperimentalUnlocked?: boolean } diff --git a/src/renderer/src/components/settings/Settings.tsx b/src/renderer/src/components/settings/Settings.tsx index ed4bb3eb930..fb928aa2ceb 100644 --- a/src/renderer/src/components/settings/Settings.tsx +++ b/src/renderer/src/components/settings/Settings.tsx @@ -389,7 +389,7 @@ function Settings(): React.JSX.Element { const [hasUnsavedBranchPromptChanges, setHasUnsavedBranchPromptChanges] = useState(false) const [sourceControlAiPromptDiscardSignal, setSourceControlAiPromptDiscardSignal] = useState(0) const confirm = useConfirmationDialog() - // Why: session-only (deliberately not persisted) unlock — Shift-click the Experimental entry reveals the hidden group. + // Why: session-only (deliberately not persisted) unlock — Option-click the Experimental page title reveals the hidden group. const [hiddenExperimentalUnlocked, setHiddenExperimentalUnlocked] = useState(false) const contentScrollRef = useRef(null) const searchInputRef = useRef(null) @@ -1108,17 +1108,10 @@ function Settings(): React.JSX.Element { ]) const scrollToSection = useCallback( - async ( - sectionId: string, - modifiers?: { metaKey: boolean; ctrlKey: boolean; shiftKey: boolean; altKey: boolean } - ): Promise => { + async (sectionId: string): Promise => { if (sectionId !== activeSectionId && !(await confirmDiscardSourceControlAiPromptChanges())) { return } - // Why: Shift-click the Experimental row unlocks the hidden power-user group (session-only). - if (sectionId === 'experimental' && modifiers?.shiftKey) { - setHiddenExperimentalUnlocked((previous) => !previous) - } const container = contentScrollRef.current if (container) { container.scrollTo({ top: 0 }) @@ -1844,6 +1837,13 @@ function Settings(): React.JSX.Element { 'New features that are still taking shape. Give them a try.' )} searchEntries={getSectionSearchEntries('experimental')} + // Why: Option-click the page title unlocks the hidden staff group + // (session-only) — same idiom as Option-click on the Updates header. + onTitleClick={(event) => { + if (event.altKey) { + setHiddenExperimentalUnlocked((previous) => !previous) + } + }} > {isSectionMounted('experimental') ? (