feat(music): per-track "share on the fediverse" — federate the file as a native AS2 Audio attachment
A per-track opt-in (default off) so an OPEN track's audio file is federated as a real AS2 Audio
attachment and served ungated → it plays inline in EVERY fediverse client, incl. the official
Mastodon apps (which only play native media, not external player cards). Gated tracks (default)
keep the file hidden + web-player-only. This is the spec-canonical way to federate audio; the
gated path stays the deliberate anti-steal choice.
- src/config/database.js — audio_tracks.fedi_open column (default 0)
- src/routes/audio.js — /audio/stream serves fedi_open tracks ungated so remote servers can fetch them
- src/services/ActivityPubService.js (buildNote) — fedi_open tracks → AS2 Audio attachments (the file URL)
- src/routes/admin-audio.js — POST /:id/fedi-open toggle (god-only) + fedi_open in the track query
- src/views/pages/admin-audio.ejs — per-track share toggle next to the download toggle
- src/services/i18n.js — aaud.fedi_on/off labels (nl/en/de)
Co-Authored-By: Claude <noreply@…>