From 329b4ab9472342953766717b64096b57dd692775 Mon Sep 17 00:00:00 2001 From: Harmen Date: Sun, 30 Aug 2026 13:17:26 +0200 Subject: [PATCH] Evolu Relay 0.5.1: de melding bovenaan ging nooit weg Gemeld door de gebruiker binnen een uur na 0.5.0, op de pagina op zijn eigen Umbrel. "Sent. The relay applies changes within a few seconds." bleef staan tot je de pagina herlaadde, dus ook lang nadat hij niet meer waar was. Een ontbrekende tak: de ronde die elke vijf seconden loopt zette de melding wel aan maar nooit uit. De regel die daaruit volgt en die in het commentaar staat: de melding hoort van de RONDE te zijn en niet van de klik, want alleen de ronde weet of hij nog waar is. Hij verdwijnt nu zodra het relay-proces de opdracht heeft opgepakt, en blijft staan zolang de opdracht in de postbus ligt. Dat is het geval waarin er iets te melden valt, want normaal duurt dat twee seconden. Een weigering is de uitzondering en blijft staan tot de volgende opdracht: het is de enige uitleg die je krijgt van wat er misging, en die mag niet binnen vijf seconden verdwijnen. Met een vlag en niet door naar de klasse van het element te kijken, zoals de vorige versie van deze pagina deed; dan hangt gedrag aan een naam die er ook om opmaakredenen kan staan. Bijvangst: die weigering stond in de neutrale stijl en is nu rood. Een geweigerde opdracht in de neutrale stijl leest als een mededeling. Alleen index.html.template geraakt, dus geen nieuwe image: build.sh blijft op 0.5.0 en het manifest gaat naar 0.5.1. De changelog beweerde sinds diezelfde ochtend dat die twee nummers gelijk gehouden worden; de regel is dat een hogere VERSION een hoger manifest vraagt en niet andersom. Rechtgezet. Beide gedragingen zijn in een browser nagegaan tegen de voorbeeldweergave: de bevestiging is na zeven seconden verborgen, de weigering staat er dan nog. Co-Authored-By: Claude Opus 5 --- Docs/CHANGELOG-evolu-relay.md | 28 ++++++++- Docs/Plannen/Actief/008-Umbrelapp/PROGRESS.md | 11 ++++ Docs/Plannen/Actief/008-Umbrelapp/TAKEN.md | 10 ++- whatsnext-evolu-relay/index.html.template | 61 ++++++++++++++++--- whatsnext-evolu-relay/umbrel-app.yml | 11 +++- 5 files changed, 108 insertions(+), 13 deletions(-) diff --git a/Docs/CHANGELOG-evolu-relay.md b/Docs/CHANGELOG-evolu-relay.md index 8177e17..9093026 100644 --- a/Docs/CHANGELOG-evolu-relay.md +++ b/Docs/CHANGELOG-evolu-relay.md @@ -5,15 +5,37 @@ Nieuwste bovenaan. Elke regel hier hoort bij een `version` in uit. **Er hoort een tweede nummer bij: `VERSION` in `tools/evolu-relay/build.sh`, het etiket op de image.** Die -twee horen gelijk te zijn. Ze mogen uiteenlopen als er alleen iets in de app-map wijzigt, want dan is er -geen nieuwe image, maar sinds 0.5.0 worden ze gelijkgehouden: uiteenlopende nummers waren bij 0.4.0 al -verwarrend (manifest 0.4.0, image 0.3.0). +twee lopen uiteen zodra er iets in de app-map wijzigt zonder dat de relay-code verandert, en dat hóórt ook +zo: een `*.template` bereikt een installatie via de update-whitelist, en daarvoor een image bouwen en duwen +is werk zonder opbrengst. Het manifest loopt dus vóór op de image. + +De regel is: **verhoog je `VERSION`, dan verhoog je ook het manifest; andersom niet.** + +> Hier stond op 30-08-2026 dat ze "sinds 0.5.0 gelijkgehouden worden". Dat was diezelfde dag al onwaar, want +> 0.5.1 raakt alleen de pagina. De regel hierboven is wat er bedoeld werd. > **Deze geschiedenis is op 30-08-2026 bijgewerkt en liep tot dat moment achter:** er stond alleen 0.0.1, > terwijl de app op 0.4.0 zat. De entries voor 0.2.0 tot en met 0.4.0 zijn met terugwerkende kracht > geschreven uit de `releaseNotes` in het manifest en uit `PROGRESS.md` van het plan **Umbrelapp**. Ze zijn > daarom korter dan de rest. +## 0.5.1 - 30-08-2026 + +**Reparatie, gemeld door de gebruiker binnen een uur na 0.5.0.** De melding bovenaan de pagina ging nooit +weg. "Sent. The relay applies changes within a few seconds." bleef staan tot je de pagina herlaadde, dus ook +lang nadat hij niet meer waar was. + +De oorzaak was één ontbrekende tak: de ronde die elke vijf seconden loopt zette die melding wel áán maar +nooit uit. Nu is de melding van de ronde en niet van de klik: hij verdwijnt zodra het relay-proces de +opdracht heeft opgepakt, en blijft alleen staan zolang de opdracht nog in de postbus ligt. Dát is het geval +waarin er iets te melden valt, want normaal is dat binnen twee seconden gebeurd. + +**Een weigering is de uitzondering en blijft wél staan**, tot je een volgende opdracht geeft. Die mag niet +binnen vijf seconden verdwijnen, want het is de enige uitleg van wat er misging. Hij is bovendien rood +geworden; dat was hij niet, en een geweigerde opdracht in de neutrale stijl leest als een mededeling. + +Alleen `index.html.template` geraakt, dus **geen nieuwe image**: `build.sh` blijft op 0.5.0. + ## 0.5.0 - 30-08-2026 **De statuspagina op de lijst van de gebruiker, na een week met 0.4.0 gewerkt te hebben.** Negen punten, diff --git a/Docs/Plannen/Actief/008-Umbrelapp/PROGRESS.md b/Docs/Plannen/Actief/008-Umbrelapp/PROGRESS.md index 54e0626..28d05e8 100644 --- a/Docs/Plannen/Actief/008-Umbrelapp/PROGRESS.md +++ b/Docs/Plannen/Actief/008-Umbrelapp/PROGRESS.md @@ -33,6 +33,17 @@ de oude image, en doe **beide** repo-pushes vóór de app-update, anders kost he extra versienummer. `imagetools` bevestigde bovendien `manifest.v2+json` en dus één architectuur; dat is bij bouwen op het apparaat zelf te verwachten. +**En daarna kwam de eerste melding uit echt gebruik binnen, binnen het uur: 0.5.1.** De melding bovenaan de +pagina ging nooit weg. Eén ontbrekende tak in de ronde, die hem wel aanzette maar nooit uit; "Sent." bleef +dus staan tot een herlading. Het is het soort fout dat de voorbeeldweergave niet vindt, want daar klik je +één keer en kijk je naar de opmaak. Wat het wél oplevert is een scherpere regel: de melding hoort van de +**ronde** te zijn en niet van de klik, want alleen de ronde weet of hij nog waar is. Een weigering is de +uitzondering en blijft staan, want dat is de enige uitleg die je krijgt. + +Bijvangst: die weigering stond in de neutrale stijl en is nu rood. En het manifest loopt hiermee vóór op de +image (0.5.1 tegen 0.5.0), wat correct is voor een wijziging in alleen een template. De changelog beweerde +sinds diezelfde ochtend het tegenovergestelde en is rechtgezet. + **Wat er nu nog staat is van de gebruiker en is een blik, geen sessie:** verversen, updaten, en dan de drie dingen nakijken die alleen het apparaat kan zeggen. diff --git a/Docs/Plannen/Actief/008-Umbrelapp/TAKEN.md b/Docs/Plannen/Actief/008-Umbrelapp/TAKEN.md index 274a655..697a5af 100644 --- a/Docs/Plannen/Actief/008-Umbrelapp/TAKEN.md +++ b/Docs/Plannen/Actief/008-Umbrelapp/TAKEN.md @@ -30,7 +30,15 @@ dus **één architectuur en geen multi-arch index**. Dat is bij bouwen op het apparaat zelf te verwachten en het klopt per constructie met de host; voor de officiele store hoort er arm64 bij, en dat staat bij **Publicatie-Relay** -- [ ] **De app store verversen in umbrelOS en de app updaten naar 0.5.0. Eigenaar: gebruiker.** +- [x] **0.5.1: de melding bovenaan ging nooit weg (30-08-2026).** Gemeld door de gebruiker binnen een uur + na 0.5.0, op de pagina op zijn eigen Umbrel. Eén ontbrekende tak: de ronde zette de melding wel áán + maar nooit uit, dus "Sent." bleef staan tot je herlaadde. Nu is de melding van de ronde en niet van de + klik. Een weigering is de uitzondering, blijft staan tot de volgende opdracht, en is rood geworden. + + **Alleen een `*.template` geraakt, dus geen nieuwe image**: `build.sh` blijft op 0.5.0 en het manifest + gaat naar 0.5.1. Dat is de normale gang van zaken en niet een slordigheid; de regel staat in + [CHANGELOG-evolu-relay.md](../../../CHANGELOG-evolu-relay.md), waar hij bij 0.5.0 nog verkeerd stond +- [ ] **De app store verversen in umbrelOS en de app updaten naar 0.5.1. Eigenaar: gebruiker.** - [ ] **Daarna op het apparaat nakijken wat een browser moet bewijzen (30-08-2026).** De pagina is met nagemaakte gegevens bekeken en dat vond twee echte fouten, maar drie dingen kan alleen de app zelf zeggen: loopt de teller écht af en gaat de deur dan dicht, blijft een label na een herstart staan, en diff --git a/whatsnext-evolu-relay/index.html.template b/whatsnext-evolu-relay/index.html.template index d2a93e3..daf3cec 100644 --- a/whatsnext-evolu-relay/index.html.template +++ b/whatsnext-evolu-relay/index.html.template @@ -685,6 +685,19 @@ body { // waarin je typt weghalen. var editing = null; + // Staat er een weigering in de melding bovenaan? + // + // Waar dit voor is: de ronde ruimt die melding zelf op zodra hij niet meer waar + // is, en dat is precies goed voor "de opdracht is verstuurd". Maar een weigering + // mag niet binnen vijf seconden verdwijnen: dan is de enige uitleg van wat er + // misging weg voordat je hem gelezen hebt. Vandaar deze vlag; de ronde laat de + // melding met rust zolang hij aanstaat. + // + // Als vlag en niet door naar de klasse van het element te kijken. Dat laatste + // deed de vorige versie van deze pagina, en dan hangt het gedrag aan een naam in + // een class-attribuut die er ook om opmaakredenen kan staan. + var refusal = false; + // De resterende seconden van het tijdvenster, zoals de agent ze doorgaf, en het // moment waarop dat was. Daartussen telt de pagina zelf af, zodat de teller // loopt in plaats van elke vijf seconden te verspringen. @@ -708,10 +721,14 @@ body { } } - function show(id, text) { + function show(id, text, kind) { var node = el(id); var body = el(id + '-body'); if (body && text) { body.textContent = text; } + if (kind) { + node.classList.remove('alert-neutral', 'alert-warn', 'alert-error'); + node.classList.add(kind); + } node.classList.remove('hidden'); } @@ -822,21 +839,35 @@ body { }); }).then(function (result) { if (!result.ok) { - show('alert-notice', 'The app refused that: ' + (result.body.error || 'no reason given')); + refusal = true; + show('alert-notice', 'The app refused that: ' + (result.body.error || 'no reason given'), + 'alert-error'); } else if (whenDone) { whenDone(); } }, function () { - show('alert-notice', 'Could not reach the app.'); + refusal = true; + show('alert-notice', 'Could not reach the app.', 'alert-error'); }); } + // Elke opdracht begint met een schone lei bovenaan: een weigering van de vorige + // poging hoort niet boven het resultaat van deze te blijven staan. + function clearNotice() { + refusal = false; + hide('alert-notice'); + } + function send(command) { if (busy) { return; } busy = true; - hide('alert-notice'); + clearNotice(); + // De melding is met opzet kort van leven: de ronde hieronder haalt hem weg + // zodra het relay-proces de opdracht heeft opgepakt, en dan is de nieuwe stand + // in de kaders zelf te zien. Blijft hij staan, dan heeft de relay hem nog + // niet gezien, en dán is er iets te melden. post('api/command', command, function () { - show('alert-notice', 'Sent. The relay applies changes within a few seconds.'); + show('alert-notice', 'Sent. The relay applies changes within a few seconds.', 'alert-neutral'); }).then(function () { busy = false; window.setTimeout(refresh, 2500); @@ -844,7 +875,7 @@ body { } function sendLabel(ownerId, label) { - hide('alert-notice'); + clearNotice(); // Geen busy-slot hieromheen, en dat is geen vergetelheid: een label gaat niet // via de postbus van het relay-proces maar rechtstreeks naar een eigen bestand // van de agent. Er is dus niets waarop het hoeft te wachten. @@ -1173,8 +1204,22 @@ body { hide('alert-owners'); } - if (status.pendingCommand) { - show('alert-notice', 'A command is waiting for the relay to pick it up.'); + // De melding bovenaan is van deze ronde, niet van de klik die hem opriep. + // Hier stond alleen de tak die hem aanzet, en dus bleef "Sent." staan tot je + // de pagina herlaadde; gemeld door de gebruiker op 30-08-2026. + // + // Een weigering is de uitzondering en wordt overgeslagen: die mag niet binnen + // vijf seconden verdwijnen, want dan is de enige uitleg van wat er misging weg + // voordat je hem gelezen hebt. Hij gaat weg bij de volgende opdracht. + if (!refusal) { + if (status.pendingCommand) { + // Ligt de opdracht er nog, dan heeft het relay-proces hem niet opgepakt. + // Dat is het geval waarin een melding écht iets toevoegt: normaal is dat + // binnen twee seconden gebeurd. + show('alert-notice', 'A command is waiting for the relay to pick it up.', 'alert-neutral'); + } else { + hide('alert-notice'); + } } }, function () { show('alert-agent'); diff --git a/whatsnext-evolu-relay/umbrel-app.yml b/whatsnext-evolu-relay/umbrel-app.yml index c1ff6d5..f9cba4e 100644 --- a/whatsnext-evolu-relay/umbrel-app.yml +++ b/whatsnext-evolu-relay/umbrel-app.yml @@ -11,7 +11,7 @@ manifestVersion: 1 id: whatsnext-evolu-relay category: files name: Evolu Relay -version: "0.5.0" +version: "0.5.1" tagline: Encrypted sync and backup for your local-first apps description: >- Local-first apps keep your data on your own device and work whether or not you have a @@ -43,6 +43,15 @@ description: >- your app at the address shown there. Away from home you will need a way in, such as Tailscale or a reverse proxy with your own domain. releaseNotes: >- + Fixes a message at the top of the page that never went away. Confirming that a command was sent is worth + saying for a second or two, but it stayed until you reloaded the page, so it was still there long after it + stopped being true. It now clears itself as soon as the relay has picked the command up. A refusal is the + exception and stays put: that is the only explanation you get of what went wrong. + + + Everything in 0.5.0, released the same day: + + Accepting a new owner is now a two minute window instead of a switch you have to remember to turn back off. Open it, pair your device, and it closes on its own; you can close it early or restart the two minutes if you need longer. The countdown runs on the Umbrel, so closing the page does not leave