Merge: Release 0.4.0 - Design und Sicherheit

This commit is contained in:
unknown
2026-10-25 15:39:55 +01:00
5 changed files with 661 additions and 655 deletions
+19 -1
View File
@@ -7,7 +7,24 @@ die Versionierung [Semantic Versioning](https://semver.org/lang/de/).
## [Unreleased] ## [Unreleased]
## [0.4.0] - 2026-10-25
Ein neues Gesicht: Bricktrack sieht jetzt aus wie das, was es verwaltet. Ein neues Gesicht: Bricktrack sieht jetzt aus wie das, was es verwaltet.
Dazu alle bekannten Sicherheitslücken in den Abhängigkeiten geschlossen.
### Sicherheit
- Next.js 15.5.28: schließt unter anderem eine Denial-of-Service-Lücke über
Server Actions und Cache-Poisoning bei selbst gehosteten Instanzen. Die
kritische Lücke in der Bildoptimierung war hier nicht ausnutzbar
(`images.unoptimized`), ist aber ebenfalls behoben.
- nodemailer 10.2: mehrere Fehler im Adressparser (Erinnerungs-Mails).
- better-auth 1.7.12, sharp 0.35.5 (librsvg), zod 4.6.7 (Speicherverbrauch
bei übergroßen Eingaben), drizzle-orm 0.45.4.
- Entwicklungswerkzeuge: vitest, vite, postcss, Playwright und die
shadcn-CLI aktualisiert, transitive Pakete per `pnpm.overrides` angehoben.
Übrig bleibt ein mittlerer Fund in einem alten esbuild, das drizzle-kit
intern mitbringt - nur beim Entwickeln, nicht im Image.
### Hinzugefügt ### Hinzugefügt
@@ -217,7 +234,8 @@ Erste lauffaehige Fassung: Phase 1 vollstaendig, im Docker-Stack verifiziert.
- Unter Windows scheitert `pnpm build` an fehlenden Symlink-Rechten. Der - Unter Windows scheitert `pnpm build` an fehlenden Symlink-Rechten. Der
Docker-Build unter Linux ist davon nicht betroffen. Docker-Build unter Linux ist davon nicht betroffen.
[Unreleased]: https://git.wilde-server.de/florian.wilde/bricktrack/compare/v0.3.0...HEAD [Unreleased]: https://git.wilde-server.de/florian.wilde/bricktrack/compare/v0.4.0...HEAD
[0.4.0]: https://git.wilde-server.de/florian.wilde/bricktrack/releases/tag/v0.4.0
[0.3.0]: https://git.wilde-server.de/florian.wilde/bricktrack/releases/tag/v0.3.0 [0.3.0]: https://git.wilde-server.de/florian.wilde/bricktrack/releases/tag/v0.3.0
[0.2.0]: https://git.wilde-server.de/florian.wilde/bricktrack/releases/tag/v0.2.0 [0.2.0]: https://git.wilde-server.de/florian.wilde/bricktrack/releases/tag/v0.2.0
[0.1.0]: https://git.wilde-server.de/florian.wilde/bricktrack/releases/tag/v0.1.0 [0.1.0]: https://git.wilde-server.de/florian.wilde/bricktrack/releases/tag/v0.1.0
+2
View File
@@ -213,6 +213,8 @@ Session.
Einladungen, Export/Import, PWA. *Fertig in 0.2.0.* Einladungen, Export/Import, PWA. *Fertig in 0.2.0.*
- **Phase 3 (Nice to have)** - mehrere Sammler, Preisbeobachtung, - **Phase 3 (Nice to have)** - mehrere Sammler, Preisbeobachtung,
E-Mail-Erinnerungen, Dublettenpruefung. *Fertig in 0.3.0.* E-Mail-Erinnerungen, Dublettenpruefung. *Fertig in 0.3.0.*
- **Design und Sicherheit** - Designauswahl (Standard Klemmbaustein),
Abhaengigkeiten ohne bekannte Luecken. *Fertig in 0.4.0.*
Details und Stand: `docs/ROADMAP.md`. Zeitaufwaende: `docs/DEVLOG.md`. Details und Stand: `docs/ROADMAP.md`. Zeitaufwaende: `docs/DEVLOG.md`.
+3 -1
View File
@@ -59,7 +59,9 @@ Laeuft vollstaendig im Docker-Stack.
rueckt und Eintraege unreserviert sind rueckt und Eintraege unreserviert sind
- [x] Dublettenpruefung beim Anlegen von Sets - [x] Dublettenpruefung beim Anlegen von Sets
## Design (unveröffentlicht) ## Design und Sicherheit (v0.4.0, abgeschlossen am 25.10.2026)
- [x] Abhängigkeiten mit bekannten Sicherheitslücken aktualisiert
- [x] Designauswahl pro Gerät, sechs Designs, Standard „Klemmbaustein" - [x] Designauswahl pro Gerät, sechs Designs, Standard „Klemmbaustein"
- [x] Platzhalter für Sets ohne Bild, neues Logo, Schriften lokal - [x] Platzhalter für Sets ohne Bild, neues Logo, Schriften lokal
+30 -15
View File
@@ -1,6 +1,6 @@
{ {
"name": "bricktrack", "name": "bricktrack",
"version": "0.1.0", "version": "0.4.0",
"private": true, "private": true,
"description": "Self-hosted Verwaltung fuer Spielzeug-Set-Sammlungen (Lego, Playmobil, Cobi, ...)", "description": "Self-hosted Verwaltung fuer Spielzeug-Set-Sammlungen (Lego, Playmobil, Cobi, ...)",
"packageManager": "pnpm@10.34.5", "packageManager": "pnpm@10.34.5",
@@ -23,7 +23,7 @@
"screenshots": "node scripts/screenshots-prepare.mjs && playwright test --config=playwright.screenshots.config.ts" "screenshots": "node scripts/screenshots-prepare.mjs && playwright test --config=playwright.screenshots.config.ts"
}, },
"dependencies": { "dependencies": {
"@better-auth/passkey": "^1.7.3", "@better-auth/passkey": "^1.7.12",
"@fontsource-variable/archivo": "^5.3.0", "@fontsource-variable/archivo": "^5.3.0",
"@fontsource-variable/bricolage-grotesque": "^5.3.0", "@fontsource-variable/bricolage-grotesque": "^5.3.0",
"@fontsource-variable/fredoka": "^5.3.0", "@fontsource-variable/fredoka": "^5.3.0",
@@ -32,30 +32,30 @@
"@fontsource-variable/outfit": "^5.3.0", "@fontsource-variable/outfit": "^5.3.0",
"@zxing/browser": "^0.2.1", "@zxing/browser": "^0.2.1",
"@zxing/library": "^0.23.0", "@zxing/library": "^0.23.0",
"better-auth": "^1.7.3", "better-auth": "^1.7.12",
"better-sqlite3": "^13.0.3", "better-sqlite3": "^13.0.3",
"class-variance-authority": "^0.7.1", "class-variance-authority": "^0.7.1",
"cn": "^0.2.6", "cn": "^0.2.6",
"date-fns": "^4.4.0", "date-fns": "^4.4.0",
"drizzle-orm": "^0.45.2", "drizzle-orm": "^0.45.4",
"fflate": "^0.8.3", "fflate": "^0.8.3",
"lucide-react": "^1.41.0", "lucide-react": "^1.41.0",
"next": "15.5.25", "next": "15.5.28",
"next-themes": "^0.4.6", "next-themes": "^0.4.6",
"nodemailer": "^10.0.0", "nodemailer": "^10.2.1",
"pdfjs-dist": "^6.3.289", "pdfjs-dist": "^6.3.289",
"radix-ui": "^1.6.7", "radix-ui": "^1.6.7",
"react": "19.1.0", "react": "19.1.0",
"react-dom": "19.1.0", "react-dom": "19.1.0",
"server-only": "^0.0.1", "server-only": "^0.0.1",
"sharp": "^0.35.4", "sharp": "^0.35.5",
"sonner": "^2.0.8", "sonner": "^2.0.8",
"tw-animate-css": "^1.4.0", "tw-animate-css": "^1.4.0",
"zod": "^4.5.4" "zod": "^4.6.7"
}, },
"devDependencies": { "devDependencies": {
"@eslint/eslintrc": "^3", "@eslint/eslintrc": "^3",
"@playwright/test": "^1.63.0", "@playwright/test": "^1.64.1",
"@tailwindcss/postcss": "^4", "@tailwindcss/postcss": "^4",
"@types/better-sqlite3": "^9.6.0", "@types/better-sqlite3": "^9.6.0",
"@types/node": "^20", "@types/node": "^20",
@@ -63,15 +63,16 @@
"@types/react": "^19", "@types/react": "^19",
"@types/react-dom": "^19", "@types/react-dom": "^19",
"dotenv": "^17.4.2", "dotenv": "^17.4.2",
"drizzle-kit": "^0.31.10", "drizzle-kit": "^0.31.11",
"esbuild": "^0.25.12", "esbuild": "^0.25.12",
"eslint": "^9", "eslint": "^9",
"eslint-config-next": "15.5.25", "eslint-config-next": "15.5.28",
"shadcn": "^4.21.0", "shadcn": "^4.22.1",
"tailwindcss": "^4", "tailwindcss": "^4",
"tsx": "^4.23.13", "tsx": "^4.23.15",
"typescript": "^5", "typescript": "^5",
"vitest": "^5.0.0" "vite": "^8.3.5",
"vitest": "^5.0.5"
}, },
"pnpm": { "pnpm": {
"onlyBuiltDependencies": [ "onlyBuiltDependencies": [
@@ -79,6 +80,20 @@
"esbuild", "esbuild",
"sharp", "sharp",
"unrs-resolver" "unrs-resolver"
] ],
"overrides": {
"postcss": "^8.5.31",
"vite": "^8.2.4",
"source-map-js": "^1.2.2",
"brace-expansion@<2": "^1.1.21",
"brace-expansion@>=4 <6": "^5.0.12",
"@modelcontextprotocol/sdk": "^1.32.2",
"undici@7": "^7.30.1",
"proxy-addr": "^2.0.8",
"body-parser@2": "^2.4.0",
"fast-uri@3": "^3.1.9",
"hono": "^4.13.11",
"ip-address": "^10.7.4"
}
} }
} }
+607 -638
View File
File diff suppressed because it is too large Load Diff