Changeset fcd6964 in Klonkt for src/assets/js/guardian.js


Ignore:
Timestamp:
07/24/2026 08:59:51 PM (7 weeks ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
c6185fa
Parents:
3ffbedd
Message:

Guardianship: ward ziet z'n guardians, PWA-assets no-cache, handle-fix

De handshake commit werkte al aan beide kanten (geverifieerd live: sound-fabrics
ziet beta als ward, beta weet dat sound-fabrics guardian is), maar het TONEN
ontbrak op drie plekken. Dit lost de Klonkt-kant op.

  1. Ward-kant: in Berichten ziet een ward nu wie z'n guardians zijn (committed relaties, FEP-633c §2). Die view bestond nog niet.
  2. other_handle bewaarde per ongeluk de FEP-escalatiehandle (candidate/inbox) i.p.v. de @handle, dus overal waar we het toonden kwam een inbox-URL uit. Nu de echte @handle uit de offer; display self-healt oude rijen door @user@host uit de actor-URI af te leiden als de opgeslagen handle geen @ is.
  3. Guardian PWA-assets via /guardian/app.js|css met Cache-Control: no-cache, dus een update wordt nooit meer gemaskeerd door de 1-jaar /assets-cache of een vastgelopen install (dat was de "niks werkt na deploy"-bug). Client zit nu in try/catch met een zichtbare foutbanner i.p.v. stil te hangen.

Changed files:
src/services/guardianship/handshake.js

  • applyCommitLocally schrijft de @handle (offer.ward/candidate_handle) naar other_handle

src/routes/posts.js

  • messages-route levert myGuardians (committed guardians met afgeleide @handle)

src/views/pages/messages.ejs

  • "Jouw guardians"-sectie voor de ward

src/services/i18n.js

  • msg.guardians_label (nl/en/de)

src/routes/guardian.js

  • /guardian/app.js|css no-cache; ASSET_V-mtime-machinerie weg

src/assets/js/guardian.js

  • hele client in try/catch met zichtbare foutbanner; handleOf vertrouwt alleen echte @handles

src/views/pages/guardian.ejs

  • assets via no-cache routes i.p.v. /assets?v=

test/guardianship.test.js

  • assert dat other_handle de @handle is na commit

remarks: getest met npm test (6/6). sound-fabrics (stable-lane, handmatig) bewust
niet aangeraakt; wacht op akkoord.

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/assets/js/guardian.js

    r3ffbedd rfcd6964  
    44(function () {
    55  'use strict';
     6  // A crash here used to fail silently (buttons just do nothing). Surface it on
     7  // the page AND the console so the cause is visible instead of "everything hangs".
     8  function fatal(msg) {
     9    try {
     10      var b = document.getElementById('g-fatal') || document.createElement('div');
     11      b.id = 'g-fatal'; b.className = 'g-msg err';
     12      b.style.cssText = 'display:block;margin:12px 0;padding:10px 14px';
     13      b.textContent = 'Guardian: ' + msg;
     14      var root = document.querySelector('main') || document.body;
     15      if (!b.parentNode && root) root.insertBefore(b, root.firstChild);
     16    } catch (e) { /* last resort */ }
     17    try { console.error('[guardian]', msg); } catch (e) { /* no console */ }
     18  }
     19  try {
    620  var S = JSON.parse(document.getElementById('guardian-state').textContent || '{}');
    721  var T = S.strings || {};
     
    1428  }
    1529  function handleOf(uri, cached) {
    16     if (cached) return cached;
     30    if (cached && cached.charAt(0) === '@') return cached;   // trust only real @handles
    1731    try { var u = new URL(uri); return '@' + u.pathname.split('/').filter(Boolean).pop() + '@' + u.host; }
    1832    catch (e) { return uri; }
     
    218232  renderAll(); pushState();
    219233  setInterval(refresh, 45000);   // live-ish while open
     234  } catch (e) {
     235    fatal((e && e.message) || String(e));
     236  }
    220237})();
Note: See TracChangeset for help on using the changeset viewer.