diff --git a/Docs/CHANGELOG-evolu-relay.md b/Docs/CHANGELOG-evolu-relay.md index 89c2ead..816043c 100644 --- a/Docs/CHANGELOG-evolu-relay.md +++ b/Docs/CHANGELOG-evolu-relay.md @@ -19,6 +19,19 @@ De regel is: **verhoog je `VERSION`, dan verhoog je ook het manifest; andersom n > geschreven uit de `releaseNotes` in het manifest en uit `PROGRESS.md` van het plan **Umbrelapp**. Ze zijn > daarom korter dan de rest. +## 0.5.6 - 07-09-2026 + +**Alleen de pagina, dus geen nieuwe image.** `VERSION` in `tools/evolu-relay/build.sh` blijft op 0.5.0. + +**De eigenaars staan op volgorde van laatst gezien, meest recent bovenaan**, in beide kaders en over de +groepen heen: een blokkade van vanmorgen staat boven een afgewezen poging van vorige week. Tot nu stonden +de rijen in de volgorde van het bestand, dus van binnenkomst. Op verzoek van de gebruiker. De volgorde +schuift mee zonder herladen, want de ronde van vijf seconden bouwt de lijsten toch al opnieuw op. + +"Laatst gezien" is wat het relay-proces bijhoudt: het tijdstip van de laatste **verbinding**. Een sync +over een verbinding die al openstaat verandert dat tijdstip niet; daar is een wijziging in de relay-code +voor nodig, en dus een nieuwe image. + ## 0.5.5 - 04-09-2026 **Alleen de pagina, dus geen nieuwe image.** `VERSION` in `tools/evolu-relay/build.sh` blijft op 0.5.0. diff --git a/Docs/CONTINUE_HERE.md b/Docs/CONTINUE_HERE.md index 598011c..4b2880c 100644 --- a/Docs/CONTINUE_HERE.md +++ b/Docs/CONTINUE_HERE.md @@ -29,7 +29,7 @@ | Plan | App | Volgende stap | Status | |-|-|-|-| -| [Umbrelapp](Plannen/Actief/008-Umbrelapp/TAKEN.md) | Relay | **0.5.5 (04-09-2026): de accentgloed staat uit, als schakelaar** (`data-glow`, alleen werkzaam bij `data-depth="deep"`). Op verzoek van de gebruiker, gelijk aan Electrum Gate 0.0.29; alleen de pagina, dus geen nieuwe image. Daarvóór 0.5.4 (31-08-2026): de statuswidget staat rechts en heet Status, gelijk aan Electrum Gate.** Daarvóór 0.5.3 (31-08-2026): "Running" weer in de accentkleur en op een telefoon terug naar de vlakke stand.** Daarvóór 0.5.2 (31-08-2026): de opfrisbeurt uit het gedeelde designsysteem** (accentgloed, doorschijnende kaarten met randlicht en schaduw, één hoek voor elk buitenste kader, het volle accentpalet met oranje als stand). Alleen de pagina, dus geen nieuwe image. **Nog nakijken op het apparaat, en dat is een blik.** Daarvóór stond er: **0.5.1 staat klaar en de pagina is af op de lijst van de gebruiker (30-08-2026):** tijdvenster van twee minuten met de teller in het relay-proces, labels op een eigenaar-id, geblokkeerd en geweigerd in één kader, maatvoering gelijk aan Electrum Gate. De image is dezelfde dag op de Umbrel gebouwd, geduwd en gepind. **Volgende stap is van de gebruiker en is een blik, geen sessie:** verversen, updaten, en dan de drie dingen nakijken die alleen het apparaat kan zeggen (teller met de pagina dicht, label na een herstart, het adres achter de app-proxy). Wat daarna nog open is: data per eigenaar wissen, en een `package-lock.json`. **Het pinnen van `python:3-alpine` en `nginx:alpine` is bewust géén werk meer hier** en wacht op Eigenimage; zie [KNOWLEDGE.md](KNOWLEDGE.md) | 🔶 | +| [Umbrelapp](Plannen/Actief/008-Umbrelapp/TAKEN.md) | Relay | **0.5.6 (07-09-2026): de eigenaars staan op volgorde van laatst gezien, meest recent bovenaan.** Alleen de pagina, dus geen nieuwe image. Erbij gevonden en als open taak genoteerd: "laatst gezien" is het tijdstip van de verbinding, niet van een sync; dat aanpassen raakt de relay-code. Daarvóór **0.5.5 (04-09-2026): de accentgloed staat uit, als schakelaar** (`data-glow`, alleen werkzaam bij `data-depth="deep"`). Op verzoek van de gebruiker, gelijk aan Electrum Gate 0.0.29; alleen de pagina, dus geen nieuwe image. Daarvóór 0.5.4 (31-08-2026): de statuswidget staat rechts en heet Status, gelijk aan Electrum Gate.** Daarvóór 0.5.3 (31-08-2026): "Running" weer in de accentkleur en op een telefoon terug naar de vlakke stand.** Daarvóór 0.5.2 (31-08-2026): de opfrisbeurt uit het gedeelde designsysteem** (accentgloed, doorschijnende kaarten met randlicht en schaduw, één hoek voor elk buitenste kader, het volle accentpalet met oranje als stand). Alleen de pagina, dus geen nieuwe image. **Nog nakijken op het apparaat, en dat is een blik.** Daarvóór stond er: **0.5.1 staat klaar en de pagina is af op de lijst van de gebruiker (30-08-2026):** tijdvenster van twee minuten met de teller in het relay-proces, labels op een eigenaar-id, geblokkeerd en geweigerd in één kader, maatvoering gelijk aan Electrum Gate. De image is dezelfde dag op de Umbrel gebouwd, geduwd en gepind. **Volgende stap is van de gebruiker en is een blik, geen sessie:** verversen, updaten, en dan de drie dingen nakijken die alleen het apparaat kan zeggen (teller met de pagina dicht, label na een herstart, het adres achter de app-proxy). Wat daarna nog open is: data per eigenaar wissen, en een `package-lock.json`. **Het pinnen van `python:3-alpine` en `nginx:alpine` is bewust géén werk meer hier** en wacht op Eigenimage; zie [KNOWLEDGE.md](KNOWLEDGE.md) | 🔶 | | [Proefopstelling](Plannen/Actief/007-Proefopstelling/TAKEN.md) | Relay | **Volledig ingehaald op 28-08-2026 en klaar voor het archief.** Beide vragen die het nog bezat zijn beantwoord door **Umbrelapp**: Trezor Suite accepteert een eigen relay, en een eigenaar registreren is niet meer nodig sinds de quota-manager eruit is. Wat er in fase 2 en 3 stond gaat over een pakket dat niet meer bestaat. **Eén beslissing van de gebruiker: opheffen of laten staan** | 🔶 | | [Webinterface](Plannen/Actief/005-Webinterface/TAKEN.md) | Gate | **0.0.29 (04-09-2026): de accentgloed staat uit, als schakelaar** (`data-glow`, alleen werkzaam bij `data-depth="deep"`). Dezelfde wijziging zit in Evolu Relay 0.5.5, en het gedeelde designsysteem in `HomeGit/Docs` heeft er nu een eigen schuif voor. Daarvóór 0.0.28 dezelfde dag: **de widget met de blokhoogte is eruit,** op verzoek van de gebruiker: het is niet aan deze app om die informatie te tonen. Vier widgets over, alle vier over deze gateway. De leeftijd van de meting verhuisde mee naar de reactietijd. **Beide nog nakijken op het apparaat, en dat is één blik.** Daarvóór 0.0.27 (31-08-2026): de statuskaart loog vijf minuten na elke herstart.** De agent mat vóórdat nginx luisterde (die start ná de agent) en herhaalde pas na vijf minuten; nu slaat de eerste ronde over en wordt een mislukking binnen een minuut herhaald. Daarvóór 0.0.26 (31-08-2026): "Running" weer in de accentkleur en op een telefoon terug naar de vlakke stand.** Daarvóór 0.0.25 (31-08-2026): dezelfde opfrisbeurt als de Relay**, uit het gedeelde designsysteem, plus een reparatie die daarbij aan het licht kwam: `prefers-reduced-motion` zette per ongeluk de hele opmaak plat, omdat die wens met `prefers-reduced-transparency` in één media-query stond. **Nog nakijken op het apparaat.** Daarvóór: **De pagina is af en goedgekeurd, op een breed scherm én op een telefoon (27-08-2026).** Op 28-08-2026 kapotgegaan door de tweede app en gerepareerd in 0.0.23. In 0.0.24 (30-08-2026) is de statuswidget van "Answering" naar "Running" gegaan en is er een menu-item "About this app" bij gekomen; dat kwam uit het werk aan Evolu Relay, waar de gebruiker de twee pagina's naast elkaar zag. **Nog nakijken op het apparaat, en dat is een blik en geen sessie.** Wat er verder staat wacht op tijd (het activiteitenlog een etmaal laten lopen) of is een beslissing van de gebruiker (waar Nginx Proxy Manager zijn certificaten neerzet, en of Zoraxy een harde afhankelijkheid wordt) | 🔶 | | [Appstore](Plannen/Actief/010-Appstore/TAKEN.md) | Gate | De repo `ElectrumTLS` weghalen op de Git-server; daar staat het domein nog in de historie. **De omschakeling naar Fulcrum is op 27-08-2026 gelukt zonder aanpassing**, dus daarvan is alleen de herstartcontrole nog over, en die komt vanzelf bij de eerstvolgende herstart | 🔶 | diff --git a/Docs/Plannen/Actief/008-Umbrelapp/PROGRESS.md b/Docs/Plannen/Actief/008-Umbrelapp/PROGRESS.md index d009dbf..7c01f19 100644 --- a/Docs/Plannen/Actief/008-Umbrelapp/PROGRESS.md +++ b/Docs/Plannen/Actief/008-Umbrelapp/PROGRESS.md @@ -3,6 +3,16 @@ > Chronologisch sessielog, nieuwste bovenaan. Kort: 3 tot 6 regels per entry. Wat er is gebeurd en waarom, > niet wat er nog moet: dat staat in [TAKEN.md](TAKEN.md). +## 07-09-2026 - de eigenaars op volgorde van laatst gezien + +Op verzoek van de gebruiker: de rijen stonden in de volgorde van het bestand, dus van binnenkomst, en dat +zegt na een week niets meer. Nu meest recent gezien bovenaan, in beide kaders en over de groepen heen. De +vraag was of dat zonder herladen kon; ja, want de ronde van vijf seconden bouwt de lijsten toch al opnieuw +op. Versie 0.5.6, alleen de pagina, dus geen nieuwe image. + +Wat erbij aan het licht kwam: `lastSeen` wordt alleen bij de verbinding gezet, niet bij een sync erover. +Dat als open taak in [TAKEN.md](TAKEN.md), want het raakt de relay-code en kost dus een image. + ## 04-09-2026 - de gloed uit in beide apps, als schakelaar Geen gepland werk aan dit plan; de opdracht kwam bij Electrum Gate binnen en geldt voor beide pagina's. De diff --git a/Docs/Plannen/Actief/008-Umbrelapp/TAKEN.md b/Docs/Plannen/Actief/008-Umbrelapp/TAKEN.md index 34a3c14..1022315 100644 --- a/Docs/Plannen/Actief/008-Umbrelapp/TAKEN.md +++ b/Docs/Plannen/Actief/008-Umbrelapp/TAKEN.md @@ -16,6 +16,15 @@ ## Volgende stap +- [x] **De eigenaars gesorteerd op laatst gezien, meest recent bovenaan (07-09-2026, 0.5.6).** Op verzoek + van de gebruiker; in beide kaders en over de groepen heen. Alleen de pagina, dus geen nieuwe image. + **Nog nakijken op het apparaat.** +- [ ] **"Laatst gezien" ook bijwerken bij een sync, niet alleen bij de verbinding.** Het relay-proces + zet `lastSeen` in `decideOwner`, en dat wordt alleen bij de WebSocket-upgrade gesteld. Een client die + dagen verbonden blijft, zakt dus in de lijst terwijl hij druk bezig is. De haak die per schrijfactie + loopt is `isOwnerWithinQuota`; daar kan een pure functie in `policy.js` het tijdstip bijwerken, met + een test in `test_limiter.mjs`. Leesacties zijn niet te zien: daar heeft de relay geen haak voor. + Kost een nieuwe image, dus alleen als de gebruiker dat wil. - [x] **De accentgloed uitgezet, als schakelaar (04-09-2026, 0.5.5).** Op verzoek van de gebruiker, en in dezelfde stap in Electrum Gate (0.0.29). `data-glow="on"` op het html-element zet hem terug, en alleen samen met `data-depth="deep"`. De blur gaat met de gloed mee, waardoor het mobiele diff --git a/whatsnext-evolu-relay/index.html.template b/whatsnext-evolu-relay/index.html.template index 8718b8c..0c5229a 100644 --- a/whatsnext-evolu-relay/index.html.template +++ b/whatsnext-evolu-relay/index.html.template @@ -1243,13 +1243,33 @@ body { } // ── De lijsten ──────────────────────────────────────────────────────────── + // Meest recent gezien bovenaan, over de groepen heen: in het kader met + // geweigerden staat een blokkade van vanmorgen dus boven een afgewezen poging van + // vorige week, en niet andersom omdat "blocked" nu eenmaal eerst kwam. Tot 0.5.5 + // stonden de rijen in de volgorde van het bestand, en dat is de volgorde waarin + // eigenaars ooit binnenkwamen; die zegt na een week niets meer. Op verzoek van + // de gebruiker, 07-09-2026. + // + // De volgorde verschuift vanzelf mee: de ronde van vijf seconden bouwt de lijst + // elke keer opnieuw op, dus hier hoeft niets voor herladen te worden. Wat + // "gezien" hier betekent staat bij het relay-proces: het tijdstip van de laatste + // verbinding, niet van de laatste sync erover. + function seenAt(entry) { + var when = new Date(entry.lastSeen || entry.firstSeen || 0).getTime(); + return isNaN(when) ? 0 : when; + } + function fillList(id, groups, emptyText) { var holder = el(id); - var total = 0; - groups.forEach(function (group) { total += group.entries.length; }); + var rows = []; + groups.forEach(function (group) { + group.entries.forEach(function (entry) { + rows.push({ entry: entry, kind: group.kind }); + }); + }); holder.textContent = ''; - if (total === 0) { + if (rows.length === 0) { var empty = document.createElement('p'); empty.className = 'list-empty'; empty.textContent = emptyText; @@ -1257,10 +1277,9 @@ body { return; } - groups.forEach(function (group) { - group.entries.forEach(function (entry) { - holder.appendChild(ownerRow(entry, group.kind)); - }); + rows.sort(function (a, b) { return seenAt(b.entry) - seenAt(a.entry); }); + rows.forEach(function (row) { + holder.appendChild(ownerRow(row.entry, row.kind)); }); } diff --git a/whatsnext-evolu-relay/umbrel-app.yml b/whatsnext-evolu-relay/umbrel-app.yml index f7fbd35..63f3c55 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.5" +version: "0.5.6" 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,10 +43,10 @@ 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: >- - The glow behind the page is gone. It arrived in 0.5.2 and it did what it was meant to do, but a status - page is something you glance at, and a coloured wash over the whole window is a lot of decoration for a - glance. The panels keep their edge, their shadow and their top light, so they still read as panels; only - the light behind them is off. The switch is still in the page for anyone who wants it back. + Owners are now listed most recently seen first, in both panels. Until now the rows kept the order in + which owners first showed up, which stops meaning anything after a week. The order follows along on its + own: the page refreshes its lists every few seconds, so a reconnecting owner moves to the top without a + reload. Everything in 0.5.4: