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