Changeset 732272a in Klonkt for src/server.js


Ignore:
Timestamp:
08/15/2026 07:15:55 AM (4 weeks ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
5e16b8a
Parents:
2091647
Message:

Luisteraars: een eigen tab, want het is een eigen soort relatie (shaer-0nh)

Accounts die aan de BIBLIOTHEEK hangen in plaats van aan de actor. Ze krijgen de
muziek en met opzet NIET de gewone posts -- wie zich op een platenkast
abonneert heeft niet om de Krant gevraagd.

EEN EIGEN TABEL EN GEEN VLAG, en dat is de kern. Zolang ze in
ap_library_followers staan kan een postbezorging ze niet per ongeluk meenemen.
Een vlag op ap_followers die iemand vergeet te filteren doet dat wel, en die
fout is aan onze kant onzichtbaar: de posts komen gewoon aan bij mensen die er
niet om vroegen. De vorm moet de fout onmogelijk maken, niet alleen
onwaarschijnlijk. Een test bewaakt dat ap_followers leeg blijft.

WAT ER WERKT

  • Follow op /ap/users/<slug>/library wordt herkend, meteen geaccepteerd en vastgelegd. Meteen, want de bibliotheek is openbaar (alles erin is fedi_open) -- er valt niets goed te keuren, en dan is wachten oneerlijk.
  • Undo(Follow) haalt hem er meteen weer uit.
  • Volgen is idempotent; remote servers sturen een Follow gerust nog eens.
  • inboxen() ontdubbelt op gedeelde inbox: twee luisteraars op dezelfde instance krijgen EEN bezorging.
  • de tab in Mediabeheer, met naam, handle, sinds en laatste bezorging, in drie talen.

DE HERKENNING IS STRENG. libraryOwnerSlug eist dat de uri met ONZE basis begint
en dat de site bestaat -- via localSlugOf, dezelfde zeef als gisteren. Anders
levert andermans /library met dezelfde padstaart hier een luisteraar op onze
naam op.

WAT ER NOG NIET IS, en dat is de volgende stap: de BEZORGING. Er gaat nog geen
Create(Audio) naar deze inboxen. De lijst vult zich dus wel en "laatste
bezorging" blijft leeg -- eerlijk, want er is niets bezorgd.

Co-Authored-By: Claude Opus 5 <noreply@…>

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/server.js

    r2091647 r732272a  
    3030import adminAudioRoutes from './routes/admin-audio.js';
    3131import adminPlaylistsRoutes from './routes/admin-playlists.js';
     32import adminListenersRoutes from './routes/admin-listeners.js';
    3233import adminSitesRoutes from './routes/admin-sites.js';
    3334import adminUsersRoutes from './routes/admin-users.js';
     
    396397  app.use('/admin/audio', adminAudioRoutes);
    397398  app.use('/admin/playlists', adminPlaylistsRoutes);
     399  app.use('/admin/listeners', adminListenersRoutes);
    398400}
    399401app.use('/admin/media', adminMediaRoutes); // image library + cleanup (works in lite mode too)
Note: See TracChangeset for help on using the changeset viewer.