Repository navigation
Adopt the shared Settings, About, menu, Help and menu bar surfaces - #27
Merged
Merged
Conversation
Vendor the shared macOS surface sources under privacycommand/Sources/privacycommand/MacSurfaces with a lock of their hashes, and compile the folder into the app as a synchronized group. `just surfaces` refreshes the copy, a scheme pre-action runs the same step before each build, and `just check` verifies the copy against its lock. The shared code needs macOS 14, so the minimum moves from macOS 13 to 14. Nothing in the app uses the new types yet. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
CI and TestFlight or release builds now only verify the committed copy, so a publication build never changes its own sources. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…ed surface code Settings is SurfaceSettings with the General, Helper, VM agent and Updates panes as grouped-form sections; the About tab is gone and the scaffold adds the About button to General. Delete All Runs, Clear Cache and Uninstall Helper are gated destructive buttons; explanations sit behind info labels. The Updates pane is the shared one driven by the app's Sparkle updater, with a Homebrew section on Cask installs. About is SurfaceAboutWindow with the capability grid, source and issue links, acknowledgements and the licence line. SurfaceCommands supplies About, Check for Updates… (below Settings…, ⌘U dropped) and the three Help items; File is restored with Open .app…, Scan Installed Apps… and the report exports; Knowledge Base… moves to View. Help opens a bundled manual of nine pages (Resources/Manual, a folder reference in Copy Bundle Resources), the Keyboard Shortcuts window and the onboarding replay. The watch-mode popover takes the standard header and footer. The shared copy moves from version 3 to 6, and privacycommandSurface.swift defines the app's SurfaceApp, shortcuts and acknowledgements once. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Version 8 tidies the vendored copy tool, .project/mac_surfaces.py, which the code quality review flagged: sync no longer returns check()'s always-None result, and the git lookup no longer ends in a bare except/pass. Behaviour is unchanged. The copy also moves from version 3 to the current Swift sources (the in-app manual and Keyboard Shortcuts windows among them), which the adoption PR stacked on this one already builds against. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 9, 2026
adamXbot
added a commit
that referenced
this pull request
Oct 9, 2026
…3 claims (#30) Help → Show Onboarding… went away when the shared surfaces landed (#27); the Help menu now has Welcome to privacycommand, which replays the whole wizard. Settings → Helper installs the helper directly, so the File events empty state, its badge tooltip and the onboarding's closing step now send people there, matching the BTM audit view. Every target builds for macOS 14.0, including the SwiftPM-built guest agent, so the guest installer README now says macOS 14+ and the bug report placeholder no longer suggests a macOS 13 setup. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Follows #26, which brought the shared surface code into the repository without changing a screen. This change moves the app's Settings, About, menus, Help and the watch-mode menu bar item onto that code, refreshes the copy to version 6, and adds the bundled manual.
What changed per surface
Settings —
Settings { SurfaceSettings(app:panes:) }with the four panes the standard keeps for this app: General, Helper, VM agent, Updates. Each is grouped-form sections; the scaffold adds the About button to General.DELETE), analysis cache (Clear Cache… behind a confirmation), and the standard Menu bar section with the watch-mode icon picker reading the existingwatchModeIconStylekey, plus a live status row. The onboarding replay row moved to Help.SurfacePane.updates(SurfaceUpdates(driver: updater, releaseNotes:)), automatic checks off until turned on (SUEnableAutomaticCheckswas already false). A Homebrew Cask install gets a section above it with thebrew upgrade --caskcommand; automatic checks are still forced off at launch on those installs.About —
SurfaceAboutWindow: icon, two-tone wordmark, version and build provenance, summary, a six-row capability grid, Source on GitHub and Report an Issue, Help and Keyboard Shortcuts links, Acknowledgements (Sparkle's licence text and the CC0 tools catalogue), and theMIT License · © 2026 privacykeyline. The custom About window scene andAboutSettingsView/WordmarkVieware removed, as is the now-unused GitHub image asset.NSHumanReadableCopyrightis now a real © line.Menus —
SurfaceCommands(app:help:updates:)supplies About, Check for Updates… (below Settings…, no shortcut; ⌘U is dropped) and the three Help items. File is restored with Open .app… (⌘O), Scan Installed Apps… (⇧⌘B) and the three Save Run Report… exports, replacing the separate Export menu. Knowledge Base… (⇧⌘K) moved from Help into View. Run keeps its four commands. Refresh Helper Status is gone (the Helper pane refreshes itself).Help —
privacycommand Helpopens the bundled manual (Resources/Manual, nine pages: getting started, static analysis, monitored runs, VM mode, batch scan, history and compare, reports, settings, troubleshooting),Keyboard Shortcuts(⌘?) lists every shortcut after the standard group, andWelcome to privacycommandreplays the onboarding. The Manual folder is a folder reference in Copy Bundle Resources, so it lands atContents/Resources/Manual.Menu bar item — the watch-mode popover now has the standard header (mark, name, elapsed time) and footer (Open privacycommand, Settings gear, Quit). The app's own content is unchanged: watched app, change log, Clear Log, and Stop Watching as the primary action (⌘↩). The item still appears only while watching, and the status item's accessibility label states its state.
Shared copy — version 3 → 6 (adds
SurfaceManual.swiftandSurfaceShortcuts.swift).UpdateControllershrinks to owning the Sparkle updater and the stable channel;UpdatesSettingsViewis deleted.privacycommandSurface.swiftdefines the app'sSurfaceApp, shortcuts and acknowledgements once.Validation
CODE_SIGNING_ALLOWED=NO CODE_SIGN_IDENTITY=-) succeeds; the bundle containsContents/Resources/Manualwith the nine pages.just checkpasses (lint, security check, docs check, tooling tests including the surfaces copy check, and the package tests).🤖 Generated with Claude Code