chore(release): v0.6.0

Etappe 6: Marken-Dateien, README mit Screenshots, Docker Compose und LXC-Installer.

Refs #017, #018, #019

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-12 17:39:09 +02:00
co-authored by Claude Opus 5.5
parent 5379f34a0c
commit 9c4dd6da3d
10 changed files with 33 additions and 20 deletions
+12 -6
View File
@@ -7,6 +7,18 @@ und dieses Projekt folgt [Semantic Versioning](https://semver.org/lang/de/).
## [Unveröffentlicht]
### Hinzugefügt
### Geändert
### Behoben
### Entfernt
### Sicherheit
## [0.6.0] – 2026-10-12
### Hinzugefügt
- Betrieb per Docker Compose (postgres, migrate, app, worker) mit einem Image für alles, non-root (#019)
- LXC-Installer `deploy/install-lxc.sh`: legt auf dem Proxmox-Host einen Debian-13-Container an, installiert Node.js und PostgreSQL, richtet systemd-Dienste ein; mit Update-Pfad (#019)
@@ -16,15 +28,9 @@ und dieses Projekt folgt [Semantic Versioning](https://semver.org/lang/de/).
- Marken-Dateien nach Vorgabe unter `public/brand/`: Symbol (dunkel/hell), kleines Icon, Avatar, Logo (dunkel/hell), Banner 1280×640, Favicons, Apple-Touch- und Manifest-Icons; erzeugt mit `pnpm marke` (#017)
- Web-App-Manifest; Favicon passt sich hellem und dunklem Browser an (#017)
### Geändert
### Behoben
- Die Übersicht zeigte statt der letzten Deployments nur einen Platzhalter (#018)
### Entfernt
### Sicherheit
## [0.5.0] – 2026-10-12
### Hinzugefügt
+11 -4
View File
@@ -2,7 +2,7 @@
## Zeitübersicht
**Gesamt:** 6 h 59 min (Sitzung 1–3)
**Gesamt:** 7 h 39 min (Sitzung 1–3)
Zeiten stammen aus den Git-Commit-Zeitstempeln je Issue; Wartezeit auf Rückmeldungen ist enthalten.
@@ -27,6 +27,9 @@ Zeiten stammen aus den Git-Commit-Zeitstempeln je Issue; Wartezeit auf Rückmeld
| #014 Verlauf, Wiederholen, Aufräumen | 1 h 21 min |
| #015 Benutzer, Passwort, Audit-Log | 0 h 10 min |
| #016 OIDC | 0 h 08 min |
| #017 Marken-Dateien | 0 h 17 min |
| #018 README | 0 h 02 min (parallel zu #019) |
| #019 Docker und LXC-Installer | 0 h 20 min |
| Meilenstein | Zeit |
|---|---|
@@ -35,12 +38,13 @@ Zeiten stammen aus den Git-Commit-Zeitstempeln je Issue; Wartezeit auf Rückmeld
| v0.3.0 | 1 h 48 min | **abgeschlossen** (Abnahme #021 offen)
| v0.4.0 | 0 h 42 min | **abgeschlossen**
| v0.5.0 | 1 h 39 min | **abgeschlossen**
| v0.6.0 | 0 h 40 min | **abgeschlossen**
---
## 2026-10-12 · Sitzung 3 · 14:39–17:00
**Issue:** #013–#016
**Version:** 0.4.0, 0.5.0
## 2026-10-12 · Sitzung 3 · 14:39–17:40
**Issue:** #013–#019
**Version:** 0.4.0, 0.5.0, 0.6.0
### Erledigt
- v0.3.0 freigegeben (Abnahme #021 bleibt offen, braucht eine freie IP)
@@ -55,6 +59,8 @@ Zeiten stammen aus den Git-Commit-Zeitstempeln je Issue; Wartezeit auf Rückmeld
- CLI: `history` und `cleanup`
- Gefunden: ssh2 erzeugt in ~0,4 % unlesbare ed25519-Schlüssel (war die Ursache des wackligen SSH-Tests) – behoben; „Einstellungen“ fehlte seit v0.3.0 in der Navigation
- 308 Vitest, 26 Playwright-Abläufe grün
- Etappe 6 (v0.6.0): Marken-Dateien per Skript (Texte als Pfade), README mit Banner und Screenshots, Docker Compose (lokal hochgefahren) und LXC-Installer – auf pve-demo in CT 109 installiert, darin Server angelegt, CLI-Login, Dry-Run und ein echter LXC (pd-abnahme, CT 110); Update-Pfad geprüft
- Gefunden: die Übersicht war seit Etappe 1 ein Platzhalter; opentype.js schreibt gelegentlich „NaN“ in Pfade
### Entscheidungen
- **Anfragen als Map, Antworten typisiert:** Go-Structs aus oapi-codegen schickten leere Pflichtfelder und überschrieben Vorlagenwerte.
@@ -64,6 +70,7 @@ Zeiten stammen aus den Git-Commit-Zeitstempeln je Issue; Wartezeit auf Rückmeld
- **Aufräumen löscht nur, was die Beschreibung „(Auftrag <kurzId>)“ trägt** – deshalb setzt das Klonen die Beschreibung jetzt sofort; Templates nie.
- **Sitzungen beenden über `Benutzer.sitzungenAb`** statt einer Sitzungstabelle.
- **SSO übernimmt nie ein lokales Konto über den Namen**; die Rolle kommt bei jeder Anmeldung aus den Gruppen.
- **Migrationen im Betrieb ohne Prisma-CLI**, kompatibel zu `_prisma_migrations`; ein gemeinsames Laufzeit-Paket für Docker und LXC; der worker bekommt nur die Pakete, die er importiert (103 statt 741 MB).
- Gefunden durch Tests: SSE-Daten zeigten in einen wiederverwendeten Puffer (jetzt kopiert); mehrzeilige Proxmox-Parameter brachen die Dry-Run-Zeile (jetzt `⏎`).
---
+1 -1
View File
@@ -201,7 +201,7 @@ Version und Änderungen stehen im [CHANGELOG](CHANGELOG.md), der Plan in
| 3 · v0.3.0 | LXC, Ubuntu, Profile, Vorlagen, Profile im Template, SSH-Schlüssel | ✓ fertig, auf PVE 9.2 geprüft (Bau-Adresse #021: Abnahme offen) |
| 4 · v0.4.0 | CLI `proxdeploy` (Go), API-Tokens | ✓ fertig, auf PVE 9.2 geprüft |
| 5 · v0.5.0 | Verlauf, Aufräumen, Audit-Log, Benutzer, OIDC | ✓ fertig (Aufräumen auf PVE 9.2 geprüft, OIDC gegen Mock-IdP) |
| 6 · v0.6.0 | Branding, README mit Screenshots, Installer | ◐ als Nächstes |
| 6 · v0.6.0 | Branding, README mit Screenshots, Docker Compose, LXC-Installer | ✓ fertig, Installer auf PVE 9.2 geprüft |
## Entwicklung
+1 -1
View File
@@ -2,7 +2,7 @@
"openapi": "3.0.3",
"info": {
"title": "ProxDeploy API",
"version": "0.5.0",
"version": "0.6.0",
"description": "REST-API von ProxDeploy – dieselbe für Web-GUI und CLI. Fehler: `{ fehler: { code, nachricht, hinweis?, felder? } }`."
},
"servers": [
+1 -1
View File
@@ -2,7 +2,7 @@
**Status:** erledigt
**Meilenstein:** v0.6.0
**Labels:** design
**Geschätzt:** 4 h **Tatsächlich:** –
**Geschätzt:** 4 h **Tatsächlich:** 0 h 17 min
## Ziel
Alle Logo-Varianten, Banner, Favicons, Manifest-Icons nach Vorgabe.
+1 -1
View File
@@ -2,7 +2,7 @@
**Status:** erledigt
**Meilenstein:** v0.6.0
**Labels:** doku
**Geschätzt:** 4 h **Tatsächlich:** –
**Geschätzt:** 4 h **Tatsächlich:** 0 h 02 min (überwiegend parallel zu #019, während der Installer lief)
## Ziel
README mit Banner, Screenshots, Installation, CLI, Proxmox-Rechten, neuer Distribution, eigenem Profil.
+1 -1
View File
@@ -2,7 +2,7 @@
**Status:** erledigt
**Meilenstein:** v0.6.0
**Labels:** infrastruktur
**Geschätzt:** 6 h **Tatsächlich:** –
**Geschätzt:** 6 h **Tatsächlich:** 0 h 20 min
## Ziel
Produktionsbetrieb per Docker Compose oder in einem Debian-LXC.
+3 -3
View File
@@ -20,9 +20,9 @@ Details und Architektur: [../architektur.md](../architektur.md). Zeiten werden a
| [#014](014-verlauf.md) | Verlauf und Wiederholen | erledigt | v0.5.0 | 4 h | 1 h 21 min |
| [#015](015-rollen-audit.md) | Rollen, Benutzer, Tokens, Audit-Log | erledigt | v0.5.0 | 6 h | 0 h 10 min |
| [#016](016-oidc.md) | Anmeldung per OIDC | erledigt | v0.5.0 | 4 h | 0 h 08 min |
| [#017](017-branding.md) | Branding-Assets | erledigt | v0.6.0 | 4 h | – |
| [#018](018-readme.md) | README und Dokumentation | erledigt | v0.6.0 | 4 h | – |
| [#019](019-installer.md) | Docker-Image und LXC-Installer | erledigt | v0.6.0 | 6 h | – |
| [#017](017-branding.md) | Branding-Assets | erledigt | v0.6.0 | 4 h | 0 h 17 min |
| [#018](018-readme.md) | README und Dokumentation | erledigt | v0.6.0 | 4 h | 0 h 02 min |
| [#019](019-installer.md) | Docker-Image und LXC-Installer | erledigt | v0.6.0 | 6 h | 0 h 20 min |
| [#020](020-feldtest.md) | Feldtest 8.x und 9.x, Version 1.0.0 | offen | v1.0.0 | 6 h | – |
| [#021](021-template-bau-ohne-ssh.md) | Template-Bau ohne SSH (Bau-Adresse) | umgesetzt, Abnahme offen | v0.3.0 | 3 h | 0 h 19 min |
| [#022](022-template-profile.md) | Templates mit eingebackenen Profilen | erledigt | v0.3.0 | 4 h | 0 h 22 min |
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "proxdeploy",
"version": "0.5.0",
"version": "0.6.0",
"private": true,
"type": "module",
"description": "VMs und LXC-Container auf Proxmox VE ausrollen, per Web oder CLI",
+1 -1
View File
@@ -2,7 +2,7 @@
* Version und Git-Stand für Seitenleiste, `/api/v1/ich` und die Kopfzeile der CLI.
* Beide Werte werden beim Bauen gesetzt (Docker-Build-Arg bzw. Installer).
*/
export const VERSION = process.env["NEXT_PUBLIC_APP_VERSION"] ?? "0.5.0";
export const VERSION = process.env["NEXT_PUBLIC_APP_VERSION"] ?? "0.6.0";
export const GIT_SHA = (process.env["NEXT_PUBLIC_GIT_SHA"] ?? "").slice(0, 7);
export function versionText(): string {