Alle apps van umbrelOS delen een Docker-netwerk, dus een servicenaam als 'agent'
is daar niet uniek. Electrum Gate heeft er een op poort 8000 en Evolu Relay sinds
vandaag ook, en Docker verdeelde de naam netjes over allebei. Gemeten op het
apparaat: van tien verzoeken vanuit de nginx-container kwamen er vijf bij de
verkeerde app uit, met een 404 tot gevolg. Op de statuspagina zag dat eruit als
een status die wisselde tussen "running" en "agent unreachable".
Dit raakte twee apps, en de tweede is de vervelende: de pagina van Electrum Gate
proxyde ook naar http://agent:8000 en werkte alleen omdat die app tot vandaag de
enige met die naam was. Het installeren van Evolu Relay heeft die pagina dus
kapotgemaakt. Beide gaan nu naar <app-id>_agent_1, en beide manifesten gaan
omhoog, want zonder verhoging bereikt een gewijzigde template geen bestaande
installatie.
Dezelfde les stond al in de compose van Electrum Gate, over de servicenaam
'server', en die is bij het schrijven van de nginx-config genegeerd. Daarom nu een
toets erop: test_appstore_vorm controleert voor elke app dat een proxy_pass en
elke *_HOST-variabele een naam gebruiken die met het app-id begint. Muteertest
gedaan, de toets viel om op precies de korte naam.
Bijgewerkt in build.sh: VERSION daar is het etiket op de image, en `version` in
het manifest is een ander nummer dat erop vooruit mag lopen. Ze lopen uiteen zodra
er een reparatie in de app-map zit zonder dat de image wijzigt, en dat is nu het
geval.
Tests: alle vier groen (34, 54, 39 en 60 goed, 0 fout).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Overgenomen uit AssetApp op verzoek van de gebruiker: de kaders krijgen in het
lichte thema een rand naast hun schaduw, en --border en --border-mid gaan van
0,07 en 0,11 naar 0,12 en 0,18 zwart. De schaduw wordt daarom strakker, 2 en 16
pixels in plaats van 3 en 24, zodat het samen niet zwaar wordt.
Het donkere thema verandert niet. Daar staat een lichte rand op een donkere
ondergrond en die zie je hoe dan ook; dit is een probleem dat alleen op wit
bestaat.
De opgehoogde randkleur raakt meer dan de kaders: ook de scheidingslijnen tussen
lijstregels, het menupaneel, de dialoog en de invoervelden. Dat is de bedoeling.
Dezelfde wijziging staat nu in het gedeelde ontwerpdocument onder HomeGit/Docs,
want anders neemt de volgende app die dat document volgt de oude waarden weer
over. Die map staat niet onder versiebeheer, dus die wijziging zit niet in deze
commit.
Verder twee verificaties van de gebruiker verwerkt: de pagina is op een telefoon
in orde, en de uploadtest met een verkeerde sleutel is op zijn verzoek vervallen.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
De waarde van een widget had er drie: 1,9rem voor een getal, 1,5rem voor unknown
en 1,3rem voor een woord. Elk voor zich verdedigbaar, naast elkaar op een rij
niet: 964 307 oogde zwaarder dan Fulcrum of Answering ernaast, terwijl ze even
belangrijk zijn.
Nu 1,55rem voor alle gevallen. Dat is de maat waarop Wrong certificate op een
vijfde van de breedte binnen twee regels blijft en een blokhoogte zijn gewicht
houdt. De klasse voor woorden regelt nog alleen het afbreken.
De dialoog sluit met een kruisje in plaats van het woord Close. Het maalteken en
geen letter x, kaal met een accent bij hover zoals het menu en de chevron, en
niet rood: er gaat niets kapot van sluiten. Het aria-label blijft Close, want
een schermlezer die "maalteken" voorleest zegt niets over wat de knop doet.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
De widgets op de bovenste rij gaan van 10,5rem naar 12rem. In 0.0.19 stond
opgeschreven dat de gebruiker uitdrukkelijk geen extra hoogte wilde, en dat
berustte op "mag niet iets groter" waar "wel" bedoeld was.
De uitlijning uit 0.0.19 blijft de eigenlijke oplossing voor de leegte onder de
tekst; dit is daar los van, en gaat over lucht tussen titel en waarde.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
De sparkline is precies even hoog als het vak dat stat-sub reserveert, dus die
raakte de onderrand. Een regel tekst in datzelfde vak begon bovenaan en liet er
leegte onder. Vandaar dat de reactietijd uitgelijnd oogde en de rest niet.
Opgelost met grid plus align-items: end, en niet met flex: dan blijft de tekst
een gewoon blok dat afbreekt zoals het hoort, ook de mono-variant met een lange
domeinnaam erin.
De hoogte van de bovenste rij is niet verder vergroot. Dat was de andere weg naar
hetzelfde beeld en die wilde de gebruiker uitdrukkelijk niet.
De chevron van het instelkader staat links voor de titel in plaats van rechts aan
de rand, en kleurt mee bij hover zoals het menu rechtsboven. Links is waar het
driehoekje van de browser ook gestaan zou hebben, en het staat bij het woord waar
het iets over zegt.
De zelfcontrole is op het apparaat bevestigd: Answering, handdruk in 10 ms.
Daarmee klopte de verklaring uit 0.0.18 en is open punt 5 helemaal rond.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
De Status-widget meldde "Not answering" met Errno 111 op een gateway die gewoon
werkte. Die foutmelding was het bewijs: geweigerd betekent dat de naam oploste,
alleen niet naar ons. GATE_TLS_HOST stond op de servicenaam "server", en dat is
een naam die meer apps op een Umbrel gebruiken; op een gedeeld netwerk is het
dus een gok wie je krijgt. Nu de volledige containernaam, precies de vorm die
umbrelOS van APP_HOST verlangt en die twee regels hoger in dezelfde compose al
stond.
Wat dit zegt over de aanname van gisteren: er stond dat dit "dezelfde weg is die
nginx andersom gebruikt". Dat klopte voor de richting maar niet voor de naam, en
het was opgeschreven als redenering in plaats van als meting.
De rest zijn bijstellingen van de gebruiker na het bekijken van 0.0.17. Het menu
is drie kale punten met een accent bij hover in plaats van een knop, de eerste
regel heet Settings zonder de certificaatnaam erachter, de dialoog opent in het
midden in plaats van linksboven, de widgets zijn hoger met hun waarde langs de
onderrand, reactietijd en blokhoogte zijn omgedraaid zodat de reactietijd naast
de server staat waar hij over gaat, en het log is half zo hoog.
De manifest-toets ving onderweg een echte fout: bij het herschrijven van de
release notes was de sleutel releaseNotes zelf weggeknipt.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Vijf widgets op de bovenste rij, de certificaatkeuze in een dialoog achter een
puntjesmenu, het activiteitenlog vol breed, en het instelkader dichtgeklapt met
twee kopieerknoppen. Uitgeleverd als 0.0.17. De zelfcontrole uit 0.0.16 heeft
daarmee eindelijk een plek om te verschijnen.
Wat opvalt is wat er verdween. Twee mechanismen bestonden alleen omdat er kaders
naast elkaar stonden: het meerekken van de tegels met de hoogte van hun buur, en
het samen groeien en krimpen van log en certificaatkader. Dat tweede was de hele
inhoud van 0.0.13. Vijf gelijke widgets en een vol breed log hebben geen buur,
dus beide zijn weg, samen met .col-5 en .col-7.
De harde eis staat in de code en niet alleen in het plan: de foutmelding "geen
certificaat in gebruik" heeft de knop die de dialoog opent. Een verse installatie
heeft geen certificaat en de pagina is de enige plek waar je er een kiest; dat
achter een menu verstoppen zou de klem van 0.0.3 in een andere vorm zijn.
Twee dingen onderweg bijgestuurd. Het menu werd drie punten in plaats van een
hamburger, op aanwijzing van de gebruiker, want dat is wat umbrelOS bij zijn
eigen apps toont. En het ontwerp beweerde dat de certificaatlijst een lijst was,
terwijl die op 20-08 al een dropdown geworden is; dat is rechtgezet in 4a2 en de
dropdown is ongewijzigd meeverhuisd.
Niet geverifieerd: niets hiervan is in een browser gezien, op geen enkele
schermbreedte. Dat staat als taak met de gebruiker als eigenaar.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Open punt 5 van Webinterface, goedgekeurd en gebouwd. De agent verbindt met de
eigen TLS-poort, maakt de handdruk af en vergelijkt het getoonde certificaat
byte voor byte met het gekozen bestand.
Die vergelijking blijkt waardevoller dan de handdruk. Ze vangt een
certificaatwissel die nginx nooit heeft toegepast, en dat is precies het geval
waar een controle op vertrouwen blind voor is. Er wordt daarom bewust niet tegen
de certificaatwinkel van het besturingssysteem geverifieerd: een zelfondertekend
certificaat uploaden is een ondersteunde bron en die opstelling zou dan als kapot
gemeld worden.
Twee dingen liepen anders dan het plan zei en staan nu rechtgezet in PLAN 4a2,
OPEN punt 5 en de changelog. De belofte "luisteren, certificaat en doorverbinding
in een keer" klopt voor twee van de drie: na de handdruk wordt er niets
verstuurd. Een echt verzoek zou de sessie bytes geven, en sessies met bytes
worden nooit uit het activiteitenlog gefilterd, want die kunnen een storing zijn.
En dat filteren was de tweede verrassing. Elke meting is voor nginx een gewone
sessie en levert dus een logregel op; zonder rem ging het log over onszelf in
plaats van over wallets. Er zit nu een rem van vijf minuten op, er wordt niet
gemeten vlak na een herlading omdat het vorige certificaat er dan nog staat, en
de eigen regels worden weggelaten op grond van het moment.
Tests: 22 nieuw, met de nadruk op de niet-gelukkige paden en op de rem, want dat
is wat het log bruikbaar houdt. Alle vier de beslissende regels mutatie-getest.
De changelog kreeg ook de ontbrekende 0.0.15 erbij.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
umbrelOS leest per store één repo, dus twee apps in twee repo's kan niet. Deze
repo is de store en bevat vanaf nu Electrum Gate en het werk aan Evolu Relay.
Opgezet als verse repo op verzoek van de gebruiker: de historie van ElectrumTLS
en van EvoluRelay komt niet mee.
Dat heeft één gevolg dat verder gaat dan opruimen. In de historie van
ElectrumTLS staat het domein van de gebruiker en het certificaatpad, van vóór de
opschoning van 19-08. Die komt hier niet in. Zolang die repo op de Git-server
blijft staan verandert dat niets, dus het weghalen ervan is het laatste stuk van
open punt 3 van het plan Appstore, en geen bijzaak.
De store zelf hoefde niet te veranderen: store-id whatsnext, en dus blijft het
app-id whatsnext-electrum-gate. Dat hangt aan het store-id en niet aan de URL,
dus voor umbrelOS is dit dezelfde app in een andere store. Dat de store op 19-08
naar de maker genoemd werd in plaats van naar deze ene app, betaalt zich hier
uit.
Wat de documentatie betreft is dit één wortel voor beide apps, en dat was de
reden om samen te voegen en niet de prijs ervan: de appstore-spec, het pinnen
van images en de werkwijze golden al voor allebei en stonden in twee repo's naast
elkaar. De kruisverwijzing die daarvoor nodig was (Referenties/Umbrel-appstore.md
in de oude EvoluRelay-repo) is verdwenen; wat daarin stond over de plekken waar
de relay een ander geval is, staat nu als ontwerp in het masterplan Umbrelapp §4.
Botsende namen kregen een achtervoegsel met de app, en alleen die: Publicatie
werd Publicatie-Gate en Publicatie-Relay, CHANGELOG.md werd
CHANGELOG-electrum-gate.md. Proefopstelling kreeg 007, tussen de twee bestaande
nummers, zodat de bovenkant van de reeks op tier-orde blijft staan.
CONTINUE_HERE.md heeft een kolom App, maar de tiers lopen over beide apps heen:
er is één volgorde van werken.
Electrum Gate gaat naar 0.0.15, want website, repo, support, submission en icon
wijzen nu naar UmbrelApps en zonder versieverhoging rolt dat niet uit. De release
notes leggen aan de gebruiker uit dat hij de store opnieuw moet toevoegen. Of een
geïnstalleerde app een wisseling van store-URL overleeft is nog steeds niet
uitgezocht; dat blijkt bij het omzetten.
Twee dingen in de plannen van Electrum Gate waren door deze verhuizing niet meer
waar en zijn bijgewerkt: de taak "de repo hernoemen" in fase 7 is afgevinkt, en
de repo-vorm in PLAN.md §4a toonde nog de store-id electrumtls, die al sinds
fase 7 achterhaald was.
Tests: 39 goed 0 fout en 54 goed 0 fout, niets overgeslagen.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>