Changeset f2eacca in Klonkt for src/config


Ignore:
Timestamp:
06/30/2026 01:50:00 AM (2 months ago)
Author:
roboburr <roboburr@…>
Branches:
main
Children:
084d1c0
Parents:
80797d7
Message:

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@…>

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/config/database.js

    r80797d7 rf2eacca  
    9696  ensureColumn('audio_tracks', 'link_youtube',    'TEXT');
    9797  ensureColumn('audio_tracks', 'link_soundcloud', 'TEXT');
     98  // Per-track: federate the actual audio file as an AS2 Audio attachment so it plays inline
     99  // in EVERY fediverse client (incl. the Mastodon apps). Default 0 = gated (web player only,
     100  // file not exposed). Opt-in 1 = the file is served ungated + shared on the fediverse.
     101  ensureColumn('audio_tracks', 'fedi_open', 'INTEGER DEFAULT 0');
    98102
    99103  // Playlists (v9 feature) — first-class entity. CREATE IF NOT EXISTS is
Note: See TracChangeset for help on using the changeset viewer.