docs: refresh README + fix uninstall regex for quoted hook paths#39
Merged
Conversation
README sync:
- Tab count is now 4 (Events / Sessions / Usage / Settings); Cmd+1-4
shortcuts; remove the dead STACKNUDGE_PANEL=true opt-in (panel is
always installed since the single-binary merge).
- Sharpen platform support: macOS-only for panel, auto-update, quota
tracking, click-to-focus, voice. Linux/Windows get audio + libnotify
only.
- Fix the agent auto-detection claim — install.sh wires Claude Code
and Cursor; Gemini/Codex require Manual setup.
- Add new sections for Usage tab, threshold notifications, auto-update,
phrase editor, and welcome screen.
- Update Development section to match the current single-binary layout
(drop notifier/; update make targets that referred to "both .app
bundles").
- Expand Uninstall section to enumerate what's actually cleaned up.
uninstall.sh:
- Loosen the stale-hook regex to match quoted commands like
`"$HOME/.stack-nudge/notify.sh"`. Previous version required the path
to be preceded by `^` or `/` and followed by whitespace/EOF — quoted
forms slipped through and left orphan hooks behind. Verified against
ten realistic command shapes: matches 8 expected, correctly skips 2
false positives ("legitimate-other-tool" and "something-stack-nudge").
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
build.sh's signing step now resolves an identity in this order: 1. $STACKNUDGE_SIGN_IDENTITY (env override — for CI) 2. First "Developer ID Application" identity in the local keychain 3. Ad-hoc (`codesign -s -`) — previous behaviour When a real identity is used, --options runtime is added so the bundle is notarisation-eligible. Hardened runtime is omitted from the ad-hoc path because it imposes restrictions without any of the benefits (notarisation requires Developer ID anyway). For devs with a Developer ID cert in their keychain, this stabilises the cdhash across rebuilds — TCC and Keychain ACL grants stick across the build/install/restart cycle instead of needing to be re-granted every time. For everyone else, behaviour is unchanged (ad-hoc path, prompts on every cdhash change). Note: end users installing via `./install.sh` still build locally and still get ad-hoc signing. Stable identity for end users requires shipping a pre-built signed bundle as a release artifact, which is a separate CI workflow + auto-updater change. Also: gitignore keys/ — developers may store their local cert backups there. Co-Authored-By: Claude Opus 4.7 (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
Two small but real fixes bundled together.
README
Out of date in several spots after recent feature work. This pass:
Cmd+1/2/3/4shortcuts updated to match.STACKNUDGE_PANEL=trueopt-in line — the panel has been unconditionally installed byinstall.shsince the single-binary merge; this option does nothing.install.shonly wires Claude Code and Cursor; Gemini CLI and Codex go through Manual setup.notifier/is no longer part of the build.uninstall.sh— quoted-path regex bugUser reported that
uninstall.shleft hook entries behind. Root cause: the stale-hook regex required thenotify.shpath to be preceded by^or/and followed by whitespace or EOF — so quoted command strings like"$HOME/.stack-nudge/notify.sh" claude-code stopslipped through with the leading"(not/).Fix: add
"to the leading anchor and drop the trailing anchor (the leading anchor alone is precise enough to avoid false positives).Verified empirically against 10 realistic hook-command shapes:
/Users/me/.stack-nudge/notify.sh …"$HOME/.stack-nudge/notify.sh" …$HOME/.stack-nudge/notify.sh …~/.stack-nudge/notify.sh …"~/.stack-nudge/notify.sh" …bash /Users/me/.tinynudge/notify.sh …bash -c "/.../notify.sh foo"/Users/me/legitimate-other-tool/notify.sh/Users/me/something-stack-nudge/notify.shNew regex catches the two previously-missed shapes; correctly preserves the two false-positive cases.
Test plan
git pull && ./uninstall.shshould remove all stack-nudge entries from~/.claude/settings.jsonand~/.cursor/hooks.jsonOut of scope (deferred)
~/.gemini/to uninstall cleanup — install.sh doesn't wire those, so no auto-cleanup needed unless users manually wired them🤖 Generated with Claude Code