Changeset 0ca7e9a4 in Klonkt for src/views


Ignore:
Timestamp:
07/31/2026 05:43:16 PM (6 weeks ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
bfa6fa1
Parents:
f434294
Message:

Account-verhuizingen slice 2: de uitgaande Move (FEP-7628)

De vertrekkende helft van shaer-0j2: deze Klonkt als het oude huis. Twee
eisen voordat er iets de deur uit gaat. Een: geen guardians; een warded
account verhuizen zonder de guardianship te hertargeten zou het vangnet
van het kind stil breken, dus tot shaer-tge er is weigert een bewaakt
account met een heldere melding. Twee: het nieuwe profiel claimt dit
adres in alsoKnownAs, dezelfde back-reference die elke ontvangende
server (onze slice 1 incluis) eist; zonder die claim is de Move overal
dood bij aankomst.

De Move gaat duurzaam (retry-queue) naar elke volger-inbox; hun servers
doen de re-follow. moved_to wordt vastgelegd; het serveren ervan op de
actor en het beleid van de oude site zijn slice 3. In Beheer > Sites >
bewerken zit de aankondiging als eigen formulier met bevestiging, nooit
als bijeffect van Opslaan: een verhuizing is een deur die je achter je
dichttrekt.

Changed files:
src/services/ActivityPubService.js

  • moveAccount(site, target, {fetchActorFn, deliverFn}): guardian- weigering, resolutie (URL/handle), back-reference-check, moved_to, Move naar alle volger-inboxen (shared inbox de-dupe)

src/config/database.js

  • sites.moved_to (TEXT)

src/routes/admin-sites.js

  • POST /:slug/move met per-fout een heldere redirect-melding

src/views/pages/admin-site-edit.ejs

  • Verhuizen-sectie (eigen form + confirm), toont moved_to

src/services/i18n.js

  • asite.move* in nl/en/de

test/move-actor.test.js

  • guarded weigert (niets vastgelegd), zonder back-reference weigert, happy path: moved_to + een Move per volger-inbox (shared voorop)

remarks: gebouwd op vps/main (f434294) in een worktree, los van de
lopende boost-toggle-sessie in de hoofd-clone. Suite op 370 groen.

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/views/pages/admin-site-edit.ejs

    rf434294 r0ca7e9a4  
    270270    <button type="submit" class="btn btn-primary"><%= isNew ? t('asite.submit_create') : t('asite.submit_save') %></button>
    271271  </form>
     272
     273<% if (!isNew) { %>
     274  <form method="post" action="/admin/sites/<%= site.slug %>/move" class="admin-form"
     275        onsubmit="return confirm('<%= t('asite.move_confirm') %>');">
     276    <fieldset>
     277      <legend><%= t('asite.move') %></legend>
     278      <p class="form-hint"><%= t('asite.move_hint') %></p>
     279      <% if (typeof site.moved_to === 'string' && site.moved_to) { %>
     280        <p class="form-hint"><strong><%= t('asite.moved_to') %>:</strong> <%= site.moved_to %></p>
     281      <% } %>
     282      <label>
     283        <input type="text" name="move_target" placeholder="@nieuw@andere-server.example" required>
     284      </label>
     285      <button type="submit" class="btn btn-danger"><%= t('asite.move_btn') %></button>
     286    </fieldset>
     287  </form>
     288<% } %>
    272289</div>
    273290
Note: See TracChangeset for help on using the changeset viewer.