Changeset 732272a in Klonkt for src/config/database.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/config/database.js

    r2091647 r732272a  
    386386      private_pem TEXT NOT NULL,
    387387      created_at DATETIME DEFAULT CURRENT_TIMESTAMP
    388     );
     388    );    -- LUISTERAARS (shaer-0nh). Wie de BIBLIOTHEEK volgt, niet de actor.
     389    --
     390    -- Een eigen tabel en niet een vlag op ap_followers, en dat is met opzet:
     391    -- deze accounts horen onze gewone posts NIET te krijgen. Zolang ze in een
     392    -- andere tabel staan kan een bezorging ze niet per ongeluk meenemen -- een
     393    -- vlag die iemand vergeet te filteren zou dat wel doen, en dan komt de
     394    -- Krant van een site bij mensen die alleen muziek wilden.
     395    CREATE TABLE IF NOT EXISTS ap_library_followers (
     396      id INTEGER PRIMARY KEY AUTOINCREMENT,
     397      slug TEXT NOT NULL,
     398      actor_uri TEXT NOT NULL,
     399      inbox TEXT,
     400      shared_inbox TEXT,
     401      name TEXT,
     402      handle TEXT,
     403      icon TEXT,
     404      created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
     405      last_delivery_at DATETIME,
     406      last_error_at DATETIME,
     407      UNIQUE (slug, actor_uri)
     408    );
     409
    389410    CREATE TABLE IF NOT EXISTS ap_followers (
    390411      id INTEGER PRIMARY KEY AUTOINCREMENT,
Note: See TracChangeset for help on using the changeset viewer.