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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-notification-plugin",
3
- "version": "1.1.52",
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
- "liveConsoleInterval": 5
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 `/project` prefix.
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
- /api add pagination to GET /users → runs in "api" project
212
- /api/feature/auth implement OAuth2 → runs in a worktree (auto-created)
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
- ⏳ [/api] Running: add pagination to GET /users
219
+ ⏳ [&api] Running: add pagination to GET /users
219
220
  ...
220
- ✅ [/api] Done: add pagination to GET /users
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
- | Command | Description |
239
- |-------------------------------|--------------------------------------|
240
- | `/status` | Status of all projects and worktrees |
241
- | `/status /project` | Status of a specific project |
242
- | `/queue` | Show all queues |
243
- | `/cancel /project[/branch]` | Cancel the active task |
244
- | `/drop /project N` | Remove task N from queue |
245
- | `/clear /project[/branch]` | Clear queue + reset session |
246
- | `/newsession [/project[/branch]]` | Reset session only (keep queue) |
247
- | `/projects` | List projects and paths |
248
- | `/worktrees /project` | List worktrees |
249
- | `/worktree /project/branch` | Create a worktree |
250
- | `/rmworktree /project/branch` | Remove a worktree |
251
- | `/pty [/project[/branch]]` | PTY session diagnostics (state, buffer, output) |
252
- | `/history` | Recent task history |
253
- | `/stop` | Stop the listener |
254
- | `/menu` | Show inline button menu |
255
- | `/help` | Show help with inline buttons |
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
- | `liveConsoleInterval`| `5` | Live console update interval in seconds |
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
- - `/api task` and `/api/feature/auth task` → **different queues** (parallel)
279
- - `/api task1` and `/api task2` → **same queue** (sequential)
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 `/project/branch` syntax (controlled by `autoCreateWorktree`).
295
+ Worktrees are auto-created when you use `&project/branch` syntax (controlled by `autoCreateWorktree`).
292
296
 
293
297
  ```
294
- /worktree /api/feature/payments ← create
295
- /worktrees /api ← list
296
- /rmworktree /api/feature/payments ← remove
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
- 0a1e42c292641f978dba9e382f7ff36af09b1ea8
1
+ dcf4136a64282b07c755d01b99b1aba6fa0e7de1
package/hooks/hooks.json CHANGED
@@ -1,34 +1,89 @@
1
- {
2
- "hooks": {
3
- "UserPromptSubmit": [
4
- {
5
- "hooks": [
6
- {
7
- "type": "command",
8
- "command": "node ${CLAUDE_PLUGIN_ROOT}/notifier/notifier.js"
9
- }
10
- ]
11
- }
12
- ],
13
- "Stop": [
14
- {
15
- "hooks": [
16
- {
17
- "type": "command",
18
- "command": "node ${CLAUDE_PLUGIN_ROOT}/notifier/notifier.js"
19
- }
20
- ]
21
- }
22
- ],
23
- "Notification": [
24
- {
25
- "hooks": [
26
- {
27
- "type": "command",
28
- "command": "node ${CLAUDE_PLUGIN_ROOT}/notifier/notifier.js"
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
+ }