A fun VS Code / Cursor extension that plays a sad trombone sound every time your code crashes in the terminal!
Features
Automatic fail detection β listens for non-zero exit codes in your terminal
Multiple built-in sounds β Sad Trombone 🎺 or the iconic Faaaah! 😩
Funny roast messages β random roasts every time you fail
Status bar toggle β quickly turn it on/off from the bottom bar
Custom sound support β use your own .wav or .mp3 file
Settings panel β a polished WebView UI to configure everything
Commands
Command
Description
Faaaah: Toggle Fail Sound On/Off
Enable or disable the fail sound
Faaaah: Test Fail Sound 🎺
Test the sound right now
Faaaah: Browse Custom Sound File 🎵
Pick a custom .wav or .mp3 file
Faaaah: Open Settings βοΈ
Open the settings panel
Settings
Setting
Default
Description
faaaahYouFailed.enabled
true
Master on/off switch
faaaahYouFailed.showMessage
true
Show funny roast messages
faaaahYouFailed.selectedSound
"sad-trombone"
Which sound to play (sad-trombone, faaaah, or custom)
faaaahYouFailed.customSoundPath
""
Path to a custom .wav or .mp3 file
How It Works
The extension uses VS Code's Shell Integration API to detect when a terminal command exits with a non-zero exit code. When a failure is detected, it plays the selected fail sound and shows a random funny message.
Note: Shell Integration must be enabled in your terminal for the extension to detect failures (it's on by default in recent VS Code / Cursor versions).
Development & Maintenance
Project Structure
faaaah-you-failed/
βββ src/ β Source code (edit these)
β βββ extension.ts β Main logic (terminal listener, commands)
β βββ audio-player.ts β Cross-platform sound playback
β βββ sound-generator.ts β Generates the trombone WAV
β βββ settings-panel.ts β WebView settings UI
βββ sounds/
β βββ fahh.mp3 β Bundled "faaaah" sound
βββ images/
β βββ icon.png β Extension icon
βββ dist/ β Built output (auto-generated, don't edit)
βββ package.json β Extension manifest (commands, settings, metadata)
βββ .vscodeignore β What NOT to include in the published VSIX