Changeset 4101c89 in Klonkt


Ignore:
Timestamp:
08/13/2026 10:33:42 PM (4 weeks ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
fbfd7a1
Parents:
34a0053
Message:

Outbox: fan-only posts kregen een publiek etiket mee

outboxSlice haalde fan_only en ap_visibility niet uit de database. buildNote
adresseert daarop, dus post.fan_only was altijd undefined en elke post ging de
outbox uit met to: as:Public. Ook de fan-only.

Het serveren klopte wel: de fan-only post gaat alleen naar een geverifieerde
vriend. Maar het object dat die vriend krijgt draagt een publiek etiket, en een
Mastodon-server die dat binnenhaalt biedt gewoon de boost-knop aan. Een volger
die boost en je vrienden-post staat op straat, zonder dat er iets omzeild is.

Gemeten op twee draaiende instanties, ondertekend opgehaald:

voor p9 (fan_only=1) to = https://www.w3.org/ns/activitystreams
na p9 (fan_only=1) to = .../followers, cc = []

Los gehouden van de FEP-1580-commit die erop volgt, zodat hij naar stable te
tillen is.

Changed files:
src/services/ActivityPubService.js

  • fan_only en ap_visibility toegevoegd aan de post-SELECT in outboxSlice

remarks: gevonden tijdens de end-to-end test van FEP-1580, maar het zat er al
in en staat er los van. De regressietest komt mee met de volgende commit, want
hij deelt zijn bestand met de migratietests. Nog na te gaan of dezelfde kolommen
elders ontbreken waar buildNote op een database-rij wordt losgelaten (bead
shaer-6oth).

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/services/ActivityPubService.js

    r34a0053 r4101c89  
    11001100  const gaten = (n) => Array.from({ length: n }, () => '?').join(',');
    11011101  const posts = postIds.length ? db.prepare(
     1102    // fan_only en ap_visibility MOETEN mee. buildNote adresseert hierop, en
     1103    // zonder deze twee kolommen is post.fan_only altijd undefined: elke
     1104    // fan-only post ging dan de outbox uit met to: as:Public, terwijl hij
     1105    // alleen aan vrienden geserveerd wordt. Een volger kreeg dus een
     1106    // vrienden-post met een publiek etiket erop, en die mag hij dan publiek
     1107    // boosten. Gevonden tijdens de FEP-1580 end-to-end test (shaer-fuyo).
    11021108    `SELECT id, slug, title, content, cover_image_url, cover_video_url, nsfw, content_warning,
    1103             c2s_attachments, quote_json, embed_json, published_at, created_at
     1109            c2s_attachments, quote_json, embed_json, published_at, created_at,
     1110            fan_only, ap_visibility
    11041111       FROM posts WHERE id IN (${gaten(postIds.length)})`).all(...postIds) : [];
    11051112  const tracks = trackIds.length ? db.prepare(
Note: See TracChangeset for help on using the changeset viewer.