{"_id":"@alinrj/claude-notify","_rev":"3-f6e9060a19fe34efbe3e64fca2426f00","name":"@alinrj/claude-notify","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.0":{"name":"@alinrj/claude-notify","version":"0.1.0","license":"MIT","_id":"@alinrj/claude-notify@0.1.0","maintainers":[{"name":"alinrj","email":"alin.rujoiu@gmail.com"}],"bin":{"claude-notify":"dist/cli.js"},"dist":{"shasum":"66b93858f13f9586a77ddc93b5504b398962e83e","tarball":"https://registry.npmjs.org/@alinrj/claude-notify/-/claude-notify-0.1.0.tgz","fileCount":7,"integrity":"sha512-x4uOLESYlMvN07zjg/aLqzK7NhDfxxmrin79NYGc31+zP4o+7K9DaBq7cxtB52qweDajTGqPHuG2ev9HhQvR5w==","signatures":[{"sig":"MEUCIQDF3n0QaiOFThF6a3HCBIXsbyXC8eIke08uudYba9f8FAIgQJWeQVe3g5gJ3nLH2E3SAWsU4ehuMOLZkJWALi4Vmm4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":625400},"main":"dist/index.cjs","engines":{"node":">=18"},"gitHead":"6cc64de4c9fb1219fb9deadf92099f7400567bd5","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","test:watch":"vitest","build:notifier":"VENDOR_DIR=vendor native-notifier/build.sh","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"alinrj","email":"alin.rujoiu@gmail.com"},"_npmVersion":"10.9.2","description":"Cross-platform desktop notifications for Claude Code","directories":{},"_nodeVersion":"22.15.1","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^3.0.0","typescript":"^5.4.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-notify_0.1.0_1778659955053_0.25404018252142335","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@alinrj/claude-notify","version":"0.1.1","license":"MIT","_id":"@alinrj/claude-notify@0.1.1","maintainers":[{"name":"alinrj","email":"alin.rujoiu@gmail.com"}],"bin":{"claude-notify":"dist/cli.js"},"dist":{"shasum":"dfabb6d2049d24d54a4a4e5c566be85ad4915379","tarball":"https://registry.npmjs.org/@alinrj/claude-notify/-/claude-notify-0.1.1.tgz","fileCount":7,"integrity":"sha512-7/QrH+34BCIXt93rHVV7ZjYynO9TrWOc3BySh3ScsetuBxZLfeiZrZsQp93bQaqzXBgPYcE3TkiVkZotVm7pjQ==","signatures":[{"sig":"MEUCID1sD7RBqIJGjp/3QEmQRtB6Hp3BEEoj9TCmG3iLvBM7AiEApQoouEEBbKEmBNY03IxmpW2D+K9bnoK/RyTjUa7ZNkg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":620769},"main":"dist/index.cjs","engines":{"node":">=18"},"gitHead":"80eecc56f8d2b239c76ae5462e905e3982159ce0","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","test:watch":"vitest","build:notifier":"VENDOR_DIR=vendor native-notifier/build.sh","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"alinrj","email":"alin.rujoiu@gmail.com"},"_npmVersion":"10.9.2","description":"Cross-platform desktop notifications for Claude Code","directories":{},"_nodeVersion":"22.15.1","dependencies":{"@alinrj/claude-notify":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^3.0.0","typescript":"^5.4.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-notify_0.1.1_1778661156351_0.5357764659804529","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@alinrj/claude-notify","version":"0.1.2","description":"Cross-platform desktop notifications for Claude Code","bin":{"claude-notify":"dist/cli.js"},"main":"dist/index.cjs","scripts":{"build":"tsup","dev":"tsup --watch","test":"vitest run","test:watch":"vitest","build:notifier":"VENDOR_DIR=vendor native-notifier/build.sh","prepublishOnly":"npm run build && npm test"},"engines":{"node":">=18"},"repository":{"type":"git","url":"git+https://github.com/alinrj/claude-notification.git"},"homepage":"https://github.com/alinrj/claude-notification#readme","bugs":{"url":"https://github.com/alinrj/claude-notification/issues"},"license":"MIT","devDependencies":{"@types/node":"^20.0.0","tsup":"^8.0.0","typescript":"^5.4.0","vitest":"^3.0.0"},"dependencies":{"@alinrj/claude-notify":"^0.1.0"},"_id":"@alinrj/claude-notify@0.1.2","gitHead":"cc76a7a15483606bc0c16d765b9d5050949e89a6","_nodeVersion":"22.15.1","_npmVersion":"10.9.2","dist":{"integrity":"sha512-l3K8NbJ61Mjj8u7+gtoc5xTL1soAFYp6UbDmdZLVUOdob8bxmHOzDDLJrX39uzMv9gUxdttn6A9pKl7eV/zAEw==","shasum":"d7552817cbe9da0f2f976a7d058f529ce662ed0f","tarball":"https://registry.npmjs.org/@alinrj/claude-notify/-/claude-notify-0.1.2.tgz","fileCount":7,"unpackedSize":621031,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCwtC4gJZYw9KBdGKxW2VHmQAPpuT2pHX0AvfHFu1y6bwIgTX011CecWcnfsWAW+kXHlsC6AH0W5YsWIkREf6H7joA="}]},"_npmUser":{"name":"alinrj","email":"alin.rujoiu@gmail.com"},"directories":{},"maintainers":[{"name":"alinrj","email":"alin.rujoiu@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/claude-notify_0.1.2_1778680053109_0.32151870050510056"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-13T08:12:34.932Z","modified":"2026-05-13T13:47:33.527Z","0.1.0":"2026-05-13T08:12:35.246Z","0.1.1":"2026-05-13T08:32:36.542Z","0.1.2":"2026-05-13T13:47:33.409Z"},"license":"MIT","description":"Cross-platform desktop notifications for Claude Code","maintainers":[{"name":"alinrj","email":"alin.rujoiu@gmail.com"}],"readme":"# claude-notify\n\n**Stop babysitting your terminal.** Get native macOS notifications when Claude Code finishes, needs permission, or has a question. Respond directly from the notification without switching windows.\n\n## Install\n\n```bash\nnpm install -g @alinrj/claude-notify\nclaude-notify setup\n```\n\nThat's it. `setup` installs the native notifier app and wires up Claude Code hooks automatically.\n\nOn first run, macOS will ask to allow notifications — approve once and forget about it.\n\n## What it does\n\n- **Banners when Claude finishes** — no more checking the terminal\n- **Allow/Deny buttons** — approve tool use right from the notification\n- **Answer dropdowns** — pick from Claude's options without switching windows\n- **Smart suppression** — if you're already looking at the terminal, no notification fires\n\n## How it behaves\n\n- **Terminal focused?** No notification. You're already there.\n- **Clicked Allow/Deny?** Response sent silently. Terminal stays in background.\n- **Clicked the notification body?** Terminal comes to front.\n- **Timed out or dismissed?** Terminal focuses so you can respond there.\n\n## Configuration\n\n### Sounds\n\nOverride the notification sound with `-s`:\n\n```bash\nclaude-notify notify -m \"Done\" -s Ping\n```\n\nAvailable: `default`, `Basso`, `Blow`, `Bottle`, `Frog`, `Funk`, `Glass`, `Hero`, `Morse`, `Ping`, `Pop`, `Purr`, `Sosumi`, `Submarine`, `Tink`.\n\n### Path display (`CLAUDE_NOTIFY_PATH_DISPLAY`)\n\nControls how file paths appear in permission notifications (e.g. when Claude wants to edit a file).\n\n| Value | Example | When to use |\n|---|---|---|\n| `relative` | `src/hooks/permission.ts` | Default — shows path from project root |\n| `filename` | `permission.ts` | When you work in deep directories and want less noise |\n| `full` | `/Users/you/project/src/hooks/permission.ts` | When you work across multiple projects simultaneously |\n\n**Where to set it:** Add it as an environment variable in your hook command inside `~/.claude/settings.json`:\n\n```json\n{\n  \"hooks\": {\n    \"PermissionRequest\": [\n      {\n        \"matcher\": \"\",\n        \"hooks\": [{ \"type\": \"command\", \"command\": \"CLAUDE_NOTIFY_PATH_DISPLAY=filename claude-notify permission -s Basso\" }]\n      }\n    ]\n  }\n}\n```\n\nYou can also export it in your shell profile (`~/.zshrc` or `~/.bashrc`):\n\n```bash\nexport CLAUDE_NOTIFY_PATH_DISPLAY=filename\n```\n\n## Setup details\n\n`claude-notify setup` is idempotent — run it again and it skips what's already configured. It never overwrites your existing hooks.\n\n<details>\n<summary>What it writes to ~/.claude/settings.json</summary>\n\n```json\n{\n  \"hooks\": {\n    \"PreToolUse\": [\n      {\n        \"matcher\": \"ExitPlanMode\",\n        \"hooks\": [{ \"type\": \"command\", \"command\": \"claude-notify notify -m 'Plan ready for review'\" }]\n      }\n    ],\n    \"PermissionRequest\": [\n      {\n        \"matcher\": \"\",\n        \"hooks\": [{ \"type\": \"command\", \"command\": \"claude-notify permission -s Basso\" }]\n      }\n    ],\n    \"Stop\": [\n      {\n        \"matcher\": \"\",\n        \"hooks\": [{ \"type\": \"command\", \"command\": \"claude-notify notify -m 'Claude stopped'\" }]\n      }\n    ]\n  }\n}\n```\n\n</details>\n\n### Uninstall\n\n```bash\nclaude-notify setup --uninstall\n```\n\nRemoves the app and hook entries. Your other settings stay untouched.\n\n## Supported terminals\n\nGhostty, iTerm2, VS Code, Cursor, IntelliJ (JetBrains), Warp, Terminal.app, Alacritty, Kitty.\n\nDetection is automatic via environment variables — no configuration needed.\n\n## Requirements\n\n- macOS 13.0+\n- Node.js >= 18\n\n## License\n\nMIT\n","readmeFilename":"README.md","homepage":"https://github.com/alinrj/claude-notification#readme","repository":{"type":"git","url":"git+https://github.com/alinrj/claude-notification.git"},"bugs":{"url":"https://github.com/alinrj/claude-notification/issues"}}