claude-notification-plugin 1.1.52 → 1.1.55
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +34 -32
- package/commit-sha +1 -1
- package/hooks/hooks.json +89 -34
- package/listener/LISTENER-DETAILED.md +115 -93
- package/listener/listener.js +77 -43
- package/listener/message-parser.js +96 -111
- package/listener/pty-runner.js +122 -98
- package/notifier/NOTIFIER-DETAILED.md +82 -0
- package/notifier/notifier.js +88 -19
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "claude-notification-plugin",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.55",
|
|
4
4
|
"description": "Claude Code task-completion notifications: Telegram, desktop notifications (Windows/macOS/Linux), sound, and voice",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Viacheslav Makarov",
|
package/README.md
CHANGED
|
@@ -14,7 +14,7 @@ Sends alerts to Telegram and desktop (Windows, macOS, Linux) when Claude finishe
|
|
|
14
14
|
- Desktop notifications (Windows toast, macOS Notification Center, Linux notify-send)
|
|
15
15
|
- Sound alert
|
|
16
16
|
- Voice announcement
|
|
17
|
-
- Separate notifications for task completion and waiting-for-input events
|
|
17
|
+
- Separate notifications for task completion, API errors, and waiting-for-input events
|
|
18
18
|
- Skips short tasks (< 15s by default)
|
|
19
19
|
- Per-channel enable/disable (globally and per-project)
|
|
20
20
|
|
|
@@ -195,7 +195,7 @@ Alternatively, add a `listener` section to config manually:
|
|
|
195
195
|
}
|
|
196
196
|
```
|
|
197
197
|
|
|
198
|
-
The `"default"` alias receives messages without a
|
|
198
|
+
The `"default"` alias receives messages without a `&project` prefix.
|
|
199
199
|
`api` and `web` are project aliases for easy reference from Telegram.
|
|
200
200
|
|
|
201
201
|
### 2. Start the listener
|
|
@@ -208,16 +208,16 @@ claude-notify listener start
|
|
|
208
208
|
|
|
209
209
|
```
|
|
210
210
|
fix the login bug → runs in "default" project
|
|
211
|
-
|
|
212
|
-
|
|
211
|
+
&api add pagination to GET /users → runs in "api" project
|
|
212
|
+
&api/feature/auth implement OAuth2 → runs in a worktree (auto-created)
|
|
213
213
|
```
|
|
214
214
|
|
|
215
215
|
The bot replies with status and results:
|
|
216
216
|
|
|
217
217
|
```
|
|
218
|
-
⏳ [
|
|
218
|
+
⏳ [&api] Running: add pagination to GET /users
|
|
219
219
|
...
|
|
220
|
-
✅ [
|
|
220
|
+
✅ [&api] Done: add pagination to GET /users
|
|
221
221
|
<claude's output>
|
|
222
222
|
```
|
|
223
223
|
|
|
@@ -234,25 +234,27 @@ claude-notify listener setup # Interactive listener configuration
|
|
|
234
234
|
### 5. Bot commands
|
|
235
235
|
|
|
236
236
|
All commands start with `/` and execute instantly (not queued).
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
| `/status
|
|
242
|
-
| `/
|
|
243
|
-
| `/
|
|
244
|
-
| `/
|
|
245
|
-
| `/
|
|
246
|
-
| `/
|
|
247
|
-
| `/
|
|
248
|
-
| `/
|
|
249
|
-
| `/
|
|
250
|
-
| `/
|
|
251
|
-
| `/
|
|
252
|
-
| `/
|
|
253
|
-
| `/
|
|
254
|
-
| `/
|
|
255
|
-
| `/
|
|
237
|
+
Projects are referenced with the `&` prefix (e.g. `&api`, `&api/branch`).
|
|
238
|
+
|
|
239
|
+
| Command | Description |
|
|
240
|
+
|--------------------------------|--------------------------------------|
|
|
241
|
+
| `/status` | Status of all projects and worktrees |
|
|
242
|
+
| `/status &project` | Status of a specific project |
|
|
243
|
+
| `/queue` | Show all queues |
|
|
244
|
+
| `/cancel &project[/branch]` | Cancel the active task |
|
|
245
|
+
| `/drop &project N` | Remove task N from queue |
|
|
246
|
+
| `/clear &project[/branch]` | Clear queue + reset session |
|
|
247
|
+
| `/newsession [&project[/branch]]` | Reset session only (keep queue) |
|
|
248
|
+
| `/projects` | List projects and paths |
|
|
249
|
+
| `/worktrees &project` | List worktrees |
|
|
250
|
+
| `/worktree &project/branch` | Create a worktree |
|
|
251
|
+
| `/rmworktree &project/branch` | Remove a worktree |
|
|
252
|
+
| `/pty [&project[/branch]]` | PTY session diagnostics (state, buffer, output) |
|
|
253
|
+
| `/history` | Recent task history |
|
|
254
|
+
| `/stop` | Stop the listener |
|
|
255
|
+
| `/start` | Show help with inline buttons |
|
|
256
|
+
| `/menu` | Show help with inline buttons |
|
|
257
|
+
| `/help` | Show help with inline buttons |
|
|
256
258
|
|
|
257
259
|
### Listener configuration
|
|
258
260
|
|
|
@@ -268,15 +270,15 @@ All commands start with `/` and execute instantly (not queued).
|
|
|
268
270
|
| `maxTotalTasks` | `50` | Max tasks across all queues |
|
|
269
271
|
| `logDir` | `~/.claude` | Listener log directory |
|
|
270
272
|
| `taskLogDir` | same as `logDir` | Task Q&A log directory |
|
|
271
|
-
| `liveConsole` | `true` | Stream PTY output to the "Running..." Telegram message in real-time
|
|
273
|
+
| `liveConsole` | `true` | Stream PTY output + tool activity to the "Running..." Telegram message in real-time |
|
|
272
274
|
| `liveConsoleInterval`| `5` | Live console update interval in seconds |
|
|
273
275
|
|
|
274
276
|
|
|
275
277
|
### Projects and worktrees
|
|
276
278
|
|
|
277
279
|
**The queue is tied to the working directory, not the project name:**
|
|
278
|
-
-
|
|
279
|
-
-
|
|
280
|
+
- `&api task` and `&api/feature/auth task` → **different queues** (parallel)
|
|
281
|
+
- `&api task1` and `&api task2` → **same queue** (sequential)
|
|
280
282
|
|
|
281
283
|
`claudeArgs` can also be set per-project to override the global value:
|
|
282
284
|
```json
|
|
@@ -288,12 +290,12 @@ All commands start with `/` and execute instantly (not queued).
|
|
|
288
290
|
}
|
|
289
291
|
```
|
|
290
292
|
|
|
291
|
-
Worktrees are auto-created when you use
|
|
293
|
+
Worktrees are auto-created when you use `&project/branch` syntax (controlled by `autoCreateWorktree`).
|
|
292
294
|
|
|
293
295
|
```
|
|
294
|
-
/worktree
|
|
295
|
-
/worktrees
|
|
296
|
-
/rmworktree
|
|
296
|
+
/worktree &api/feature/payments ← create
|
|
297
|
+
/worktrees &api ← list
|
|
298
|
+
/rmworktree &api/feature/payments ← remove
|
|
297
299
|
```
|
|
298
300
|
|
|
299
301
|
|
package/commit-sha
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
f1a404d4c36cb1cdba3222fcb03a8da92a560b7b
|
package/hooks/hooks.json
CHANGED
|
@@ -1,34 +1,89 @@
|
|
|
1
|
-
{
|
|
2
|
-
"hooks": {
|
|
3
|
-
"
|
|
4
|
-
{
|
|
5
|
-
"
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
"
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
1
|
+
{
|
|
2
|
+
"hooks": {
|
|
3
|
+
"SessionStart": [
|
|
4
|
+
{
|
|
5
|
+
"matcher": "startup|resume",
|
|
6
|
+
"hooks": [
|
|
7
|
+
{
|
|
8
|
+
"type": "command",
|
|
9
|
+
"command": "node ${CLAUDE_PLUGIN_ROOT}/notifier/notifier.js",
|
|
10
|
+
"async": true
|
|
11
|
+
}
|
|
12
|
+
]
|
|
13
|
+
}
|
|
14
|
+
],
|
|
15
|
+
"UserPromptSubmit": [
|
|
16
|
+
{
|
|
17
|
+
"hooks": [
|
|
18
|
+
{
|
|
19
|
+
"type": "command",
|
|
20
|
+
"command": "node ${CLAUDE_PLUGIN_ROOT}/notifier/notifier.js"
|
|
21
|
+
}
|
|
22
|
+
]
|
|
23
|
+
}
|
|
24
|
+
],
|
|
25
|
+
"PermissionRequest": [
|
|
26
|
+
{
|
|
27
|
+
"hooks": [
|
|
28
|
+
{
|
|
29
|
+
"type": "command",
|
|
30
|
+
"command": "node ${CLAUDE_PLUGIN_ROOT}/notifier/notifier.js"
|
|
31
|
+
}
|
|
32
|
+
]
|
|
33
|
+
}
|
|
34
|
+
],
|
|
35
|
+
"PostToolUse": [
|
|
36
|
+
{
|
|
37
|
+
"hooks": [
|
|
38
|
+
{
|
|
39
|
+
"type": "command",
|
|
40
|
+
"command": "node ${CLAUDE_PLUGIN_ROOT}/notifier/notifier.js",
|
|
41
|
+
"async": true
|
|
42
|
+
}
|
|
43
|
+
]
|
|
44
|
+
}
|
|
45
|
+
],
|
|
46
|
+
"Stop": [
|
|
47
|
+
{
|
|
48
|
+
"hooks": [
|
|
49
|
+
{
|
|
50
|
+
"type": "command",
|
|
51
|
+
"command": "node ${CLAUDE_PLUGIN_ROOT}/notifier/notifier.js"
|
|
52
|
+
}
|
|
53
|
+
]
|
|
54
|
+
}
|
|
55
|
+
],
|
|
56
|
+
"StopFailure": [
|
|
57
|
+
{
|
|
58
|
+
"hooks": [
|
|
59
|
+
{
|
|
60
|
+
"type": "command",
|
|
61
|
+
"command": "node ${CLAUDE_PLUGIN_ROOT}/notifier/notifier.js",
|
|
62
|
+
"async": true
|
|
63
|
+
}
|
|
64
|
+
]
|
|
65
|
+
}
|
|
66
|
+
],
|
|
67
|
+
"Notification": [
|
|
68
|
+
{
|
|
69
|
+
"hooks": [
|
|
70
|
+
{
|
|
71
|
+
"type": "command",
|
|
72
|
+
"command": "node ${CLAUDE_PLUGIN_ROOT}/notifier/notifier.js"
|
|
73
|
+
}
|
|
74
|
+
]
|
|
75
|
+
}
|
|
76
|
+
],
|
|
77
|
+
"PostCompact": [
|
|
78
|
+
{
|
|
79
|
+
"hooks": [
|
|
80
|
+
{
|
|
81
|
+
"type": "command",
|
|
82
|
+
"command": "node ${CLAUDE_PLUGIN_ROOT}/notifier/notifier.js",
|
|
83
|
+
"async": true
|
|
84
|
+
}
|
|
85
|
+
]
|
|
86
|
+
}
|
|
87
|
+
]
|
|
88
|
+
}
|
|
89
|
+
}
|