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

47 lines
3.2 KiB
Markdown
Raw Normal View History

# Voortgang - Testclient
## 09-09-2026 - plan geschreven, gepromoveerd, en de samenstelling werkt
Het masterplan is geschreven en dezelfde dag gepromoveerd naar `Actief/003-Testclient/`, op verzoek van de
gebruiker. Bij het schrijven ging §4b eerst over de verkeerde vraag: "alles vanuit één scherm" werd gelezen
als een scherm over cliënt én relay. De server-app blijft ongemoeid en synchroniseert met Trezor Suite op
de Mac, dus dat is herschreven naar wat het scherm zelf doet.
Fase 1 is af, en dat was de stap waarvan het plan zei dat hij eerst moest. **`@evolu/nodejs` bevat geen
cliënt**, alleen de relay plus losse bouwstenen; `createEvolu` krijgt zijn afhankelijkheden nu uit
`tools/relay-client/src/evolu-node.js`, samengesteld uit de in-memory workers van `@evolu/common`. Vier
dingen zaten in de weg, alle vier stil falend: de ontbrekende `installPolyfills()` (Node 24 mist
`Map.getOrInsertComputed`), `createEvoluDeps` overslaan ("Expected tab leader port."), de
AsyncDisposableStack van `initSharedWorker` laten vallen, en workers zonder eigen `reportDefect`. Dat
laatste is waarom de andere drie te vinden waren; zonder dat zegt elke fout hetzelfde en noemt geen oorzaak.
Bewezen met een wegwerpproef: eigenaar aanmaken, `transports: []`, een rij met een `Uint8Array`-kolom
wegschrijven en teruglezen. De bytes komen er ongeschonden uit en het proces sluit schoon af.
**Nog niet geprobeerd: praten met de relay.** Daar is het adres van de Umbrel voor nodig en dat komt van de
gebruiker; het gaat niet in deze publieke repo.
## 09-09-2026 - de cliënt staat: opdrachtregel, bedieningsvlak en twee starters
Fase 2, 3 en 5 in één sessie. Er is een register (`owners.json` met naam, mnemonic en `OwnerId`), een
opdrachtregel met acht opdrachten, en een bedieningsvlak op `http://127.0.0.1:4380` met per eigenaar de
knoppen uit `PLAN.md` §4b. `Start.bat` en `Start.command` erbij op verzoek van de gebruiker: die draaien
`npm install` als het nodig is, waarschuwen als `.env` ontbreekt en openen de browser.
`OPEN.md` punt 1 is opgelost voordat het een probleem werd. `src/probe.js` doet de WebSocket-upgrade met
`node:http` in plaats van met de WebSocket van Node, want die laatste geeft je bij een weigering een
`error` en geen statuscode. De opdracht `klop` en de knop "Aankloppen" tonen dus 101 of 401.
Twee echte fouten gevonden en vastgezet in een toets. De eerste: de databasemap werd niet aangemaakt, en
omdat better-sqlite3 dat in een worker meldt was het symptoom een `lees` die nooit antwoordde. De tweede,
en die is er een om te onthouden: **`evolu.insert` geeft meteen een id terug en zet de schrijfactie in de
wachtrij van de worker**, dus wie vlak daarna afsluit is de rij kwijt. Het symptoom was een `lees` die
"nog geen blobs" meldde over een blob die zojuist bevestigd was. `schrijf` wacht nu op een query erachter,
en de toets sluit af en heropent.
In de browser nagekeken: een blob schrijven en teruglezen werkt vanuit de pagina, de gegevens zijn dezelfde
als die van de opdrachtregel, en licht en donker kloppen allebei.
**Wat er nu ligt te wachten is één regel in `.env`.** Alles wat de relay raakt is gebouwd en niets ervan is
beproefd, en dat blijft zo tot het adres er is.