Changeset 5c373b8 in Klonkt for src/views


Ignore:
Timestamp:
07/25/2026 07:51:28 AM (7 weeks ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
e62f65d
Parents:
28267519
Message:

Guardian 2: follow-goedkeuring (FEP-633c §5.3)

Een Follow op een ward wordt niet meer automatisch geaccepteerd: hij wacht op
goedkeuring van de guardians. Afgebakend zoals de spec: gating geldt ALLEEN voor
ward-actors (die guardians hebben); een gewone site zonder guardians accepteert
als vanouds, geen gedragswijziging. Een gecommitte guardian die zelf volgt wordt
wel meteen geaccepteerd (Barts regel: die heeft geen gate nodig, en zo werkt het
meekijken). Quorum per ward: 'any' (default, één volstaat), 'all' of 'none'; een
enkele reject weigert.

De guardian ziet de verzoeken in /guardian2 (ward en guardian zitten op dezelfde
familie-Klonkt, dus lokaal leesbaar) en tikt Accept/Deny. Bij goedkeuring stuurt
Klonkt de Accept(Follow) en legt de follower vast, zodat bezorging (ook
followers-only) begint. Cross-instance federatie van de goedkeuring is een latere
verfijning (de daemon heeft het patroon).

Changed files:
src/services/ActivityPubService.js

  • inbound Follow: gate voor ward-actors; acceptGatedFollow/rejectGatedFollow

src/config/database.js

  • ap_pending_follows + ap_pending_follow_approvals

src/services/guardianship/index.js

  • follows-module geexporteerd

src/routes/guardian2.js

  • GET /api/follow-requests, POST /api/follow/:id (guardian-gecheckt)

src/views/pages/guardian2.ejs, src/assets/js/guardian2.js

src/services/i18n.js

  • guardian2 follow_title/follow_sub (nl/en/de)

New file:
src/services/guardianship/follows.js

  • de gating-store + quorum-beslissing (any/all), pure en testbaar

test/follow-gating.test.js

  • any/all-quorum en single-reject

remarks: npm test 167/167. v1 /guardian en niet-ward-sites onaangeraakt.

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/views/pages/guardian2.ejs

    r28267519 r5c373b8  
    3737      <p class="g-sec-sub"><%= t('guardian2.feed_sub') %></p>
    3838      <div id="feed-list" class="g-list"></div>
     39    </section>
     40
     41    <!-- 0b. Follow-verzoeken op je wards (FEP-633c §5.3). -->
     42    <section id="follow-section" hidden>
     43      <div class="g-sec-head"><h2><%= t('guardian2.follow_title') %></h2></div>
     44      <p class="g-sec-sub"><%= t('guardian2.follow_sub') %></p>
     45      <div id="follow-list" class="g-list"></div>
    3946    </section>
    4047
Note: See TracChangeset for help on using the changeset viewer.