Skip to content

Commit 5bd2866

Browse files
committed
feat: add terminal bell sound and visual flash notifications
Implement system bell (BEL / \x07) support with configurable audio and visual feedback for the terminal. Add new settings to control bell behavior: - snow-cli.bell.enabled: toggle bell notifications - snow-cli.bell.volume: adjust audio volume (0.0-1.0) - snow-cli.bell.sound: choose from beep, ding, chime, pluck, blip, or none - snow-cli.bell.visualFlash: enable/disable visual flash overlay Features include: - Web Audio API synthesis with multiple sound styles - Visual flash animation on terminal container - Rate limiting to prevent bell spam (80ms minimum interval) - AudioContext suspension handling for webview compatibility - Hot-reload configuration without terminal restart - Graceful fallback when audio is unavailable Bump version to 0.4.23.
1 parent c311115 commit 5bd2866

7 files changed

Lines changed: 472 additions & 37 deletions

File tree

.github/workflows/build_vsix.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ jobs:
6565
6666
### What's New
6767
68-
- Add AI-generated git commit message feature
68+
- Fix the problem of not being able to trigger the system ringtone and add relevant settings
6969
7070
### Installation
7171

VSIX/package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

VSIX/package.json

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "snow-cli",
33
"displayName": "Snow CLI",
44
"description": "Snow AI CLI with ACE Code Search - Intelligent code navigation and search powered by AI",
5-
"version": "0.4.22",
5+
"version": "0.4.23",
66
"publisher": "mufasa",
77
"repository": {
88
"type": "git",
@@ -91,6 +91,44 @@
9191
"type": "boolean",
9292
"default": false,
9393
"description": "Enable Git Blame annotations. Shows commit info (author, time, message) on the current line, similar to GitLens."
94+
},
95+
"snow-cli.bell.enabled": {
96+
"type": "boolean",
97+
"default": true,
98+
"description": "Enable terminal bell (BEL / \\x07) notifications. When disabled, both audio and visual feedback are suppressed."
99+
},
100+
"snow-cli.bell.volume": {
101+
"type": "number",
102+
"default": 0.5,
103+
"minimum": 0,
104+
"maximum": 1,
105+
"description": "Terminal bell volume (0.0 - 1.0). Set to 0 to mute audio while still allowing visual flash."
106+
},
107+
"snow-cli.bell.sound": {
108+
"type": "string",
109+
"default": "beep",
110+
"enum": [
111+
"beep",
112+
"ding",
113+
"chime",
114+
"pluck",
115+
"blip",
116+
"none"
117+
],
118+
"enumDescriptions": [
119+
"Short 800Hz sine beep (default classic terminal bell)",
120+
"Bright triangle-wave ding",
121+
"Two-tone descending chime",
122+
"Soft sawtooth pluck",
123+
"Quick high-frequency blip",
124+
"No sound (visual flash only)"
125+
],
126+
"description": "Bell sound style. Use 'none' to disable audio while keeping visual flash enabled."
127+
},
128+
"snow-cli.bell.visualFlash": {
129+
"type": "boolean",
130+
"default": true,
131+
"description": "Show a brief visual flash overlay on the terminal panel when the bell rings."
94132
}
95133
}
96134
},

VSIX/res/sidebarTerminal.css

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,40 @@ body {
216216
outline-offset: -2px;
217217
}
218218

219+
#terminal-container::after {
220+
content: '';
221+
position: absolute;
222+
inset: 0;
223+
z-index: 5;
224+
pointer-events: none;
225+
background: rgba(255, 255, 255, 0);
226+
border: 0 solid rgba(255, 255, 255, 0);
227+
box-sizing: border-box;
228+
opacity: 0;
229+
}
230+
231+
#terminal-container.bell-flash::after {
232+
animation: terminal-bell-flash 320ms ease-out;
233+
}
234+
235+
@keyframes terminal-bell-flash {
236+
0% {
237+
opacity: 1;
238+
background: rgba(255, 255, 255, 0.18);
239+
border: 3px solid rgba(255, 255, 255, 0.85);
240+
}
241+
60% {
242+
opacity: 0.6;
243+
background: rgba(255, 255, 255, 0.05);
244+
border: 3px solid rgba(255, 255, 255, 0.4);
245+
}
246+
100% {
247+
opacity: 0;
248+
background: rgba(255, 255, 255, 0);
249+
border: 3px solid rgba(255, 255, 255, 0);
250+
}
251+
}
252+
219253
#terminal-container.terminal-error {
220254
color: var(--terminal-error);
221255
padding: 20px;

0 commit comments

Comments
 (0)