Changeset 318d0c2 in Klonkt


Ignore:
Timestamp:
07/24/2026 05:03:34 PM (7 weeks ago)
Author:
Robin Genis <roboburr@…>
Branches:
main
Children:
e84ce32
Parents:
e61c289
Message:

De Guardian-PWA: /guardian, wards managen, berichtencentrum, eigen push

Een aparte, installeerbare hoek van Klonkt voor guardians (FEP-633c), los
van de site-PWA: eigen manifest met scope /guardian/, eigen boei-icoon,
eigen accent. Ingelogde eigenaren handelen als een van hun eigen actors
(?site=slug bij meerdere sites).

Drie secties: het berichtencentrum (inkomende hulpverzoeken uit
ap_mentions, hulpvraag-eerst), wards (adopteren via handle -> WebFinger ->
dezelfde C2S Offer-pijplijn als de Shaer-apps; pending intrekken; ward
loslaten) en meldingen (web-push-kanaal met alert-typen help + guardian,
hergebruik van de bestaande push-slices en service worker).

Geen inline scripts of styles (CSP): alle logica in
/assets/js/guardian.js, opmaak in /assets/css/guardian.css. UI-teksten
volledig via i18n (nl/en/de); de JSON-state draagt de strings voor de
client.

Changed files:
src/server.js

  • mount /guardian vóór de slug-catch-all

src/routes/posts.js

  • 'guardian' (en paid/push in admin-sites) op de reserved-slug-lijst

src/routes/admin-sites.js

  • idem voor nieuwe sites

src/services/i18n.js

  • guardian.*-teksten in nl/en/de

New file:
src/routes/guardian.js

  • pagina, /api/state, /adopt, /wards/remove, manifest, icon

src/views/pages/guardian.ejs

  • de PWA-pagina, state als application/json-blok

src/assets/js/guardian.js

  • rendering, adopt-flow, push-subscribe (help+guardian), 45s-poll

src/assets/css/guardian.css

  • donker paneel, boei-oranje accent

remarks: emancipatie/verwijdering federeren (FEP 3.2-3.4) doet de
wards/remove-knop nog niet; dat is lokaal loslaten. Volgende stap na
akkoord: beta + demo's.

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

Location:
src
Files:
4 added
3 edited

Legend:

Unmodified
Added
Removed
  • src/routes/admin-sites.js

    re61c289 r318d0c2  
    101101  'forum', 'tag', 'user', 'users', 'artiesten', 'leden', 'feed.xml', 'atom.xml', 'sitemap.xml',
    102102  'manifest.webmanifest', 'sw.js', 'favicon.ico', 'favicon.svg', 'assets',
     103  'paid', 'push', 'guardian',
    103104]);
    104105
  • src/routes/posts.js

    re61c289 r318d0c2  
    152152  'manifest.webmanifest', 'sw.js', 'favicon.ico', 'favicon.svg', 'assets',
    153153  'authorize_interaction', 'fediverse', 'news', 'following', 'notifications', 'blocking',
    154   'paid', 'push',
     154  'paid', 'push', 'guardian',
    155155]);
    156156
  • src/server.js

    re61c289 r318d0c2  
    4949import adminPushRoutes from './routes/admin-push.js';
    5050import pushRoutes from './routes/push.js';
     51import guardianRoutes from './routes/guardian.js';
    5152import adminMediaRoutes from './routes/admin-media.js';
    5253import circleRoutes from './routes/circle.js';
     
    406407app.use('/paid', paidRoutes);   // paid-posts patron/passkey flow (before the /:slug catch-all)
    407408app.use('/push', pushRoutes);   // web-push subscribe/test (before the /:slug catch-all)
     409app.use('/guardian', guardianRoutes);   // the Guardian PWA (FEP-633c, before the /:slug catch-all)
    408410app.use('/', postsRoutes);
    409411
Note: See TracChangeset for help on using the changeset viewer.