From 50157c3c79c0b1915269441cb9cecc681aaf3c4e Mon Sep 17 00:00:00 2001 From: LUIS NOVO Date: Wed, 14 Jan 2026 22:03:15 -0300 Subject: [PATCH 1/5] fix: use standalone server for Next.js in Docker Replace 'next start' with 'node server.js' to properly utilize Next.js standalone output mode in Docker deployments. Changes: - Update supervisord.conf to run standalone server - Update supervisord.single.conf to run standalone server - Update package.json start script for consistency This eliminates the startup warning and follows Next.js best practices for optimized Docker deployments. --- frontend/package.json | 2 +- supervisord.conf | 2 +- supervisord.single.conf | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index 0de5611..06e3be3 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -5,7 +5,7 @@ "scripts": { "dev": "next dev", "build": "next build", - "start": "next start -p ${PORT:-8502}", + "start": "node .next/standalone/server.js", "lint": "next lint" }, "dependencies": { diff --git a/supervisord.conf b/supervisord.conf index 14bbb64..6bc872b 100644 --- a/supervisord.conf +++ b/supervisord.conf @@ -26,7 +26,7 @@ autostart=true startsecs=3 [program:frontend] -command=bash -c "/app/scripts/wait-for-api.sh && npm run start" +command=bash -c "/app/scripts/wait-for-api.sh && node server.js" directory=/app/frontend environment=NODE_ENV="production",PORT="8502" passenv=API_URL,NEXT_PUBLIC_API_URL,INTERNAL_API_URL diff --git a/supervisord.single.conf b/supervisord.single.conf index 345d37b..786dbbf 100644 --- a/supervisord.single.conf +++ b/supervisord.single.conf @@ -38,7 +38,7 @@ autostart=true startsecs=3 [program:frontend] -command=bash -c "/app/scripts/wait-for-api.sh && npm run start" +command=bash -c "/app/scripts/wait-for-api.sh && node server.js" directory=/app/frontend environment=NODE_ENV="production",PORT="8502" passenv=API_URL,NEXT_PUBLIC_API_URL,INTERNAL_API_URL From 3e03c48f045fbd9cf7c2829107d879b3ae024704 Mon Sep 17 00:00:00 2001 From: LUIS NOVO Date: Wed, 14 Jan 2026 22:11:10 -0300 Subject: [PATCH 2/5] chore: changelog --- CHANGELOG.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index efbd19e..ebd293f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,30 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [1.4.0] - 2026-01-14 + +### Added +- CTA button to empty state notebook list for better onboarding (#408) +- Offline deployment support for Docker containers (#414) + +### Fixed +- Large file uploads (>10MB) by upgrading to Next.js 16 (#423) +- Orphaned uploaded files when sources are removed (#421) +- Broken documentation links to ai-providers.md (#419) +- ZIP support indication removed from UI (#418) +- Duplicate Claude Code workflow runs on PRs (#417) +- Claude Code review workflow now runs on PRs from forks (#416) + +### Changed +- Upgraded Next.js from 15.4.10 to 16.1.1 (#423) +- Upgraded React from 19.1.0 to 19.2.3 (#423) +- Renamed `middleware.ts` to `proxy.ts` for Next.js 16 compatibility (#423) + +### Dependencies +- next: 15.4.10 → 16.1.1 +- react: 19.1.0 → 19.2.3 +- react-dom: 19.1.0 → 19.2.3 + ## [1.2.4] - 2025-12-14 ### Added From cd55592b39879702cc4f1e89c1e649788b0c3263 Mon Sep 17 00:00:00 2001 From: LUIS NOVO Date: Wed, 14 Jan 2026 22:13:06 -0300 Subject: [PATCH 3/5] fix: preserve port 8502 default in standalone server script Add PORT environment variable with 8502 fallback to ensure npm run start defaults to expected port even when run outside of Docker/supervisord context. --- frontend/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/package.json b/frontend/package.json index 06e3be3..c7d70ce 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -5,7 +5,7 @@ "scripts": { "dev": "next dev", "build": "next build", - "start": "node .next/standalone/server.js", + "start": "PORT=${PORT:-8502} node .next/standalone/server.js", "lint": "next lint" }, "dependencies": { From 948ab048969bdcf05c23f3576bb990180c208708 Mon Sep 17 00:00:00 2001 From: LUIS NOVO Date: Wed, 14 Jan 2026 22:37:02 -0300 Subject: [PATCH 4/5] fix: use cross-env for cross-platform PORT default Replace POSIX-only PORT=${PORT:-8502} syntax with cross-env to ensure npm run start works on Windows and other platforms. - Install cross-env as dev dependency - Update start script to use cross-env PORT=8502 --- frontend/package-lock.json | 26 ++++++++++++++++++++++++++ frontend/package.json | 3 ++- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 6011f4d..c751b3d 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -54,6 +54,7 @@ "@types/node": "^20", "@types/react": "^19", "@types/react-dom": "^19", + "cross-env": "^10.1.0", "eslint": "^9", "eslint-config-next": "15.4.2", "tailwindcss": "^4", @@ -125,6 +126,13 @@ "tslib": "^2.4.0" } }, + "node_modules/@epic-web/invariant": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@epic-web/invariant/-/invariant-1.0.0.tgz", + "integrity": "sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==", + "dev": true, + "license": "MIT" + }, "node_modules/@eslint-community/eslint-utils": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", @@ -4038,6 +4046,24 @@ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, + "node_modules/cross-env": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-10.1.0.tgz", + "integrity": "sha512-GsYosgnACZTADcmEyJctkJIoqAhHjttw7RsFrVoJNXbsWWqaq6Ym+7kZjq6mS45O0jij6vtiReppKQEtqWy6Dw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@epic-web/invariant": "^1.0.0", + "cross-spawn": "^7.0.6" + }, + "bin": { + "cross-env": "dist/bin/cross-env.js", + "cross-env-shell": "dist/bin/cross-env-shell.js" + }, + "engines": { + "node": ">=20" + } + }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", diff --git a/frontend/package.json b/frontend/package.json index c7d70ce..3a6ac37 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -5,7 +5,7 @@ "scripts": { "dev": "next dev", "build": "next build", - "start": "PORT=${PORT:-8502} node .next/standalone/server.js", + "start": "cross-env PORT=8502 node .next/standalone/server.js", "lint": "next lint" }, "dependencies": { @@ -55,6 +55,7 @@ "@types/node": "^20", "@types/react": "^19", "@types/react-dom": "^19", + "cross-env": "^10.1.0", "eslint": "^9", "eslint-config-next": "15.4.2", "tailwindcss": "^4", From 5caf62946eaf492f9ed98096887d07658839ec2e Mon Sep 17 00:00:00 2001 From: LUIS NOVO Date: Wed, 14 Jan 2026 22:51:39 -0300 Subject: [PATCH 5/5] fix: use Node.js wrapper for cross-platform PORT fallback Replace cross-env with a simple Node.js wrapper script that: - Respects externally supplied PORT environment variable - Falls back to 8502 if PORT is not set - Works cross-platform without extra dependencies - No runtime dependencies beyond Node.js itself Changes: - Add start-server.js wrapper script - Update package.json to use wrapper - Remove cross-env dependency - Copy start-server.js in Dockerfile This fixes both issues: 1. Preserves PORT fallback behavior (PORT can be overridden) 2. No extra runtime dependencies needed --- Dockerfile | 1 + frontend/package-lock.json | 26 -------------------------- frontend/package.json | 3 +-- frontend/start-server.js | 9 +++++++++ 4 files changed, 11 insertions(+), 28 deletions(-) create mode 100644 frontend/start-server.js diff --git a/Dockerfile b/Dockerfile index e6564b2..ab6aeb0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -74,6 +74,7 @@ ENV VIRTUAL_ENV=/app/.venv COPY --from=builder /app/frontend/.next/standalone /app/frontend/ COPY --from=builder /app/frontend/.next/static /app/frontend/.next/static COPY --from=builder /app/frontend/public /app/frontend/public +COPY --from=builder /app/frontend/start-server.js /app/frontend/start-server.js # Expose ports for Frontend and API EXPOSE 8502 5055 diff --git a/frontend/package-lock.json b/frontend/package-lock.json index c751b3d..6011f4d 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -54,7 +54,6 @@ "@types/node": "^20", "@types/react": "^19", "@types/react-dom": "^19", - "cross-env": "^10.1.0", "eslint": "^9", "eslint-config-next": "15.4.2", "tailwindcss": "^4", @@ -126,13 +125,6 @@ "tslib": "^2.4.0" } }, - "node_modules/@epic-web/invariant": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@epic-web/invariant/-/invariant-1.0.0.tgz", - "integrity": "sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==", - "dev": true, - "license": "MIT" - }, "node_modules/@eslint-community/eslint-utils": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", @@ -4046,24 +4038,6 @@ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, - "node_modules/cross-env": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-10.1.0.tgz", - "integrity": "sha512-GsYosgnACZTADcmEyJctkJIoqAhHjttw7RsFrVoJNXbsWWqaq6Ym+7kZjq6mS45O0jij6vtiReppKQEtqWy6Dw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@epic-web/invariant": "^1.0.0", - "cross-spawn": "^7.0.6" - }, - "bin": { - "cross-env": "dist/bin/cross-env.js", - "cross-env-shell": "dist/bin/cross-env-shell.js" - }, - "engines": { - "node": ">=20" - } - }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", diff --git a/frontend/package.json b/frontend/package.json index 3a6ac37..5f9cbcc 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -5,7 +5,7 @@ "scripts": { "dev": "next dev", "build": "next build", - "start": "cross-env PORT=8502 node .next/standalone/server.js", + "start": "node start-server.js", "lint": "next lint" }, "dependencies": { @@ -55,7 +55,6 @@ "@types/node": "^20", "@types/react": "^19", "@types/react-dom": "^19", - "cross-env": "^10.1.0", "eslint": "^9", "eslint-config-next": "15.4.2", "tailwindcss": "^4", diff --git a/frontend/start-server.js b/frontend/start-server.js new file mode 100644 index 0000000..737e8b6 --- /dev/null +++ b/frontend/start-server.js @@ -0,0 +1,9 @@ +#!/usr/bin/env node + +// Set default PORT if not already set +if (!process.env.PORT) { + process.env.PORT = '8502'; +} + +// Start the Next.js standalone server +require('./.next/standalone/server.js');