v0.4.0 — Build fix + full-stack CI
What's changed
Build fix (critical) — Restored a working production build on Next.js 16.3.0, which was crashing while prerendering synthetic error routes (_global-error, _not-found) and pages-router status pages (framework bug vercel/next.js #86177/#86178).
patches/next+16.3.0.patchapplied via patch-package (postinstallhook) — skips static generation of the broken synthetic/status routesforce-dynamicroot layout; customnot-found.tsxandglobal-error.tsxpages- Dockerfile copies
patches/beforenpm ciso the fix applies in Docker builds
CI/CD
- New full-stack
Dockerfile.fullbuild check job (Asterisk + FreePBX, 45–90 min) — runs weekly and via manual dispatch, deliberately not on every PR workflow_dispatchtrigger and weekly schedule addeddocker composevalidation for the full-stack compose file
Lint & tooling
- Switched ESLint to
eslint-config-nextflat configs directly (FlatCompat was broken on ESLint 9); fixed all lint errors (set-state-in-effect, unused vars/imports across API routes and libs)
Docs & config
- README updated with the build workaround, error pages, and release process
- Removed
NODE_ENVfrom env example files (Next.js warns against setting it)
Images
- Portal:
ghcr.io/innotelinc/pbx-portal:0.4.0(andlatest) - Full-stack:
ghcr.io/innotelinc/pbx-portal:0.4.0-fullstack