Changeset 7cfe35a in Klonkt for src/config/database.js


Ignore:
Timestamp:
08/07/2026 01:56:58 PM (5 weeks ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
ee78e03
Parents:
fb9a8ad (diff), a29c8c8 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
git-author:
proef <proef@…> (08/07/2026 01:54:50 PM)
git-committer:
Robin <roboburr@…> (08/07/2026 01:56:58 PM)
Message:

Geen inline scripts meer in de pagina's (shaer-bqr)

De CSP staat op default-src 'none' met strict-dynamic en een nonce per
verzoek. Bij een htmx-navigatie komt er nieuwe inhoud binnen zonder nieuwe
nonce, dus een inline script in geswapte inhoud werd geweigerd -- zichtbaar
als een geblokkeerde reply-editor op /messages.

Alle 24 pagina's en partials gaan nu naar een module onder assets/js/mod/.
Een bootstrap in de shell leest data-js van de body en importeert wat daar
staat, ook opnieuw na elke pagInawissel. Servergegevens gaan mee via
partials/page-data.ejs, een script met type application/json: dat wordt niet
uitgevoerd en niet opgehaald, dus script-src heeft er niets over te zeggen.

lib.js heeft esc(), omdat de modules op plekken HTML met stringplakwerk
bouwen waar de escapende EJS-tag vroeger het werk deed.

embed-player.ejs houdt zijn inline script: eigen render, eigen CSP, altijd
een volledige laadbeurt.

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/config/database.js

    rfb9a8ad r7cfe35a  
    735735  ensureColumn('ap_outbox', 'to_actors', 'TEXT');   // JSON array of recipient actor URIs for direct notes
    736736  ensureColumn('ap_outbox', 'help_request', 'INTEGER'); // FEP-633c shaer:helpRequest (ward's call for help)
     737  // Wie er op een hulpvraag af is, en wanneer hij is afgesloten (shaer-lgo).
     738  // Los van ap_mentions, want dit is GEDEELDE staat: elke guardian van dit kind
     739  // heeft er een kopie van, en die komt binnen als bericht van een ander. Een
     740  // kolom op de mention zou alleen over onszelf gaan.
     741  //
     742  // OPGEPIKT mag stapelen: twee mensen die tegelijk reageren op een kind dat om
     743  // hulp vraagt is geen probleem. Twee mensen die allebei niets doen omdat de
     744  // ander het "geclaimd" had, wel.
     745  //
     746  // AFGEHANDELD kent geen terugdraai. Sluiten gebeurt met een stevige
     747  // bevestiging, en leeft de vraag daarna nog, dan wordt hij opnieuw gesteld --
     748  // een nieuwe hulpvraag. Zo blijft het verslag eerlijk: er wordt niets
     749  // herschreven, er wordt toegevoegd.
     750  db.exec(`CREATE TABLE IF NOT EXISTS ap_help_state (
     751    note_uri TEXT NOT NULL,
     752    guardian_uri TEXT NOT NULL,
     753    kind TEXT NOT NULL,                 -- pickup | handled
     754    guardian_handle TEXT,
     755    created_at TEXT DEFAULT CURRENT_TIMESTAMP,
     756    PRIMARY KEY (note_uri, guardian_uri, kind)
     757  )`);
     758  db.exec('CREATE INDEX IF NOT EXISTS idx_ap_help_state_note ON ap_help_state(note_uri)');
    737759  ensureColumn('ap_mentions', 'help_request', 'INTEGER'); // inbound ward call-for-help (Guardian PWA message centre)
    738760  ensureColumn('ap_outbox', 'wave', 'INTEGER');    // FEP-633c shaer:wave (guardian -> ward nudge)
Note: See TracChangeset for help on using the changeset viewer.