@delorenj/claude-notifications 2.0.0 â 2.1.0
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/DO.md +5 -0
- package/FIXES-APPLIED.md +195 -0
- package/INTEGRATION.md +445 -0
- package/LAYOUT-INTEGRATION.md +191 -0
- package/QUICK-REFERENCE.md +195 -0
- package/README.md +145 -14
- package/TASK.md +15 -0
- package/ZELLIJ-NOTIFY.md +523 -0
- package/_bmad-output/implementation-artifacts/spec-install-multi-cli-hooks.md +241 -0
- package/bin/claude-notifications.js +417 -312
- package/bin/claude-notify.js +47 -1
- package/bin/zellij-notify.js +346 -0
- package/bun.lock +35 -0
- package/diagnose-zellij.sh +105 -0
- package/examples/settings-with-zellij.json +18 -0
- package/examples/settings-zellij-only.json +18 -0
- package/examples/zellij-notify-examples.sh +143 -0
- package/lib/adapters/_stub.js +35 -0
- package/lib/adapters/auggie.js +10 -0
- package/lib/adapters/claude-code.js +181 -0
- package/lib/adapters/codex.js +10 -0
- package/lib/adapters/copilot.js +10 -0
- package/lib/adapters/gemini.js +10 -0
- package/lib/adapters/index.js +240 -0
- package/lib/adapters/kimi.js +10 -0
- package/lib/adapters/opencode.js +14 -0
- package/lib/adapters/vibe.js +10 -0
- package/lib/config.js +44 -8
- package/lib/tui.js +115 -0
- package/lib/zellij.js +248 -0
- package/package.json +6 -4
- package/postinstall.js +28 -25
- package/preuninstall.js +18 -9
- package/test/adapters/claude-code.test.js +144 -0
- package/test/adapters/patches.test.js +81 -0
- package/test/adapters/registry.test.js +89 -0
- package/test/adapters/stubs.test.js +46 -0
- package/test/cli-json.test.js +79 -0
- package/test/helpers/fake-fs.js +59 -0
- package/test-integration.sh +113 -0
- package/test-notification-plugin.kdl +34 -0
- package/test-updated-layout.sh +75 -0
- package/test-zellij-cli.sh +72 -0
- package/zellij-plugin/.cargo/config.toml +5 -0
- package/zellij-plugin/.github/workflows/ci.yml +97 -0
- package/zellij-plugin/Cargo.lock +3558 -0
- package/zellij-plugin/Cargo.toml +40 -0
- package/zellij-plugin/README.md +290 -0
- package/zellij-plugin/build.sh +179 -0
- package/zellij-plugin/configs/examples/accessibility.kdl +31 -0
- package/zellij-plugin/configs/examples/catppuccin.kdl +32 -0
- package/zellij-plugin/configs/examples/default.kdl +34 -0
- package/zellij-plugin/configs/examples/minimal.kdl +22 -0
- package/zellij-plugin/docs/CONFIGURATION.md +191 -0
- package/zellij-plugin/docs/INTEGRATION.md +333 -0
- package/zellij-plugin/src/animation.rs +451 -0
- package/zellij-plugin/src/colors.rs +407 -0
- package/zellij-plugin/src/config.rs +664 -0
- package/zellij-plugin/src/event_bridge.rs +339 -0
- package/zellij-plugin/src/main.rs +420 -0
- package/zellij-plugin/src/notification.rs +466 -0
- package/zellij-plugin/src/queue.rs +399 -0
- package/zellij-plugin/src/renderer.rs +477 -0
- package/zellij-plugin/src/state.rs +338 -0
- package/zellij-plugin/src/tests.rs +413 -0
- package/.claude/checkpoints/1756392335.json +0 -1
- package/.claude/checkpoints/1756392341.json +0 -1
- package/.claude/checkpoints/1756392347.json +0 -1
- package/.claude/checkpoints/1756392376.json +0 -1
- package/.claude/checkpoints/1756392377.json +0 -1
- package/.claude/checkpoints/1756392386.json +0 -1
- package/.claude/checkpoints/1756392387.json +0 -1
- package/.claude/checkpoints/1756392398.json +0 -1
- package/.claude/checkpoints/1756392400.json +0 -1
- package/.claude/checkpoints/1756392427.json +0 -1
- package/.claude/checkpoints/1756392428.json +0 -1
- package/.claude/checkpoints/1756392486.json +0 -1
- package/.claude/checkpoints/1756392488.json +0 -1
- package/.claude/checkpoints/1756392558.json +0 -1
- package/.claude/checkpoints/1756392559.json +0 -1
- package/.claude/checkpoints/summary-session-20250828-105040.md +0 -57
- package/.claude/checkpoints/task-1756392207.json +0 -1
- package/.claude/checkpoints/task-1756392742.json +0 -1
- package/.claude/commands/analysis/COMMAND_COMPLIANCE_REPORT.md +0 -54
- package/.claude/commands/analysis/README.md +0 -9
- package/.claude/commands/analysis/bottleneck-detect.md +0 -162
- package/.claude/commands/analysis/performance-bottlenecks.md +0 -59
- package/.claude/commands/analysis/performance-report.md +0 -25
- package/.claude/commands/analysis/token-efficiency.md +0 -45
- package/.claude/commands/analysis/token-usage.md +0 -25
- package/.claude/commands/automation/README.md +0 -9
- package/.claude/commands/automation/auto-agent.md +0 -122
- package/.claude/commands/automation/self-healing.md +0 -106
- package/.claude/commands/automation/session-memory.md +0 -90
- package/.claude/commands/automation/smart-agents.md +0 -73
- package/.claude/commands/automation/smart-spawn.md +0 -25
- package/.claude/commands/automation/workflow-select.md +0 -25
- package/.claude/commands/coordination/README.md +0 -9
- package/.claude/commands/coordination/agent-spawn.md +0 -25
- package/.claude/commands/coordination/init.md +0 -44
- package/.claude/commands/coordination/orchestrate.md +0 -43
- package/.claude/commands/coordination/spawn.md +0 -45
- package/.claude/commands/coordination/swarm-init.md +0 -85
- package/.claude/commands/coordination/task-orchestrate.md +0 -25
- package/.claude/commands/github/README.md +0 -11
- package/.claude/commands/github/code-review-swarm.md +0 -514
- package/.claude/commands/github/code-review.md +0 -25
- package/.claude/commands/github/github-modes.md +0 -147
- package/.claude/commands/github/github-swarm.md +0 -121
- package/.claude/commands/github/issue-tracker.md +0 -292
- package/.claude/commands/github/issue-triage.md +0 -25
- package/.claude/commands/github/multi-repo-swarm.md +0 -519
- package/.claude/commands/github/pr-enhance.md +0 -26
- package/.claude/commands/github/pr-manager.md +0 -170
- package/.claude/commands/github/project-board-sync.md +0 -471
- package/.claude/commands/github/release-manager.md +0 -338
- package/.claude/commands/github/release-swarm.md +0 -544
- package/.claude/commands/github/repo-analyze.md +0 -25
- package/.claude/commands/github/repo-architect.md +0 -367
- package/.claude/commands/github/swarm-issue.md +0 -482
- package/.claude/commands/github/swarm-pr.md +0 -285
- package/.claude/commands/github/sync-coordinator.md +0 -301
- package/.claude/commands/github/workflow-automation.md +0 -442
- package/.claude/commands/hooks/README.md +0 -11
- package/.claude/commands/hooks/overview.md +0 -58
- package/.claude/commands/hooks/post-edit.md +0 -117
- package/.claude/commands/hooks/post-task.md +0 -112
- package/.claude/commands/hooks/pre-edit.md +0 -113
- package/.claude/commands/hooks/pre-task.md +0 -111
- package/.claude/commands/hooks/session-end.md +0 -118
- package/.claude/commands/hooks/setup.md +0 -103
- package/.claude/commands/memory/README.md +0 -9
- package/.claude/commands/memory/memory-persist.md +0 -25
- package/.claude/commands/memory/memory-search.md +0 -25
- package/.claude/commands/memory/memory-usage.md +0 -25
- package/.claude/commands/memory/neural.md +0 -47
- package/.claude/commands/memory/usage.md +0 -46
- package/.claude/commands/monitoring/README.md +0 -9
- package/.claude/commands/monitoring/agent-metrics.md +0 -25
- package/.claude/commands/monitoring/agents.md +0 -44
- package/.claude/commands/monitoring/real-time-view.md +0 -25
- package/.claude/commands/monitoring/status.md +0 -46
- package/.claude/commands/monitoring/swarm-monitor.md +0 -25
- package/.claude/commands/optimization/README.md +0 -9
- package/.claude/commands/optimization/auto-topology.md +0 -62
- package/.claude/commands/optimization/cache-manage.md +0 -25
- package/.claude/commands/optimization/parallel-execute.md +0 -25
- package/.claude/commands/optimization/parallel-execution.md +0 -50
- package/.claude/commands/optimization/topology-optimize.md +0 -25
- package/.claude/commands/pair/README.md +0 -261
- package/.claude/commands/pair/commands.md +0 -546
- package/.claude/commands/pair/config.md +0 -510
- package/.claude/commands/pair/examples.md +0 -512
- package/.claude/commands/pair/modes.md +0 -348
- package/.claude/commands/pair/session.md +0 -407
- package/.claude/commands/pair/start.md +0 -209
- package/.claude/commands/sparc/analyzer.md +0 -52
- package/.claude/commands/sparc/architect.md +0 -53
- package/.claude/commands/sparc/batch-executor.md +0 -54
- package/.claude/commands/sparc/coder.md +0 -54
- package/.claude/commands/sparc/debugger.md +0 -54
- package/.claude/commands/sparc/designer.md +0 -53
- package/.claude/commands/sparc/documenter.md +0 -54
- package/.claude/commands/sparc/innovator.md +0 -54
- package/.claude/commands/sparc/memory-manager.md +0 -54
- package/.claude/commands/sparc/optimizer.md +0 -54
- package/.claude/commands/sparc/orchestrator.md +0 -132
- package/.claude/commands/sparc/researcher.md +0 -54
- package/.claude/commands/sparc/reviewer.md +0 -54
- package/.claude/commands/sparc/sparc-modes.md +0 -174
- package/.claude/commands/sparc/swarm-coordinator.md +0 -54
- package/.claude/commands/sparc/tdd.md +0 -54
- package/.claude/commands/sparc/tester.md +0 -54
- package/.claude/commands/sparc/workflow-manager.md +0 -54
- package/.claude/commands/stream-chain/pipeline.md +0 -121
- package/.claude/commands/stream-chain/run.md +0 -70
- package/.claude/commands/swarm/analysis.md +0 -95
- package/.claude/commands/swarm/development.md +0 -96
- package/.claude/commands/swarm/examples.md +0 -168
- package/.claude/commands/swarm/maintenance.md +0 -102
- package/.claude/commands/swarm/optimization.md +0 -117
- package/.claude/commands/swarm/research.md +0 -136
- package/.claude/commands/swarm/testing.md +0 -131
- package/.claude/commands/training/README.md +0 -9
- package/.claude/commands/training/model-update.md +0 -25
- package/.claude/commands/training/neural-patterns.md +0 -74
- package/.claude/commands/training/neural-train.md +0 -25
- package/.claude/commands/training/pattern-learn.md +0 -25
- package/.claude/commands/training/specialization.md +0 -63
- package/.claude/commands/truth/start.md +0 -143
- package/.claude/commands/verify/check.md +0 -50
- package/.claude/commands/verify/start.md +0 -128
- package/.claude/commands/workflows/README.md +0 -9
- package/.claude/commands/workflows/development.md +0 -78
- package/.claude/commands/workflows/research.md +0 -63
- package/.claude/commands/workflows/workflow-create.md +0 -25
- package/.claude/commands/workflows/workflow-execute.md +0 -25
- package/.claude/commands/workflows/workflow-export.md +0 -25
- package/.claude/config.json +0 -36
- package/.claude/settings.json +0 -162
- package/.claude-flow/metrics/agent-metrics.json +0 -1
- package/.claude-flow/metrics/performance.json +0 -9
- package/.claude-flow/metrics/system-metrics.json +0 -230
- package/.claude-flow/metrics/task-metrics.json +0 -10
- package/FIXES.md +0 -75
- package/test-results.md +0 -163
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
# Layout Integration Fix
|
|
2
|
+
|
|
3
|
+
## Issues Addressed
|
|
4
|
+
|
|
5
|
+
### 1. Plugin Not Integrated Into Custom Layout
|
|
6
|
+
**Problem**: The visual notifications plugin was only available in the test layout (`test-notification-plugin.kdl`), not in your actual agent-orchestrator layout.
|
|
7
|
+
|
|
8
|
+
**Solution**: Integrated the plugin into `~/.config/zellij/layouts/agent-orchestrator.kdl` by adding it as a 1-line borderless pane in the `default_tab_template`. This means the plugin will be available on all tabs.
|
|
9
|
+
|
|
10
|
+
### 2. All Notifications Showing Green
|
|
11
|
+
**Problem**: All notification types (success, error, warning, info) were appearing in the same green color.
|
|
12
|
+
|
|
13
|
+
**Root Cause**: The test layout was using the "catppuccin" theme for the plugin, but your Zellij config uses "gruvbox material dark". The theme mismatch was causing the plugin to fall back to default foreground colors.
|
|
14
|
+
|
|
15
|
+
**Solution**: Updated the plugin configuration to use `theme "gruvbox-dark"` which provides proper color mappings:
|
|
16
|
+
- Success: Bright green (#b8bb26)
|
|
17
|
+
- Error: Bright red (#fb4934)
|
|
18
|
+
- Warning: Bright yellow (#fabd2f)
|
|
19
|
+
- Info: Blue (#83a598)
|
|
20
|
+
- Progress: Pink/magenta (#d3869b)
|
|
21
|
+
- Attention: Yellow (#fabd2f)
|
|
22
|
+
|
|
23
|
+
## How to Use
|
|
24
|
+
|
|
25
|
+
### Step 1: Restart Zellij with Updated Layout
|
|
26
|
+
|
|
27
|
+
If you're currently in a Zellij session, you need to restart it to load the updated layout:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
# Exit current Zellij session
|
|
31
|
+
# Press Ctrl+Q or type 'exit' in all panes
|
|
32
|
+
|
|
33
|
+
# Start Zellij with your updated layout
|
|
34
|
+
zellij --layout ~/.config/zellij/layouts/agent-orchestrator.kdl
|
|
35
|
+
|
|
36
|
+
# Or if agent-orchestrator is your default layout in config:
|
|
37
|
+
zellij
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Step 2: Test Color Differentiation
|
|
41
|
+
|
|
42
|
+
Run the test script to verify colors are working:
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
cd ~/code/utils/claude-notifications
|
|
46
|
+
./test-updated-layout.sh
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
This will send one notification of each type, clearly labeled with the expected color. You should see:
|
|
50
|
+
- Green notification
|
|
51
|
+
- Red notification
|
|
52
|
+
- Yellow notification
|
|
53
|
+
- Blue notification
|
|
54
|
+
- Pink/magenta notification
|
|
55
|
+
|
|
56
|
+
### Step 3: Use Normally
|
|
57
|
+
|
|
58
|
+
Once verified, use `zellij-notify` as normal:
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
# Success notification (green)
|
|
62
|
+
zellij-notify -t success "Tests passed!"
|
|
63
|
+
|
|
64
|
+
# Error notification (red)
|
|
65
|
+
zellij-notify -t error "Build failed!"
|
|
66
|
+
|
|
67
|
+
# Warning notification (yellow)
|
|
68
|
+
zellij-notify -t warning "Deprecated API in use"
|
|
69
|
+
|
|
70
|
+
# Info notification (blue)
|
|
71
|
+
zellij-notify -t info "Deployment started"
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## Layout Structure
|
|
75
|
+
|
|
76
|
+
The updated layout now has this structure for each tab:
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
âââââââââââââââââââââââââââââââââââ
|
|
80
|
+
â Tab Bar (zellij) â â Line 1
|
|
81
|
+
âââââââââââââââââââââââââââââââââââ¤
|
|
82
|
+
â Visual Notifications Plugin â â Line 2 (NEW!)
|
|
83
|
+
âââââââââââââââââââââââââââââââââââ¤
|
|
84
|
+
â â
|
|
85
|
+
â Your Tab Content â
|
|
86
|
+
â (terminals, etc.) â
|
|
87
|
+
â â
|
|
88
|
+
âââââââââââââââââââââââââââââââââââ¤
|
|
89
|
+
â Status Bar (zellij) â â Bottom 2 lines
|
|
90
|
+
âââââââââââââââââââââââââââââââââââ
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
The visual notifications plugin takes up 1 line at the top (below the tab bar), displaying active notifications with proper colors and animations.
|
|
94
|
+
|
|
95
|
+
## Troubleshooting
|
|
96
|
+
|
|
97
|
+
### Still Seeing All Green?
|
|
98
|
+
|
|
99
|
+
1. **Make sure you restarted Zellij** - The layout needs to be reloaded
|
|
100
|
+
2. **Check the plugin is loaded**:
|
|
101
|
+
```bash
|
|
102
|
+
zellij pipe -p zellij_visual_notifications -- '{"type":"info","message":"test"}'
|
|
103
|
+
```
|
|
104
|
+
If you get "no pipe found", the plugin isn't loaded
|
|
105
|
+
|
|
106
|
+
3. **Verify the plugin file exists**:
|
|
107
|
+
```bash
|
|
108
|
+
ls -lh ~/.config/zellij/plugins/zellij_visual_notifications.wasm
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
4. **Check Zellij logs**:
|
|
112
|
+
```bash
|
|
113
|
+
tail -f /tmp/zellij-$(id -u)/zellij-log/zellij.log
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### Timeout Errors
|
|
117
|
+
|
|
118
|
+
If you're still seeing timeout errors on some notifications:
|
|
119
|
+
|
|
120
|
+
1. **Check if it's tab-switching related**: Timeout errors often occur when trying to send to a tab that doesn't exist or when switching tabs rapidly
|
|
121
|
+
2. **Try increasing timeout** in `lib/zellij.js` (currently 5 seconds)
|
|
122
|
+
3. **Send to current tab only**: Omit `-i` and `-n` flags to avoid tab switching
|
|
123
|
+
|
|
124
|
+
### Plugin Not Loading
|
|
125
|
+
|
|
126
|
+
If the plugin doesn't load at all:
|
|
127
|
+
|
|
128
|
+
1. **Rebuild the plugin**:
|
|
129
|
+
```bash
|
|
130
|
+
cd ~/code/utils/claude-notifications/zellij-plugin
|
|
131
|
+
./build.sh
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
2. **Verify plugin permissions**:
|
|
135
|
+
```bash
|
|
136
|
+
chmod 644 ~/.config/zellij/plugins/zellij_visual_notifications.wasm
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
## Theme Customization
|
|
140
|
+
|
|
141
|
+
If you want to use a different theme or customize colors, you can edit the plugin configuration in your layout file (`~/.config/zellij/layouts/agent-orchestrator.kdl`):
|
|
142
|
+
|
|
143
|
+
### Available Themes:
|
|
144
|
+
- `gruvbox-dark` (your current theme)
|
|
145
|
+
- `gruvbox-light`
|
|
146
|
+
- `catppuccin` / `catppuccin-mocha`
|
|
147
|
+
- `catppuccin-latte`
|
|
148
|
+
- `dracula`
|
|
149
|
+
- `nord`
|
|
150
|
+
- `solarized-dark`
|
|
151
|
+
- `solarized-light`
|
|
152
|
+
- `tokyo-night`
|
|
153
|
+
- `one-dark`
|
|
154
|
+
|
|
155
|
+
### Custom Colors:
|
|
156
|
+
|
|
157
|
+
You can also override individual colors:
|
|
158
|
+
|
|
159
|
+
```kdl
|
|
160
|
+
plugin location="file:/home/delorenj/.config/zellij/plugins/zellij_visual_notifications.wasm" {
|
|
161
|
+
enabled "true"
|
|
162
|
+
theme "gruvbox-dark"
|
|
163
|
+
// Override individual colors:
|
|
164
|
+
success_color "#00ff00"
|
|
165
|
+
error_color "#ff0000"
|
|
166
|
+
warning_color "#ffaa00"
|
|
167
|
+
info_color "#0099ff"
|
|
168
|
+
}
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
## Integration with Claude Notifications
|
|
172
|
+
|
|
173
|
+
The `claude-notifications` system will automatically use visual notifications when:
|
|
174
|
+
1. You're in a Zellij session
|
|
175
|
+
2. The plugin is loaded
|
|
176
|
+
3. `zellijVisualization.enabled` is `true` in your config
|
|
177
|
+
|
|
178
|
+
Both audio and visual notifications will fire by default. To disable audio and only use visual:
|
|
179
|
+
|
|
180
|
+
```json
|
|
181
|
+
{
|
|
182
|
+
"sound": {
|
|
183
|
+
"enabled": false
|
|
184
|
+
},
|
|
185
|
+
"zellijVisualization": {
|
|
186
|
+
"enabled": true
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
Save this to `~/.config/claude-code/settings.json`.
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
# zellij-notify Quick Reference Card
|
|
2
|
+
|
|
3
|
+
## Common Commands
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
# Basic notification
|
|
7
|
+
zellij-notify "Message"
|
|
8
|
+
|
|
9
|
+
# With type and priority
|
|
10
|
+
zellij-notify -t TYPE -p PRIORITY "Message"
|
|
11
|
+
|
|
12
|
+
# Quick 5-second notification
|
|
13
|
+
zellij-notify -q "Message"
|
|
14
|
+
|
|
15
|
+
# Dismissable (stays until Ctrl+N)
|
|
16
|
+
zellij-notify -d "Message"
|
|
17
|
+
|
|
18
|
+
# Custom TTL (seconds)
|
|
19
|
+
zellij-notify --ttl 30 "Message"
|
|
20
|
+
|
|
21
|
+
# To specific tab
|
|
22
|
+
zellij-notify -i 2 "Message" # By index (1-based)
|
|
23
|
+
zellij-notify -n "Backend" "Message" # By name
|
|
24
|
+
|
|
25
|
+
# To all tabs
|
|
26
|
+
zellij-notify -a "Message"
|
|
27
|
+
|
|
28
|
+
# List tabs
|
|
29
|
+
zellij-notify --list-tabs
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Notification Types
|
|
33
|
+
|
|
34
|
+
| Flag | Type | Color | Use For |
|
|
35
|
+
|------|------|-------|---------|
|
|
36
|
+
| `-t success` | Success | đĸ Green | Completed tasks, tests passed |
|
|
37
|
+
| `-t error` | Error | đ´ Red | Failures, errors |
|
|
38
|
+
| `-t warning` | Warning | đĄ Yellow | Warnings, deprecations |
|
|
39
|
+
| `-t info` | Info | đĩ Blue | General updates (default) |
|
|
40
|
+
| `-t attention` | Attention | đŖ Purple | Needs your attention |
|
|
41
|
+
| `-t progress` | Progress | đˇ Cyan | Long-running tasks |
|
|
42
|
+
|
|
43
|
+
## Priority Levels
|
|
44
|
+
|
|
45
|
+
| Flag | Priority | Effect |
|
|
46
|
+
|------|----------|--------|
|
|
47
|
+
| `-p low` | Low | Subtle, background |
|
|
48
|
+
| `-p normal` | Normal | Standard (default) |
|
|
49
|
+
| `-p high` | High | Prominent, demands attention |
|
|
50
|
+
| `-p critical` | Critical | Urgent, highest priority |
|
|
51
|
+
|
|
52
|
+
## Duration Options
|
|
53
|
+
|
|
54
|
+
| Flag | Duration | Use Case |
|
|
55
|
+
|------|----------|----------|
|
|
56
|
+
| `--ttl 5` | 5 seconds | Quick updates |
|
|
57
|
+
| `--ttl 30` | 30 seconds | Progress updates |
|
|
58
|
+
| `-q` | 5 seconds | Shorthand for quick |
|
|
59
|
+
| (default) | 300 seconds | Standard notifications |
|
|
60
|
+
| `-d` | Until Ctrl+N | Requires acknowledgment |
|
|
61
|
+
|
|
62
|
+
## Common Patterns
|
|
63
|
+
|
|
64
|
+
### Build Notifications
|
|
65
|
+
```bash
|
|
66
|
+
# Start
|
|
67
|
+
zellij-notify -t progress -q "Building..."
|
|
68
|
+
|
|
69
|
+
# Success
|
|
70
|
+
zellij-notify -t success "Build complete"
|
|
71
|
+
|
|
72
|
+
# Failure
|
|
73
|
+
zellij-notify -d -t error "Build failed"
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Test Results
|
|
77
|
+
```bash
|
|
78
|
+
# Running
|
|
79
|
+
zellij-notify -t progress "Running tests..."
|
|
80
|
+
|
|
81
|
+
# Passed
|
|
82
|
+
zellij-notify -t success "Tests passed â
"
|
|
83
|
+
|
|
84
|
+
# Failed
|
|
85
|
+
zellij-notify -d -t error "Tests failed â"
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Deployment
|
|
89
|
+
```bash
|
|
90
|
+
# Starting
|
|
91
|
+
zellij-notify -a -t info "Deployment started"
|
|
92
|
+
|
|
93
|
+
# Complete
|
|
94
|
+
zellij-notify -a -t success -p high "Deployed! đ"
|
|
95
|
+
|
|
96
|
+
# Failure
|
|
97
|
+
zellij-notify -a -d -t error -p critical "Deployment failed!"
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### Long Tasks
|
|
101
|
+
```bash
|
|
102
|
+
# Start
|
|
103
|
+
zellij-notify -t progress "Processing..."
|
|
104
|
+
|
|
105
|
+
# Complete (requires review)
|
|
106
|
+
zellij-notify -d -t attention "Review required"
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
## Script Integration
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
#!/bin/bash
|
|
113
|
+
# build.sh
|
|
114
|
+
|
|
115
|
+
zellij-notify -t info "Building..."
|
|
116
|
+
|
|
117
|
+
if make build; then
|
|
118
|
+
zellij-notify -t success "Build complete"
|
|
119
|
+
else
|
|
120
|
+
zellij-notify -d -t error "Build failed"
|
|
121
|
+
exit 1
|
|
122
|
+
fi
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
## Chaining
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
# Success chain
|
|
129
|
+
zellij-notify -q "Starting..." && \
|
|
130
|
+
long_task && \
|
|
131
|
+
zellij-notify -t success "Done!"
|
|
132
|
+
|
|
133
|
+
# With failure handling
|
|
134
|
+
zellij-notify -q "Starting..." && \
|
|
135
|
+
risky_task && \
|
|
136
|
+
zellij-notify -t success "Success" || \
|
|
137
|
+
zellij-notify -t error "Failed"
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## Tab Management
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
# List tabs first
|
|
144
|
+
zellij-notify --list-tabs
|
|
145
|
+
|
|
146
|
+
# Target specific tabs
|
|
147
|
+
zellij-notify -i 1 "For tab 1"
|
|
148
|
+
zellij-notify -i 2 "For tab 2"
|
|
149
|
+
zellij-notify -n "Backend" "For backend tab"
|
|
150
|
+
|
|
151
|
+
# Broadcast
|
|
152
|
+
zellij-notify -a "For everyone"
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
## Keyboard Shortcuts
|
|
156
|
+
|
|
157
|
+
| Key | Action |
|
|
158
|
+
|-----|--------|
|
|
159
|
+
| `Ctrl+N` | Clear all notifications in current tab |
|
|
160
|
+
|
|
161
|
+
## Full Help
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
zellij-notify --help
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
## Documentation
|
|
168
|
+
|
|
169
|
+
- [Full CLI Documentation](./ZELLIJ-NOTIFY.md)
|
|
170
|
+
- [Integration Guide](./INTEGRATION.md)
|
|
171
|
+
- [Examples](./examples/zellij-notify-examples.sh)
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
**Quick Copy-Paste Templates:**
|
|
176
|
+
|
|
177
|
+
```bash
|
|
178
|
+
# Success
|
|
179
|
+
zellij-notify -t success "Task complete"
|
|
180
|
+
|
|
181
|
+
# Error (dismissable)
|
|
182
|
+
zellij-notify -d -t error "Critical error"
|
|
183
|
+
|
|
184
|
+
# Warning with 30s TTL
|
|
185
|
+
zellij-notify -t warning --ttl 30 "Warning message"
|
|
186
|
+
|
|
187
|
+
# Info to all tabs
|
|
188
|
+
zellij-notify -a -t info "System update"
|
|
189
|
+
|
|
190
|
+
# Attention to specific tab
|
|
191
|
+
zellij-notify -i 2 -t attention "Review needed"
|
|
192
|
+
|
|
193
|
+
# Quick progress update
|
|
194
|
+
zellij-notify -q -t progress "Processing..."
|
|
195
|
+
```
|
package/README.md
CHANGED
|
@@ -8,14 +8,17 @@ Delightful audible notifications for Claude Code. Never alt+tab back to disappoi
|
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
10
|
npm install -g @delorenj/claude-notifications
|
|
11
|
+
claude-notifications install
|
|
11
12
|
```
|
|
12
13
|
|
|
13
|
-
|
|
14
|
+
Step 1 installs the CLI and generates sound assets. Step 2 opens an interactive selector that:
|
|
15
|
+
|
|
16
|
+
- đ Detects every supported agent CLI on your `$PATH` (Claude Code, Opencode, Gemini, Auggie, Copilot, Kimi, Vibe, Codex)
|
|
17
|
+
- âī¸ Lets you toggle which ones should receive notification hooks
|
|
18
|
+
- đĒ Writes a marker-tagged hook block into each selected CLI's config (idempotent â re-running is safe)
|
|
19
|
+
- đĢ Shows unsupported CLIs disabled with a reason rather than silently skipping them
|
|
14
20
|
|
|
15
|
-
-
|
|
16
|
-
- đŧ Generate a delightful notification scale
|
|
17
|
-
- đĒ Configure Claude Code stop hooks
|
|
18
|
-
- đ§Ē Test the installation
|
|
21
|
+
Hook installation no longer runs automatically on `npm install` â it's an explicit, opt-in step so you stay in control of what gets written to your agent configs.
|
|
19
22
|
|
|
20
23
|
## Features
|
|
21
24
|
|
|
@@ -23,9 +26,10 @@ That's it! đ The package will automatically:
|
|
|
23
26
|
- đ **Service Desk Bell** - Optional short, crisp bell sound for a quick "done!" signal
|
|
24
27
|
- đ **Cross-Platform Audio** - Works on Linux and macOS
|
|
25
28
|
- đĨī¸ **Desktop Notifications** - Visual notifications with Claude Code branding (optional)
|
|
29
|
+
- đ¨ **Zellij Visual Notifications** - Beautiful animated pane borders and status bar notifications
|
|
26
30
|
- đĒ **Auto-Integration** - Automatically configures Claude Code hooks
|
|
27
31
|
- ⥠**Zero Configuration** - Works out of the box
|
|
28
|
-
-
|
|
32
|
+
- đ **Webhook Support** - Trigger a webhook in addition to or instead of the sound
|
|
29
33
|
- đ¨ **Customizable** - Easy to modify sounds and settings
|
|
30
34
|
|
|
31
35
|
## Usage
|
|
@@ -35,25 +39,89 @@ After installation, Claude Code will begin notifying you when it finishes or is
|
|
|
35
39
|
### Manual Commands
|
|
36
40
|
|
|
37
41
|
```bash
|
|
42
|
+
# Interactive hook installer (TUI)
|
|
43
|
+
claude-notifications install
|
|
44
|
+
|
|
45
|
+
# Scripted install for specific CLIs (skips the TUI)
|
|
46
|
+
claude-notifications install --non-interactive --cli=claude-code
|
|
47
|
+
|
|
48
|
+
# Preview changes without writing
|
|
49
|
+
claude-notifications install --dry-run --cli=claude-code
|
|
50
|
+
|
|
51
|
+
# Show which CLIs are detected and whether hooks are installed
|
|
52
|
+
claude-notifications status
|
|
53
|
+
claude-notifications status --json
|
|
54
|
+
|
|
55
|
+
# Cleanly remove everything this package installed
|
|
56
|
+
claude-notifications uninstall
|
|
57
|
+
|
|
58
|
+
# Regenerate sound assets only
|
|
59
|
+
claude-notifications sounds
|
|
60
|
+
|
|
38
61
|
# Trigger notification manually
|
|
39
62
|
claude-notify
|
|
40
|
-
|
|
41
|
-
# Trigger bell notification manually
|
|
42
63
|
claude-notify --bell
|
|
43
64
|
|
|
44
65
|
# Test the system
|
|
45
66
|
claude-notifications test
|
|
46
|
-
|
|
47
|
-
# Test the bell sound
|
|
48
67
|
claude-notifications test-bell
|
|
49
68
|
|
|
50
|
-
#
|
|
51
|
-
claude-notifications install
|
|
52
|
-
|
|
53
|
-
# Get help
|
|
69
|
+
# Full flag reference
|
|
54
70
|
claude-notifications help
|
|
55
71
|
```
|
|
56
72
|
|
|
73
|
+
### Adding support for another agent CLI
|
|
74
|
+
|
|
75
|
+
Each supported CLI is a module under `lib/adapters/<id>.js` exporting this shape:
|
|
76
|
+
|
|
77
|
+
```js
|
|
78
|
+
{
|
|
79
|
+
id, label, binary, supportsHooks,
|
|
80
|
+
detect(deps), configPath(), install(ctx), uninstall(ctx), status(ctx)
|
|
81
|
+
}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
To add a new adapter:
|
|
85
|
+
|
|
86
|
+
1. Copy `lib/adapters/claude-code.js` as a starting point (for hook-capable CLIs)
|
|
87
|
+
or `lib/adapters/_stub.js::createStubAdapter({...})` (for CLIs whose hook API
|
|
88
|
+
you haven't verified yet).
|
|
89
|
+
2. Implement `install` / `uninstall` using the `upsertByMarker` / `removeByMarker`
|
|
90
|
+
helpers from `lib/adapters/index.js` so the entry is idempotent and cleanly
|
|
91
|
+
removable.
|
|
92
|
+
3. Register the module by appending a `require()` line to the `adapterFactories`
|
|
93
|
+
array in `lib/adapters/index.js`.
|
|
94
|
+
4. Add a test under `test/adapters/<id>.test.js` following the pattern in
|
|
95
|
+
`test/adapters/claude-code.test.js`.
|
|
96
|
+
|
|
97
|
+
The TUI and status commands pick up the new adapter automatically.
|
|
98
|
+
|
|
99
|
+
### Zellij CLI
|
|
100
|
+
|
|
101
|
+
The package also includes `zellij-notify` for programmatic control:
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
# Send notification to current tab
|
|
105
|
+
zellij-notify "Build complete!"
|
|
106
|
+
|
|
107
|
+
# Send to specific tab by index
|
|
108
|
+
zellij-notify -i 2 "Backend tests passed"
|
|
109
|
+
|
|
110
|
+
# Quick 5-second notification
|
|
111
|
+
zellij-notify -q "Deployment started"
|
|
112
|
+
|
|
113
|
+
# Dismissable alert (requires Ctrl+N to clear)
|
|
114
|
+
zellij-notify -d -t error "Review required"
|
|
115
|
+
|
|
116
|
+
# Broadcast to all tabs
|
|
117
|
+
zellij-notify -a "System maintenance in 5 minutes"
|
|
118
|
+
|
|
119
|
+
# Full help
|
|
120
|
+
zellij-notify --help
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
See [ZELLIJ-NOTIFY.md](./ZELLIJ-NOTIFY.md) for complete CLI documentation.
|
|
124
|
+
|
|
57
125
|
## The Sound
|
|
58
126
|
|
|
59
127
|
- **Pattern**: C1-D1-E1-G1-C2-D2-E2-G2-C3-G2-E2-D2-C2-G1-E1-D1-C1
|
|
@@ -117,6 +185,63 @@ ls ~/.local/share/sounds/claude-notification.wav
|
|
|
117
185
|
cp your-custom-sound.wav ~/.local/share/sounds/claude-notification.wav
|
|
118
186
|
```
|
|
119
187
|
|
|
188
|
+
### Zellij Visual Notifications
|
|
189
|
+
|
|
190
|
+
If you're using [Zellij](https://zellij.dev/) as your terminal multiplexer, `claude-notifications` can send visual notifications directly to your Zellij panes with animated borders, status bar indicators, and tab badges.
|
|
191
|
+
|
|
192
|
+
**Setup:**
|
|
193
|
+
|
|
194
|
+
1. **Install the Zellij plugin:**
|
|
195
|
+
```bash
|
|
196
|
+
# The plugin should be installed at:
|
|
197
|
+
~/.config/zellij/plugins/zellij_visual_notifications.wasm
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
2. **Add to your Zellij layout:**
|
|
201
|
+
```kdl
|
|
202
|
+
layout {
|
|
203
|
+
pane
|
|
204
|
+
pane size=1 {
|
|
205
|
+
plugin location="file:~/.config/zellij/plugins/zellij_visual_notifications.wasm" {
|
|
206
|
+
enabled true
|
|
207
|
+
theme "catppuccin" // or dracula, nord, tokyo-night, etc.
|
|
208
|
+
show_status_bar true
|
|
209
|
+
show_border_colors true
|
|
210
|
+
animation_enabled true
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
3. **Configure in settings.json:**
|
|
217
|
+
```json
|
|
218
|
+
{
|
|
219
|
+
"zellijVisualization": {
|
|
220
|
+
"enabled": true,
|
|
221
|
+
"pluginName": "zellij_visual_notifications",
|
|
222
|
+
"notificationType": "attention",
|
|
223
|
+
"title": "Claude Code",
|
|
224
|
+
"message": "Waiting for you...",
|
|
225
|
+
"priority": "high"
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
**Visual Features:**
|
|
231
|
+
- đ¨ **Animated Pane Borders** - Pulsing colors based on notification type
|
|
232
|
+
- đ **Status Bar Widget** - Shows active notifications with icons
|
|
233
|
+
- đˇī¸ **Tab Badges** - Visual indicators on tabs with active notifications
|
|
234
|
+
- â¨ī¸ **Keyboard Control** - Press `Ctrl+N` to clear notifications
|
|
235
|
+
- đ **10+ Themes** - Catppuccin, Dracula, Nord, Tokyo Night, and more
|
|
236
|
+
- âŋ **Accessibility** - Pattern-based indicators for color-blind users
|
|
237
|
+
|
|
238
|
+
**Notification Types:**
|
|
239
|
+
- â
`success` - Green pulsing border (build passed, tests succeeded)
|
|
240
|
+
- â `error` - Red pulsing border (build failed, errors found)
|
|
241
|
+
- â ī¸ `warning` - Yellow pulsing border (warnings, deprecated APIs)
|
|
242
|
+
- âšī¸ `info` - Blue pulsing border (general information)
|
|
243
|
+
- đī¸ `attention` - Purple pulsing border (Claude waiting for input)
|
|
244
|
+
|
|
120
245
|
### Configure Webhooks
|
|
121
246
|
|
|
122
247
|
You can configure a webhook to be triggered when a notification occurs. This is useful for integrating with other services, such as IFTTT, Zapier, or a custom server.
|
|
@@ -145,6 +270,12 @@ Create a configuration file at `~/.config/claude-notifications/settings.json`.
|
|
|
145
270
|
- `"claude-notification"` - Final Fantasy dream harp (default)
|
|
146
271
|
- `"claude-notification-bell"` - Service desk bell
|
|
147
272
|
- `desktopNotification`: (boolean) Whether to show desktop notification banners. Defaults to `false`.
|
|
273
|
+
- `zellijVisualization.enabled`: (boolean) Whether to send visual notifications to Zellij. Defaults to `true` when inside Zellij.
|
|
274
|
+
- `zellijVisualization.pluginName`: (string) Name of the Zellij plugin to send notifications to. Defaults to `"zellij_visual_notifications"`.
|
|
275
|
+
- `zellijVisualization.notificationType`: (string) Type of notification to send. Options: `success`, `error`, `warning`, `info`, `attention`, `progress`. Defaults to `"attention"`.
|
|
276
|
+
- `zellijVisualization.title`: (string) Notification title. Defaults to `"Claude Code"`.
|
|
277
|
+
- `zellijVisualization.message`: (string) Notification message. Defaults to `"Waiting for you..."`.
|
|
278
|
+
- `zellijVisualization.priority`: (string) Notification priority. Options: `low`, `normal`, `high`, `critical`. Defaults to `"high"`.
|
|
148
279
|
- `webhook.enabled`: (boolean) Whether to trigger the webhook. Defaults to `false`.
|
|
149
280
|
- `webhook.url`: (string) The URL to send the POST request to.
|
|
150
281
|
- `webhook.replaceSound`: (boolean) If `true`, the sound will not play when a webhook is triggered. Defaults to `false`.
|
package/TASK.md
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Zellij Visual Integration
|
|
2
|
+
|
|
3
|
+
Now hear me out...
|
|
4
|
+
I LOVE this notification. It works really really well.
|
|
5
|
+
But I want to explore a new possibility -
|
|
6
|
+
|
|
7
|
+
## Goal
|
|
8
|
+
|
|
9
|
+
For every notification, i would like a visual cue to accompany it.
|
|
10
|
+
|
|
11
|
+
## Requirements
|
|
12
|
+
|
|
13
|
+
1. The visual cue should be associated with the Zellij tab in your active session that the notification was meant for.
|
|
14
|
+
2. The notification should remain visible until acknowledged by visiting the tab by making it active
|
|
15
|
+
3. The notification should include periodic movement (a bounce, spin, arrow, etc) to draw attention every 30 seconds.
|