Files
UmbrelApps/Docs/Plannen/Actief/003-Testclient/TAKEN.md
T

70 lines
3.7 KiB
Markdown
Raw Normal View History

# 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 `transports` met `createOwnerWebSocketTransport` erin. **Hiervoor is het adres van de relay
nodig**, en dat komt van de gebruiker en gaat niet in de repo; zie [OPEN.md](OPEN.md) punt 6
## Fase 1 - de samenstelling (af)
- [x] **`@evolu/common` 8.7.0 en `@evolu/nodejs` 3.1.0 geïnstalleerd in `tools/relay-client/`
(09-09-2026)**
- [x] **Vastgesteld dat `@evolu/nodejs` géén cliënt bevat**, alleen de relay plus losse bouwstenen. De
afhankelijkheden voor `createEvolu` worden daarom zelf samengesteld in `src/evolu-node.js`; zie
[PLAN.md](PLAN.md) §4e voor de vier valstrikken die dat kostte
- [x] **Bewezen dat het werkt zonder relay (09-09-2026):** een eigenaar aanmaken, een Evolu-instantie met
`transports: []`, een rij met een `Uint8Array`-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 `OwnerId` wordt 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](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](PLAN.md) §4b
- [ ] Het log, met tijdstip per gebeurtenis
## Fase 4 - de proeven
De zes proeven staan in [PLAN.md](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](../../../Referenties/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](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.md` voorschrijft