fix: install hardening + first-run welcome + about footer#24
Merged
Conversation
Bundles four small UX improvements pulled out of the install-flow review: - install.sh: pkill survivor processes before re-registering launchd agents so the unload→load sequence doesn't race a stale instance. Rotate app.log / daemon.log if they exceed 10MB; old logs go to .old. - Settings: small "About" footer at the bottom of the scroll view shows the app version (read from CFBundleShortVersionString) and a clickable link to the GitHub repo. Non-navigable so it doesn't bump rowCount. - First-run welcome: WelcomeView replaces the tab strip on first panel open after install, summarising what the app does, surfacing the hotkey, and listing the three tabs. Enter dismisses; the choice persists via STACKNUDGE_WELCOMED=true so it never reappears. - PanelController auto-opens the panel on first launch when the welcome flag isn't set, so new users see stack-nudge work without having to discover the hotkey first. Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
- Welcome view: replace em dashes; add "Grant permissions" / "Got it" action bar so the user explicitly chooses when to set up perms instead of being ambushed by an auto-fired Accessibility prompt - Apply ThinScrollers() to the welcome scroll view so its scrollbars match the rest of the panel - Permissions: add Notifications row alongside Accessibility and Automation; new Permissions.notifications() / promptNotifications() helpers, .notifications case on SettingsPane, "Prompt" label (instead of "Reset & prompt") for the notifications row since TCC reset doesn't apply to it - Permissions window: drop level=.modalPanel — that was forcing it above macOS system dialogs and clipping them. With .normal level, system alerts and System Settings naturally take precedence as the OS intends. Window now centres normally; user can move it themselves. - Install completion message: boxed hotkey reminder so new users see cmd+opt+n on first install Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Gives the user immediate proof the install worked AND triggers macOS's notification permission prompt during install instead of mid-task later. - notify.sh: new 'welcome' event with a friendly "You're all set" body; bypasses STACKNUDGE_MUTE_WHEN_FOCUSED so the banner fires even though the user is staring at the install terminal at that moment - install.sh: after hooks are wired, wait briefly for the launchd-managed app's panel socket to come up, then post the welcome via the freshly installed notify.sh Co-Authored-By: Claude Sonnet 4.6 (1M context) <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.
Summary
Bundles the install-flow review wins from earlier:
Install hardening
pkillsurvivor processes before re-registering launchd agents so the unload→load doesn't race a stale instanceapp.log/daemon.logif they exceed 10MB; old logs go to.oldcmd+opt+nimmediatelyFirst-run welcome screen
WelcomeViewreplaces the tab strip on first panel open. Summarises what stack-nudge does, surfaces the hotkey, lists the three tabs, includes a "Grant permissions" button next to "Got it"STACKNUDGE_WELCOMED=trueso it never reappearsPermissions overhaul
level=.modalPanel— that was forcing our window above macOS system dialogs and clipping them. With.normallevel, system alerts and System Settings naturally take precedencecom.stackonehq.stack-nudge-panelbundle ID (single binary usescom.stackonehq.stack-nudge)Permissions.prompt()for first-run onboarding (vsresetAndPromptfor dev-time recovery)Settings
CFBundleShortVersionString) + clickable GitHub linkTest plan
🤖 Generated with Claude Code