Files
UmbrelApps/whatsnext-electrum-gate/umbrel-app.yml
T
HarmenandClaude Opus 5 b3b1881af2 De pagina van Evolu Relay op de lijst van de gebruiker
Negen punten uit echt gebruik met 0.4.0, alle negen gedaan. Twee ervan waren
onderzoeksvragen en die staan onderaan.

Evolu Relay 0.5.0
- Een tijdvenster van twee minuten voor nieuwe eigenaars, met een stopknop. De
  teller zit in het relay-proces en niet in de pagina: een teller in een tabblad
  dat je sluit, sluit de deur niet. policy.js kreeg learningUntil, isLearningOpen
  en expireLearning.
- decideOwner kijkt naar isLearningOpen en niet naar het veld learning. De lus die
  een verlopen venster opruimt loopt elke twee seconden, en in dat gat zou een
  onbekende alsnog binnenkomen.
- Zonder STATE_VERSION te verhogen, met een toets die dat verdedigt: een verhoging
  zou de allowlist van de draaiende installatie laten afwijzen en de deur sluiten
  voor eigenaars die er al in stonden.
- Labels op een eigenaar-id, in een eigen labels.json met de agent als enige
  schrijver. Een label zegt niets over toegang, dus de relay hoeft het niet te
  weten; het is daardoor meteen opgeslagen en werkt ook als de relay omligt.
- Geblokkeerde en geweigerde eigenaars in een kader, met een badge die zegt welke
  van de twee het is. De badge staat buiten het hover-blok, anders is dat
  onderscheid onzichtbaar tenzij je over de regel gaat.
- Maatvoering gelijk aan Electrum Gate: 1760px, hetzelfde raster, icoon van 64
  pixels, dezelfde kop, versienummer erachter. Uitleg uit de kaders, knoppen pas
  bij hover, geen voetregel.

Electrum Gate 0.0.24
- Menu-item "About this app", in beide apps.
- De statuswidget zei "Answering" met "answered in 7 ms, from inside the app" en
  zegt nu "Running" met de meting eronder. De nuance dat de controle van container
  naar container loopt is verplaatst naar een eigen kopje in die dialoog, waar er
  ruimte voor is; vier woorden waren te weinig.

Toetsen en gereedschap
- tests/test_relay_agent.py (nieuw, 65 toetsen) en tests/test_paginas_parsen.mjs
  (nieuw). Muteertests gedraaid op de beslissende regels.
- Een dollarteken-toets in test_appstore_vorm.py. Het commentaar in drie bestanden
  beweerde al dat die test bestond; nu is dat waar.
- Een toets dat er geen werkbestanden in een app-map staan. umbreld kopieert de
  hele map naar het apparaat en in de back-up.
- tools/voorbeeldpagina.mjs maakt van een *.template een pagina die je in een
  browser kunt openen. Dat vond meteen twee echte opmaakfouten.

De twee onderzoeksvragen
- Een geweigerde eigenaar komt niet in de database: isOwnerAllowed zit in de
  WebSocket-upgrade, dus het is een 401 en een gesloten socket. Het gewenste gevolg
  treedt wel op, via de client: die is local-first en levert bij toelating de hele
  geschiedenis. Blokkeren werkt daarentegen pas bij de volgende verbinding, en dat
  staat als open punt.
- De blobs zijn niet met een xpub te ontcijferen; een OwnerId komt daar niet uit.
  Met de SLIP-21-node van het apparaat kan het wel, maar die geeft volledige
  zeggenschap, dus dat hoort niet in een relay. Als plan-punt opgenomen bij de tool
  in HomeGit/Trezor.

Nog niet uitgerold: de image 0.5.0 moet gebouwd en geduwd worden. De digest staat
daarom niet in de compose, want een oude digest onder een nieuwe tag levert stil de
oude relay.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-30 12:26:56 +02:00

189 lines
8.9 KiB
YAML

# De veldvolgorde hieronder is niet vrij: de packaging-documentatie van de
# officiele appstore schrijft hem voor. Zie de tabel in
# Docs/Referenties/Umbrel-appstore-spec.md, en de toets in
# tests/test_server_start_zonder_certificaat.py die hem vasthoudt.
#
# Wat de spec niet noemt, staat onderaan dit bestand en niet ertussen. Dan is de
# voorgeschreven kop letterlijk goed en hoeft er bij inlevering alleen iets weg.
manifestVersion: 1
id: whatsnext-electrum-gate
category: bitcoin
name: Electrum Gate
version: "0.0.24"
tagline: Your own node from anywhere, without waiting for Tor
description: >-
The privacy win is already yours: you run the Electrum server. A public one gets asked for
the history of every address in your wallet, and that tells it which addresses and which
balance belong to one person. Your own server never reports back.
What is left is a trade. Tor is the more private way in, and every wallet below speaks it.
But it adds hundreds of milliseconds to every request, it drops when a phone sleeps or
changes network, and plenty of networks block it outright. Electrum Gate is the other side
of that trade: a TLS front door on your node. Fast, no fingerprint to type over, and it
works on any network you happen to be on.
It reuses the Let's Encrypt certificate your reverse proxy already manages, so there is
nothing to request and nothing to renew. A renewal is picked up on its own, without
dropping connections that are already open. You can also upload a certificate you manage
yourself, if you do not run a reverse proxy on this machine.
Nothing in the middle. The connection runs from your wallet straight to your own node,
encrypted with a certificate you already own, for a domain you already control. There is no
account to create, no tunnel service that terminates your traffic along the way, and no
client to install on every device you use: the wallets below already speak TLS, they only
need an address. What it does ask of you is one forwarded port on your router.
Useful for wallets connecting from outside your home: Trezor Suite, Electrum, Sparrow,
BlueWallet, Nunchuk, Blockstream and BitBoxApp. Apps on the Umbrel itself do not need
it, they already reach the Electrum server directly.
The dashboard hands you the exact line each of those wallets asks for, and shows block
height, certificate expiry and whether your Electrum server is answering. Electrs, Fulcrum
and ElectrumX all work, switchable in the umbrelOS settings.
What it does not do: hide that the traffic exists. Your domain is public in the certificate
transparency logs. If that matters more to you than speed, use Tor instead.
# Eén verhaal over deze versie, dan één regel per eerdere versie. Niet meer dan
# dat, en dat staat hier omdat het drie versies achter elkaar fout ging: bij elke
# release kwam er een nieuwe kop bovenop terwijl de oude tekst eronder bleef
# staan. In 0.0.9 stond er daardoor drie keer "Earlier releases" en twee keer
# dezelfde 0.0.4-regel. De toets let er nu op.
releaseNotes: >-
The menu has a new "About this app" item: what the app is for, what it asks of you, and what the
Status card does and does not prove. That last one was the reason for this release. The card used to
read "Answering" with "answered in 7 ms, from inside the app" underneath, which was unclear in both
halves. It now says "Running", with the measurement below it, and the caveat has moved to where there
is room to state it properly: the check runs inside the app, so a router that no longer forwards the
port still reads as Running here.
Earlier releases:
0.0.23 fixed a page that could go blank or show stale values once another app from the same store was
installed. The page reached its helper by a short name that a second app happened to use as well, so
roughly half of its requests ended up at the wrong one.
0.0.22 gave panels in light mode an outline as well as a shadow. A soft shadow on white gives depth but
no edge, so where a panel ended was a matter of looking closely. Dark mode was unchanged.
0.0.21 put every tile value at the same size, so a block height no longer looked more important than a
server name beside it, and gave the dialog a cross to close instead of the word "Close".
0.0.20 made the five tiles a little taller, so their titles and values are no longer crowded together.
0.0.19 moved the text under each tile down to the bottom, level with the response graph beside it, and
put the arrow on "Setting up your wallet" to the left of the title where the browser would have put it.
0.0.18 fixed the Status tile reporting "Not answering" on a gateway that was working fine: the check was
connecting to the wrong container. It also made the menu three plain dots instead of a button, renamed
its first item to "Settings", opened the dialog in the middle of the screen instead of the top left,
made the tiles taller with their values along the bottom, swapped response time and block height, and
halved the height of the activity log.
0.0.17 rebuilt the dashboard around five small tiles, moved choosing and uploading certificates into a
dialog behind the menu at the top right, put the activity log across the full width, and collapsed
"Setting up your wallet" into a much shorter panel with two copy buttons instead of one per wallet.
0.0.16 taught the app to check its own front door: it connects to its own TLS port, completes the
handshake, and compares the certificate it gets back with the one you picked. That catches a
certificate change that never actually took effect, which looks fine from the outside and fails at your
wallet. It does not tell you whether your gateway can be reached from outside; the check runs inside the
app.
0.0.15 moved the app store this app comes from to a new address, and pointed every link in this listing
there. If you added the store at its old address, remove it in umbrelOS and add the new one.
0.0.14 stopped calling a scan from the internet a refusal. Those now read "probe", in grey, and red
is kept for a session that did carry traffic and then broke. The panels also got more room between
them.
0.0.13 made the certificate panel and the activity log grow and shrink together, so opening the
upload section no longer leaves a gap under the button.
0.0.12 tightened the spacing in the certificate panel, and dropped a line claiming certificates
are read from Nginx Proxy Manager.
0.0.11 lined up the copy buttons along the right edge on a phone, and moved the upload section
above the certificate picker.
0.0.10 made the dashboard work on a phone, and dropped the tile counting the days left on your
certificate.
0.0.9 moved everything the app writes into the "data" folder inside the app folder, which is
where the App Store expects an app to keep its state.
0.0.8 gave the dashboard the same line as this listing, instead of describing TLS as a means.
0.0.7 added uploading your own certificate, with the key checked against the certificate before
anything is stored.
0.0.6 made a connected wallet visible while it is connected, turned the certificate picker into
a dropdown, and rewrote the session line in the activity log.
0.0.5 shortened the message you get when more than one certificate was found.
0.0.4 fixed an install that showed no dashboard at all.
developer: "WhatsNext?"
website: https://sc.kamenier-hamer.nl/sysop/UmbrelApps
dependencies:
- electrs
repo: https://sc.kamenier-hamer.nl/sysop/UmbrelApps
support: https://sc.kamenier-hamer.nl/sysop/UmbrelApps/issues
# De poort waarop umbrelOS de web-UI van deze app aanbiedt, niet de TLS-poort.
# Die staat in docker-compose.yml en is 50022.
port: 3850
# Leeg laten bij een nieuw pakket; de plaatjes doet het store-team zelf.
gallery: []
path: ""
submitter: "WhatsNext?"
submission: https://sc.kamenier-hamer.nl/sysop/UmbrelApps
# ── Hieronder staat wat de voorgeschreven volgorde niet noemt ────────────────
#
# defaultUsername en defaultPassword stonden hier met een lege waarde en zijn
# eruit. Deze app heeft geen eigen inlog; de app_proxy van umbrelOS zet er zijn
# eigen voor. Een leeg veld zegt niets en suggereert dat er iets te vullen valt.
# Wat niet in de back-up hoeft. Paden zijn relatief aan de app-datamap en
# ondersteunen een jokerteken; nagekeken in app.ts van umbreld op 20-08-2026.
#
# Alleen de twee die groeien of elke minuut veranderen. Wat er bewust NIET bij
# staat is data/runtime/config: daar zit de certificaatkeuze van de gebruiker, en
# die is het enige in deze map dat niet opnieuw te bedenken is.
backupIgnore:
- data/runtime/stream.log
- data/runtime/status.json
# Het icoon hoort bij een eigen store en moet bij inlevering in de officiele
# store juist weg: die host iconen apart. Daarom staat het als laatste, want dan
# is dit de enige regel die eruit moet en blijft de rest letterlijk op orde.
icon: https://sc.kamenier-hamer.nl/sysop/UmbrelApps/raw/branch/main/whatsnext-electrum-gate/icon.png