Skip to content

feat(panel): Settings… in the menu bar menu and ⌘, to open Settings - #227

Merged
adefreitas merged 3 commits into
StackOneHQ:mainfrom
adefreitas:fix/settings-shortcut
Oct 30, 2026
Merged

adefreitas merged 3 commits into
StackOneHQ:mainfrom
adefreitas:fix/settings-shortcut

Conversation

@adefreitas

@adefreitas adefreitas commented Oct 29, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Settings is two steps away from the menu bar (open the panel, find the tab). This adds Settings… to the menu bar menu and ⌘, inside the panel, both landing on Settings.

Changes

  • Menu bar menu: Settings… (⌘,) between Show panel and Check permissions…, calling the new PanelController.showSettings(category:).
  • ⌘, is a new case in globalKeyAction (.openSettings), per the keyboard rules in AGENTS.md. It works from a text field, is ignored while recording a hotkey and on a held key, and does nothing on screens with no tab strip (setup, update, Permissions opened from setup), like ⌘←/→.
  • README: key table and menu table rows.
  • GlobalKeyActionTests.test_commandCommaOpensSettings pins the key table.

Testing

Automated: ./build.sh (no new warnings), make test-without-xcode (1448 tests, 0 failures), make typecheck-tests.

Manual, after make reload:

  1. Click the bell in the menu bar. Choose Settings…. The panel opens on the Settings tab.
  2. Hide the panel, switch to Events, open it with the hotkey, press ⌘,. It switches to Settings.
  3. On Sessions, press / to focus the filter, then ⌘,. It switches to Settings.
  4. In Settings, select the hotkey row and start recording. ⌘, is recorded as the combo and does not leave the page.
  5. With the widget on and the panel collapsed to the pill, choose Settings…. The panel expands onto Settings.

Related issues

None.

🤖 Generated with Claude Code


Summary by cubic

Adds Settings… to the menu bar menu and a ⌘, shortcut in the panel, so users can jump straight to Settings instead of opening the panel and finding the tab.

  • ⌘, works from a text field and is ignored while recording a hotkey, on held keys, and on screens with no tab strip (setup, update, permissions from setup).

Written for commit 282355b. Summary will update on new commits.

View guided diff

Reaching Settings meant opening the panel and finding the tab. The menu bar
menu gains Settings… (⌘,), which opens the panel on Settings. ⌘, inside the
panel does the same through globalKeyAction, so it works from a text field and
follows the same rules as ⌘←/→: not while recording a hotkey, not on screens
with no tab strip, and not on a held key.
PanelController.showSettings(category:) can open a given category.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Comment thread panel/Panel.swift Resolved
Comment thread panel/Panel.swift Resolved
Comment thread panel/Panel.swift Resolved

@hiskudin hiskudin left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review by Claude, from Hisku's session.

LGTM, with one small fix before merging:

The menu item has no guard. The ⌘, path correctly does nothing on setup, the update screens and Permissions opened from setup. showSettings(), called from the menu bar's Settings…, sets nav.mode = .settings unconditionally, so choosing it during the setup wizard leaves the wizard. The same guard is needed there. showPermissions() already handles .bootstrap.

Nit: showSettings(category:) has no caller that passes a category. I'd drop the parameter until one does.

- AGENTS.md: add the ⌘, row to the keys that mean the same on every page,
  and re-wrap the panelHandlesGlobalKey comment.
- Pull the ⌘, guard into canOpenSettings beside stepTabTarget, with tests
  for tabs, sub-pages, setup, the update screens and Permissions from setup.
- Menu Settings… shares canOpenSettings, so on setup or an update screen it
  only brings the panel up instead of replacing the screen.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@adefreitas
adefreitas merged commit d1d88c8 into StackOneHQ:main Oct 30, 2026
12 of 13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants