Changeset 8a474ab in Klonkt for src/routes


Ignore:
Timestamp:
09/23/2026 12:13:31 PM (8 hours ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
0ad37a0
Parents:
fa24f7b
Message:

Poorten per soort: ook bij het versturen, en film heeft er nu een

Twee gaten die naast elkaar stonden en elkaar versterkten.

gate_images en gate_music golden alleen bij het SERVEREN (shaer-qc9o). Wat een
ward niet te zien kreeg mocht hij wel plaatsen, dus het stond bij iedereen
behalve bij hemzelf. Dat is geen poort meer maar een filter op zijn eigen
scherm, en dat is niet wat een guardian dichtzet. De innamekant weigert nu met
gated_images / gated_music / gated_video, in dezelfde vorm als compose en
messages.

Weigeren en niet wegknippen: stilletjes de bijlage verwijderen publiceert een
bericht dat het kind niet geschreven heeft.

En film had helemaal geen poort (shaer-mxh2), dus de zwaarste soort van de drie
was de enige die altijd door mocht. Nu een gewone rij in de catalogus met een
eigen kolom, aan beide kanten afgedwongen: gateAttachments knipt video weg als
hij dicht staat (ook als hij als AS2-Video zonder mediaType binnenkomt) en de
outbox neemt hem niet aan. shaer:video staat in de caps, zodat de app het
vooraf weet in plaats van het bij de eerste weigering te ontdekken.

De reddingsboei gaat door alle drie heen, zoals door elke andere dichte deur.
Een hulpvraag draagt juist vaak een schermafdruk.

uploadMedia zelf blijft open, en dat is met opzet: de boei gebruikt dezelfde
poot en de server weet daar nog niet waar een upload voor bedoeld is. Een
bijlage die blijft liggen kost een bestand; een boei die vastloopt kost meer.
De weigering valt bij het innemen van de post, en daar is het wel bekend.

Getoetst in test/gates-family.test.js, naast de poorten die er al stonden.
Tegenproef: met de video-regel en de innamelus eruit vallen precies de twee
nieuwe toetsen om.

Location:
src/routes
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • src/routes/activitypub.js

    rfa24f7b r8a474ab  
    365365  const authorInfo = (r, prefix) => authorInfoFrom(r, prefix, p);
    366366  const {
    367     embedsAllowed, playbackAllowed, imagesAllowed, musicAllowed, quotesAllowed, emojiAllowed,
     367    embedsAllowed, playbackAllowed, imagesAllowed, musicAllowed, videoAllowed, quotesAllowed, emojiAllowed,
    368368  } = p;
    369369  const reacties = reactions || new Map();
     
    392392      // Friends' media travels along (media_json → AS2 attachment), so the
    393393      // client renders their images/audio like own outbox posts.
    394       attachment: AP.gateAttachments(AP.timelineAttachments(t.media_json), { images: imagesAllowed, audio: musicAllowed }),
     394      attachment: AP.gateAttachments(AP.timelineAttachments(t.media_json), { images: imagesAllowed, audio: musicAllowed, video: videoAllowed }),
    395395      // The note's preserved tags, so the client can render them: FEP-9098
    396396      // Emoji tags (:shortcode: → image) and FEP-e232 Link tags (quotes /
     
    467467      'shaer:images': p.imagesAllowed,
    468468      'shaer:music': p.musicAllowed,
     469      'shaer:video': p.videoAllowed,
    469470      'shaer:quoteCards': p.quotesAllowed,
    470471      'shaer:customEmoji': p.emojiAllowed,
     
    495496    imagesAllowed: gate('gate_images'),
    496497    musicAllowed: gate('gate_music'),
     498    videoAllowed: gate('gate_video'),
    497499    quotesAllowed: gate('gate_quote_cards'),
    498500    emojiAllowed: emoji,
     
    557559      // mention row keeps the resolved quote, not the raw tags.
    558560      tag: [{ type: 'Mention', href: me, name: myHandle }, ...(p.emojiAllowed ? (AP.timelineEmojis(m.emoji_json) || []) : [])],
    559       attachment: AP.gateAttachments(AP.timelineAttachments(m.media_json), { images: p.imagesAllowed, audio: p.musicAllowed }),
     561      attachment: AP.gateAttachments(AP.timelineAttachments(m.media_json), { images: p.imagesAllowed, audio: p.musicAllowed, video: p.videoAllowed }),
    560562      // FEP-633c: what kind of message this is. The wave is a gentle nudge from
    561563      // a guardian; the help request is the buoy. Both render differently.
     
    829831  const P = gatesFor(auth.site);
    830832  const {
    831     embedsAllowed, playbackAllowed, imagesAllowed, musicAllowed, quotesAllowed,
     833    embedsAllowed, playbackAllowed, imagesAllowed, musicAllowed, videoAllowed, quotesAllowed,
    832834    emojiAllowed, messagesAllowed, composeAllowed, repliesAllowed, threadsAllowed,
    833835    followingAllowed, gateAuthor,
     
    14231425  const kring = threadsOpen ? { notes: uit.notes, hidden: 0 } : AP.filterThreadToCircle(auth.site.slug, uit.notes);
    14241426  const imagesOk = gate2('gate_images'), musicOk = gate2('gate_music'), emojiOk = gate2('gate_custom_emoji');
     1427  const videoOk = gate2('gate_video');
    14251428  uit.notes = kring.notes.map((n) => ({
    14261429    ...n,
    1427     attachment: AP.gateAttachments(n.attachment, { images: imagesOk, audio: musicOk }),
     1430    attachment: AP.gateAttachments(n.attachment, { images: imagesOk, audio: musicOk, video: videoOk }),
    14281431    tag: emojiOk ? n.tag : AP.stripEmojiTags(n.tag),
    14291432    // De emoji-poort knipt in de byline zelf: FEP-9098 zit in de tag van de
  • src/routes/guardian.js

    rfa24f7b r8a474ab  
    7979    'ev_coguardian_left', 'ev_gated_outcome', 'ev_lapse_opened',
    8080    'gate_propose_open', 'gate_propose_close', 'gate_default_off',
    81     'gate_images', 'gate_messages', 'gate_compose', 'gate_replies', 'gate_music', 'gate_quoteCards', 'gate_asked',
     81    'gate_images', 'gate_messages', 'gate_compose', 'gate_replies', 'gate_music', 'gate_video', 'gate_quoteCards', 'gate_asked',
    8282    'gate_customEmoji', 'gate_publicProfile', 'gate_accountMove', 'gate_independence',
    8383    'gate_unavailable', 'gate_planned_note', 'gates_summary', 'gates_show', 'gates_hide'];
Note: See TracChangeset for help on using the changeset viewer.