Plan Eigenimage, fase 1 tot en met 3. De vier templates verhuizen naar
tools/electrum-gate/ zonder extensie; daarnaast Dockerfile (nginx:1.30-alpine
plus python3), entrypoint.sh (het command-blok van de compose, zonder $$) en
build.sh naar het voorbeeld van Evolu Relay. Een image voor beide containers,
gebouwd op de Umbrel; open punt 2 en 3 daarmee beslist.
Inhoudelijk anders dan alleen verplaatst: het log_format staat in stream.conf
zelf, het backend-adres komt via twee plaatshouders zonder dollarteken uit de
omgeving (ook in de server-service), en de pagina haalt versie en adres uit
status.json via GATE_APP_VERSION.
Tests mee verhuisd en uitgebreid: entrypoint.sh en Dockerfile in plaats van het
command-blok, en de tag in de compose gelijk aan VERSION in build.sh voor elke
eigen image. Mutatie-getest met drie ingrepen.
Nog niet gebouwd: er is hier geen Docker. De tag staat ongepind tot de eerste
push; dat is fase 4 en die is van de gebruiker.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Negen punten uit echt gebruik met 0.4.0, alle negen gedaan. Twee ervan waren
onderzoeksvragen en die staan onderaan.
Evolu Relay 0.5.0
- Een tijdvenster van twee minuten voor nieuwe eigenaars, met een stopknop. De
teller zit in het relay-proces en niet in de pagina: een teller in een tabblad
dat je sluit, sluit de deur niet. policy.js kreeg learningUntil, isLearningOpen
en expireLearning.
- decideOwner kijkt naar isLearningOpen en niet naar het veld learning. De lus die
een verlopen venster opruimt loopt elke twee seconden, en in dat gat zou een
onbekende alsnog binnenkomen.
- Zonder STATE_VERSION te verhogen, met een toets die dat verdedigt: een verhoging
zou de allowlist van de draaiende installatie laten afwijzen en de deur sluiten
voor eigenaars die er al in stonden.
- Labels op een eigenaar-id, in een eigen labels.json met de agent als enige
schrijver. Een label zegt niets over toegang, dus de relay hoeft het niet te
weten; het is daardoor meteen opgeslagen en werkt ook als de relay omligt.
- Geblokkeerde en geweigerde eigenaars in een kader, met een badge die zegt welke
van de twee het is. De badge staat buiten het hover-blok, anders is dat
onderscheid onzichtbaar tenzij je over de regel gaat.
- Maatvoering gelijk aan Electrum Gate: 1760px, hetzelfde raster, icoon van 64
pixels, dezelfde kop, versienummer erachter. Uitleg uit de kaders, knoppen pas
bij hover, geen voetregel.
Electrum Gate 0.0.24
- Menu-item "About this app", in beide apps.
- De statuswidget zei "Answering" met "answered in 7 ms, from inside the app" en
zegt nu "Running" met de meting eronder. De nuance dat de controle van container
naar container loopt is verplaatst naar een eigen kopje in die dialoog, waar er
ruimte voor is; vier woorden waren te weinig.
Toetsen en gereedschap
- tests/test_relay_agent.py (nieuw, 65 toetsen) en tests/test_paginas_parsen.mjs
(nieuw). Muteertests gedraaid op de beslissende regels.
- Een dollarteken-toets in test_appstore_vorm.py. Het commentaar in drie bestanden
beweerde al dat die test bestond; nu is dat waar.
- Een toets dat er geen werkbestanden in een app-map staan. umbreld kopieert de
hele map naar het apparaat en in de back-up.
- tools/voorbeeldpagina.mjs maakt van een *.template een pagina die je in een
browser kunt openen. Dat vond meteen twee echte opmaakfouten.
De twee onderzoeksvragen
- Een geweigerde eigenaar komt niet in de database: isOwnerAllowed zit in de
WebSocket-upgrade, dus het is een 401 en een gesloten socket. Het gewenste gevolg
treedt wel op, via de client: die is local-first en levert bij toelating de hele
geschiedenis. Blokkeren werkt daarentegen pas bij de volgende verbinding, en dat
staat als open punt.
- De blobs zijn niet met een xpub te ontcijferen; een OwnerId komt daar niet uit.
Met de SLIP-21-node van het apparaat kan het wel, maar die geeft volledige
zeggenschap, dus dat hoort niet in een relay. Als plan-punt opgenomen bij de tool
in HomeGit/Trezor.
Nog niet uitgerold: de image 0.5.0 moet gebouwd en geduwd worden. De digest staat
daarom niet in de compose, want een oude digest onder een nieuwe tag levert stil de
oude relay.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>