De pagina van Evolu Relay op de lijst van de gebruiker

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>
This commit is contained in:
Harmen
2026-08-30 12:26:56 +02:00
co-authored by Claude Opus 5
parent 83af97c2c5
commit b3b1881af2
27 changed files with 3163 additions and 411 deletions
+40
View File
@@ -8,6 +8,46 @@ Wat er nog moet gebeuren staat **niet** hier maar in de plannen; zie [CONTINUE_H
Een lijst met geplande features op twee plekken loopt uit elkaar, en dan is geen van beide meer te
vertrouwen.
## [0.0.24] - 2026-08-30
### Added
- **Een menu-item "About this app…", met een dialoog erachter.** De marketingtekst stond alleen in
`umbrel-app.yml` en dus alleen in de winkel, terwijl je juist ná het installeren nog eens wil kunnen
nalezen wat de app voor je doet. Vijf kopjes: waar het voor is, het certificaat, wat er niet in het midden
zit, wat de statuswidget bewijst, en welke wallets.
**Dezelfde toevoeging zit in Evolu Relay**, op verzoek van de gebruiker: het is één store en de twee
pagina's horen zich hetzelfde te gedragen.
### Changed
- **De statuswidget zei "Answering" en zegt nu "Running".** Gemeld door de gebruiker: die tegel is
onduidelijk, en die van Evolu Relay leest meteen. Dat klopt om twee redenen die los van elkaar staan.
"Answering" is een tegenwoordig deelwoord en leest dus als een handeling die bezig is, niet als een
toestand; "Checking" ernaast is er wél een, en dat maakt het erger. En de onderregel "answered in 7 ms,
from inside the app" probeerde in vier woorden een nuance te dragen waar vier woorden te weinig voor zijn:
wie het niet al weet, leest er niets uit.
De onderregel is nu "the TLS port answered in 7 ms". **De nuance is niet weggelaten maar verplaatst** naar
de nieuwe dialoog, onder een eigen kopje: de controle loopt van container naar container, dus een router
die de poort niet meer doorstuurt leest hier alsnog als Running. Haal dat kopje niet weg zonder in de
widget iets terug te zetten, want dan staat die bewering nergens meer.
## [0.0.23] - 2026-08-28
### Fixed
- **De pagina kon leeg blijven of oude waarden tonen zodra er een tweede app uit deze store bijkwam.** Hij
bereikte zijn agent via de korte containernaam `agent`, en Evolu Relay heeft er ook een op poort 8000.
Alle apps van umbrelOS delen één Docker-netwerk, dus Docker verdeelde die naam over beide containers en
ongeveer de helft van de verzoeken kwam bij de verkeerde app uit.
Beide apps wijzen nu naar de volledige naam `<app-id>_agent_1`, en die vorm is per app uniek.
`tests/test_appstore_vorm.py` toetst dit voortaan voor élke app in de store, want dit is precies het soort
fout dat stil terugkomt bij de volgende app die iemand toevoegt.
## [0.0.22] - 2026-08-27
### Changed