De tweede indeling, met de eis die het verstoppen van de keuze zelf oproept

Ontwerp van de gebruiker, na het testen van de eerste indeling: vijf kleine
widgets op de bovenste rij, certificaatkeuze en uploaden naar een dialoog achter
een menu rechtsboven, activiteitenlog over de volle breedte, en het instelkader
dichtgeklapt met twee kopieerknoppen in plaats van een per clientregel.

Vastgelegd als PLAN.md 4a2 naast 4a1, want die eerste blijft de verantwoording
van wat er staat. Drie dingen staan erbij die uit de brief zelf volgen:

De harde eis. Kiezen achter een menu botst met de ergste toestand die deze app
kent, een verse installatie zonder certificaat, en dat is letterlijk de klem van
0.0.3. De foutmelding bovenaan blijft dus staan en krijgt de knop die de dialoog
opent; de hamburger is de weg terug, niet de enige weg erheen.

Twee teruggedraaide besluiten, opgeschreven zodat niemand ze later herstelt met
een verwijzing naar de oude reden: de kopieerknop per client verdwijnt, en de
afwijzing van een dropdown uit 19-08 verbiedt geen dialoog. Bij de eerste hoort
een voorwaarde: de wallets blijven gegroepeerd onder de vorm die ze willen, want
anders is er wel een adres maar niet meer bij welke wallet het hoort.

Deze indeling haalt bovendien twee koppelingen weg die er alleen waren omdat
kaders naast elkaar stonden. Een daarvan was de hele inhoud van 0.0.13.

Open punt 5 is goedgekeurd en verhuisd naar Beslist; punt 3 stond nog open
terwijl het log al twee versies draait.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Harmen
2026-08-27 15:10:06 +02:00
co-authored by Claude Opus 5
parent bcd95facb7
commit decf431416
4 changed files with 150 additions and 32 deletions
+1 -1
View File
@@ -23,7 +23,7 @@
| Plan | App | Volgende stap | Status | | Plan | App | Volgende stap | Status |
|-|-|-|-| |-|-|-|-|
| [Webinterface](Plannen/Actief/005-Webinterface/TAKEN.md) | Gate | 0.0.10 op een telefoon nakijken, en het uploaden op het niet-gelukkige pad proberen met een sleutel die niet bij het certificaat hoort. Daarna open punt 5: laten controleren of de TLS-poort zélf antwoordt | 🔶 | | [Webinterface](Plannen/Actief/005-Webinterface/TAKEN.md) | Gate | **Fase 6, de tweede indeling** (opgegeven 27-08-2026): vijf kleine widgets op de bovenste rij, de certificaatkeuze naar een dialoog achter een menu, log over de volle breedte, en het instelkader dichtgeklapt en compacter. Begint met de zelfcontrole op de eigen TLS-poort, want dat is het enige nieuwe werk en het levert de vijfde widget | 🔶 |
| [Umbrelapp](Plannen/Actief/008-Umbrelapp/TAKEN.md) | Relay | **Hij draait sinds 25-08-2026, maar kan in de kern niet werken.** Uit de broncode van Suite: bij een eigen relay-URL registreert de cliënt geen eigenaar, terwijl Trezor's relay iedereen zonder limietenrij weigert. Volgende stap is de kále Evolu-relay proberen (`docker.io/evoluhq/relay:latest`, één container, gepubliceerde image) en waarschijnlijk daarnaartoe verbouwen. Zie open punt 6 | 🔶 | | [Umbrelapp](Plannen/Actief/008-Umbrelapp/TAKEN.md) | Relay | **Hij draait sinds 25-08-2026, maar kan in de kern niet werken.** Uit de broncode van Suite: bij een eigen relay-URL registreert de cliënt geen eigenaar, terwijl Trezor's relay iedereen zonder limietenrij weigert. Volgende stap is de kále Evolu-relay proberen (`docker.io/evoluhq/relay:latest`, één container, gepubliceerde image) en waarschijnlijk daarnaartoe verbouwen. Zie open punt 6 | 🔶 |
| [Proefopstelling](Plannen/Actief/007-Proefopstelling/TAKEN.md) | Relay | **Eerst beslissen of dit plan nog bestaansrecht heeft.** Fase 1 is af, maar fase 2 en 3 zijn ingehaald: het pakket draait al op de Umbrel, dus een lokale opstelling ernaast meet minder en kost meer. Wat overblijft zijn twee vragen die al als blokkade in **Umbrelapp** staan, en die horen op één plek | 🔶 | | [Proefopstelling](Plannen/Actief/007-Proefopstelling/TAKEN.md) | Relay | **Eerst beslissen of dit plan nog bestaansrecht heeft.** Fase 1 is af, maar fase 2 en 3 zijn ingehaald: het pakket draait al op de Umbrel, dus een lokale opstelling ernaast meet minder en kost meer. Wat overblijft zijn twee vragen die al als blokkade in **Umbrelapp** staan, en die horen op één plek | 🔶 |
+30 -30
View File
@@ -8,36 +8,6 @@
## Nog te beslissen ## Nog te beslissen
3. **Komt het activiteitenlog er?**
Toegevoegd 19-08-2026, nadat de gebruiker vroeg of er iets over live client-aanroepen te tonen is, en
bijgesteld naar logregels onder elkaar. Het ontwerp staat in [PLAN.md](PLAN.md) §4e en de kaart staat
al op de pagina in de `no data`-toestand, dus de vorm is te beoordelen zonder dat er iets gebouwd is.
Wat er beslist moet worden is niet "kan het" maar "is dit het waard, nu het niet is wat er gevraagd
werd". Er was gevraagd om **elk verzoek** te loggen, en dat kan niet zonder het Electrum-verkeer van de
gebruiker uit te lezen. Wat overblijft is een regel per verbinding en per verkeerspiek. Het vraagt een
`log_format` die langs de template-invulling moet, plus een tweede weg naar de bytetellers van een
lopende verbinding, want nginx logt een stream-sessie pas bij het sluiten en een wallet houdt hem
twaalf uur open.
**Moment:** na fase 2, want dan draait de schrijflus toch al · **Eigenaar:** gebruiker
5. **Wordt er gecontroleerd of de TLS-poort zelf antwoordt?**
Toegevoegd 19-08-2026, nadat de badge "Serving this page" eruit ging. De gebruiker wees erop dat die
badge niets zei: de pagina wordt nooit getoond aan een wallet die op 50022 verbindt. Mijn gedachte
erachter was dat de pagina en de TLS-terminatie in dezelfde container zitten, dus dat de een de ander
bewijst, maar dat stond er niet en niemand leest het zo.
Wat daarbij opvalt en het eigenlijke punt is: **de app controleert wel of de Electrum-server antwoordt,
maar niet of hij zelf antwoordt.** Dat is precies zijn enige taak. De agent zou een TLS-verbinding naar
de eigen poort kunnen opzetten en de handdruk kunnen afmaken; dat bewijst het luisteren, het certificaat
en de doorverbinding in één keer, en het is dezelfde truc waarmee de einddatum van het actieve
certificaat te lezen valt.
Waarom het nog geen taak is: het raakt de agent, en die heeft nog nooit gedraaid. Er is weinig aan om
een tweede ongeteste controle op een eerste ongeteste controle te bouwen. Zodra de agent op de Umbrel
loopt, is dit de eerstvolgende zinvolle toevoeging aan het dashboard.
**Moment:** nadat de agent draait · **Eigenaar:** gebruiker
7. **Kan Zoraxy of Nginx Proxy Manager verplicht gesteld worden bij de installatie?** Gevraagd door de 7. **Kan Zoraxy of Nginx Proxy Manager verplicht gesteld worden bij de installatie?** Gevraagd door de
gebruiker op 20-08-2026, die erbij opmerkte dat sommige apps bij de installatie twee dropdowns tonen. gebruiker op 20-08-2026, die erbij opmerkte dat sommige apps bij de installatie twee dropdowns tonen.
**Technisch antwoord: nee, niet als "de een of de ander".** Nagetrokken in de bron, zie **Technisch antwoord: nee, niet als "de een of de ander".** Nagetrokken in de bron, zie
@@ -56,6 +26,36 @@
## Beslist ## Beslist
5. **Wordt er gecontroleerd of de TLS-poort zelf antwoordt?** - **Ja, bouwen** (27-08-2026, gebruiker:
"punt 5 is goed").
De vraag kwam op 19-08-2026 op, nadat de badge "Serving this page" eruit ging omdat die niets zei: die
pagina wordt nooit getoond aan een wallet die op 50022 verbindt. Het eigenlijke punt eronder was groter
dan de badge: **de app controleert wel of de Electrum-server antwoordt, maar niet of hij zelf
antwoordt**, en dat is precies zijn enige taak.
Wat er gebouwd wordt: de agent zet een TLS-verbinding naar de eigen poort op en maakt de handdruk af.
Dat bewijst het luisteren, het certificaat en de doorverbinding in één keer, met dezelfde truc waarmee
de einddatum van het actieve certificaat gelezen wordt.
Het lag stil omdat de agent nog nooit gedraaid had, en die reden is vervallen. De uitkomst wordt de
vijfde widget van de bovenste rij uit [PLAN.md](PLAN.md) §4a2. Staat als eerste taak in fase 6, want
het is het enige echte nieuwe werk in die fase en de rest is opmaak eromheen.
3. **Komt het activiteitenlog er?** - **Ja, en gebouwd** (opgemerkt 27-08-2026; het besluit is nooit als
zodanig opgeschreven, het werk is gewoon gedaan en uitgerold in 0.0.6 en verfijnd in 0.0.14).
De afweging was niet "kan het" maar "is dit het waard, nu het niet is wat er gevraagd werd": er was
gevraagd om elk verzoek te loggen, en dat kan niet zonder het Electrum-verkeer van de gebruiker uit te
lezen. Wat het geworden is, is een regel per verbinding.
De twee obstakels die hier stonden zijn ongelijk afgelopen. Het `log_format` met dollartekens is
**langs de template-invulling gekomen** zoals voorgesteld: het `command`-blok schrijft
`stream-log.conf` met `$$` ontsnapt en `stream.conf` haalt het op met een `include`. De bytetellers van
een lopende verbinding zijn er **niet** gekomen; daarvoor in de plaats kwam een sessieteller uit
`/proc/net/tcp`, die ziet dát er verbindingen zijn maar niet hoeveel er doorheen gaat. Dat is een
bewuste halve oplossing en staat als zodanig in fase 5 van [TAKEN.md](TAKEN.md).
8. **Welke tagline, en waar?** - **Overal die van de appstore** (20-08-2026, gebruiker). 8. **Welke tagline, en waar?** - **Overal die van de appstore** (20-08-2026, gebruiker).
"Your own node from anywhere, without waiting for Tor" staat nu ook op de pagina; daar stond "TLS in "Your own node from anywhere, without waiting for Tor" staat nu ook op de pagina; daar stond "TLS in
front of your own Electrum server". front of your own Electrum server".
@@ -198,6 +198,85 @@ Wat daarbij vastligt en niet per ongeluk mag verschuiven:
de vraag die je stelt. Het staat in `--text-sec` en niet in `--text-ter`, want die laatste is in de lichte de vraag die je stelt. Het staat in `--text-sec` en niet in `--text-ter`, want die laatste is in de lichte
variant `#bbbbbb` op wit en op deze grootte niet te lezen. variant `#bbbbbb` op wit en op deze grootte niet te lezen.
### 4a2. De tweede indeling
Opgegeven door de gebruiker op 27-08-2026, nadat hij alles uit de eerste indeling had gezien en getest.
Dit vervangt §4a1 als beschrijving van hoe de pagina eruit hoort te zien; §4a1 blijft staan als
verantwoording van wat er gebouwd is en waarom, want een deel van die redenen geldt nog steeds en een deel
wordt hier bewust teruggedraaid.
**De vorm.**
- **Rij 1: vijf kleine widgets.** Electrum-server, blokhoogte, reactietijd, certificaat, en de zelfcontrole
uit open punt 5. Allemaal even groot en van hetzelfde soort: een titel, één getal of één regel, en
hooguit één onderregel.
- **De certificaatwidget** toont het gekozen certificaat: naam, en het aantal dagen tot vernieuwing. Niet
de keuze zelf.
- **Kiezen, uploaden en afhandelen verhuizen naar een dialoog**, te openen uit een hamburger- of
puntjesmenu rechtsboven.
- **Het activiteitenlog gaat over de volle breedte.**
- **"Setting up your wallet" is dichtgeklapt** en veel compacter. Er zijn feitelijk twee vormen van
hetzelfde adres, dus twee kopieerknoppen; de rest is een opsomming van de wallets die ermee werken.
- **De Electrum-serverwidget wordt kleiner** en verliest onderteksten.
**Wat dit oplevert, los van smaak.** De eerste indeling had twee koppelingen die er alleen waren omdat twee
kaders naast elkaar stonden: de statustegels moesten meerekken met de hoogte van hun buur, en het logblok
en de certificaatlijst moesten samen groeien en krimpen. Dat laatste was de hele inhoud van 0.0.13. Met een
volle-breedte log en vijf gelijke widgets vervalt allebei. Dit is dus geen laag opmaak erbovenop maar
minder mechaniek dan er nu staat.
#### Wat hier bewust teruggedraaid wordt
Twee dingen gaan tegen een eerder besluit in. Ze staan hier opgeschreven zodat een latere sessie ze niet
"herstelt" met een verwijzing naar de oude reden.
1. **De kopieerknop per clientregel wordt weer één knop per vorm.** Op 19-08-2026 is het losse
verbindingsadres met kopieerknop juist wéggehaald, met als reden dat hetzelfde adres al bij elke client
stond in de vorm die díe client wil. Dat blijft waar, maar het weegt nu anders: het kader moet compact
en dichtgeklapt, en dan is een knop per wallet een lange lijst met vrijwel identieke regels.
**Wat daarbij niet verloren mag gaan:** welke wallet welke vorm wil. Die kennis staat in
`Referenties/Clients.md` §4 en is de reden dat er twee vormen zijn. De opsomming hoort daarom
**gegroepeerd onder de twee vormen** te staan, elk met zijn eigen kopieerknop, en niet als één platte
lijst wallets naast twee losse knoppen. Anders staat er wel een adres om te kopiëren maar niet meer bij
welke wallet welk adres hoort, en dat is precies wat dit kader moet vertellen.
2. **De certificaatlijst verhuist naar een dialoog.** Op 19-08-2026 is een dropdown afgewezen omdat je bron,
naam en resterende dagen naast elkaar moet kunnen vergelijken en een verlopen certificaat rood moet
kunnen zijn. **Die reden verbiedt een dialoog niet, hij verbiedt een dropdown**, en een dialoog geeft
meer ruimte dan het kader had. De lijst blijft dus een lijst, nu in de dialoog. Vervang hem daar niet
alsnog door een dropdown omdat het in een dialoog netjes zou staan.
#### De eis die deze indeling zelf oproept
Kiezen verstoppen achter een menu botst met de ergste toestand die deze app kent: **een verse installatie
heeft nog geen certificaat, en de pagina is de enige plek waar je er een kiest.** Dat is niet theoretisch;
het is de klem van 0.0.3, waar de app niet startte omdat er geen certificaat was en je dus niet bij de
pagina kwam waarop je er een koos.
Daaruit volgt een harde eis voor deze indeling: **de bestaande foutmelding bovenaan bij "geen certificaat
actief" blijft staan, en krijgt de knop die de dialoog opent.** De hamburger is de weg terug voor wie het
later nog eens wil wijzigen, nooit de enige weg erheen. Dezelfde redenering geldt voor een verlopen of
bijna verlopen certificaat: dat staat al als waarschuwing bovenaan en die verhuist niet mee de dialoog in.
#### Details die vastliggen
- **Vijf widgets passen niet in twaalf kolommen.** Rij 1 krijgt daarom een eigen raster van vijf gelijke
kolommen in plaats van een deling van het twaalfkolomsraster. Wat er bij het versmallen moet gebeuren,
hoort erbij bepaald te worden: op mobiel stapelen ze, en daartussen zit een breedte waarop vijf te smal
zijn. Dit is de eerste indeling met een rij die niet netjes in tweeën valt, dus dit is nieuw werk en geen
variant op het bestaande.
- **De leesvolgorde in de HTML blijft de bedoelde volgorde**, zonder `order` in de CSS. Die regel uit §4a1
geldt onverkort, ook voor de vijf widgets en voor het dichtgeklapte kader.
- **Dichtklappen met `details`/`summary`**, niet met eigen JavaScript: dat is toetsenbordbereikbaar en
werkt zonder script. Let op de valkuil die 0.0.13 opleverde: een blok dat opengaat mag geen gat
achterlaten in de rij eronder.
- **De dialoog met het `dialog`-element**, om dezelfde reden: focus en Escape zitten erin. Wat er in moet
gebeuren is precies wat het certificaatkader nu doet, inclusief het uploaden en de melding dat de pagina
níet zelf zegt dat het gelukt is (§4b en fase 4b van `TAKEN.md`).
- **De zelfcontrole-widget is nieuw werk in de agent**, geen opmaak. Zie open punt 5: de agent zet een
TLS-verbinding naar zijn eigen poort op en maakt de handdruk af. Dat bewijst luisteren, certificaat en
doorverbinding in één keer.
### 4b. Waarschuwen op een aflopend certificaat ### 4b. Waarschuwen op een aflopend certificaat
Met de einddatum in `status.json` is dit een vergelijking in de pagina zelf: onder de dertig dagen een Met de einddatum in `status.json` is dit een vergelijking in de pagina zelf: onder de dertig dagen een
+40 -1
View File
@@ -49,7 +49,12 @@
- [ ] **Het activiteitenlog een etmaal laten lopen** en dan kijken of het klopt: komt er een - [ ] **Het activiteitenlog een etmaal laten lopen** en dan kijken of het klopt: komt er een
`connected`-regel bij een nieuwe wallet, en wat staat er na een nacht in. De teller is nieuw en is `connected`-regel bij een nieuwe wallet, en wat staat er na een nacht in. De teller is nieuw en is
alleen tegen tijdelijke bestanden getoetst, niet tegen een echte wallet alleen tegen tijdelijke bestanden getoetst, niet tegen een echte wallet. **Loopt sinds 27-08-2026 bij
de gebruiker; hij kijkt er na een etmaal naar. Eigenaar: gebruiker**
- [ ] **Fase 6, de tweede indeling.** Opgegeven door de gebruiker op 27-08-2026 en het grootste blok werk
dat er in dit plan nog ligt. Begint met de zelfcontrole, want dat is het enige echte nieuwe werk en
het levert de vijfde widget van de bovenste rij
Daarna, en niet eerder: Daarna, en niet eerder:
@@ -217,6 +222,40 @@ Voorstel, nog niet besloten. Ontwerp in [PLAN.md](PLAN.md) §4e. De kaart staat
- [x] **`log` in `status.json`, zonder client-IP en zonder bronpoort. Gebouwd** (vinkje bleef staan). De - [x] **`log` in `status.json`, zonder client-IP en zonder bronpoort. Gebouwd** (vinkje bleef staan). De
agent leest `stream.log`, voegt de vorige regels samen en houdt de laatste 200 aan agent leest `stream.log`, voegt de vorige regels samen en houdt de laatste 200 aan
## Fase 6 - De tweede indeling
Opgegeven door de gebruiker op 27-08-2026, na het zien en testen van alles uit de eerste indeling. Ontwerp
in [PLAN.md](PLAN.md) §4a2, inclusief de twee besluiten die hier bewust teruggedraaid worden en de eis die
deze indeling zelf oproept.
**Volgorde: eerst de zelfcontrole, dan de opmaak.** Die eerste is het enige echte nieuwe werk en hij levert
de vijfde widget; de rest is de pagina verbouwen om wat er dan staat.
- [ ] **De zelfcontrole bouwen (open punt 5, goedgekeurd 27-08-2026).** De agent zet een TLS-verbinding naar
zijn eigen poort 50022 op en maakt de handdruk af. Dat bewijst luisteren, certificaat en
doorverbinding in één keer. Raakt de agent, dus **mét test, en de test gaat over het niet-gelukkige
pad**: geen certificaat, poort niet open, handdruk geweigerd. Wat de widget bij een mislukking toont,
hoort bij het bouwen bedacht te worden en niet erna
- [ ] Rij 1 wordt vijf gelijke widgets: Electrum-server, blokhoogte, reactietijd, certificaat, zelfcontrole
- [ ] Een eigen raster van vijf kolommen voor die rij, en beslissen wat er tussen "vijf naast elkaar" en
"gestapeld op mobiel" gebeurt. Vijf valt niet netjes in twaalf kolommen; dit is nieuw werk
- [ ] De Electrum-serverwidget kleiner, met minder onderteksten
- [ ] De certificaatwidget toont het gekozen certificaat: naam en dagen tot vernieuwing. Niet de keuze
- [ ] Kiezen, uploaden en afhandelen naar een dialoog achter een hamburger- of puntjesmenu rechtsboven.
Met het `dialog`-element, want focus en Escape zitten erin. De lijst blijft een lijst, zie §4a2
- [ ] **De foutmelding "geen certificaat actief" blijft bovenaan staan en krijgt de knop die de dialoog
opent.** Dit is de harde eis van deze indeling: een verse installatie heeft geen certificaat, en de
pagina is de enige plek waar je er een kiest. Zie §4a2 en de klem van 0.0.3
- [ ] Het activiteitenlog over de volle breedte
- [ ] "Setting up your wallet" dichtgeklapt met `details`/`summary`, en compacter
- [ ] Twee kopieerknoppen in plaats van één per clientregel, **met de wallets gegroepeerd onder de vorm die
ze willen.** Niet één platte lijst naast twee losse knoppen: dan is het adres er nog wel, maar niet
meer bij welke wallet welk adres hoort. Bron blijft `Referenties/Clients.md` §4
- [ ] Opruimen wat vervalt: de statustegels hoeven niet meer mee te rekken met hun buur, en het logblok en
de certificaatlijst hoeven niet meer samen te groeien. Dat laatste was de hele inhoud van 0.0.13
- [ ] Na afloop op mobiel nakijken, net als bij 0.0.10. De leesvolgorde in de HTML blijft de bedoelde
volgorde, zonder `order` in de CSS
## Geblokkeerd / wacht op ## Geblokkeerd / wacht op
- [ ] Niets. De afhankelijkheid van **Configuratie** is vervallen, zie [PLAN.md](PLAN.md) - [ ] Niets. De afhankelijkheid van **Configuratie** is vervallen, zie [PLAN.md](PLAN.md)