Sound Feedback Validation

Sound feedback lets you monitor build, deploy, commit and chat state by ear — without watching the screen. Xedant Code plays a distinct sound for each event type, so you can run long tasks in the background and develop an intuitive sense of the workflow from audio cues alone.

Sound section in Settings dialog

Built-in Sounds

Xedant Code includes six built-in sounds, each mapped to a specific event:

  • message — Plays for every arriving AI response, confirming the model is still working
  • complete — Plays when the chat or background task finishes processing
  • notification — Plays when the chat is waiting for your decision or approval (e.g. an AskUserQuestion prompt)
  • error — Plays when a build or task encounters a failure
  • commit — Plays when a git commit is created
  • deploy — Plays when a deployment starts or completes

Over time you develop an intuitive sense of the workflow from the frequency and sequence of sounds alone — a steady rhythm of message pings means everything is running smoothly, while a sudden silence, notification or error sound signals you to look at the screen.


Build & Deploy Sounds

Each build can have its own sounds that override the global ones. Builds support five sound properties — startSound plays when the build starts, and four result-specific sounds control what plays at completion. The result-specific sounds (successSound, warningSound, errorSound) take priority over the fallback endSound, so you can assign a different sound to each outcome. This is useful when you want a critical security scan to play a loud error sound on failure, or a success chime when tests pass.

build:
  security-scan:
    command: "npm run security-audit"
    watch: "*.ts"
    startSound: "notification"
    successSound: "complete"
    errorSound: "error"
    soundVolume: 1.0

  lint:
    command: "npm run lint"
    watch: "*.ts"
    startSound: ""
    endSound: ""

When a sound field is empty, no sound plays for that event. The endSound property acts as a catch-all fallback — it plays when no result-specific sound is configured for the build’s outcome. The soundVolume field (0-1, default 1.0) controls the volume independently from the global volume settings.


Sound Settings

You have two ways to control sounds:

  • Master mute toggle — The speaker icon in the chat header enables or disables all sounds instantly. This is the quickest way to silence everything
  • Per-sound volume — In Settings → Sound Settings, each sound type has its own volume slider (0-100%). You can turn down noisy sounds while keeping important ones loud

All sound settings sync across browser tabs in real-time via SignalR, so muting in one tab mutes them everywhere.


Custom Sounds

You can replace any built-in sound by placing an MP3 file with the same name into the .xedant/sounds/ folder in your project — for example, message.mp3, complete.mp3, error.mp3, commit.mp3, deploy.mp3. Custom sounds take priority over the built-in defaults.

For build and deploy sounds, you can use any sound name — the app looks up .xedant/sounds/{name}.mp3 first, then falls back to the built-in wwwroot/sounds/{name}.mp3. This means you can use different sounds for different builds by naming them differently in the config.


Practical Tips

  • Use Bluetooth headphones — With a good Bluetooth adapter you can walk around the house while waiting for tasks. Each sound gives you a clear signal about what’s happening without looking at the screen
  • Turn down noisy sounds — File-watch builds that re-run frequently can flood you with start/end sounds. Set soundVolume: 0 or leave startSound empty for noisy builds, and reserve sounds for meaningful events like deploy completion or security scans
  • Silence means something’s wrong — If you expect a steady stream of message sounds and suddenly hear nothing, check the screen — the model likely hit an error or is waiting for your input
  • Commit confetti — Each successful commit triggers a confetti animation and a sound. Toggle it off in Settings → Sound Settings if you find it distracting