From e555bbd3214cb95b333301c01713291c01200685 Mon Sep 17 00:00:00 2001 From: Jeremy Brandenburger Date: Fri, 3 Apr 2026 11:34:59 +0200 Subject: [PATCH] chore: automate release checks --- .githooks/pre-commit | 12 ++ AGENTS.md | 7 + CHANGELOG.md | 7 +- CLAUDE.md | 8 + PROJECT_MAP.md | 6 + package.json | 7 +- public/index.html | 342 +++++++++++++++++++++++++------------ scripts/release-sync.cjs | 57 +++++++ scripts/release-verify.cjs | 73 ++++++++ 9 files changed, 405 insertions(+), 114 deletions(-) create mode 100755 .githooks/pre-commit create mode 100755 scripts/release-sync.cjs create mode 100755 scripts/release-verify.cjs diff --git a/.githooks/pre-commit b/.githooks/pre-commit new file mode 100755 index 0000000..82456f7 --- /dev/null +++ b/.githooks/pre-commit @@ -0,0 +1,12 @@ +#!/usr/bin/env bash +set -euo pipefail + +if [[ -f package.json && -f scripts/release-sync.cjs && -f scripts/release-verify.cjs ]]; then + npm run --silent release:sync >/dev/null + if [[ -d public ]]; then + while IFS= read -r -d '' file; do + git add -- "$file" + done < <(find public -type f -name '*.html' -print0 2>/dev/null) + fi + npm run --silent release:verify +fi diff --git a/AGENTS.md b/AGENTS.md index 5109bed..ee38f29 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -30,3 +30,10 @@ helldivers/ ## Sicherheit - Niemals `data/helldivers.db` committen + +## Release-Automation +- **Version ist Single Source of Truth:** `package.json` +- **Cache-Busting nie manuell pflegen** – stattdessen `npm run release:sync` +- **Vor jedem Commit zusätzlich:** `npm run release:verify` +- Repo-Hook: `.githooks/pre-commit` führt `release:sync` und `release:verify` automatisch aus +- Für Versionssprünge: `npm run release:bump:patch`, `release:bump:minor` oder `release:bump:major` diff --git a/CHANGELOG.md b/CHANGELOG.md index 3671bdc..f18a884 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,9 @@ -# Changelog – helldivers-trainer +# Changelog + +## [Unreleased] + +### Changed +- Release-Automation ergänzt: `npm run release:sync`, `npm run release:verify`, `.githooks/pre-commit` und versionsbasiertes Cache-Busting aus `package.json` – helldivers-trainer ## [2.1.3] – 2026-03-31 diff --git a/CLAUDE.md b/CLAUDE.md index c1a9a80..5d8870a 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -40,3 +40,11 @@ Falls Funktionen, API-Routen, WebSocket-Message-Types oder State-Variablen **hin ## Changelog - Nach jeder Änderung `CHANGELOG.md` aktualisieren - Format: `## [Unreleased]` für laufende Änderungen + +## Release Automation + +- Version source of truth: `package.json` +- Never update `?v=...` asset parameters manually; use `npm run release:sync` +- Run `npm run release:verify` before commit whenever frontend/server/version files changed +- Repo hook: `.githooks/pre-commit` runs release sync + verification automatically +- Use `npm run release:bump:patch`, `release:bump:minor`, or `release:bump:major` for version bumps diff --git a/PROJECT_MAP.md b/PROJECT_MAP.md index 8d678dd..5183e97 100644 --- a/PROJECT_MAP.md +++ b/PROJECT_MAP.md @@ -132,3 +132,9 @@ state = { ### WebSocket Message Types (Server → Client) `lobby_update`, `challenge_received`, `challenge_declined`, `match_start`, `round_start`, `round_result`, `match_end`, `opponent_progress`, `error` + +## Release Automation +- Version source of truth: `package.json` +- `scripts/release-sync.cjs`: synchronisiert lokale CSS/JS-Referenzen in HTML-Dateien auf die aktuelle Paketversion +- `scripts/release-verify.cjs`: prüft Version-Parameter sowie Pflichtdateien wie `CHANGELOG.md` und `PROJECT_MAP.md` vor Commits +- `.githooks/pre-commit`: führt Release-Sync und Verify automatisch aus diff --git a/package.json b/package.json index b356c6e..d68093c 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,12 @@ "main": "server.js", "scripts": { "start": "node server.js", - "dev": "node --watch server.js" + "dev": "node --watch server.js", + "release:sync": "node scripts/release-sync.cjs", + "release:verify": "node scripts/release-verify.cjs", + "release:bump:patch": "npm version patch --no-git-tag-version && npm run release:sync", + "release:bump:minor": "npm version minor --no-git-tag-version && npm run release:sync", + "release:bump:major": "npm version major --no-git-tag-version && npm run release:sync" }, "dependencies": { "bcryptjs": "^3.0.3", diff --git a/public/index.html b/public/index.html index 0a0cfab..39e38fc 100644 --- a/public/index.html +++ b/public/index.html @@ -7,7 +7,7 @@ - + @@ -55,24 +55,47 @@
-