Relay 0.7.1: de twee eigenaarskaders opgeruimd

Vier punten van de gebruiker na een dag met 0.7.0. Drie zijn woordkeuze:
"Accepted owners" en "Waiting list" heten "Accepted" en "Waiting", de badge
"Waiting" is weg en de regel onder het adres is weg. De badge kon eruit zonder
verlies, want het onderscheid waarvoor hij er was blijft staan: een
geblokkeerde eigenaar is nu precies de regel met badge.

Het vierde punt was echt werk: elke rij is nu even hoog. Een rij werd hoger op
het moment dat je hem een naam gaf, want het label duwde het id naar een derde
regel. Nu deelt het id de onderregel met de tijden, afgekapt met een puntje en
volledig in de tooltip. Een vaste hoogte in CSS laat witruimte achter onder een
rij zonder label en leest dan als een weergavefout.

Nagekeken in voorbeeld/: vijf rijen, alle vijf 68px, ook tijdens het labelen.
Op het apparaat nog ongezien, want er is geen image: VERSION, het manifest en
de compose staan op 0.7.1 zonder digest.

Suite groen: 42, 90, 36, 22, 54 en 68 goed, 0 fout.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Harmen
2026-09-10 09:54:22 +02:00
co-authored by Claude Opus 5
parent 23670e6972
commit e4b0aa5df9
8 changed files with 114 additions and 60 deletions
+19
View File
@@ -19,6 +19,25 @@ 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 > geschreven uit de `releaseNotes` in het manifest en uit `PROGRESS.md` van het plan **Umbrelapp**. Ze zijn
> daarom korter dan de rest. > daarom korter dan de rest.
## 0.7.1 - 10-09-2026
**Nog niet gebouwd.** De compose staat op `evolu-relay:0.7.1` zónder digest, zodat een installatie hard
faalt tot de image bestaat in plaats van stil de oude te draaien. Bouwen, duwen en pinnen ligt bij de
gebruiker, op de Umbrel.
Vier dingen aan de twee eigenaarskaders, alle vier op verzoek van de gebruiker na een dag met 0.7.0:
- **"Accepted owners" en "Waiting list" heten "Accepted" en "Waiting".** Kortere koppen op een pagina waar
de rest van de kaders ook één woord heeft.
- **De regel onder het adres is weg.** Die vertelde sinds 0.7.0 wat het adres achter een reverse proxy
wordt; het kader is nu het adres en niets anders. Wat er over bereikbaarheid van buiten te zeggen valt,
staat in "About this app".
- **De badge "Waiting" is weg.** In een kader dat "Waiting" heet zei hij niets extra. Het onderscheid
waarvoor de badge er was, blijft: een geblokkeerde eigenaar is nu precies de regel mét badge.
- **Elke rij is even hoog, in alle lijsten.** Een rij werd hoger op het moment dat je hem een naam gaf,
want het label duwde het id naar een eigen regel; het id staat nu op de onderregel bij de tijden. Een
waarde die niet past wordt afgekapt met een puntje en staat volledig in de tooltip.
## 0.7.0 - 09-09-2026 ## 0.7.0 - 09-09-2026
**Gebouwd en geduwd op 10-09-2026**, door de gebruiker op de Umbrel. De compose staat op **Gebouwd en geduwd op 10-09-2026**, door de gebruiker op de Umbrel. De compose staat op
+1 -1
View File
@@ -23,7 +23,7 @@
| Plan | App | Volgende stap | Status | | Plan | App | Volgende stap | Status |
|-|-|-|-| |-|-|-|-|
| [Umbrelapp](Plannen/Actief/008-Umbrelapp/TAKEN.md) | Relay | **0.7.0 bouwen, duwen en pinnen op de Umbrel. Eigenaar: gebruiker, en dit blokkeert twee plannen.** De compose staat op `evolu-relay:0.7.0` zónder digest, zodat een installatie hard faalt tot de image bestaat. Wat er in zit (09-09-2026, vier punten van de gebruiker): de getimede leerstand is eruit en de **wachtlijst** is de enige weg naar binnen, "Refused owners" heet "Waiting list", het adres onderaan zegt `ws://` in plaats van `http://`, en de melding bij elke klik is vervangen door knoppen die even op slot gaan. `STATE_VERSION` blijft 1, dus een bestaand `owners.json` leest door. **Alles nog ongezien op het apparaat** | 🔶 | | [Umbrelapp](Plannen/Actief/008-Umbrelapp/TAKEN.md) | Relay | **0.7.1 bouwen, duwen en pinnen op de Umbrel. Eigenaar: gebruiker.** De compose staat op `evolu-relay:0.7.1` zónder digest, zodat een installatie hard faalt tot de image bestaat. **0.7.0 draait sinds 10-09-2026** en de wachtlijst is daar de enige weg naar binnen; 0.7.1 is wat een dag gebruiken opleverde, vier punten van de gebruiker over de twee eigenaarskaders. Eén ervan was meer dan een woordkeuze: een rij werd hoger op het moment dat je hem een naam gaf, en nu zijn alle rijen even hoog | 🔶 |
| [Testclient](Plannen/Actief/003-Testclient/TAKEN.md) | Relay | **Wacht op 0.7.0 op het apparaat.** De cliënt is af en werkt: register, negen opdrachten, een bedieningsvlak op `127.0.0.1:4380` met `Start.bat` en `Start.command`, en `test` die de HTTP-status van de WebSocket-upgrade toont. De eerste proef is geslaagd: een onbekende eigenaar krijgt 401 over `wss://` via de reverse proxy, en dat stond tot dan alleen als redenering in `Upstream-evolu-relay.md` §10. De rest van fase 4 vraagt een relay die eigenaars toelaat. Uitkomst die het meeste stuurt: `@evolu/nodejs` bevat géén cliënt, dus de afhankelijkheden voor `createEvolu` worden zelf samengesteld; de valstrikken staan in `PLAN.md` §4e | 🔶 | | [Testclient](Plannen/Actief/003-Testclient/TAKEN.md) | Relay | **Wacht op 0.7.0 op het apparaat.** De cliënt is af en werkt: register, negen opdrachten, een bedieningsvlak op `127.0.0.1:4380` met `Start.bat` en `Start.command`, en `test` die de HTTP-status van de WebSocket-upgrade toont. De eerste proef is geslaagd: een onbekende eigenaar krijgt 401 over `wss://` via de reverse proxy, en dat stond tot dan alleen als redenering in `Upstream-evolu-relay.md` §10. De rest van fase 4 vraagt een relay die eigenaars toelaat. Uitkomst die het meeste stuurt: `@evolu/nodejs` bevat géén cliënt, dus de afhankelijkheden voor `createEvolu` worden zelf samengesteld; de valstrikken staan in `PLAN.md` §4e | 🔶 |
## B - Los oppakbaar (geen blokkade, geen vaste volgorde) ## B - Los oppakbaar (geen blokkade, geen vaste volgorde)
@@ -3,6 +3,23 @@
> Chronologisch sessielog, nieuwste bovenaan. Kort: 3 tot 6 regels per entry. Wat er is gebeurd en waarom, > 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). > niet wat er nog moet: dat staat in [TAKEN.md](TAKEN.md).
## 10-09-2026 - 0.7.0 op het apparaat, en 0.7.1 met gelijke rijen
**0.7.0 draait.** De gebruiker bouwde en duwde de image; de digest staat drie keer in de compose. Het
duwen liep eerst vast op `unauthorized: reqPackageAccess` van Gitea, en dat bleek niets met dit pakket te
maken te hebben: het is de rechtencontrole op packages.
**Vier punten na een dag gebruiken, samen 0.7.1.** Drie zijn woordkeuze: "Accepted owners" en "Waiting
list" heten "Accepted" en "Waiting", de badge "Waiting" is weg en de regel onder het adres is weg. De
badge kon eruit zonder verlies, want het onderscheid waarvoor hij er was blijft staan: een geblokkeerde
eigenaar is nu precies de regel mét badge.
**Het vierde punt was echt werk: elke rij is nu even hoog.** Een rij werd hoger op het moment dat je hem
een naam gaf, want het label duwde het id naar een derde regel. Nu deelt het id de onderregel met de
tijden. Een vaste hoogte in CSS zou hetzelfde lijken te doen, maar laat witruimte achter onder een rij
zonder label. Wat het kost: op een halve kaartbreedte wordt die onderregel afgekapt, met de volledige
waarde in de tooltip. Nagekeken in `voorbeeld/`: vijf rijen, alle vijf 68px, ook tijdens het labelen.
## 09-09-2026 - 0.7.0: één weg naar binnen, en de melding bij elke klik weg ## 09-09-2026 - 0.7.0: één weg naar binnen, en de melding bij elke klik weg
Vier punten van de gebruiker, opgekomen tijdens het beproeven met de testcliënt. Drie ervan waren Vier punten van de gebruiker, opgekomen tijdens het beproeven met de testcliënt. Drie ervan waren
+13 -2
View File
@@ -20,10 +20,21 @@
## Volgende stap ## Volgende stap
- [ ] **0.7.0 bouwen, duwen en pinnen op de Umbrel. Eigenaar: gebruiker.** De compose staat op - [ ] **0.7.1 bouwen, duwen en pinnen op de Umbrel. Eigenaar: gebruiker.** De compose staat op
`evolu-relay:0.7.0` **zonder digest**, zodat een installatie hard faalt tot de image bestaat in `evolu-relay:0.7.1` **zonder digest**, zodat een installatie hard faalt tot de image bestaat in
plaats van stil de oude te draaien. Na het duwen: de index-digest erbij, drie keer in de compose. De plaats van stil de oude te draaien. Na het duwen: de index-digest erbij, drie keer in de compose. De
commando's staan in [Images-pinnen.md](../../../Referenties/Images-pinnen.md) commando's staan in [Images-pinnen.md](../../../Referenties/Images-pinnen.md)
- [x] **0.7.1 klaargezet (10-09-2026): de twee eigenaarskaders opgeruimd.** Vier punten van de gebruiker
na een dag met 0.7.0, en één ervan is meer dan een woordkeuze: **elke rij is nu even hoog**. Een rij
werd hoger op het moment dat je hem een naam gaf, want het label duwde het id naar een derde regel;
het id staat nu bij de tijden op de onderregel, afgekapt met een puntje en volledig in de tooltip.
Verder: "Accepted owners" en "Waiting list" heten "Accepted" en "Waiting", de badge "Waiting" is weg
(een geblokkeerde eigenaar is nu precies de regel mét badge) en de regel onder het adres is weg.
Nagekeken in `voorbeeld/`: alle vijf de rijen zijn 68px, ook tijdens het labelen. **Op het apparaat
nog ongezien**, want er is geen image
- [x] **0.7.0 gebouwd, geduwd en gepind (10-09-2026, gebruiker).** De digest staat drie keer in de
compose. Bij het duwen liep de gebruiker eerst op `unauthorized: reqPackageAccess`; dat is de
packages-rechtencontrole van Gitea en geen fout in dit pakket
- [x] **0.7.0 klaargezet (09-09-2026): één weg naar binnen, en de melding bij elke klik weg.** Vier punten - [x] **0.7.0 klaargezet (09-09-2026): één weg naar binnen, en de melding bij elke klik weg.** Vier punten
van de gebruiker, opgekomen tijdens het beproeven met de testcliënt: van de gebruiker, opgekomen tijdens het beproeven met de testcliënt:
- de getimede leerstand is eruit; de **wachtlijst** is de enige weg naar binnen. Zijn redenering: - de getimede leerstand is eruit; de **wachtlijst** is de enige weg naar binnen. Zijn redenering:
+1 -1
View File
@@ -42,7 +42,7 @@ set -eu
# want anders rolt umbrelOS hem niet uit. Dat heeft hier een keer een dag gekost. # want anders rolt umbrelOS hem niet uit. Dat heeft hier een keer een dag gekost.
# Sinds alles in de image zit lopen ze meestal gelijk; de regel blijft: verhoog je # Sinds alles in de image zit lopen ze meestal gelijk; de regel blijft: verhoog je
# VERSION, dan ook het manifest. # VERSION, dan ook het manifest.
VERSION="0.7.0" VERSION="0.7.1"
# Het register staat er expres in en dit is geen smaakkwestie: umbreld haalt élke # Het register staat er expres in en dit is geen smaakkwestie: umbreld haalt élke
# image op via de Docker Engine API, dus een tag die alleen lokaal bestaat is voor # image op via de Docker Engine API, dus een tag die alleen lokaal bestaat is voor
+53 -43
View File
@@ -431,32 +431,33 @@ body {
color: var(--accent); color: var(--accent);
} }
/* De regel onder het adres: hoe het van buiten heet. Geen kader eromheen, want
het is uitleg bij de waarde erboven en geen tweede waarde. */
.note {
margin: 0.7rem 0 0;
font-size: 0.85rem;
line-height: 1.5;
color: var(--text-sec);
}
.note code {
font-family: var(--font-mono);
font-size: 0.95em;
color: var(--accent);
}
/* ── Lijstregels ────────────────────────────────────────────────────────── */ /* ── Lijstregels ────────────────────────────────────────────────────────── */
.list-item { .list-item {
display: flex; justify-content: space-between; align-items: center; display: flex; justify-content: space-between; align-items: center;
gap: 1rem; padding: 0.85rem 0; border-bottom: 1px solid var(--border); gap: 1rem; padding: 0.85rem 0; border-bottom: 1px solid var(--border);
} }
.list-item:last-child { border-bottom: none; } .list-item:last-child { border-bottom: none; }
.list-item-title { font-size: 0.88rem; font-weight: 500; overflow-wrap: anywhere; } /* Elke rij is twee regels hoog, in alle lijsten, en dat wordt hier dichtgehouden
op de drie manieren waarop het alsnog kon verschuiven: een lange waarde die
afbreekt naar een derde regel (afkappen met een puntje, de volledige waarde
blijft als tooltip), een onderregel zonder inhoud (min-height reserveert de
regel), en het invoerveld tijdens labelen, dat lager is dan twee regels tekst
(min-height op owner-who). Waarom dit een eis is: de hoogte veranderde zodra je
een rij labelde. Verzoek van de gebruiker, 10-09-2026. */
.list-item-title {
font-size: 0.88rem; font-weight: 500; line-height: 1.5;
white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.list-item-title.mono { font-family: var(--font-mono); font-size: 0.8rem; font-weight: 400; } .list-item-title.mono { font-family: var(--font-mono); font-size: 0.8rem; font-weight: 400; }
.list-item-sub { font-size: 0.72rem; color: var(--text-sec); margin-top: 0.1rem; overflow-wrap: anywhere; } .list-item-sub {
font-size: 0.72rem; color: var(--text-sec); margin-top: 0.1rem; line-height: 1.5;
min-height: 1.5em;
white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.list-item-sub.mono { font-family: var(--font-mono); } .list-item-sub.mono { font-family: var(--font-mono); }
.list-empty { font-size: 0.78rem; color: var(--text-ter); padding: 0.7rem 0; } .list-empty { font-size: 0.78rem; color: var(--text-ter); padding: 0.7rem 0; }
.owner-who { min-width: 0; } /* 0.88 × 1.5 voor de titel, 0.72 × 1.5 plus 0.1 marge voor de onderregel. */
.owner-who { min-width: 0; min-height: 2.5rem; }
/* De badge duwt zichzelf naar rechts en de knoppen komen erachter. Zo staat de /* De badge duwt zichzelf naar rechts en de knoppen komen erachter. Zo staat de
badge op elke regel op dezelfde plek, ook op een regel zonder knoppen in beeld. */ badge op elke regel op dezelfde plek, ook op een regel zonder knoppen in beeld. */
.owner-tags { display: flex; gap: 0.5rem; flex-shrink: 0; margin-left: auto; } .owner-tags { display: flex; gap: 0.5rem; flex-shrink: 0; margin-left: auto; }
@@ -533,7 +534,6 @@ body.is-busy .list-item button { cursor: progress; }
} }
.badge-pos { background: var(--pos-bg); color: var(--pos); } .badge-pos { background: var(--pos-bg); color: var(--pos); }
.badge-neg { background: var(--neg-bg); color: var(--neg); } .badge-neg { background: var(--neg-bg); color: var(--neg); }
.badge-neutral { background: var(--neutral-bg); color: var(--text-sec); }
/* ── Het menu rechtsboven ───────────────────────────────────────────────── */ /* ── Het menu rechtsboven ───────────────────────────────────────────────── */
.menu { position: relative; flex-shrink: 0; } .menu { position: relative; flex-shrink: 0; }
@@ -765,7 +765,7 @@ body.is-busy .list-item button { cursor: progress; }
<!-- ── De twee lijsten ───────────────────────────────────────────────── --> <!-- ── De twee lijsten ───────────────────────────────────────────────── -->
<div class="card col-6"> <div class="card col-6">
<div class="card-head"><h2 class="t-h3">Accepted owners</h2></div> <div class="card-head"><h2 class="t-h3">Accepted</h2></div>
<div id="allowed"></div> <div id="allowed"></div>
</div> </div>
@@ -782,7 +782,7 @@ body.is-busy .list-item button { cursor: progress; }
heet in owners.json nog `rejected`; hernoemen zou een migratie zijn voor heet in owners.json nog `rejected`; hernoemen zou een migratie zijn voor
een woord dat niemand ziet. --> een woord dat niemand ziet. -->
<div class="card col-6"> <div class="card col-6">
<div class="card-head"><h2 class="t-h3">Waiting list</h2></div> <div class="card-head"><h2 class="t-h3">Waiting</h2></div>
<div id="refused"></div> <div id="refused"></div>
</div> </div>
@@ -791,16 +791,11 @@ body.is-busy .list-item button { cursor: progress; }
de rij bovenin is wat je nakomt. --> de rij bovenin is wat je nakomt. -->
<div class="card col-full"> <div class="card col-full">
<div class="card-head"><h2 class="t-h3">Relay address</h2></div> <div class="card-head"><h2 class="t-h3">Relay address</h2></div>
<!-- Hieronder stond in 0.7.0 een regel over de vorm achter een reverse
proxy (wss://, zonder poort). Eruit op verzoek van de gebruiker,
10-09-2026: dit kader is het adres en niets anders. Wat er over
bereikbaarheid van buiten te zeggen valt, staat in "About this app". -->
<div class="url-box" id="relay-url">unknown</div> <div class="url-box" id="relay-url">unknown</div>
<!-- De tweede regel is er sinds 0.7.0. Het adres hierboven werkt binnen je
eigen netwerk; van buiten loopt het via een reverse proxy, en dan is de
vorm anders én is dit de meest gemaakte fout: het schema wordt wss://
en de poort valt weg, want de proxy luistert op 443. -->
<p class="note">
That address works inside your own network. Through a reverse proxy with a certificate it
becomes <code>wss://your.domain</code>, <strong>without</strong> a port number: the proxy
listens on 443 and forwards to this one.
</p>
</div> </div>
</div> </div>
@@ -1112,12 +1107,33 @@ body.is-busy .list-item button { cursor: progress; }
// Met een label staat het label bovenaan en het id eronder; zonder label is // Met een label staat het label bovenaan en het id eronder; zonder label is
// het id de titel. Zo staat het meest zeggende altijd op de eerste regel. // het id de titel. Zo staat het meest zeggende altijd op de eerste regel.
//
// ALTIJD TWEE REGELS, en dat is de kern van deze opzet (verzoek gebruiker,
// 10-09-2026). Tot 0.7.0 kwam er een derde regel bij zodra er een label
// stond, want de tweede was dan het id; het gevolg was dat een rij hoger
// werd op het moment dat je hem labelde en dat de rijen in de twee lijsten
// niet meer gelijk stonden. Nu deelt het id de onderregel met de tijden. Een
// vaste hoogte in CSS zou hetzelfde lijken te doen, maar dan staat er witruimte
// onder een rij zonder label en dat leest als een weergavefout.
if (entry.label) { if (entry.label) {
title.className = 'list-item-title'; title.className = 'list-item-title';
title.textContent = entry.label; title.textContent = entry.label;
sub.className = 'list-item-sub mono'; title.title = entry.label;
sub.textContent = shorten(entry.id); sub.className = 'list-item-sub';
sub.title = entry.id; // Het id houdt zijn eigen letter, ook op een gedeelde regel: het is het
// enige hier dat je teken voor teken vergelijkt.
var idDeel = document.createElement('span');
idDeel.className = 'mono';
idDeel.textContent = shorten(entry.id);
idDeel.title = entry.id;
sub.appendChild(idDeel);
var rest = describe(entry, kind);
if (rest) {
var restDeel = document.createElement('span');
restDeel.textContent = ' · ' + rest;
restDeel.title = describeExact(entry);
sub.appendChild(restDeel);
}
} else { } else {
title.className = 'list-item-title mono'; title.className = 'list-item-title mono';
title.textContent = shorten(entry.id); title.textContent = shorten(entry.id);
@@ -1129,16 +1145,6 @@ body.is-busy .list-item button { cursor: progress; }
who.appendChild(title); who.appendChild(title);
who.appendChild(sub); who.appendChild(sub);
// Met een label is er een derde regel nodig voor de tijden, want de tweede is
// dan het id.
if (entry.label) {
var extra = document.createElement('div');
extra.className = 'list-item-sub';
extra.textContent = describe(entry, kind);
extra.title = describeExact(entry);
who.appendChild(extra);
}
row.appendChild(who); row.appendChild(who);
// De badge staat BUITEN het hover-blok, en dat is geen slordigheid maar het // De badge staat BUITEN het hover-blok, en dat is geen slordigheid maar het
@@ -1146,10 +1152,14 @@ body.is-busy .list-item button { cursor: progress; }
// is niet te zien wélke van de twee soorten een regel is zolang je er niet // is niet te zien wélke van de twee soorten een regel is zolang je er niet
// overheen gaat: precies de informatie waarvoor de twee kaders zijn // overheen gaat: precies de informatie waarvoor de twee kaders zijn
// samengevoegd. // samengevoegd.
//
// Alleen "Blocked" nog, sinds 10-09-2026 op verzoek van de gebruiker. Een
// badge "Waiting" in een kader dat "Waiting" heet zegt niets extra; het
// onderscheid dat de badge moest maken blijft staan, want een geblokkeerde
// regel is nu precies de regel mét badge.
var tags = document.createElement('div'); var tags = document.createElement('div');
tags.className = 'owner-tags'; tags.className = 'owner-tags';
if (kind === 'blocked') { tags.appendChild(badge('Blocked', 'badge-neg')); } if (kind === 'blocked') { tags.appendChild(badge('Blocked', 'badge-neg')); }
if (kind === 'rejected') { tags.appendChild(badge('Waiting', 'badge-neutral')); }
row.appendChild(tags); row.appendChild(tags);
var actions = document.createElement('div'); var actions = document.createElement('div');
+3 -3
View File
@@ -59,7 +59,7 @@ services:
# store hoort er een multi-arch index-digest met arm64 in; zie het masterplan # store hoort er een multi-arch index-digest met arm64 in; zie het masterplan
# Publicatie-Relay. # Publicatie-Relay.
relay: relay:
image: sc.kamenier-hamer.nl/sysop/evolu-relay:0.7.0@sha256:10f654a8856e81ffe2cf4237d87835391839afa5622059231e49ddc338dd4fb7 image: sc.kamenier-hamer.nl/sysop/evolu-relay:0.7.1
restart: on-failure restart: on-failure
# Als node en niet als root, zoals de image tot 0.5.6 zelf al deed met USER. # Als node en niet als root, zoals de image tot 0.5.6 zelf al deed met USER.
# Nu de image ook nginx en de agent draagt, staat er geen USER meer in en # Nu de image ook nginx en de agent draagt, staat er geen USER meer in en
@@ -96,7 +96,7 @@ services:
# zelf leegmaakt. Twee processen die in dezelfde allowlist schrijven is een # zelf leegmaakt. Twee processen die in dezelfde allowlist schrijven is een
# wedloop die je een keer per jaar treft en dan niet kunt reproduceren. # wedloop die je een keer per jaar treft en dan niet kunt reproduceren.
agent: agent:
image: sc.kamenier-hamer.nl/sysop/evolu-relay:0.7.0@sha256:10f654a8856e81ffe2cf4237d87835391839afa5622059231e49ddc338dd4fb7 image: sc.kamenier-hamer.nl/sysop/evolu-relay:0.7.1
restart: on-failure restart: on-failure
command: command:
- python3 - python3
@@ -125,7 +125,7 @@ services:
# nginx met de pagina, uit dezelfde image. Geen mounts: pagina, configuratie en # nginx met de pagina, uit dezelfde image. Geen mounts: pagina, configuratie en
# icoon zitten in de image, en de pagina heeft geen eigen staat. # icoon zitten in de image, en de pagina heeft geen eigen staat.
server: server:
image: sc.kamenier-hamer.nl/sysop/evolu-relay:0.7.0@sha256:10f654a8856e81ffe2cf4237d87835391839afa5622059231e49ddc338dd4fb7 image: sc.kamenier-hamer.nl/sysop/evolu-relay:0.7.1
restart: on-failure restart: on-failure
command: command:
- nginx - nginx
+7 -10
View File
@@ -11,7 +11,7 @@ manifestVersion: 1
id: whatsnext-evolu-relay id: whatsnext-evolu-relay
category: files category: files
name: Evolu Relay name: Evolu Relay
version: "0.7.0" version: "0.7.1"
tagline: Encrypted sync and backup for your local-first apps tagline: Encrypted sync and backup for your local-first apps
description: >- description: >-
Local-first apps keep your data on your own device and work whether or not you have a Local-first apps keep your data on your own device and work whether or not you have a
@@ -43,17 +43,14 @@ description: >-
your app at the address shown there. Away from home you will need a way in, such as Tailscale 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. or a reverse proxy with your own domain.
releaseNotes: >- releaseNotes: >-
There is now one way in: the waiting list. An owner that connects for the first time is turned away and Tidying up the two owner panels. They are called Accepted and Waiting now, the note under the relay
shows up there with its owner id, and you decide whether it may stay. The timed window that let in address is gone, and a row on the waiting list no longer carries a "Waiting" tag: the panel it sits in
whoever connected within two minutes is gone; it did the same job less carefully, and both ways need already says that, and a blocked owner is now the only row with a tag.
someone at this page anyway. An owner you allow now leaves the waiting list instead of staying in both
panels at once.
Two smaller things. Clicking a button no longer pushes the page down with a notice; the buttons freeze Every row is the same height as well, in both panels. A row used to grow the moment you gave it a
until the change has landed, and only real problems still get a message. And the relay address now name, because the name pushed the owner id onto a line of its own; the id now shares the second line
reads ws:// instead of http://, with a line about what it becomes behind a reverse proxy: the relay with the timestamps.
speaks WebSocket and never HTTP, so the old address could not work anywhere.
Everything in 0.6.0: Everything in 0.6.0: