Skip to content

feat(macos): open Settings from the registry with Cmd-, - #185

Merged
SarthakWade merged 4 commits into
mainfrom
feat/macos-settings-window
Sep 13, 2026
Merged

feat(macos): open Settings from the registry with Cmd-,#185
SarthakWade merged 4 commits into
mainfrom
feat/macos-settings-window

Conversation

@yashranaway

Copy link
Copy Markdown
Collaborator

What this changes

  • Cmd-, opens or focuses one macOS Settings window from the Headless menu (Settings…, above Hide).
  • The window is built from SettingsRegistry.shared.definitions and writes through SettingsControllerSettingsStore as the user, the same backend as headless config set.
  • The current cut renders startup-presentation (enum, macOS, agent-writable, next host start) with current value, default, platform, restart behavior, agent-modifiability, summary, and reset-to-default.
  • Linux has no Settings GUI. Help and COMMANDS.md keep headless config as the portable path.
  • No credential silent-fill settings and no security-invariant toggles.

Closes #158

Verification

  • Protocol suite in Swift Docker: 66/66, including unique chords, Settings… as Command-,, host showSettings: wiring, and SettingsController file/UserDefaults backend parity with CLI config.
  • macos-e2e.sh greps host source for Cmd-, / showSettings wiring and Accessibility-probes Headless > Settings… when a host is running.
  • Web content provenance and command directory checks passed.

Add a single AppKit Settings window opened from the Headless menu.
The UI is built from SettingsRegistry and writes through SettingsStore,
so it cannot drift from `headless config`. Linux has no Settings GUI.
@yashranaway yashranaway added the macos-e2e Run the macOS WKWebView E2E suite label Sep 13, 2026
Comment thread apps/headless/Tests/macos-e2e.sh
Comment thread apps/headless/Host/SettingsWindow.swift Outdated
Comment thread apps/headless/Host/SettingsWindow.swift
Comment thread apps/headless/Host/SettingsWindow.swift Outdated

@SarthakWade SarthakWade 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.

Requesting changes before merge.\n\nThe branch has no merge conflict with current main, but it is now behind #184. The macOS host build fails locally and in both CI and release at SettingsWindow.swift:35. The added macOS E2E coverage does not execute the acceptance workflow from #158, the generic text editor does not fail closed for future sensitive values, and the capped layout has no scrolling.\n\nThe protocol suite passes locally, so the shared SettingsStore and SettingsController behavior is a solid base. The Linux ARM release failure is the known supervised owner-pipe DevTools closure that #184 just fixed; updating from main should bring that fix into this branch. After the blockers are addressed, please run the required macOS build and add the macos-e2e label so opening, one-window focus, editing, reset, persistence, accessibility, and narrow-window behavior are exercised before merge.

@SarthakWade SarthakWade 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.

Re-reviewed after the fixes. Settings now builds, shares storage correctly between the app and CLI, protects user-only strings, supports scrolling and keyboard focus, and has full macOS E2E coverage for open, edit, persistence, reset, and one-window behavior. All required checks and the full macOS E2E pass.

@SarthakWade
SarthakWade merged commit 313d08a into main Sep 13, 2026
38 of 40 checks passed
@SarthakWade
SarthakWade deleted the feat/macos-settings-window branch September 13, 2026 20:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

macos-e2e Run the macOS WKWebView E2E suite

Projects

None yet

Development

Successfully merging this pull request may close these issues.

macOS Settings window: shared preferences UI and Cmd+, shortcut

2 participants