Eén app store, twee apps
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>
This commit is contained in:
@@ -0,0 +1,107 @@
|
||||
# Publicatie-Gate - masterplan
|
||||
|
||||
> **App: Electrum Gate.** Er is ook een **Publicatie-Relay**; inleveren bij de officiële store is per app
|
||||
> en de twee plannen delen alleen de eisen, niet het werk. Hernoemd op 25-08-2026, toen Evolu Relay bij
|
||||
> deze store kwam; daarvoor heette dit plan **Publicatie**.
|
||||
|
||||
## 1. Waarom dit een eigen plan is
|
||||
|
||||
Op 20-08-2026 zei de gebruiker dat hij de app uiteindelijk als standaard-app voor Umbrel wil publiceren.
|
||||
Dat verandert wat "af" betekent. Tot nu toe was de maatstaf "hij werkt op deze Umbrel", en de app haalt die
|
||||
sinds diezelfde dag. De maatstaf van dit plan is een andere: **iemand anders keurt het pakket goed**, tegen
|
||||
eisen die niet van ons zijn.
|
||||
|
||||
Daarom staat dit los van het plan **Appstore**. Dat plan gaat over de app als umbrelOS-app en over de
|
||||
eigen community store, en die twee doelen zijn haalbaar zonder dat er ooit iemand meekijkt. Twee taken uit
|
||||
dat plan verhuizen hier inhoudelijk naartoe (de images pinnen, de repo hernoemen); ze blijven daar staan
|
||||
tot dit plan actief wordt, want een taak op twee plekken loopt uit elkaar.
|
||||
|
||||
## 2. Wat er af is
|
||||
|
||||
Niet alles hoeft nog te gebeuren. Bij het uitzoeken op 20-08-2026 bleek een deel al goed, en dat is geen
|
||||
toeval: de eisen zijn dezelfde als die van de spec die dit project vanaf 18-08 als naslag bijhoudt.
|
||||
|
||||
- `app_proxy` met alleen omgevingsvariabelen, geen eigen poorten;
|
||||
- de umbrelOS-inlog staat aan en er is geen `PROXY_AUTH_WHITELIST`, dus ook het API-pad zit erachter;
|
||||
- `gallery: []`, wat voor een nieuw pakket precies goed is;
|
||||
- alle gebruikersstaat onder `${APP_DATA_DIR}/data/...`, met een `.gitkeep` per map (sinds 0.0.9);
|
||||
- de manifestvelden in de voorgeschreven volgorde, met een toets erop, en `icon` als laatste regel zodat
|
||||
dat de enige is die bij inlevering weg hoeft (20-08-2026);
|
||||
- niets wordt buiten `${APP_DATA_DIR}` geschreven;
|
||||
- geen Docker-socket, geen privileged container, geen host-netwerk.
|
||||
|
||||
## 3. Wat er nog moet, in volgorde van moeilijkheid
|
||||
|
||||
1. **De images pinnen.** `python:3-alpine` en `nginx:alpine` staan kaal in de compose. Het moet
|
||||
`repo:versie@sha256:<digest>` worden, met `linux/amd64` én `linux/arm64` in de manifest-lijst. Dit kan
|
||||
alleen op de Umbrel en het is de grootste openstaande eis. Bijkomend voordeel dat losstaat van
|
||||
publicatie: een gepinde image maakt de app reproduceerbaar, en dat was al een doel van het plan
|
||||
**Appstore**, fase 4.
|
||||
|
||||
**Niet nu doen.** Besloten met de gebruiker op 20-08-2026: zolang er nog gedraaid, verbeterd en getest
|
||||
wordt, kost een pin alleen werk. Elke keer dat je een nieuwere basisimage wilt, moet je opnieuw pinnen,
|
||||
en tot de inlevering levert het niets op wat er nu ontbreekt.
|
||||
|
||||
De commando's staan in [Images-pinnen.md](../../Referenties/Images-pinnen.md), met de drie dingen die
|
||||
erbij stil mis kunnen gaan: een tag die meebeweegt, de digest van één architectuur in plaats van die van
|
||||
de index, en de aanname dat pinnen een eenmalige handeling is. Werkwijze: de gebruiker draait het
|
||||
commando op de Umbrel en plakt de uitvoer, waarna de pin in `docker-compose.yml` gaat. Dat is een commit
|
||||
met een versieverhoging, want de compose wordt daadwerkelijk uitgerold.
|
||||
2. **Het app-id kaal maken.** `whatsnext-electrum-gate` wordt `electrum-gate`, en de mapnaam mee. Het
|
||||
voorvoegsel is een eis van een community store, niet van de officiële. Let op: een id-wijziging is voor
|
||||
umbrelOS een andere app, dus dat is opnieuw installeren. De gebruiker heeft daar op 20-08-2026 geen
|
||||
bezwaar tegen.
|
||||
3. **`icon` weghalen**, en dat kan pas op het moment van inleveren: zolang dit een eigen store is moet het
|
||||
icoon er juist in. De volgorde zelf is op 20-08-2026 al goed gezet, en het icoon staat als laatste regel
|
||||
zodat dit één verwijdering is. Wat er dan ook nog moet: `submission` naar de PR-URL laten wijzen.
|
||||
4. **Drie tot vijf schermafbeeldingen aanleveren.** Niet zelf opmaken: het store-team maakt de
|
||||
promo-afbeeldingen (achtergrond met het plaatje erop) en daarom zien ze er allemaal hetzelfde uit. Wie
|
||||
het wél zelf wil, levert 1440 bij 900 in PNG. Details en de vorm voor een eigen store staan in
|
||||
[Umbrel-appstore-spec.md](../../Referenties/Umbrel-appstore-spec.md).
|
||||
|
||||
Wat er op moet: het dashboard met echte gegevens, de certificaatkeuze open met meerdere kandidaten, en
|
||||
de verbindingsregels per wallet. Dat laatste is waar iemand voor komt en het eerste is het bewijs dat het
|
||||
werkt. **Met plaatsvervangende hostnamen**, want een echte schermafbeelding van deze machine zet veertien
|
||||
subdomeinen van de gebruiker op een publieke winkelpagina.
|
||||
|
||||
5. **De repo verhuizen naar een publieke plek** met de URL-velden mee. Staat nu als taak in **Appstore**
|
||||
fase 7, en is hier een voorwaarde: `repo`, `website`, `support` en `submission` moeten naar iets wijzen
|
||||
dat een reviewer kan openen.
|
||||
6. **De herstart-controle afronden.** Geen formele eis, maar wel de enige controle die dit project nooit
|
||||
heeft kunnen doen, en het is een slecht idee om iets in te leveren waarvan je dat niet weet. Zie
|
||||
**Appstore**, open punt 7.
|
||||
|
||||
## 3b. Bestaat dit al, en wat zeggen we in de PR
|
||||
|
||||
Uitgezocht op 20-08-2026, want dat is de eerste vraag die een reviewer stelt. Antwoord: **nee**, en de
|
||||
onderbouwing is scherper dan "ik heb niets gevonden". De reverse proxies die al in de store staan, Nginx
|
||||
Proxy Manager op kop, kunnen een certificaat wel op HTTP zetten maar niet op een gewone TCP-poort; daar
|
||||
staat bij NPM een openstaand verzoek voor. Een Electrum-wallet praat geen HTTP, dus die apps lossen dit
|
||||
niet op. Met bronnen in
|
||||
[Vergelijkbare-apps.md](../../Referenties/Vergelijkbare-apps.md).
|
||||
|
||||
Die ene zin is de kern van de PR-tekst. Reken er daarnaast op dat er gevraagd wordt waarom dit geen VPN of
|
||||
tunnel is. Het antwoord staat in datzelfde document en is **geen** afweging maar een verschil in soort: een
|
||||
tunneldienst zit in het pad en termineert het verkeer daar, een mesh-VPN vraagt een account, een
|
||||
coördinatieserver en een client op elk apparaat, en deze app vraagt geen van beide. De Engelse formulering
|
||||
staat er ook, en sinds 0.0.11 in de `description` van het manifest.
|
||||
|
||||
## 4. Het risico dat niet in een checklist staat
|
||||
|
||||
De app leest de certificaatmap van een ándere app: `${UMBREL_ROOT}/app-data/zoraxy/...` staat alleen-lezen
|
||||
gemount. Dat is toegestaan (de regel gaat over schrijven), maar het is het meest ongebruikelijke aan dit
|
||||
pakket en het is precies het soort ding waar een review over valt.
|
||||
|
||||
Wat het antwoord daarop wordt, is nog niet beslist. Denkrichtingen, niet in volgorde:
|
||||
|
||||
- laten staan en uitleggen. Het is alleen-lezen, het is de kern van wat de app doet, en het alternatief is
|
||||
dat iedere gebruiker zijn certificaat met de hand kopieert;
|
||||
- het uploadpad uit 0.0.7 is er al en werkt zonder die mount. De app is dus bruikbaar zonder Zoraxy, en dat
|
||||
maakt de mount een gemak in plaats van een voorwaarde;
|
||||
- vragen vóór het inleveren in plaats van erna. Een issue in `umbrel-apps` kost minder dan een afgewezen PR.
|
||||
|
||||
## 5. Onderbouwing
|
||||
|
||||
De eisen staan niet in de README van `umbrel-apps` maar in de skill-documentatie waar die naar verwijst.
|
||||
Met bron per regel, plus wat deze app er nu van doet, in
|
||||
[Umbrel-appstore-spec.md](../../Referenties/Umbrel-appstore-spec.md).
|
||||
Reference in New Issue
Block a user