From e07e1f3f2c589a58cb765757dcb8cda9599cfb1c Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Fri, 13 Nov 2026 17:36:19 +0000 Subject: [PATCH 1/2] Keep registry deploy dependencies after production prune. alchemy.new runs the packed archive without installing packages. @alchemy.run/cloudflare and @vitejs/plugin-react are loaded at deploy time, so they stay in the production dependency set. Co-authored-by: Jonathan Beckman --- ...6-11-13-fix-registry-deploy-dependencies.md | 8 ++++++++ nub.lock | 18 +++++++++--------- packages/api/package.json | 2 +- packages/app/package.json | 4 ++-- 4 files changed, 20 insertions(+), 12 deletions(-) create mode 100644 .tegami/2026-11-13-fix-registry-deploy-dependencies.md diff --git a/.tegami/2026-11-13-fix-registry-deploy-dependencies.md b/.tegami/2026-11-13-fix-registry-deploy-dependencies.md new file mode 100644 index 00000000..6c07570a --- /dev/null +++ b/.tegami/2026-11-13-fix-registry-deploy-dependencies.md @@ -0,0 +1,8 @@ +--- +packages: + "release:solstatus": patch +--- + +## Keep deploy dependencies in the registry archive + +alchemy.new deploys the published archive and does not install packages. The archive now keeps `@alchemy.run/cloudflare` for the API and the app, and `@vitejs/plugin-react` for the dashboard build. Deploy this patch of `solzero/solstatus`. No setting change is required. diff --git a/nub.lock b/nub.lock index 3e83c85a..88507e57 100644 --- a/nub.lock +++ b/nub.lock @@ -116,6 +116,9 @@ importers: packages/api: dependencies: + '@alchemy.run/cloudflare': + specifier: 2.0.0-beta.85 + version: 2.0.0-beta.85(@effect/platform-node@4.1.2(effect@4.1.2)(redis@6.3.1))(@types/node@24.19.2)(@types/react@19.3.0)(alchemy@2.0.0-beta.85(@effect/platform-node@4.1.2(effect@4.1.2)(redis@6.3.1))(effect@4.1.2))(effect@4.1.2)(typescript@7.0.2) '@solstatus/common': specifier: workspace:* version: link:../common @@ -129,9 +132,6 @@ importers: specifier: ^2.3.0 version: 2.3.0 devDependencies: - '@alchemy.run/cloudflare': - specifier: 2.0.0-beta.85 - version: 2.0.0-beta.85(@effect/platform-node@4.1.2(effect@4.1.2)(redis@6.3.1))(@types/node@24.19.2)(@types/react@19.3.0)(alchemy@2.0.0-beta.85(@effect/platform-node@4.1.2(effect@4.1.2)(redis@6.3.1))(effect@4.1.2))(effect@4.1.2)(typescript@7.0.2) '@cloudflare/workers-types': specifier: ^5.20261022.1 version: 5.20261109.1 @@ -156,6 +156,9 @@ importers: packages/app: dependencies: + '@alchemy.run/cloudflare': + specifier: 2.0.0-beta.85 + version: 2.0.0-beta.85(@effect/platform-node@4.1.2(effect@4.1.2)(redis@6.3.1))(@types/react@19.3.0)(alchemy@2.0.0-beta.85(@effect/platform-node@4.1.2(effect@4.1.2)(redis@6.3.1))(effect@4.1.2)(vite@8.3.6(@types/node@24.19.2)(tsx@4.23.15)))(effect@4.1.2)(typescript@7.0.2)(vite@8.3.6(@types/node@24.19.2)(tsx@4.23.15)) '@hookform/resolvers': specifier: ^5.1.1 version: 5.9.2(effect@4.1.2)(react-hook-form@7.91.0(@types/react@19.3.0)(react@19.3.1))(zod@4.6.7) @@ -213,6 +216,9 @@ importers: '@tanstack/react-table': specifier: ^8.21.3 version: 8.21.3(react@19.3.1)(react-dom@19.3.1(react@19.3.1)) + '@vitejs/plugin-react': + specifier: ^6.0.1 + version: 6.2.1(vite@8.3.6(@types/node@24.19.2)(tsx@4.23.15)) better-auth: specifier: ^1.2.12 version: 1.7.18(@tanstack/react-start@1.169.5(react@19.3.1)(react-dom@19.3.1(react@19.3.1))(vite@8.3.6(@types/node@24.19.2)(tsx@4.23.15)))(cookie-es@3.1.1)(drizzle-orm@1.0.0-rc.5-ab785fc(@cloudflare/workers-types@5.20261109.1)(@libsql/client@0.18.0)(effect@4.1.2)(react@19.3.1)(zod@4.6.7))(react@19.3.1)(react-dom@19.3.1(react@19.3.1)) @@ -274,9 +280,6 @@ importers: specifier: ^8.3.4 version: 8.3.6(@types/node@24.19.2)(tsx@4.23.15) devDependencies: - '@alchemy.run/cloudflare': - specifier: 2.0.0-beta.85 - version: 2.0.0-beta.85(@effect/platform-node@4.1.2(effect@4.1.2)(redis@6.3.1))(@types/react@19.3.0)(alchemy@2.0.0-beta.85(@effect/platform-node@4.1.2(effect@4.1.2)(redis@6.3.1))(effect@4.1.2)(vite@8.3.6(@types/node@24.19.2)(tsx@4.23.15)))(effect@4.1.2)(typescript@7.0.2)(vite@8.3.6(@types/node@24.19.2)(tsx@4.23.15)) '@cloudflare/workers-types': specifier: ^5.20261022.1 version: 5.20261109.1 @@ -292,9 +295,6 @@ importers: '@types/react-dom': specifier: 19.3.0 version: 19.3.0(@types/react@19.3.0) - '@vitejs/plugin-react': - specifier: ^6.0.1 - version: 6.2.1(vite@8.3.6(@types/node@24.19.2)(tsx@4.23.15)) alchemy: specifier: 2.0.0-beta.85 version: 2.0.0-beta.85(@effect/platform-node@4.1.2(effect@4.1.2)(redis@6.3.1))(@types/react@19.3.0)(effect@4.1.2)(vite@8.3.6(@types/node@24.19.2)(tsx@4.23.15)) diff --git a/packages/api/package.json b/packages/api/package.json index 15442769..406fba38 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -40,13 +40,13 @@ "types": "tsrs" }, "dependencies": { + "@alchemy.run/cloudflare": "2.0.0-beta.85", "@solstatus/common": "workspace:*", "diffable-objects": "^0.1.1", "drizzle-orm": "1.0.0-rc.5-ab785fc", "http-status-codes": "^2.3.0" }, "devDependencies": { - "@alchemy.run/cloudflare": "2.0.0-beta.85", "@cloudflare/workers-types": "^5.20261022.1", "@libsql/client": "0.18.0", "@types/node": "^24.12.4", diff --git a/packages/app/package.json b/packages/app/package.json index 0a80a1e3..44285615 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -39,6 +39,7 @@ "clean": "rm -rf dist .output .vinxi .tanstack" }, "dependencies": { + "@alchemy.run/cloudflare": "2.0.0-beta.85", "@hookform/resolvers": "^5.1.1", "@radix-ui/react-checkbox": "^1.3.2", "@radix-ui/react-dialog": "^1.1.14", @@ -58,6 +59,7 @@ "@tanstack/react-router": "^1.169.2", "@tanstack/react-start": "^1.167.65", "@tanstack/react-table": "^8.21.3", + "@vitejs/plugin-react": "^6.0.1", "better-auth": "^1.2.12", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", @@ -80,13 +82,11 @@ "vite": "^8.3.4" }, "devDependencies": { - "@alchemy.run/cloudflare": "2.0.0-beta.85", "@cloudflare/workers-types": "^5.20261022.1", "@libsql/client": "0.18.0", "@types/node": "^24.12.4", "@types/react": "19.3.0", "@types/react-dom": "19.3.0", - "@vitejs/plugin-react": "^6.0.1", "alchemy": "2.0.0-beta.85", "tsrs": "0.23.0-ts7.1.0-beta", "typescript": "7.0.2", From fd830d3129847c21df28e0b56e4911056aa55691 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Fri, 13 Nov 2026 17:41:34 +0000 Subject: [PATCH 2/2] Keep deploy-time files in the registry archive. The stack resolves the Linux workerd binary when it loads, and the Vite build loads TanStack Start's default entries. Leave the duplicate workerd binary out. Co-authored-by: Jonathan Beckman --- .github/workflows/registry-dry-run.yml | 7 +++++-- .github/workflows/release.yml | 7 +++++-- .tegami/2026-11-13-fix-registry-deploy-dependencies.md | 2 +- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/.github/workflows/registry-dry-run.yml b/.github/workflows/registry-dry-run.yml index e3089982..cf07ac9a 100644 --- a/.github/workflows/registry-dry-run.yml +++ b/.github/workflows/registry-dry-run.yml @@ -67,11 +67,14 @@ jobs: # Alchemy's Node export for this subpath is the TypeScript source. !node_modules/**/alchemy/src/Runtime/Bootstrap/** !node_modules/**/alchemy/src/Runtime/Bootstrap/**/*.ts + # The deploy-time Vite build loads these TanStack Start entries. + !node_modules/**/@tanstack/react-start/dist/plugin/default-entry/** + !node_modules/**/@tanstack/react-start/dist/plugin/default-entry/**/*.ts + !node_modules/**/@tanstack/react-start/dist/plugin/default-entry/**/*.tsx node_modules/.store/drizzle-kit@* node_modules/.store/@electric-sql+* + # Duplicate of @cloudflare/workerd-linux-64. The stack resolves that package when it loads. node_modules/.store/workerd@*/node_modules/workerd/bin/workerd - # The 1.20261002.1 binary ships as @cloudflare/workerd-linux-64. - node_modules/.store/@cloudflare+workerd-linux-64@*/node_modules/@cloudflare/workerd-linux-64/bin/workerd # esbuild's JavaScript API loads @esbuild/linux-x64. This path is a second copy. node_modules/.store/esbuild@*/node_modules/esbuild/bin/esbuild # TypeScript's native binary. Alchemy transpiles the stack with Oxc. diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f004b10c..d0fd0ea9 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -148,11 +148,14 @@ jobs: # Alchemy's Node export for this subpath is the TypeScript source. !node_modules/**/alchemy/src/Runtime/Bootstrap/** !node_modules/**/alchemy/src/Runtime/Bootstrap/**/*.ts + # The deploy-time Vite build loads these TanStack Start entries. + !node_modules/**/@tanstack/react-start/dist/plugin/default-entry/** + !node_modules/**/@tanstack/react-start/dist/plugin/default-entry/**/*.ts + !node_modules/**/@tanstack/react-start/dist/plugin/default-entry/**/*.tsx node_modules/.store/drizzle-kit@* node_modules/.store/@electric-sql+* + # Duplicate of @cloudflare/workerd-linux-64. The stack resolves that package when it loads. node_modules/.store/workerd@*/node_modules/workerd/bin/workerd - # The 1.20261002.1 binary ships as @cloudflare/workerd-linux-64. - node_modules/.store/@cloudflare+workerd-linux-64@*/node_modules/@cloudflare/workerd-linux-64/bin/workerd # esbuild's JavaScript API loads @esbuild/linux-x64. This path is a second copy. node_modules/.store/esbuild@*/node_modules/esbuild/bin/esbuild # TypeScript's native binary. Alchemy transpiles the stack with Oxc. diff --git a/.tegami/2026-11-13-fix-registry-deploy-dependencies.md b/.tegami/2026-11-13-fix-registry-deploy-dependencies.md index 6c07570a..20caace7 100644 --- a/.tegami/2026-11-13-fix-registry-deploy-dependencies.md +++ b/.tegami/2026-11-13-fix-registry-deploy-dependencies.md @@ -5,4 +5,4 @@ packages: ## Keep deploy dependencies in the registry archive -alchemy.new deploys the published archive and does not install packages. The archive now keeps `@alchemy.run/cloudflare` for the API and the app, and `@vitejs/plugin-react` for the dashboard build. Deploy this patch of `solzero/solstatus`. No setting change is required. +alchemy.new deploys the published archive and does not install packages. The archive now keeps `@alchemy.run/cloudflare` for the API and the app, and `@vitejs/plugin-react` for the dashboard build. It also keeps the Linux `workerd` binary and the TanStack Start entries that the deploy loads. Deploy this patch of `solzero/solstatus`. No setting change is required.