added mermaid and a lot of cmap changes
This commit is contained in:
+23
-28
@@ -1,6 +1,6 @@
|
||||
# Overdracht racket-wiki
|
||||
|
||||
Bijgewerkt: 22 augustus 2026
|
||||
Bijgewerkt: 25 augustus 2026
|
||||
|
||||
## Project in het kort
|
||||
|
||||
@@ -12,19 +12,20 @@ Bijgewerkt: 22 augustus 2026
|
||||
- EasyMDE/Marked voor Markdown, DOMPurify voor sanitizing, highlight.js voor code en diff2html voor versieverschillen;
|
||||
- lokale, tijdens setup gedownloade frontendbibliotheken, zodat normaal gebruik geen CDN nodig heeft.
|
||||
|
||||
De ontwikkelversie is **0.2.99** (`info.rkt`). De huidige PostgreSQL-schemaversie is **12** (`private/migrations.rkt`).
|
||||
De ontwikkelversie is **0.2.122** (`info.rkt`). De huidige PostgreSQL-schemaversie is **21** (`private/migrations.rkt`).
|
||||
|
||||
## Belangrijk: huidige werkboom
|
||||
|
||||
De branch is `main` en volgt `origin/main`. De laatste commit is:
|
||||
|
||||
```text
|
||||
63b7ca0 cmap functions, email, architecture documentation.
|
||||
20c1584 Lots of changes to the cmap stuff
|
||||
```
|
||||
|
||||
Er staan belangrijke, nog niet gecommitte wijzigingen in de werkboom. Die vormen samen de ontwikkeling van 0.2.95 t/m 0.2.99 en moeten worden behouden. Bij de laatste inventarisatie waren gewijzigd:
|
||||
Er staan belangrijke, nog niet gecommitte wijzigingen voor versie 0.2.100 in de werkboom en die moeten worden behouden. Bij de laatste inventarisatie waren onder meer gewijzigd of toegevoegd:
|
||||
|
||||
```text
|
||||
HANDOFF.md
|
||||
README.md
|
||||
architecture/pages/data-en-versies.md
|
||||
architecture/pages/gedrag.md
|
||||
@@ -32,22 +33,18 @@ architecture/pages/testbaarheid.md
|
||||
info.rkt
|
||||
private/cmap-storage.rkt
|
||||
private/migrations.rkt
|
||||
private/people.rkt
|
||||
scrbl/racket-wiki.scrbl
|
||||
server.rkt
|
||||
static/cmap/cmap-racket-wiki.js
|
||||
static/cmap/cmap.css
|
||||
static/cmap/cmap.js
|
||||
static/css/wiki.css
|
||||
static/index.html
|
||||
static/js/wiki.js
|
||||
static/js/cmap-export.js
|
||||
test/cmap-export.test.js
|
||||
translate.rkt
|
||||
```
|
||||
|
||||
Nieuw en nog untracked:
|
||||
|
||||
```text
|
||||
migrate-cmap-subpages.rkt
|
||||
```
|
||||
|
||||
Voer dus geen reset, checkout of brede formattering uit voordat deze wijzigingen zijn beoordeeld en veilig gecommitte. `wiki-data/` en `compiled/` zijn lokale/gegenereerde directories en staan in `.gitignore`.
|
||||
|
||||
## Snel starten
|
||||
@@ -110,25 +107,20 @@ De browserfrontend heeft bewust geen buildstap. Wijzig bronbestanden rechtstreek
|
||||
- Pagina's hebben een aparte `namespace` en stabiele `slug`; de combinatie is uniek. Een titelwijziging verandert de slug niet.
|
||||
- Elke paginasave wijzigt `pages` en schrijft in dezelfde transactie een onveranderlijke `page_versions`-rij.
|
||||
- Pagina-updates en CMap-updates gebruiken optimistic locking en horen bij een verouderde basisversie HTTP 409 te geven.
|
||||
- Pagina's en CMaps worden gearchiveerd (soft delete); histories blijven behouden.
|
||||
- Pagina's en CMaps worden gearchiveerd (soft delete); histories blijven behouden. Een volledige
|
||||
CMap vereist titel- en versiebevestiging en kan onder **Admin → Gearchiveerde CMaps** worden hersteld.
|
||||
- Bijlagen staan als `BYTEA` in PostgreSQL. Alleen vertrouwde rasterformaten worden inline geserveerd; andere bestanden worden downloads.
|
||||
- Markdown gaat vóór invoegen in de DOM door DOMPurify.
|
||||
- Verhoog `current-schema-version` alleen samen met een nieuwe, opeenvolgende migratie. Een database met een nieuwer schema dan de code moet geweigerd blijven.
|
||||
|
||||
## Lopend werk: 0.2.95–0.2.99
|
||||
## Lopend werk: 0.2.100
|
||||
|
||||
De niet-gecommitte reeks bouwt vooral de persistente CMap-functionaliteit uit:
|
||||
De laatste commit bevat de CMap-uitbreidingen van 0.2.95–0.2.99. De niet-gecommitte 0.2.100-reeks voegt hieraan toe:
|
||||
|
||||
- stabiele, wiki-brede `conceptId`-identiteiten en gekoppelde plaatsingen met een eigen layout;
|
||||
- conceptaspecten, beschrijvingspagina's, stijlpresets, afzonderlijke titel-/synopsisopmaak en een bewerkbaar kleurenpalet;
|
||||
- directe relaties met Alt, gelinkte copy/paste en robuust herstel bij relaties met ontbrekende eindpunten;
|
||||
- afgeleide, opgeslagen sub-CMapweergaven die naar de canonieke parentgraph verwijzen;
|
||||
- keuze van een start-CMap en per-view verborgen concepten;
|
||||
- autosave zonder historievervuiling, maximaal vijf handmatige saves en onbeperkte snapshots;
|
||||
- verwijderen van afzonderlijke handmatige CMap-history-items/snapshots;
|
||||
- een paneel op wikipagina's met alle gekoppelde CMap-concepten en plaatsingstellingen.
|
||||
- Markdown-export met instelbare diepte voor gekoppelde CMaps, optionele wikipagina's en CMap-tags, samenvattingen en uitleg;
|
||||
- wiki-brede persoonstags met een activeerbaar/deactiveerbaar personenregister (schema 13).
|
||||
|
||||
Migratie 12 schoont oude CMap-autosavehistorie op en beperkt herkenbare handmatige saves tot vijf. `migrate-cmap-subpages.rkt` is een aparte contentmigratie voor oudere inline sub-CMaps; dit is geen databaseschemamigratie.
|
||||
Migratie 12 schoont oude CMap-autosavehistorie op en beperkt herkenbare handmatige saves tot vijf. Migratie 13 maakt het personenregister en neemt bestaande persoonstags uit CMaps over. Migraties 14–17 vormden de tussenstappen naar gedeelde conceptidentiteit. Migratie 18 normaliseert de actuele CMap-documenten definitief op getrimde, hoofdletterongevoelige conceptnaam: alle ids worden fysiek herschreven, dubbele definities worden verwijderd, de repository wordt opnieuw opgebouwd en de tijdelijke aliastabel wordt verwijderd. Migratie 19 verwijdert daarna alle gedupliceerde conceptinhoud uit plaatsingsitems. Migratie 20 reduceert ook `concepts[]` in actuele CMap-documenten tot `{id}`-verwijzingen; alleen `concept_definitions` bewaart nog inhoud. `migrate-cmap-subpages.rkt` is een aparte contentmigratie voor oudere inline sub-CMaps; dit is geen databaseschemamigratie.
|
||||
|
||||
Gebruik die contentmigratie altijd eerst als dry-run:
|
||||
|
||||
@@ -144,19 +136,22 @@ Zonder `--apply` wordt niets gewijzigd. Met `--apply` gebeurt de omzetting in é
|
||||
De automatische testdekking is beperkt. Op 22 augustus 2026 zijn de volgende controles succesvol uitgevoerd:
|
||||
|
||||
```sh
|
||||
raco test architecture/import.rkt
|
||||
# 12 tests passed
|
||||
raco test private/people.rkt architecture/import.rkt
|
||||
# 13 tests passed
|
||||
|
||||
raco make main.rkt server.rkt setup-vendor.rkt \
|
||||
migrate-cmap-subpages.rkt architecture/import.rkt
|
||||
|
||||
node --check static/js/wiki.js
|
||||
node --check static/js/cmap-export.js
|
||||
node --check static/js/combobox.js
|
||||
node --check static/cmap/cmap.js
|
||||
node --check static/cmap/cmap-racket-wiki.js
|
||||
|
||||
node --test test/cmap-export.test.js
|
||||
```
|
||||
|
||||
Er is nog geen geautomatiseerde backendintegratietest tegen PostgreSQL en geen browsertestsuite. De huidige 0.2.95–0.2.99-werkboom is dus wel compileerbaar en syntactisch geldig, maar nog niet in deze overdracht end-to-end gevalideerd.
|
||||
Er is nog geen geautomatiseerde backendintegratietest tegen PostgreSQL en geen browsertestsuite. De huidige 0.2.100-werkboom is dus wel compileerbaar en syntactisch geldig, maar nog niet in deze overdracht end-to-end gevalideerd.
|
||||
|
||||
Voer vóór commit/release minimaal deze smoke tests uit op een kopie of aparte testdatabase:
|
||||
|
||||
@@ -205,6 +200,6 @@ Accepteer onbetrouwbare certificaten alleen bewust voor een vertrouwde lokale SM
|
||||
|
||||
## Aanbevolen eerstvolgende stap
|
||||
|
||||
Maak eerst een databasebackup en test de volledige niet-gecommitte 0.2.95–0.2.99-reeks met bovenstaande smoke tests. Beoordeel daarna de diff als één samenhangende CMap-wijziging, werk zo nodig `README.md`, Scribble-documentatie en architectuurpagina's gelijk bij, en commit pas wanneer migratie 12 en `migrate-cmap-subpages.rkt` op representatieve data zijn geverifieerd.
|
||||
Maak eerst een databasebackup en test de niet-gecommitte 0.2.100-reeks met bovenstaande smoke tests. Beoordeel daarna de diff als één samenhangende CMap-wijziging en commit pas wanneer migratie 13, Markdown-export en personenbeheer op representatieve data zijn geverifieerd.
|
||||
|
||||
Voor functionele details en releasehistorie is `README.md` de uitgebreidste bron. De bestanden onder `architecture/pages/` beschrijven ontwerpbeslissingen en kwaliteitsafspraken; `architecture/pages/code-regels.md` is de beste start voor projectconventies.
|
||||
|
||||
Reference in New Issue
Block a user