server-up/CHANGELOG.md
2026-05-09 13:55:29 +00:00

3.3 KiB

v0.3.0 — UI rebuild + Boilerplates support

Hoogtepunten

🎨 Nieuwe UI (Tailwind + Alpine + HTMX)

  • templates/index.html is volledig herschreven. De handgeschreven CSS (--bg/--s1/... variabelen, ad-hoc grid-classes) is vervangen door Tailwind utility-classes met een gematchte donker/licht-palette.
  • Statebeheer via Alpine.js: één app() component bovenop het hele document, geen $=document.getElementById-spaghetti meer.
  • HTMX is geladen voor toekomstige server-rendered partials. Het bestaande fetch-RPC patroon blijft werken; HTMX kan progressief worden ingezet.
  • Modals, toasts, terminal-overlay en first-run wizard zitten allemaal in één Alpine-state — geen losse globale variabelen meer.
  • Mobiele sidebar gedraagt zich nu correct (slide-in i.p.v. layout-flip).

🧩 ChristianLempa Boilerplates ondersteund

Server Up herkent nu twee stack-formaten naast elkaar:

Formaat Detectie Bron
Compose (origineel) compose.yml / docker-compose.yml (+ optioneel stack.json) bes-r/server-up
Boilerplate (nieuw) template.json + files/ ChristianLempa/boilerplates-library

Nieuw bestand app/core/boilerplates.py:

  • is_boilerplate(d) — detectie
  • metadata(d) — converteert template.json["metadata"] (incl. selfhst-icons) naar Server-Up formaat
  • fields(d) — flattened variable-schema voor de install-modal
  • render_to_dir(src, dest, values) — rendert files/*.yaml met de Jinja-achtige << var >> + <%- if expr %> syntax die de boilerplates gebruiken (Jinja2 met custom delimiters). Niet-tekst bestanden worden verbatim gekopieerd.

app/core/git.py_scan_compose_dirs herkent beide formaten en zet format: "boilerplate" in de stack-entry zodat de UI er een badge bij kan tonen.

app/app.py:

  • _find_stack_src accepteert ook boilerplate-mappen.
  • POST /api/store/preview retourneert voor boilerplates het variabelen-schema (fields) plus een gerenderde preview met defaults.
  • POST /api/store/install met body {values: {...}} rendert de templates voor je voordat de stack gestart wordt.

⚙️ Default-repos

Een nieuwe Server Up komt nu uit de doos met twee app-repositories:

  1. bes-r/server-up — eigen stacks, submap apps
  2. ChristianLempa/boilerplates-library — community templates, submap compose

📦 Versie / Dockerfile

  • SU_VERSION = 0.3.0 in Dockerfile en docker-compose.yml
  • requirements.txt: Jinja2 expliciet toegevoegd (was al een Flask-dep)

Migratie vanaf v0.2.29

  • Build opnieuw: docker compose up -d --build --no-cache
  • Bestaande stacks blijven werken (legacy formaat is intact).
  • De Boilerplates-repo wordt automatisch toegevoegd voor verse installs. Bestaande gebruikers kunnen de repo handmatig toevoegen via Instellingen → Git Repositories met submap compose.

Bekende beperkingen

  • Boilerplate-templates met onbekende custom-filters of complexe Ansible-style conditionals kunnen falen — de fout verschijnt in het terminal-paneel.
  • volumes: blokken die conditioneel zijn (<%- if volume_mode == 'local' %>) werken; complexere render-logica (loops over services) is nog niet getest.
  • HTMX is geladen maar de meeste interacties draaien nog op fetch-RPC. Verdere migratie naar server-rendered partials kan stapsgewijs in volgende releases.