diff --git a/CHANGELOG.md b/CHANGELOG.md index 6f65fd9..7ab7eb4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,31 @@ +# v0.8.50-beta — Leesbare namen, zichtbaar wat al draait, en bruikbaar op een telefoon + +**Het auditlog toonde ruwe id's.** In de kolommen stond `store`, `reconfigure`, +`credentials_view` — de sleutels waarmee de code logt, niet iets wat je leest. Die +hebben nu Nederlandse namen ("App Store", "Opnieuw ingesteld", "Inloggegevens +bekeken"), ook in de filterlijsten erboven, en de kolomkoppen zijn niet langer +hardgecodeerd Nederlands maar vertaald. Een categorie die we niet kennen — van een +module bijvoorbeeld — valt terug op de ruwe waarde in plaats van leeg te blijven. +Er draait een test die de broncode afloopt en elke `audit.log(...)` zonder +vertaling aanwijst. Een modulepagina heette in de titelbalk letterlijk +`mod:mijnmodule`; die toont nu de naam van de module. + +**De store zag niet dat een app al draaide.** Er zat een klein groen vinkje naast +de installeerknop, en dat werkte alleen als je de stack precies zo had genoemd als +het sjabloon: `sonarr` of `sonarr-iets`. Noemde je hem `media-tv`, dan bleef de +store volhouden dat Sonarr nog niet geïnstalleerd was. Nu leest hij `.serverup.json` +uit — dezelfde `source` die het herconfigureerscherm al gebruikte — en toont een +duidelijk **Geïnstalleerd**-label met de naam van elke draaiende installatie, +waar je op kunt klikken om er meteen naartoe te gaan. De knop eronder zegt dan +"Nog een keer" in plaats van "Installeren". + +**Op een telefoon was de stackpagina niet te doen.** Elke stack had twaalf +icoonknoppen zonder tekst naast elkaar, wat op een smal scherm drie rijen +plaatjes werd. Daar staan nu starten, herstarten en logs, plus een menu met de +rest — mét namen erbij. Op een breed scherm verandert er niets. De rij van twintig +categorieknoppen boven de stacks is hetzelfde menu geworden als in de app store, +en "Updates controleren" verliest op smalle schermen zijn label. + # v0.8.40-beta — De filter in de app store is een menu geworden **Twee rijen knoppen vulden een half scherm.** Boven de app store stonden twintig diff --git a/VERSION b/VERSION index ca5543f..1036deb 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.8.40-beta +0.8.50-beta diff --git a/server-up/core/git.py b/server-up/core/git.py index 7119138..0dd88c2 100644 --- a/server-up/core/git.py +++ b/server-up/core/git.py @@ -140,11 +140,39 @@ def scan_dir(base: Path, lib: Path) -> list[dict]: return _scan_compose_dirs(base, lib) +def _installaties_per_sjabloon(lib: Path) -> dict[str, list[str]]: + """Welke stacks zijn uit welk sjabloon geïnstalleerd? + + Dit stond eerder op de mapnaam: een stack telde als installatie van + `sonarr` zodra hij `sonarr` of `sonarr-…` heette. Wie zijn stack `media-tv` + noemde, kreeg in de store te zien dat Sonarr nog niet geïnstalleerd was. + `.serverup.json` weet wél uit welk sjabloon hij komt — dezelfde `source` die + het herconfigureerscherm en `depends_on` gebruiken. + """ + uit: dict[str, list[str]] = {} + if not lib.exists(): + return uit + for d in sorted(lib.iterdir()): + if not d.is_dir() or d.name.startswith("."): + continue + mf = d / ".serverup.json" + if not mf.exists(): + continue + try: + bron = (json.loads(mf.read_text("utf-8")) or {}).get("source") or "" + except Exception: + continue + if bron: + uit.setdefault(bron, []).append(d.name) + return uit + + def _scan_compose_dirs(base: Path, lib: Path) -> list[dict]: """Scan één directory voor compose stacks. Detecteert zowel het klassieke Server Up formaat (compose.yml + stack.json) als het ChristianLempa Boilerplates formaat (template.json + files/).""" stacks = [] + geinstalleerd = _installaties_per_sjabloon(lib) for d in sorted(base.iterdir()): if not d.is_dir() or d.name.startswith((".", "_")): continue @@ -171,11 +199,13 @@ def _scan_compose_dirs(base: Path, lib: Path) -> list[dict]: else: meta["logo_url"] = guess_logo_url(meta.get("name") or d.name) - installed = [] + installed = set(geinstalleerd.get(d.name, ())) + # Vangnet voor installaties van vóór de metadata, en voor mappen die + # iemand met de hand heeft neergezet. if lib.exists(): for ld in lib.iterdir(): if ld.is_dir() and (ld.name == d.name or ld.name.startswith(d.name + "-")): - installed.append(ld.name) + installed.add(ld.name) entry = { "dir": d.name, "name": meta.pop("name", d.name), diff --git a/server-up/templates/index.html b/server-up/templates/index.html index f8ad429..74b55cd 100644 --- a/server-up/templates/index.html +++ b/server-up/templates/index.html @@ -173,7 +173,7 @@ tailwind.config = { -

Dashboard

+

Dashboard

- + +
+ +
+
+ + +
+
+
+
- -
- - -
+
- - - - - - - + + + + + + - - + + + +
+ +
+ +
+
@@ -573,6 +624,24 @@ tailwind.config = { BP + +
@@ -642,11 +710,11 @@ tailwind.config = {