Het plan is gepromoveerd naar Actief/003-Testclient en tier A, en fase 1 is af. De uitkomst die het plan als eerste wilde weten: @evolu/nodejs 3.1.0 bevat geen client. Het pakket levert de relay plus losse bouwstenen, maar er is geen createEvoluDeps voor Node zoals @evolu/web die voor de browser heeft. De afhankelijkheden voor createEvolu worden nu samengesteld in tools/relay-client/src/evolu-node.js, uit de in-memory workers van @evolu/common; src/client.js is de publieke kant met eigenaars en blobs. Vier dingen zaten in de weg en alle vier faalden ze stil, met een instantie die het lijkt te doen tot de eerste schrijfactie: de ontbrekende installPolyfills (Node 24 mist Map.getOrInsertComputed), createEvoluDeps overslaan, de AsyncDisposableStack van initSharedWorker laten vallen, en workers zonder eigen reportDefect. Dat laatste is waarom de andere drie te vinden waren. Uitgeschreven in PLAN.md 4e. tests/test_client_lokaal.mjs schrijft daarom een blob weg en leest hem terug in plaats van alleen een instantie te maken, en heeft een wachthond: bij een defect in een worker blijft de suite anders hangen in plaats van rood te worden, en dat gebeurde bij de mutatietoets letterlijk. Beide mutaties lieten de juiste toets omvallen. Nog niet geprobeerd: praten met de relay. Daarvoor is het adres van de Umbrel nodig en dat komt van de gebruiker; het gaat niet in deze publieke repo. Suite: 405 goed, 0 fout over alle acht de toetsen. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
3.7 KiB
3.7 KiB
Taken - Testclient
Prioriteit: A | Afhankelijk van: –
Nieuw en meteen actief op 09-09-2026. Het masterplan werd dezelfde dag geschreven en op verzoek van de gebruiker direct gepromoveerd. Nummer 003, onder de bestaande 005: tier A was leeg en dit is nu de lopende focus, dus de bovenkant van de reeks klopt weer.
Waarom dit plan er is: vier beweringen over Evolu Relay rusten op redenering uit de broncode in plaats van op een proef, waaronder dat blokkeren pas bij de volgende verbinding werkt. Zonder een cliënt die geen hardware nodig heeft, blijft dat zo.
Volgende stap
- De cliënt met de relay laten praten. De samenstelling werkt lokaal; wat nog niet geprobeerd is,
is
transportsmetcreateOwnerWebSocketTransporterin. Hiervoor is het adres van de relay nodig, en dat komt van de gebruiker en gaat niet in de repo; zie OPEN.md punt 6
Fase 1 - de samenstelling (af)
@evolu/common8.7.0 en@evolu/nodejs3.1.0 geïnstalleerd intools/relay-client/(09-09-2026)- Vastgesteld dat
@evolu/nodejsgéén cliënt bevat, alleen de relay plus losse bouwstenen. De afhankelijkheden voorcreateEvoluworden daarom zelf samengesteld insrc/evolu-node.js; zie PLAN.md §4e voor de vier valstrikken die dat kostte - Bewezen dat het werkt zonder relay (09-09-2026): een eigenaar aanmaken, een Evolu-instantie met
transports: [], een rij met eenUint8Array-kolom wegschrijven en teruglezen. De bytes komen er ongeschonden uit en het proces sluit schoon af, zonder defect en zonder te blijven hangen
Fase 2 - de opdrachtregel
- Een eigenaar aanmaken en bewaren: mnemonic plus database in een eigen map, in een pad dat
gitignored is. Het
OwnerIdwordt afgedrukt, de mnemonic niet - Een register van eigenaars: aanmaken, opsommen, teruglezen, weggooien
- Verbinden met de relay via
createOwnerWebSocketTransport, met het adres uit een instelling - Een blob schrijven met een instelbare omvang, en teruglezen
- De losse WebSocket-poging die de HTTP-statuscode wél te zien krijgt; zie OPEN.md punt 1
Fase 3 - het bedieningsvlak
- De HTTP-server met de pagina, in de stijl van de twee statuspagina's
- De lijst met eigenaars, met per eigenaar de toestand en de knoppen uit PLAN.md §4b
- Het log, met tijdstip per gebeurtenis
Fase 4 - de proeven
De zes proeven staan in PLAN.md §4c. Ze zijn handwerk en hebben een draaiende relay nodig, dus ze komen na fase 2 en kunnen deels vóór fase 3.
- Onbekende eigenaar met het venster dicht: 401, en een regel in de weigerlijst
- Toelaten en opnieuw verbinden: komt de hele geschiedenis alsnog binnen
- Blokkeren tijdens een lopende verbinding: blijft hij schrijven tot de volgende verbinding
- Het venster van twee minuten met de pagina dicht
- Eén blob boven
RELAY_MAX_WRITE_BYTES, en meerdere kleinere die samen groter zijn - Twee eigenaars tegelijk verbonden
- De uitkomsten terugschrijven naar §10 van Upstream-evolu-relay.md en naar open punt 10 van het plan Umbrelapp. Dit is de opbrengst van het hele plan; zonder deze stap blijft het gereedschap zonder resultaat
Fase 5 - de toetsen
Wat automatisch kan is klein, en PLAN.md §7 zegt waarom.
- Het register: aanmaken, teruglezen, een naam die al bestaat, een half aangelegde map
- Een vaste mnemonic met een vast verwacht
OwnerId. Dit is de toets die omvalt als Evolu onder ons iets anders gaat doen - Het lezen van de opdrachtregel
- De nieuwe toetsen mutatie-testen, zoals
HomeGit/CLAUDE.mdvoorschrijft