fix(ui): always show Onboarding and Restart Orca in Help (#12379)

* fix(ui): always show Onboarding in the Help menu

Users could not find "Show onboarding again" because it required holding Alt. Surface it on the default Help menu so replay is discoverable without reinstalling.

* fix(ui): always show Restart Orca in the Help menu

Surface Restart next to Check for Updates by default and drop the Alt-only admin gate, which no longer hid anything else.
This commit is contained in:
Jinjing 2026-08-03 19:23:22 -07:00 committed by GitHub
parent 64b81cde50
commit a69ca6d5b7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 28 additions and 41 deletions

View File

@ -42,8 +42,8 @@ export function GeneralUpdateSettingsSection(): React.JSX.Element {
const [appVersion, setAppVersion] = useState<string | null>(null)
const updateCheckHint = getUpdateCheckHint()
// Why: channel switching is a power-user escape hatch that can downgrade the app
// onto an unvetted build. Option/Alt-clicking the header reveals it, matching the
// Help menu's hidden admin options rather than shipping it on the default surface.
// onto an unvetted build. Option/Alt-clicking the header reveals it rather than
// shipping it on the default surface.
const [channelSwitcherRevealed, setChannelSwitcherRevealed] = useState(false)
useEffect(() => {

View File

@ -222,9 +222,14 @@ describe('SidebarSettingsHelpMenu', () => {
expect(html).not.toContain('Milestones')
})
it('hides the Onboarding admin entry by default', () => {
it('renders the Onboarding menu item by default', () => {
const html = renderToStaticMarkup(<SidebarSettingsHelpMenu />)
expect(html).not.toContain('Onboarding')
expect(html).toContain('Onboarding')
})
it('renders Restart Orca by default', () => {
const html = renderToStaticMarkup(<SidebarSettingsHelpMenu />)
expect(html).toContain('Restart Orca')
})
it('renders Docs link', () => {

View File

@ -95,7 +95,6 @@ export function SidebarSettingsHelpMenu(): React.JSX.Element {
const settingsShortcut = useShortcutKeyDetails('app.settings')
const [menuOpen, setMenuOpen] = useState(false)
const [feedbackOpen, setFeedbackOpen] = useState(false)
const [showAdminOptions, setShowAdminOptions] = useState(false)
const [isRestartingOrca, setIsRestartingOrca] = useState(false)
const lastShowOnboardingAtRef = React.useRef(0)
const updateCheckModifiersRef = React.useRef(NO_UPDATE_CHECK_MODIFIERS)
@ -108,15 +107,6 @@ export function SidebarSettingsHelpMenu(): React.JSX.Element {
const handleMenuOpenChange = (open: boolean): void => {
setMenuOpen(open)
updateCheckModifiersRef.current = NO_UPDATE_CHECK_MODIFIERS
if (!open) {
setShowAdminOptions(false)
}
}
const revealAdminOptions = (altKey: boolean): void => {
// Why: onboarding replay and restart stay off the default Help menu; holding
// Option/Alt before opening is an intentional power-user affordance.
setShowAdminOptions(altKey)
}
const handleShowOnboarding = (): void => {
@ -221,8 +211,6 @@ export function SidebarSettingsHelpMenu(): React.JSX.Element {
'Help'
)}
className="text-muted-foreground"
onPointerDown={(event) => revealAdminOptions(event.altKey)}
onClick={(event) => revealAdminOptions(event.altKey)}
>
<CircleHelp className="size-3.5" />
</Button>
@ -268,19 +256,17 @@ export function SidebarSettingsHelpMenu(): React.JSX.Element {
/>
</DropdownMenuItem>
) : null}
{showAdminOptions ? (
<DropdownMenuItem
className="whitespace-nowrap"
onClick={handleShowOnboarding}
onSelect={handleShowOnboarding}
>
<School className="size-3.5" />
{translate(
'auto.components.sidebar.SidebarSettingsHelpMenu.b7e4d2a19c',
'Onboarding'
)}
</DropdownMenuItem>
) : null}
<DropdownMenuItem
className="whitespace-nowrap"
onClick={handleShowOnboarding}
onSelect={handleShowOnboarding}
>
<School className="size-3.5" />
{translate(
'auto.components.sidebar.SidebarSettingsHelpMenu.b7e4d2a19c',
'Onboarding'
)}
</DropdownMenuItem>
<ExternalMenuItem
label={translate(
'auto.components.sidebar.SidebarSettingsHelpMenu.cdc87f897e',
@ -333,18 +319,14 @@ export function SidebarSettingsHelpMenu(): React.JSX.Element {
'Check for Updates'
)}
</DropdownMenuItem>
{showAdminOptions ? (
<>
<DropdownMenuSeparator />
<DropdownMenuItem onSelect={handleRestartOrca} disabled={isRestartingOrca}>
<RotateCw className="size-3.5" />
{translate(
'auto.components.sidebar.SidebarSettingsHelpMenu.ad3d3ed7f1',
'Restart Orca'
)}
</DropdownMenuItem>
</>
) : null}
<DropdownMenuSeparator />
<DropdownMenuItem onSelect={handleRestartOrca} disabled={isRestartingOrca}>
<RotateCw className="size-3.5" />
{translate(
'auto.components.sidebar.SidebarSettingsHelpMenu.ad3d3ed7f1',
'Restart Orca'
)}
</DropdownMenuItem>
</DropdownMenuContent>
</DropdownMenu>
</div>