From e62294a20467cb4fed83848072459c5ddccf5994 Mon Sep 17 00:00:00 2001 From: mARTin-B78 Date: Sat, 12 Sep 2026 14:56:37 +0200 Subject: [PATCH] fix: Standalone-Output-Wurzel fest verankern -- Smoke-Test scheiterte nach next@15 Der erste Deploy nach dem next@15-Upgrade (v1.123.0) brach am Smoke-Test ab: Next.js hatte den Standalone-Output um einen Ordner tiefer verschachtelt als scripts/update-app.sh erwartet, weil es per Lockfile-Suche nach oben eine verwaiste, leere package-lock.json in /root auf dem Produktionshost fand und /root faelschlich fuer die Projektwurzel hielt. outputFileTracingRoot: __dirname in next.config.js verankert die Wurzel jetzt explizit. Die laufende App war nie betroffen -- der Smoke-Test hat den Build wie vorgesehen abgefangen, bevor umgeschaltet wurde. Verifiziert lokal mit denselben Env-Variablen wie scripts/update-app.sh (NEXT_DIST_DIR=.next-build): .next-build/standalone/server.js liegt jetzt an der erwarteten Stelle. Typecheck, Lint, 79 Unit-Tests weiterhin gruen. v1.123.1 Co-Authored-By: Claude Sonnet 5 --- CHANGELOG.md | 17 +++++++++++++++++ next.config.js | 10 ++++++++++ package.json | 2 +- 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 372156c..3b615fe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,23 @@ All notable changes to this project are documented in this file. +## [1.123.1] - 2026-09-12 + +### Fixed +- **Erster Deploy nach dem next@15-Upgrade schlug am Smoke-Test fehl**, weil + Next.js den Standalone-Output um einen Ordner tiefer verschachtelt hat als + erwartet: `.next-build/standalone/My-Weekly-ToDo-List/server.js` statt + `.next-build/standalone/server.js`. Ursache: Next sucht per Lockfile-Suche + nach oben einen "Workspace-Root" fuer das File-Tracing und fand dabei eine + verwaiste, leere `package-lock.json` in `/root` auf dem Produktionshost -- + hielt `/root` faelschlich fuer die Projektwurzel und spiegelte deren + Ordnerstruktur in den Output. `scripts/update-app.sh` erwartet den flachen + Pfad fest. `outputFileTracingRoot: __dirname` in `next.config.js` verankert + die Wurzel jetzt explizit -- unabhaengig davon, was sonst noch im + Dateisystem oberhalb des Projekts liegt. +- Die laufende App war davon nicht betroffen: der Smoke-Test hat den kaputten + Build wie vorgesehen abgefangen, bevor umgeschaltet wurde. + ## [1.123.0] - 2026-09-12 ### Security diff --git a/next.config.js b/next.config.js index 9cd0407..b892084 100644 --- a/next.config.js +++ b/next.config.js @@ -3,6 +3,16 @@ const { version } = require('./package.json'); const nextConfig = { output: 'standalone', + // Next.js sucht per Lockfile-Suche nach oben selbst einen "Workspace-Root" fuer die + // File-Tracing des Standalone-Outputs. Findet es dort ein weiteres Lockfile (auf dem + // Produktionshost liegt in /root eine verwaiste, leere package-lock.json), haelt es + // /root faelschlich fuer die Wurzel und verschachtelt den Output um einen Ordner tiefer: + // .next-build/standalone/My-Weekly-ToDo-List/server.js statt .next-build/standalone/ + // server.js. scripts/update-app.sh erwartet Letzteres fest und der Smoke-Test schlaegt + // sonst fehl ("Cannot find module '.../standalone/server.js'"), live aufgetreten + // 2026-09-12 beim ersten Deploy nach next@15. __dirname verankert die Wurzel explizit, + // unabhaengig davon, was sonst noch im Dateisystem oberhalb des Projekts herumliegt. + outputFileTracingRoot: __dirname, // Kein "X-Powered-By: Next.js" -- unnoetige Versions-/Framework-Preisgabe an Scanner. poweredByHeader: false, // Ziel des Builds. update-app.sh baut nach .next-build, damit das laufende .next diff --git a/package.json b/package.json index c1cad01..2db0826 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "my-weekly-todo-list", - "version": "1.123.0", + "version": "1.123.1", "description": "A web-based weekly task management application that organizes to-dos and calendar events in a single, intuitive weekly view", "main": "index.js", "scripts": {