Ratatoskr/public/dings
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Void de9955a24a
Some checks failed
Build pull request / Build pull request (pull_request) Failing after 2m8s
dings: Aqua's v4 set (Void single onset, Nibu proposal 3 everywhere), still behind dings.enabled
Replaces the 32 sender clips with AquaSynth 21e83ec's staged render; manifest and neutral
fallback are byte-identical to the old ones. The manifest test now pins every clip by sha256
prefix. Unheard.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-10 17:59:07 +00:00
..
neutral dings: port the hook from #36 onto dev, wire Aqua's v3 set behind dings.enabled (default off) 2026-11-10 17:03:17 +00:00
senders dings: Aqua's v4 set (Void single onset, Nibu proposal 3 everywhere), still behind dings.enabled 2026-11-10 17:59:07 +00:00
manifest.json dings: port the hook from #36 onto dev, wire Aqua's v3 set behind dings.enabled (default off) 2026-11-10 17:03:17 +00:00
README.md dings: Aqua's v4 set (Void single onset, Nibu proposal 3 everywhere), still behind dings.enabled 2026-11-10 17:59:07 +00:00

Dings

Pre-rendered earcons, served at public/dings/ and read at runtime by src/app/features/dings. Aqua renders the clips; nothing here is synthesised in the browser.

dings/manifest.json
dings/senders/<mxid-localpart>/<motif>.ogg
dings/neutral/<motif>.ogg

manifest.json is { "neutral": { <motif>: "<path>" }, "senders": { <localpart>: { <motif>: "<path>" } } } with motif one of mention, dm, message, invite; paths are relative to this folder, .ogg or .mp3. A sender's own clip wins, else the neutral clip, else silence. Without a manifest.json the client keeps its stock notification sounds; once one exists, a motif with no clip is silent.

The set here is Aqua's v4 (AquaSynth merge 21e83ec, staged at minds.gamecult.org/aqua/dings-voices-dd9be66), Nibu on proposal 3 (8 kHz 5-bit smoothed sine) for all four events. Nobody has heard it. The client plays none of it unless the client config sets "dings": { "enabled": true } (default off, as in config.json).