claude-notification-plugin 1.1.52 → 1.1.56
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 +38 -34
- package/commit-sha +1 -1
- package/hooks/hooks.json +89 -34
- package/listener/LISTENER-DETAILED.md +117 -94
- package/listener/listener.js +84 -50
- package/listener/message-parser.js +96 -111
- package/listener/pty-runner.js +122 -98
- package/listener/telegram-poller.js +21 -4
- 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.56",
|
|
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
|
|
|
@@ -98,7 +98,8 @@ Config file: `~/.claude/claude-notify.config.json`
|
|
|
98
98
|
"logDir": "abs-path-to-listener-logs",
|
|
99
99
|
"taskLogDir": "abs-path-to-task-logs",
|
|
100
100
|
"liveConsole": true,
|
|
101
|
-
"
|
|
101
|
+
"liveConsoleIntervalMillis": 1,
|
|
102
|
+
"liveConsoleMaxOutputChars": 300
|
|
102
103
|
}
|
|
103
104
|
}
|
|
104
105
|
```
|
|
@@ -195,7 +196,7 @@ Alternatively, add a `listener` section to config manually:
|
|
|
195
196
|
}
|
|
196
197
|
```
|
|
197
198
|
|
|
198
|
-
The `"default"` alias receives messages without a
|
|
199
|
+
The `"default"` alias receives messages without a `&project` prefix.
|
|
199
200
|
`api` and `web` are project aliases for easy reference from Telegram.
|
|
200
201
|
|
|
201
202
|
### 2. Start the listener
|
|
@@ -208,16 +209,16 @@ claude-notify listener start
|
|
|
208
209
|
|
|
209
210
|
```
|
|
210
211
|
fix the login bug → runs in "default" project
|
|
211
|
-
|
|
212
|
-
|
|
212
|
+
&api add pagination to GET /users → runs in "api" project
|
|
213
|
+
&api/feature/auth implement OAuth2 → runs in a worktree (auto-created)
|
|
213
214
|
```
|
|
214
215
|
|
|
215
216
|
The bot replies with status and results:
|
|
216
217
|
|
|
217
218
|
```
|
|
218
|
-
⏳ [
|
|
219
|
+
⏳ [&api] Running: add pagination to GET /users
|
|
219
220
|
...
|
|
220
|
-
✅ [
|
|
221
|
+
✅ [&api] Done: add pagination to GET /users
|
|
221
222
|
<claude's output>
|
|
222
223
|
```
|
|
223
224
|
|
|
@@ -234,25 +235,27 @@ claude-notify listener setup # Interactive listener configuration
|
|
|
234
235
|
### 5. Bot commands
|
|
235
236
|
|
|
236
237
|
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
|
-
| `/
|
|
238
|
+
Projects are referenced with the `&` prefix (e.g. `&api`, `&api/branch`).
|
|
239
|
+
|
|
240
|
+
| Command | Description |
|
|
241
|
+
|--------------------------------|--------------------------------------|
|
|
242
|
+
| `/status` | Status of all projects and worktrees |
|
|
243
|
+
| `/status &project` | Status of a specific project |
|
|
244
|
+
| `/queue` | Show all queues |
|
|
245
|
+
| `/cancel &project[/branch]` | Cancel the active task |
|
|
246
|
+
| `/drop &project N` | Remove task N from queue |
|
|
247
|
+
| `/clear &project[/branch]` | Clear queue + reset session |
|
|
248
|
+
| `/newsession [&project[/branch]]` | Reset session only (keep queue) |
|
|
249
|
+
| `/projects` | List projects and paths |
|
|
250
|
+
| `/worktrees &project` | List worktrees |
|
|
251
|
+
| `/worktree &project/branch` | Create a worktree |
|
|
252
|
+
| `/rmworktree &project/branch` | Remove a worktree |
|
|
253
|
+
| `/pty [&project[/branch]]` | PTY session diagnostics (state, buffer, output) |
|
|
254
|
+
| `/history` | Recent task history |
|
|
255
|
+
| `/stop` | Stop the listener |
|
|
256
|
+
| `/start` | Show help with inline buttons |
|
|
257
|
+
| `/menu` | Show help with inline buttons |
|
|
258
|
+
| `/help` | Show help with inline buttons |
|
|
256
259
|
|
|
257
260
|
### Listener configuration
|
|
258
261
|
|
|
@@ -268,15 +271,16 @@ All commands start with `/` and execute instantly (not queued).
|
|
|
268
271
|
| `maxTotalTasks` | `50` | Max tasks across all queues |
|
|
269
272
|
| `logDir` | `~/.claude` | Listener log directory |
|
|
270
273
|
| `taskLogDir` | same as `logDir` | Task Q&A log directory |
|
|
271
|
-
| `liveConsole` | `true` | Stream PTY output to the "Running..." Telegram message in real-time
|
|
272
|
-
| `
|
|
274
|
+
| `liveConsole` | `true` | Stream PTY output + tool activity to the "Running..." Telegram message in real-time |
|
|
275
|
+
| `liveConsoleIntervalMillis`| `1` | Live console update interval in seconds |
|
|
276
|
+
| `liveConsoleMaxOutputChars`| `300` | Max characters of PTY output to show in live console |
|
|
273
277
|
|
|
274
278
|
|
|
275
279
|
### Projects and worktrees
|
|
276
280
|
|
|
277
281
|
**The queue is tied to the working directory, not the project name:**
|
|
278
|
-
-
|
|
279
|
-
-
|
|
282
|
+
- `&api task` and `&api/feature/auth task` → **different queues** (parallel)
|
|
283
|
+
- `&api task1` and `&api task2` → **same queue** (sequential)
|
|
280
284
|
|
|
281
285
|
`claudeArgs` can also be set per-project to override the global value:
|
|
282
286
|
```json
|
|
@@ -288,12 +292,12 @@ All commands start with `/` and execute instantly (not queued).
|
|
|
288
292
|
}
|
|
289
293
|
```
|
|
290
294
|
|
|
291
|
-
Worktrees are auto-created when you use
|
|
295
|
+
Worktrees are auto-created when you use `&project/branch` syntax (controlled by `autoCreateWorktree`).
|
|
292
296
|
|
|
293
297
|
```
|
|
294
|
-
/worktree
|
|
295
|
-
/worktrees
|
|
296
|
-
/rmworktree
|
|
298
|
+
/worktree &api/feature/payments ← create
|
|
299
|
+
/worktrees &api ← list
|
|
300
|
+
/rmworktree &api/feature/payments ← remove
|
|
297
301
|
```
|
|
298
302
|
|
|
299
303
|
|
package/commit-sha
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
dcf4136a64282b07c755d01b99b1aba6fa0e7de1
|
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
|
+
}
|