From 543fc1c8b40c4852a51988c4b2384e8e109b3b00 Mon Sep 17 00:00:00 2001 From: Florian Wilde Date: Mon, 12 Oct 2026 15:18:34 +0200 Subject: [PATCH] chore(release): v0.4.0 Etappe 4: CLI proxdeploy in Go, API-Tokens, kurze Anfragen, OpenAPI. Abnahme auf pve-demo per batch (VM 107, CT 108). Closes #013 Co-Authored-By: Claude Opus 5.5 --- CHANGELOG.md | 16 ++++++++++++---- DEVLOG.md | 28 ++++++++++++++++++++++++++-- README.md | 4 ++-- cli/api/openapi.json | 2 +- docs/issues/013-cli.md | 6 +++--- docs/issues/README.md | 2 +- package.json | 2 +- src/lib/version.ts | 2 +- 8 files changed, 47 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ee740f4..4b2c317 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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.4.0] – 2026-10-12 + ### Hinzugefügt - CLI `proxdeploy` (Go, ein Binary für Linux/macOS/Windows × amd64/arm64): `login`, `servers`, `distros`, `profiles`, `presets`, `vm`, `lxc`, `template list|build`, `batch`, `status`, `logs --follow`, `cancel`; Ausgabe im Aufbau der Vorgabe mit 24-bit-/256-Farben, `--ascii`, `--quiet`, `--json`, `--dry-run` (#013) - API-Tokens für die CLI: anlegen und widerrufen in den Einstellungen, `proxdeploy login` tauscht Benutzername und Passwort gegen ein Token; Anmeldung per `Authorization: Bearer` (#013) @@ -16,10 +28,6 @@ und dieses Projekt folgt [Semantic Versioning](https://semver.org/lang/de/). ### Geändert - Die Abschlussbox (Name, ID, IP, Profile, SSH bzw. Phase, Ursache, Hinweis) berechnet der Server; Web-GUI und CLI zeigen dieselben Zeilen (#013) -### Behoben - -### Entfernt - ### Sicherheit - API-Tokens werden nur als SHA-256 gespeichert und genau einmal angezeigt; ein ungültiges Token gilt als nicht angemeldet, auch wenn zusätzlich ein Sitzungscookie mitkommt (#013) diff --git a/DEVLOG.md b/DEVLOG.md index 28c0367..3fffb37 100644 --- a/DEVLOG.md +++ b/DEVLOG.md @@ -2,7 +2,7 @@ ## Zeitübersicht -**Gesamt:** 4 h 38 min (Sitzung 1 und 2) +**Gesamt:** 5 h 20 min (Sitzung 1–3) Zeiten stammen aus den Git-Commit-Zeitstempeln je Issue; Wartezeit auf Rückmeldungen ist enthalten. @@ -23,16 +23,40 @@ Zeiten stammen aus den Git-Commit-Zeitstempeln je Issue; Wartezeit auf Rückmeld | #022 Profile im Template | 0 h 22 min | | #015 (Teil) SSH-Schlüssel | 0 h 10 min | | #021 Template-Bau ohne SSH | 0 h 19 min | +| #013 CLI und API-Tokens | 0 h 42 min | | Meilenstein | Zeit | |---|---| | v0.1.0 | 1 h 15 min | **abgeschlossen** | v0.2.0 | 1 h 32 min | **abgeschlossen** | v0.3.0 | 1 h 48 min | **abgeschlossen** (Abnahme #021 offen) +| v0.4.0 | 0 h 42 min | **abgeschlossen** --- -## 2026-10-12 · Sitzung 2 · 12:48–laufend +## 2026-10-12 · Sitzung 3 · 14:39–15:21 +**Issue:** #013 +**Version:** 0.4.0 + +### Erledigt +- v0.3.0 freigegeben (Abnahme #021 bleibt offen, braucht eine freie IP) +- API-Tokens (`pd_…`, nur SHA-256), Bearer-Anmeldung, `POST /auth/token` für `proxdeploy login`, Verwaltung in den Einstellungen +- Kurze Anfragen: Server füllt Storage, Bridge, Node, Benutzer, Schlüssel; Abschlussbox serverseitig +- OpenAPI aus zod, Go-Typen per oapi-codegen, `pnpm cli:pruefen` +- CLI `proxdeploy` in Go 1.27.2 mit allen Befehlen der Vorgabe plus presets, template list, cancel; Ausgabe zeichengenau zum Mockup (Golden-File) +- Abnahme auf pve-demo per `batch`: pd-cli01 (VM 107, Debian 13 aus Template 9002, docker läuft) und pd-cli02 (CT 108, Ubuntu 24.04) parallel; das Verfolgen überstand einen App-Neustart mitten im Lauf +- 267 Vitest, 20 Playwright-Abläufe, Go-Tests grün + +### Entscheidungen +- **Anfragen als Map, Antworten typisiert:** Go-Structs aus oapi-codegen schickten leere Pflichtfelder und überschrieben Vorlagenwerte. +- **`[instances.]`** in der Konfiguration statt `profiles` – „profile“ ist schon `--profile`. +- **Strg+C hängt nur ab**, Abbruch nur mit `proxdeploy cancel`. +- **Ohne Terminal zeilenweise** (je Phase eine Zeile), damit CI-Logs lesbar bleiben. +- Gefunden durch Tests: SSE-Daten zeigten in einen wiederverwendeten Puffer (jetzt kopiert); mehrzeilige Proxmox-Parameter brachen die Dry-Run-Zeile (jetzt `⏎`). + +--- + +## 2026-10-12 · Sitzung 2 · 12:48–14:39 **Issue:** #009–#012, #015 (Teil), #021, #022 **Version:** 0.3.0-dev diff --git a/README.md b/README.md index aecb0da..9a0641b 100644 --- a/README.md +++ b/README.md @@ -20,8 +20,8 @@ In Entwicklung. Version und Fortschritt stehen im [CHANGELOG](CHANGELOG.md), der | 1 · v0.1.0 | Server-Verwaltung, Fingerprint-Pinning, Verbindungstest mit Fähigkeitserkennung | ✓ fertig, auf PVE 9.2 geprüft | | 2 · v0.2.0 | Katalog, Template-Bau, Debian-13-VM, Live-Fortschritt, Assistent | ✓ fertig, auf PVE 9.2 geprüft | | 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 | ◐ in Arbeit | -| 5 · v0.5.0 | Verlauf, Audit-Log, Rollen, OIDC | ○ geplant | +| 4 · v0.4.0 | CLI `proxdeploy` (Go), API-Tokens | ✓ fertig, auf PVE 9.2 geprüft | +| 5 · v0.5.0 | Verlauf, Audit-Log, Rollen, OIDC | ◐ als Nächstes | | 6 · v0.6.0 | Branding, README mit Screenshots, Installer | ○ geplant | ## Was ProxDeploy auf einem Server kann diff --git a/cli/api/openapi.json b/cli/api/openapi.json index 1e08b3f..85cb21d 100644 --- a/cli/api/openapi.json +++ b/cli/api/openapi.json @@ -2,7 +2,7 @@ "openapi": "3.0.3", "info": { "title": "ProxDeploy API", - "version": "0.3.0", + "version": "0.4.0", "description": "REST-API von ProxDeploy – dieselbe für Web-GUI und CLI. Fehler: `{ fehler: { code, nachricht, hinweis?, felder? } }`." }, "servers": [ diff --git a/docs/issues/013-cli.md b/docs/issues/013-cli.md index 99aa837..2c11b47 100644 --- a/docs/issues/013-cli.md +++ b/docs/issues/013-cli.md @@ -1,8 +1,8 @@ # #013 CLI proxdeploy (Go) -**Status:** in Arbeit +**Status:** erledigt **Meilenstein:** v0.4.0 **Labels:** feature, cli -**Geschätzt:** 12 h **Tatsächlich:** – +**Geschätzt:** 12 h **Tatsächlich:** 0 h 42 min ## Ziel Alle Befehle aus der Vorgabe, Ausgabe exakt im Format der Vorgabe. @@ -15,7 +15,7 @@ Alle Befehle aus der Vorgabe, Ausgabe exakt im Format der Vorgabe. - [x] login, servers, distros, profiles, presets, vm, lxc, template list/build, batch, status, logs --follow, cancel - [x] Renderer: Farbe 24-bit/256/aus, --ascii, --quiet, --json, --dry-run; Golden-Tests - [x] Release-Builds für linux/darwin/windows × amd64/arm64 (`cli/bauen.sh`) -- [ ] Abnahme auf pve-demo (VM + LXC per batch) +- [x] Abnahme auf pve-demo (VM 107 + CT 108 per batch, parallel) ## Akzeptanzkriterien - [x] Ausgabe entspricht zeichengenau dem Mockup (`cli/internal/ausgabe/testdata/mockup.txt`, von Hand aus der Vorgabe übernommen) diff --git a/docs/issues/README.md b/docs/issues/README.md index dbe1b56..b760b6c 100644 --- a/docs/issues/README.md +++ b/docs/issues/README.md @@ -16,7 +16,7 @@ Details und Architektur: [../architektur.md](../architektur.md). Zeiten werden a | [#010](010-ubuntu.md) | Ubuntu 22.04, 24.04 und 26.04 | erledigt | v0.3.0 | 3 h | 0 h 05 min | | [#011](011-profile-docker-zabbix.md) | Profile docker und zabbix-agent, Variablen, Editor | erledigt | v0.3.0 | 6 h | 0 h 10 min | | [#012](012-vorlagen.md) | Vorlagen (Presets) | erledigt | v0.3.0 | 3 h | 0 h 11 min | -| [#013](013-cli.md) | CLI proxdeploy (Go) | in Arbeit | v0.4.0 | 12 h | – | +| [#013](013-cli.md) | CLI proxdeploy (Go) | erledigt | v0.4.0 | 12 h | 0 h 42 min | | [#014](014-verlauf.md) | Verlauf und Wiederholen | offen | v0.5.0 | 4 h | – | | [#015](015-rollen-audit.md) | Rollen, Benutzer, Tokens, Audit-Log | offen | v0.5.0 | 6 h | – | | [#016](016-oidc.md) | Anmeldung per OIDC | offen | v0.5.0 | 4 h | – | diff --git a/package.json b/package.json index ec6e466..755ed0f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "proxdeploy", - "version": "0.3.0", + "version": "0.4.0", "private": true, "type": "module", "description": "VMs und LXC-Container auf Proxmox VE ausrollen, per Web oder CLI", diff --git a/src/lib/version.ts b/src/lib/version.ts index 5d2072c..c00f235 100644 --- a/src/lib/version.ts +++ b/src/lib/version.ts @@ -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.3.0"; +export const VERSION = process.env["NEXT_PUBLIC_APP_VERSION"] ?? "0.4.0"; export const GIT_SHA = (process.env["NEXT_PUBLIC_GIT_SHA"] ?? "").slice(0, 7); export function versionText(): string {