Releases: stevenfackley/StackAlchemist
Releases · stevenfackley/StackAlchemist
Release f3255823717b8a387f7cc0a817c29b88935033ab
Changelog
All notable changes to this project will be documented in this file.
[unreleased]
Bug Fixes
- Harden deploy pipeline for zero-downtime and reboot resilience
- Add git to builder and wget to runtime for sa-web health checks
- Fix Dockerfile syntax and sync frontend lockfile
- Ensure Docker network exists and robustify fallback logic
- Deploy engine and worker alongside web and add health checks
- Add git to web-builder, set engine port, fix healthz endpoint
- Copy .env to Next.js project dir so E2E tests get env vars
- Stabilize e2e contracts and enforce hybrid github actions gates
- Stabilize test environment integration workflow
- Correct secret mapping for e2e and deploy workflows
- Skip E2E integration gracefully when secrets are placeholder values
- Pin test deploy to x64 self-hosted runner
- Stabilize infrastructure and switch to npm
- Complete transition to npm and stabilize deployments
- Prevent port conflicts in test deployment by removing all standalone containers
- Ensure consistent container names in test deployment for health checks
- Complete transition to npm and stabilize deployments
- Prevent port conflicts in test deployment by removing all standalone containers
- Ensure consistent container names in test deployment for health checks
- Build production images sequentially to reduce runner resource pressure
- Build production images sequentially to reduce runner resource pressure
- Harden self-hosted deploy workflows
- Force-recreate on prod deploy to handle restart=always containers after reboot
- Eliminate band-aids with permanent root-cause fixes
- Fix prod deploy cancellation and test tunnel network disconnect
- Force-recreate on prod deploy to handle restart=always containers after reboot
- Rm named containers before compose-up; add maintenance page for both envs
- Rm named containers before compose-up; add maintenance page for both envs
- Harden tunnel, CI/CD runner, and LLM error surfacing
- Use 127.0.0.1 in nginx healthcheck (localhost resolves to IPv6 in alpine)
- Add ANTHROPIC_MODEL env var to prod compose; switch to claude-sonnet-4-5-20250929
- Deserialize ProjectType enum from JSON string + add ANTHROPIC_MODEL to prod compose
- Rename simple-mode-schema.ts → .tsx (contains JSX, lint parse error)
- Correct secret mapping for e2e and deploy workflows
- Skip E2E integration gracefully when secrets are placeholder values
- Align @ alias with Next.js tsconfig paths
- Add missing files that were never committed
- Harden CF tunnel routing + close SEO/a11y audit gaps
- Add parserOptions.ecmaFeatures.jsx to eslintrc — fix parse error in .tsx files
- Batch A — SSR h1s, landmarks, metadata, docs/content COPY
- Un-ignore docs/ and scope *.md to repo root
- Drop generateImageMetadata — 404'd with id-keyed URL
- Unblock CA2007 analyzer + vitest IntersectionObserver constructor
- Unblock CI — dedupe h1s, scope test CA2007
- Suppress CA2007 in Worker.Tests (symmetry with Engine.Tests)
- Migrate PostCSS pipeline to Tailwind v4 (#46)
- Unbreak CI — pin eslint ^9, complete eslint-config-next 16, migrate to flat config (#65)
- Re-pin eslint ^9, ignore eslint majors in dependabot.yml (#73)
- Close 10 code-scanning alerts
- Mask email PII in logs + bump postcss to ^8.5.10 (#78)
- Wire ITierGatingService into orchestrator + skip codegen on Tier 1 (#84)
- Serialize Release workflow to prevent changelog-commit race (#87)
- Clear three engine errors blocking nightly simple-mode-flow E2E (#92) (#94)
- Pin .NET base images to :10.0-resolute (#95)
- Derive SUPABASE_DB_PASSWORD from CI_SUPABASE_DB_URL (#96)
- Unbreak test-site noindex, correct FAQ AI model, noindex auth pages
- Persist status + inline NEXT_PUBLIC into web image
- Reject placeholder anon keys so misconfig fails loud
- Deliver Tier-0 Spark preview end-to-end in prod
- Ship template sets into the engine image so prod codegen resolves them
- Cross-origin isolate /generate so StackBlitz embed runs
- Re-fetch generation status after subscribe to close tier-0 redirect race
- Close tier-0 redirect race in advanced-mode subscription
- Persist purchased tier on paid upgrade so download unlocks
- Drop dead "continue without account" link on login
- Register IEmailService so CompileWorkerService can start
- Resolve upstreams at request time to stop prod 502s (#119)
- Fill the homepage prompt builder and clean launch-console copy (#120)
- Match deploy page to brand (logo + blue accent) (#121)
- Auto-return visitors to the app once the deploy finishes (#122)
- Return 503 from deploy shim so recovery poll works (#125)
- Atomic Stripe webhook, error taxonomy, and tier-race fix (#138)
- Periodic reconciler with re-enqueue, delivery hardening, input limits (#139)
- A11y completion (F9) (#148)
Dependencies
- Bump softprops/action-gh-release from 2 to 3 (#25)
- Bump actions/setup-node from 5 to 6 (#27)
- Bump aws-actions/configure-aws-credentials from 5 to 6 (#29)
- Bump actions/checkout from 5 to 6 (#26)
- Bump styled-jsx in /src/StackAlchemist.Web (#16)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#14)
- Bump pytest 8.3.3 -> 9.0.3 in V1-Python-React template
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#43)
- Bump @supabase/ssr in /src/StackAlchemist.Web (#39)
- Bump docker/build-push-action from 6 to 7 (#35)
- Bump docker/setup-buildx-action from 3 to 4 (#34)
- Bump actions/upload-artifact from 4 to 7 (#33)
- Bump python-dotenv (#52)
- Bump lucide-react in /src/StackAlchemist.Web (#55)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#60)
- Bump the next-react group across 1 directory with 4 updates (#53)
- Bump Node 20 → 22 (Node 20 LTS ended 2026-04-30)
- Bump Node 22 → 24 (skip the layover, latest LTS)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#71)
- Bump lucide-react in /src/StackAlchemist.Web (#70)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#74)
- Bump node from 24-alpine to 26-alpine (#98)
- Bump tailwind-merge in /src/StackAlchemist.Web (#103)
- Bump the next-react group (#99)
- Bump @supabase/ssr in /src/StackAlchemist.Web (#101)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#105)
- Bump lucide-react in /src/StackAlchemist.Web (#109)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#111)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#116)
- Bump next (#118)
- Bump lucide-react in /src/StackAlchemist.Web (#129)
- Bump the next-react group across 1 directory with 4 updates (#126)
- Bump @xyflow/react in /src/StackAlchemist.Web (#128)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#131)
- Bump lucide-react in /src/StackAlchemist.Web (#159)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#161)
- Bump the next-react group across 1 directory with 2 updates (#155)
- Bump @supabase/ssr in /...
Release e00a8cd64e30b9396d7d3b9d21c9c4443f32951f
Changelog
All notable changes to this project will be documented in this file.
[unreleased]
Bug Fixes
- Harden deploy pipeline for zero-downtime and reboot resilience
- Add git to builder and wget to runtime for sa-web health checks
- Fix Dockerfile syntax and sync frontend lockfile
- Ensure Docker network exists and robustify fallback logic
- Deploy engine and worker alongside web and add health checks
- Add git to web-builder, set engine port, fix healthz endpoint
- Copy .env to Next.js project dir so E2E tests get env vars
- Stabilize e2e contracts and enforce hybrid github actions gates
- Stabilize test environment integration workflow
- Correct secret mapping for e2e and deploy workflows
- Skip E2E integration gracefully when secrets are placeholder values
- Pin test deploy to x64 self-hosted runner
- Stabilize infrastructure and switch to npm
- Complete transition to npm and stabilize deployments
- Prevent port conflicts in test deployment by removing all standalone containers
- Ensure consistent container names in test deployment for health checks
- Complete transition to npm and stabilize deployments
- Prevent port conflicts in test deployment by removing all standalone containers
- Ensure consistent container names in test deployment for health checks
- Build production images sequentially to reduce runner resource pressure
- Build production images sequentially to reduce runner resource pressure
- Harden self-hosted deploy workflows
- Force-recreate on prod deploy to handle restart=always containers after reboot
- Eliminate band-aids with permanent root-cause fixes
- Fix prod deploy cancellation and test tunnel network disconnect
- Force-recreate on prod deploy to handle restart=always containers after reboot
- Rm named containers before compose-up; add maintenance page for both envs
- Rm named containers before compose-up; add maintenance page for both envs
- Harden tunnel, CI/CD runner, and LLM error surfacing
- Use 127.0.0.1 in nginx healthcheck (localhost resolves to IPv6 in alpine)
- Add ANTHROPIC_MODEL env var to prod compose; switch to claude-sonnet-4-5-20250929
- Deserialize ProjectType enum from JSON string + add ANTHROPIC_MODEL to prod compose
- Rename simple-mode-schema.ts → .tsx (contains JSX, lint parse error)
- Correct secret mapping for e2e and deploy workflows
- Skip E2E integration gracefully when secrets are placeholder values
- Align @ alias with Next.js tsconfig paths
- Add missing files that were never committed
- Harden CF tunnel routing + close SEO/a11y audit gaps
- Add parserOptions.ecmaFeatures.jsx to eslintrc — fix parse error in .tsx files
- Batch A — SSR h1s, landmarks, metadata, docs/content COPY
- Un-ignore docs/ and scope *.md to repo root
- Drop generateImageMetadata — 404'd with id-keyed URL
- Unblock CA2007 analyzer + vitest IntersectionObserver constructor
- Unblock CI — dedupe h1s, scope test CA2007
- Suppress CA2007 in Worker.Tests (symmetry with Engine.Tests)
- Migrate PostCSS pipeline to Tailwind v4 (#46)
- Unbreak CI — pin eslint ^9, complete eslint-config-next 16, migrate to flat config (#65)
- Re-pin eslint ^9, ignore eslint majors in dependabot.yml (#73)
- Close 10 code-scanning alerts
- Mask email PII in logs + bump postcss to ^8.5.10 (#78)
- Wire ITierGatingService into orchestrator + skip codegen on Tier 1 (#84)
- Serialize Release workflow to prevent changelog-commit race (#87)
- Clear three engine errors blocking nightly simple-mode-flow E2E (#92) (#94)
- Pin .NET base images to :10.0-resolute (#95)
- Derive SUPABASE_DB_PASSWORD from CI_SUPABASE_DB_URL (#96)
- Unbreak test-site noindex, correct FAQ AI model, noindex auth pages
- Persist status + inline NEXT_PUBLIC into web image
- Reject placeholder anon keys so misconfig fails loud
- Deliver Tier-0 Spark preview end-to-end in prod
- Ship template sets into the engine image so prod codegen resolves them
- Cross-origin isolate /generate so StackBlitz embed runs
- Re-fetch generation status after subscribe to close tier-0 redirect race
- Close tier-0 redirect race in advanced-mode subscription
- Persist purchased tier on paid upgrade so download unlocks
- Drop dead "continue without account" link on login
- Register IEmailService so CompileWorkerService can start
- Resolve upstreams at request time to stop prod 502s (#119)
- Fill the homepage prompt builder and clean launch-console copy (#120)
- Match deploy page to brand (logo + blue accent) (#121)
- Auto-return visitors to the app once the deploy finishes (#122)
- Return 503 from deploy shim so recovery poll works (#125)
- Atomic Stripe webhook, error taxonomy, and tier-race fix (#138)
- Periodic reconciler with re-enqueue, delivery hardening, input limits (#139)
- A11y completion (F9) (#148)
Dependencies
- Bump softprops/action-gh-release from 2 to 3 (#25)
- Bump actions/setup-node from 5 to 6 (#27)
- Bump aws-actions/configure-aws-credentials from 5 to 6 (#29)
- Bump actions/checkout from 5 to 6 (#26)
- Bump styled-jsx in /src/StackAlchemist.Web (#16)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#14)
- Bump pytest 8.3.3 -> 9.0.3 in V1-Python-React template
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#43)
- Bump @supabase/ssr in /src/StackAlchemist.Web (#39)
- Bump docker/build-push-action from 6 to 7 (#35)
- Bump docker/setup-buildx-action from 3 to 4 (#34)
- Bump actions/upload-artifact from 4 to 7 (#33)
- Bump python-dotenv (#52)
- Bump lucide-react in /src/StackAlchemist.Web (#55)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#60)
- Bump the next-react group across 1 directory with 4 updates (#53)
- Bump Node 20 → 22 (Node 20 LTS ended 2026-04-30)
- Bump Node 22 → 24 (skip the layover, latest LTS)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#71)
- Bump lucide-react in /src/StackAlchemist.Web (#70)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#74)
- Bump node from 24-alpine to 26-alpine (#98)
- Bump tailwind-merge in /src/StackAlchemist.Web (#103)
- Bump the next-react group (#99)
- Bump @supabase/ssr in /src/StackAlchemist.Web (#101)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#105)
- Bump lucide-react in /src/StackAlchemist.Web (#109)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#111)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#116)
- Bump next (#118)
- Bump lucide-react in /src/StackAlchemist.Web (#129)
- Bump the next-react group across 1 directory with 4 updates (#126)
- Bump @xyflow/react in /src/StackAlchemist.Web (#128)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#131)
- Bump lucide-react in /src/StackAlchemist.Web (#159)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#161)
Documentation
- Update production release and deployment documentation to reflect automated main branch trigger
- Sync documentation with current code...
Release c9bf2333918315f1e2fc7b81711f22cdc2098e56
Changelog
All notable changes to this project will be documented in this file.
[unreleased]
Bug Fixes
- Harden deploy pipeline for zero-downtime and reboot resilience
- Add git to builder and wget to runtime for sa-web health checks
- Fix Dockerfile syntax and sync frontend lockfile
- Ensure Docker network exists and robustify fallback logic
- Deploy engine and worker alongside web and add health checks
- Add git to web-builder, set engine port, fix healthz endpoint
- Copy .env to Next.js project dir so E2E tests get env vars
- Stabilize e2e contracts and enforce hybrid github actions gates
- Stabilize test environment integration workflow
- Correct secret mapping for e2e and deploy workflows
- Skip E2E integration gracefully when secrets are placeholder values
- Pin test deploy to x64 self-hosted runner
- Stabilize infrastructure and switch to npm
- Complete transition to npm and stabilize deployments
- Prevent port conflicts in test deployment by removing all standalone containers
- Ensure consistent container names in test deployment for health checks
- Complete transition to npm and stabilize deployments
- Prevent port conflicts in test deployment by removing all standalone containers
- Ensure consistent container names in test deployment for health checks
- Build production images sequentially to reduce runner resource pressure
- Build production images sequentially to reduce runner resource pressure
- Harden self-hosted deploy workflows
- Force-recreate on prod deploy to handle restart=always containers after reboot
- Eliminate band-aids with permanent root-cause fixes
- Fix prod deploy cancellation and test tunnel network disconnect
- Force-recreate on prod deploy to handle restart=always containers after reboot
- Rm named containers before compose-up; add maintenance page for both envs
- Rm named containers before compose-up; add maintenance page for both envs
- Harden tunnel, CI/CD runner, and LLM error surfacing
- Use 127.0.0.1 in nginx healthcheck (localhost resolves to IPv6 in alpine)
- Add ANTHROPIC_MODEL env var to prod compose; switch to claude-sonnet-4-5-20250929
- Deserialize ProjectType enum from JSON string + add ANTHROPIC_MODEL to prod compose
- Rename simple-mode-schema.ts → .tsx (contains JSX, lint parse error)
- Correct secret mapping for e2e and deploy workflows
- Skip E2E integration gracefully when secrets are placeholder values
- Align @ alias with Next.js tsconfig paths
- Add missing files that were never committed
- Harden CF tunnel routing + close SEO/a11y audit gaps
- Add parserOptions.ecmaFeatures.jsx to eslintrc — fix parse error in .tsx files
- Batch A — SSR h1s, landmarks, metadata, docs/content COPY
- Un-ignore docs/ and scope *.md to repo root
- Drop generateImageMetadata — 404'd with id-keyed URL
- Unblock CA2007 analyzer + vitest IntersectionObserver constructor
- Unblock CI — dedupe h1s, scope test CA2007
- Suppress CA2007 in Worker.Tests (symmetry with Engine.Tests)
- Migrate PostCSS pipeline to Tailwind v4 (#46)
- Unbreak CI — pin eslint ^9, complete eslint-config-next 16, migrate to flat config (#65)
- Re-pin eslint ^9, ignore eslint majors in dependabot.yml (#73)
- Close 10 code-scanning alerts
- Mask email PII in logs + bump postcss to ^8.5.10 (#78)
- Wire ITierGatingService into orchestrator + skip codegen on Tier 1 (#84)
- Serialize Release workflow to prevent changelog-commit race (#87)
- Clear three engine errors blocking nightly simple-mode-flow E2E (#92) (#94)
- Pin .NET base images to :10.0-resolute (#95)
- Derive SUPABASE_DB_PASSWORD from CI_SUPABASE_DB_URL (#96)
- Unbreak test-site noindex, correct FAQ AI model, noindex auth pages
- Persist status + inline NEXT_PUBLIC into web image
- Reject placeholder anon keys so misconfig fails loud
- Deliver Tier-0 Spark preview end-to-end in prod
- Ship template sets into the engine image so prod codegen resolves them
- Cross-origin isolate /generate so StackBlitz embed runs
- Re-fetch generation status after subscribe to close tier-0 redirect race
- Close tier-0 redirect race in advanced-mode subscription
- Persist purchased tier on paid upgrade so download unlocks
- Drop dead "continue without account" link on login
- Register IEmailService so CompileWorkerService can start
- Resolve upstreams at request time to stop prod 502s (#119)
- Fill the homepage prompt builder and clean launch-console copy (#120)
- Match deploy page to brand (logo + blue accent) (#121)
- Auto-return visitors to the app once the deploy finishes (#122)
- Return 503 from deploy shim so recovery poll works (#125)
- Atomic Stripe webhook, error taxonomy, and tier-race fix (#138)
- Periodic reconciler with re-enqueue, delivery hardening, input limits (#139)
- A11y completion (F9) (#148)
Dependencies
- Bump softprops/action-gh-release from 2 to 3 (#25)
- Bump actions/setup-node from 5 to 6 (#27)
- Bump aws-actions/configure-aws-credentials from 5 to 6 (#29)
- Bump actions/checkout from 5 to 6 (#26)
- Bump styled-jsx in /src/StackAlchemist.Web (#16)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#14)
- Bump pytest 8.3.3 -> 9.0.3 in V1-Python-React template
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#43)
- Bump @supabase/ssr in /src/StackAlchemist.Web (#39)
- Bump docker/build-push-action from 6 to 7 (#35)
- Bump docker/setup-buildx-action from 3 to 4 (#34)
- Bump actions/upload-artifact from 4 to 7 (#33)
- Bump python-dotenv (#52)
- Bump lucide-react in /src/StackAlchemist.Web (#55)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#60)
- Bump the next-react group across 1 directory with 4 updates (#53)
- Bump Node 20 → 22 (Node 20 LTS ended 2026-04-30)
- Bump Node 22 → 24 (skip the layover, latest LTS)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#71)
- Bump lucide-react in /src/StackAlchemist.Web (#70)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#74)
- Bump node from 24-alpine to 26-alpine (#98)
- Bump tailwind-merge in /src/StackAlchemist.Web (#103)
- Bump the next-react group (#99)
- Bump @supabase/ssr in /src/StackAlchemist.Web (#101)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#105)
- Bump lucide-react in /src/StackAlchemist.Web (#109)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#111)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#116)
- Bump next (#118)
- Bump lucide-react in /src/StackAlchemist.Web (#129)
- Bump the next-react group across 1 directory with 4 updates (#126)
- Bump @xyflow/react in /src/StackAlchemist.Web (#128)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#131)
- Bump lucide-react in /src/StackAlchemist.Web (#159)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#161)
Documentation
- Update production release and deployment documentation to reflect automated main branch trigger
- Sync documentation with current code...
Release 93450fedf025f9de96b51287c1b6ee8cff7f3f83
Changelog
All notable changes to this project will be documented in this file.
[unreleased]
Bug Fixes
- Harden deploy pipeline for zero-downtime and reboot resilience
- Add git to builder and wget to runtime for sa-web health checks
- Fix Dockerfile syntax and sync frontend lockfile
- Ensure Docker network exists and robustify fallback logic
- Deploy engine and worker alongside web and add health checks
- Add git to web-builder, set engine port, fix healthz endpoint
- Copy .env to Next.js project dir so E2E tests get env vars
- Stabilize e2e contracts and enforce hybrid github actions gates
- Stabilize test environment integration workflow
- Correct secret mapping for e2e and deploy workflows
- Skip E2E integration gracefully when secrets are placeholder values
- Pin test deploy to x64 self-hosted runner
- Stabilize infrastructure and switch to npm
- Complete transition to npm and stabilize deployments
- Prevent port conflicts in test deployment by removing all standalone containers
- Ensure consistent container names in test deployment for health checks
- Complete transition to npm and stabilize deployments
- Prevent port conflicts in test deployment by removing all standalone containers
- Ensure consistent container names in test deployment for health checks
- Build production images sequentially to reduce runner resource pressure
- Build production images sequentially to reduce runner resource pressure
- Harden self-hosted deploy workflows
- Force-recreate on prod deploy to handle restart=always containers after reboot
- Eliminate band-aids with permanent root-cause fixes
- Fix prod deploy cancellation and test tunnel network disconnect
- Force-recreate on prod deploy to handle restart=always containers after reboot
- Rm named containers before compose-up; add maintenance page for both envs
- Rm named containers before compose-up; add maintenance page for both envs
- Harden tunnel, CI/CD runner, and LLM error surfacing
- Use 127.0.0.1 in nginx healthcheck (localhost resolves to IPv6 in alpine)
- Add ANTHROPIC_MODEL env var to prod compose; switch to claude-sonnet-4-5-20250929
- Deserialize ProjectType enum from JSON string + add ANTHROPIC_MODEL to prod compose
- Rename simple-mode-schema.ts → .tsx (contains JSX, lint parse error)
- Correct secret mapping for e2e and deploy workflows
- Skip E2E integration gracefully when secrets are placeholder values
- Align @ alias with Next.js tsconfig paths
- Add missing files that were never committed
- Harden CF tunnel routing + close SEO/a11y audit gaps
- Add parserOptions.ecmaFeatures.jsx to eslintrc — fix parse error in .tsx files
- Batch A — SSR h1s, landmarks, metadata, docs/content COPY
- Un-ignore docs/ and scope *.md to repo root
- Drop generateImageMetadata — 404'd with id-keyed URL
- Unblock CA2007 analyzer + vitest IntersectionObserver constructor
- Unblock CI — dedupe h1s, scope test CA2007
- Suppress CA2007 in Worker.Tests (symmetry with Engine.Tests)
- Migrate PostCSS pipeline to Tailwind v4 (#46)
- Unbreak CI — pin eslint ^9, complete eslint-config-next 16, migrate to flat config (#65)
- Re-pin eslint ^9, ignore eslint majors in dependabot.yml (#73)
- Close 10 code-scanning alerts
- Mask email PII in logs + bump postcss to ^8.5.10 (#78)
- Wire ITierGatingService into orchestrator + skip codegen on Tier 1 (#84)
- Serialize Release workflow to prevent changelog-commit race (#87)
- Clear three engine errors blocking nightly simple-mode-flow E2E (#92) (#94)
- Pin .NET base images to :10.0-resolute (#95)
- Derive SUPABASE_DB_PASSWORD from CI_SUPABASE_DB_URL (#96)
- Unbreak test-site noindex, correct FAQ AI model, noindex auth pages
- Persist status + inline NEXT_PUBLIC into web image
- Reject placeholder anon keys so misconfig fails loud
- Deliver Tier-0 Spark preview end-to-end in prod
- Ship template sets into the engine image so prod codegen resolves them
- Cross-origin isolate /generate so StackBlitz embed runs
- Re-fetch generation status after subscribe to close tier-0 redirect race
- Close tier-0 redirect race in advanced-mode subscription
- Persist purchased tier on paid upgrade so download unlocks
- Drop dead "continue without account" link on login
- Register IEmailService so CompileWorkerService can start
- Resolve upstreams at request time to stop prod 502s (#119)
- Fill the homepage prompt builder and clean launch-console copy (#120)
- Match deploy page to brand (logo + blue accent) (#121)
- Auto-return visitors to the app once the deploy finishes (#122)
- Return 503 from deploy shim so recovery poll works (#125)
- Atomic Stripe webhook, error taxonomy, and tier-race fix (#138)
- Periodic reconciler with re-enqueue, delivery hardening, input limits (#139)
- A11y completion (F9) (#148)
Dependencies
- Bump softprops/action-gh-release from 2 to 3 (#25)
- Bump actions/setup-node from 5 to 6 (#27)
- Bump aws-actions/configure-aws-credentials from 5 to 6 (#29)
- Bump actions/checkout from 5 to 6 (#26)
- Bump styled-jsx in /src/StackAlchemist.Web (#16)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#14)
- Bump pytest 8.3.3 -> 9.0.3 in V1-Python-React template
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#43)
- Bump @supabase/ssr in /src/StackAlchemist.Web (#39)
- Bump docker/build-push-action from 6 to 7 (#35)
- Bump docker/setup-buildx-action from 3 to 4 (#34)
- Bump actions/upload-artifact from 4 to 7 (#33)
- Bump python-dotenv (#52)
- Bump lucide-react in /src/StackAlchemist.Web (#55)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#60)
- Bump the next-react group across 1 directory with 4 updates (#53)
- Bump Node 20 → 22 (Node 20 LTS ended 2026-04-30)
- Bump Node 22 → 24 (skip the layover, latest LTS)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#71)
- Bump lucide-react in /src/StackAlchemist.Web (#70)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#74)
- Bump node from 24-alpine to 26-alpine (#98)
- Bump tailwind-merge in /src/StackAlchemist.Web (#103)
- Bump the next-react group (#99)
- Bump @supabase/ssr in /src/StackAlchemist.Web (#101)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#105)
- Bump lucide-react in /src/StackAlchemist.Web (#109)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#111)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#116)
- Bump next (#118)
- Bump lucide-react in /src/StackAlchemist.Web (#129)
- Bump the next-react group across 1 directory with 4 updates (#126)
- Bump @xyflow/react in /src/StackAlchemist.Web (#128)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#131)
Documentation
- Update production release and deployment documentation to reflect automated main branch trigger
- Sync documentation with current codebase state
- Add Show HN draft + Product Hunt hunter strategy
- Add CODE_AUDIT.md and HANDOFF.md
- Update with session 2 progress
- Correct scope — root error.tsx pre-existed
- Note AWSSDK.S3 3→4, eslint 9→10, lucide-react 0→1 majors from 20...
Release 8ab09250669ab5d9933e2252ea7db8b45dbb5b5f
Changelog
All notable changes to this project will be documented in this file.
[unreleased]
Bug Fixes
- Harden deploy pipeline for zero-downtime and reboot resilience
- Add git to builder and wget to runtime for sa-web health checks
- Fix Dockerfile syntax and sync frontend lockfile
- Ensure Docker network exists and robustify fallback logic
- Deploy engine and worker alongside web and add health checks
- Add git to web-builder, set engine port, fix healthz endpoint
- Copy .env to Next.js project dir so E2E tests get env vars
- Stabilize e2e contracts and enforce hybrid github actions gates
- Stabilize test environment integration workflow
- Correct secret mapping for e2e and deploy workflows
- Skip E2E integration gracefully when secrets are placeholder values
- Pin test deploy to x64 self-hosted runner
- Stabilize infrastructure and switch to npm
- Complete transition to npm and stabilize deployments
- Prevent port conflicts in test deployment by removing all standalone containers
- Ensure consistent container names in test deployment for health checks
- Complete transition to npm and stabilize deployments
- Prevent port conflicts in test deployment by removing all standalone containers
- Ensure consistent container names in test deployment for health checks
- Build production images sequentially to reduce runner resource pressure
- Build production images sequentially to reduce runner resource pressure
- Harden self-hosted deploy workflows
- Force-recreate on prod deploy to handle restart=always containers after reboot
- Eliminate band-aids with permanent root-cause fixes
- Fix prod deploy cancellation and test tunnel network disconnect
- Force-recreate on prod deploy to handle restart=always containers after reboot
- Rm named containers before compose-up; add maintenance page for both envs
- Rm named containers before compose-up; add maintenance page for both envs
- Harden tunnel, CI/CD runner, and LLM error surfacing
- Use 127.0.0.1 in nginx healthcheck (localhost resolves to IPv6 in alpine)
- Add ANTHROPIC_MODEL env var to prod compose; switch to claude-sonnet-4-5-20250929
- Deserialize ProjectType enum from JSON string + add ANTHROPIC_MODEL to prod compose
- Rename simple-mode-schema.ts → .tsx (contains JSX, lint parse error)
- Correct secret mapping for e2e and deploy workflows
- Skip E2E integration gracefully when secrets are placeholder values
- Align @ alias with Next.js tsconfig paths
- Add missing files that were never committed
- Harden CF tunnel routing + close SEO/a11y audit gaps
- Add parserOptions.ecmaFeatures.jsx to eslintrc — fix parse error in .tsx files
- Batch A — SSR h1s, landmarks, metadata, docs/content COPY
- Un-ignore docs/ and scope *.md to repo root
- Drop generateImageMetadata — 404'd with id-keyed URL
- Unblock CA2007 analyzer + vitest IntersectionObserver constructor
- Unblock CI — dedupe h1s, scope test CA2007
- Suppress CA2007 in Worker.Tests (symmetry with Engine.Tests)
- Migrate PostCSS pipeline to Tailwind v4 (#46)
- Unbreak CI — pin eslint ^9, complete eslint-config-next 16, migrate to flat config (#65)
- Re-pin eslint ^9, ignore eslint majors in dependabot.yml (#73)
- Close 10 code-scanning alerts
- Mask email PII in logs + bump postcss to ^8.5.10 (#78)
- Wire ITierGatingService into orchestrator + skip codegen on Tier 1 (#84)
- Serialize Release workflow to prevent changelog-commit race (#87)
- Clear three engine errors blocking nightly simple-mode-flow E2E (#92) (#94)
- Pin .NET base images to :10.0-resolute (#95)
- Derive SUPABASE_DB_PASSWORD from CI_SUPABASE_DB_URL (#96)
- Unbreak test-site noindex, correct FAQ AI model, noindex auth pages
- Persist status + inline NEXT_PUBLIC into web image
- Reject placeholder anon keys so misconfig fails loud
- Deliver Tier-0 Spark preview end-to-end in prod
- Ship template sets into the engine image so prod codegen resolves them
- Cross-origin isolate /generate so StackBlitz embed runs
- Re-fetch generation status after subscribe to close tier-0 redirect race
- Close tier-0 redirect race in advanced-mode subscription
- Persist purchased tier on paid upgrade so download unlocks
- Drop dead "continue without account" link on login
- Register IEmailService so CompileWorkerService can start
- Resolve upstreams at request time to stop prod 502s (#119)
- Fill the homepage prompt builder and clean launch-console copy (#120)
- Match deploy page to brand (logo + blue accent) (#121)
- Auto-return visitors to the app once the deploy finishes (#122)
- Return 503 from deploy shim so recovery poll works (#125)
- Atomic Stripe webhook, error taxonomy, and tier-race fix (#138)
- Periodic reconciler with re-enqueue, delivery hardening, input limits (#139)
- A11y completion (F9) (#148)
Dependencies
- Bump softprops/action-gh-release from 2 to 3 (#25)
- Bump actions/setup-node from 5 to 6 (#27)
- Bump aws-actions/configure-aws-credentials from 5 to 6 (#29)
- Bump actions/checkout from 5 to 6 (#26)
- Bump styled-jsx in /src/StackAlchemist.Web (#16)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#14)
- Bump pytest 8.3.3 -> 9.0.3 in V1-Python-React template
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#43)
- Bump @supabase/ssr in /src/StackAlchemist.Web (#39)
- Bump docker/build-push-action from 6 to 7 (#35)
- Bump docker/setup-buildx-action from 3 to 4 (#34)
- Bump actions/upload-artifact from 4 to 7 (#33)
- Bump python-dotenv (#52)
- Bump lucide-react in /src/StackAlchemist.Web (#55)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#60)
- Bump the next-react group across 1 directory with 4 updates (#53)
- Bump Node 20 → 22 (Node 20 LTS ended 2026-04-30)
- Bump Node 22 → 24 (skip the layover, latest LTS)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#71)
- Bump lucide-react in /src/StackAlchemist.Web (#70)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#74)
- Bump node from 24-alpine to 26-alpine (#98)
- Bump tailwind-merge in /src/StackAlchemist.Web (#103)
- Bump the next-react group (#99)
- Bump @supabase/ssr in /src/StackAlchemist.Web (#101)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#105)
- Bump lucide-react in /src/StackAlchemist.Web (#109)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#111)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#116)
- Bump next (#118)
- Bump lucide-react in /src/StackAlchemist.Web (#129)
- Bump the next-react group across 1 directory with 4 updates (#126)
- Bump @xyflow/react in /src/StackAlchemist.Web (#128)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#131)
- Bump lucide-react in /src/StackAlchemist.Web (#159)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#161)
Documentation
- Update production release and deployment documentation to reflect automated main branch trigger
- Sync documentation with current code...
Release 407dba202f2cb0af96a480ec7d01c435aa2dd399
Changelog
All notable changes to this project will be documented in this file.
[unreleased]
Bug Fixes
- Harden deploy pipeline for zero-downtime and reboot resilience
- Add git to builder and wget to runtime for sa-web health checks
- Fix Dockerfile syntax and sync frontend lockfile
- Ensure Docker network exists and robustify fallback logic
- Deploy engine and worker alongside web and add health checks
- Add git to web-builder, set engine port, fix healthz endpoint
- Copy .env to Next.js project dir so E2E tests get env vars
- Stabilize e2e contracts and enforce hybrid github actions gates
- Stabilize test environment integration workflow
- Correct secret mapping for e2e and deploy workflows
- Skip E2E integration gracefully when secrets are placeholder values
- Pin test deploy to x64 self-hosted runner
- Stabilize infrastructure and switch to npm
- Complete transition to npm and stabilize deployments
- Prevent port conflicts in test deployment by removing all standalone containers
- Ensure consistent container names in test deployment for health checks
- Complete transition to npm and stabilize deployments
- Prevent port conflicts in test deployment by removing all standalone containers
- Ensure consistent container names in test deployment for health checks
- Build production images sequentially to reduce runner resource pressure
- Build production images sequentially to reduce runner resource pressure
- Harden self-hosted deploy workflows
- Force-recreate on prod deploy to handle restart=always containers after reboot
- Eliminate band-aids with permanent root-cause fixes
- Fix prod deploy cancellation and test tunnel network disconnect
- Force-recreate on prod deploy to handle restart=always containers after reboot
- Rm named containers before compose-up; add maintenance page for both envs
- Rm named containers before compose-up; add maintenance page for both envs
- Harden tunnel, CI/CD runner, and LLM error surfacing
- Use 127.0.0.1 in nginx healthcheck (localhost resolves to IPv6 in alpine)
- Add ANTHROPIC_MODEL env var to prod compose; switch to claude-sonnet-4-5-20250929
- Deserialize ProjectType enum from JSON string + add ANTHROPIC_MODEL to prod compose
- Rename simple-mode-schema.ts → .tsx (contains JSX, lint parse error)
- Correct secret mapping for e2e and deploy workflows
- Skip E2E integration gracefully when secrets are placeholder values
- Align @ alias with Next.js tsconfig paths
- Add missing files that were never committed
- Harden CF tunnel routing + close SEO/a11y audit gaps
- Add parserOptions.ecmaFeatures.jsx to eslintrc — fix parse error in .tsx files
- Batch A — SSR h1s, landmarks, metadata, docs/content COPY
- Un-ignore docs/ and scope *.md to repo root
- Drop generateImageMetadata — 404'd with id-keyed URL
- Unblock CA2007 analyzer + vitest IntersectionObserver constructor
- Unblock CI — dedupe h1s, scope test CA2007
- Suppress CA2007 in Worker.Tests (symmetry with Engine.Tests)
- Migrate PostCSS pipeline to Tailwind v4 (#46)
- Unbreak CI — pin eslint ^9, complete eslint-config-next 16, migrate to flat config (#65)
- Re-pin eslint ^9, ignore eslint majors in dependabot.yml (#73)
- Close 10 code-scanning alerts
- Mask email PII in logs + bump postcss to ^8.5.10 (#78)
- Wire ITierGatingService into orchestrator + skip codegen on Tier 1 (#84)
- Serialize Release workflow to prevent changelog-commit race (#87)
- Clear three engine errors blocking nightly simple-mode-flow E2E (#92) (#94)
- Pin .NET base images to :10.0-resolute (#95)
- Derive SUPABASE_DB_PASSWORD from CI_SUPABASE_DB_URL (#96)
- Unbreak test-site noindex, correct FAQ AI model, noindex auth pages
- Persist status + inline NEXT_PUBLIC into web image
- Reject placeholder anon keys so misconfig fails loud
- Deliver Tier-0 Spark preview end-to-end in prod
- Ship template sets into the engine image so prod codegen resolves them
- Cross-origin isolate /generate so StackBlitz embed runs
- Re-fetch generation status after subscribe to close tier-0 redirect race
- Close tier-0 redirect race in advanced-mode subscription
- Persist purchased tier on paid upgrade so download unlocks
- Drop dead "continue without account" link on login
- Register IEmailService so CompileWorkerService can start
- Resolve upstreams at request time to stop prod 502s (#119)
- Fill the homepage prompt builder and clean launch-console copy (#120)
- Match deploy page to brand (logo + blue accent) (#121)
- Auto-return visitors to the app once the deploy finishes (#122)
- Return 503 from deploy shim so recovery poll works (#125)
- Atomic Stripe webhook, error taxonomy, and tier-race fix (#138)
- Periodic reconciler with re-enqueue, delivery hardening, input limits (#139)
- A11y completion (F9) (#148)
Dependencies
- Bump softprops/action-gh-release from 2 to 3 (#25)
- Bump actions/setup-node from 5 to 6 (#27)
- Bump aws-actions/configure-aws-credentials from 5 to 6 (#29)
- Bump actions/checkout from 5 to 6 (#26)
- Bump styled-jsx in /src/StackAlchemist.Web (#16)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#14)
- Bump pytest 8.3.3 -> 9.0.3 in V1-Python-React template
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#43)
- Bump @supabase/ssr in /src/StackAlchemist.Web (#39)
- Bump docker/build-push-action from 6 to 7 (#35)
- Bump docker/setup-buildx-action from 3 to 4 (#34)
- Bump actions/upload-artifact from 4 to 7 (#33)
- Bump python-dotenv (#52)
- Bump lucide-react in /src/StackAlchemist.Web (#55)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#60)
- Bump the next-react group across 1 directory with 4 updates (#53)
- Bump Node 20 → 22 (Node 20 LTS ended 2026-04-30)
- Bump Node 22 → 24 (skip the layover, latest LTS)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#71)
- Bump lucide-react in /src/StackAlchemist.Web (#70)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#74)
- Bump node from 24-alpine to 26-alpine (#98)
- Bump tailwind-merge in /src/StackAlchemist.Web (#103)
- Bump the next-react group (#99)
- Bump @supabase/ssr in /src/StackAlchemist.Web (#101)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#105)
- Bump lucide-react in /src/StackAlchemist.Web (#109)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#111)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#116)
- Bump next (#118)
- Bump lucide-react in /src/StackAlchemist.Web (#129)
- Bump the next-react group across 1 directory with 4 updates (#126)
- Bump @xyflow/react in /src/StackAlchemist.Web (#128)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#131)
Documentation
- Update production release and deployment documentation to reflect automated main branch trigger
- Sync documentation with current codebase state
- Add Show HN draft + Product Hunt hunter strategy
- Add CODE_AUDIT.md and HANDOFF.md
- Update with session 2 progress
- Correct scope — root error.tsx pre-existed
- Note AWSSDK.S3 3→4, eslint 9→10, lucide-react 0→1 majors from 20...
Release 3dd86950d8161fe7f9aee317f01720ccff42fb8f
Changelog
All notable changes to this project will be documented in this file.
[unreleased]
Bug Fixes
- Harden deploy pipeline for zero-downtime and reboot resilience
- Add git to builder and wget to runtime for sa-web health checks
- Fix Dockerfile syntax and sync frontend lockfile
- Ensure Docker network exists and robustify fallback logic
- Deploy engine and worker alongside web and add health checks
- Add git to web-builder, set engine port, fix healthz endpoint
- Copy .env to Next.js project dir so E2E tests get env vars
- Stabilize e2e contracts and enforce hybrid github actions gates
- Stabilize test environment integration workflow
- Correct secret mapping for e2e and deploy workflows
- Skip E2E integration gracefully when secrets are placeholder values
- Pin test deploy to x64 self-hosted runner
- Stabilize infrastructure and switch to npm
- Complete transition to npm and stabilize deployments
- Prevent port conflicts in test deployment by removing all standalone containers
- Ensure consistent container names in test deployment for health checks
- Complete transition to npm and stabilize deployments
- Prevent port conflicts in test deployment by removing all standalone containers
- Ensure consistent container names in test deployment for health checks
- Build production images sequentially to reduce runner resource pressure
- Build production images sequentially to reduce runner resource pressure
- Harden self-hosted deploy workflows
- Force-recreate on prod deploy to handle restart=always containers after reboot
- Eliminate band-aids with permanent root-cause fixes
- Fix prod deploy cancellation and test tunnel network disconnect
- Force-recreate on prod deploy to handle restart=always containers after reboot
- Rm named containers before compose-up; add maintenance page for both envs
- Rm named containers before compose-up; add maintenance page for both envs
- Harden tunnel, CI/CD runner, and LLM error surfacing
- Use 127.0.0.1 in nginx healthcheck (localhost resolves to IPv6 in alpine)
- Add ANTHROPIC_MODEL env var to prod compose; switch to claude-sonnet-4-5-20250929
- Deserialize ProjectType enum from JSON string + add ANTHROPIC_MODEL to prod compose
- Rename simple-mode-schema.ts → .tsx (contains JSX, lint parse error)
- Correct secret mapping for e2e and deploy workflows
- Skip E2E integration gracefully when secrets are placeholder values
- Align @ alias with Next.js tsconfig paths
- Add missing files that were never committed
- Harden CF tunnel routing + close SEO/a11y audit gaps
- Add parserOptions.ecmaFeatures.jsx to eslintrc — fix parse error in .tsx files
- Batch A — SSR h1s, landmarks, metadata, docs/content COPY
- Un-ignore docs/ and scope *.md to repo root
- Drop generateImageMetadata — 404'd with id-keyed URL
- Unblock CA2007 analyzer + vitest IntersectionObserver constructor
- Unblock CI — dedupe h1s, scope test CA2007
- Suppress CA2007 in Worker.Tests (symmetry with Engine.Tests)
- Migrate PostCSS pipeline to Tailwind v4 (#46)
- Unbreak CI — pin eslint ^9, complete eslint-config-next 16, migrate to flat config (#65)
- Re-pin eslint ^9, ignore eslint majors in dependabot.yml (#73)
- Close 10 code-scanning alerts
- Mask email PII in logs + bump postcss to ^8.5.10 (#78)
- Wire ITierGatingService into orchestrator + skip codegen on Tier 1 (#84)
- Serialize Release workflow to prevent changelog-commit race (#87)
- Clear three engine errors blocking nightly simple-mode-flow E2E (#92) (#94)
- Pin .NET base images to :10.0-resolute (#95)
- Derive SUPABASE_DB_PASSWORD from CI_SUPABASE_DB_URL (#96)
- Unbreak test-site noindex, correct FAQ AI model, noindex auth pages
- Persist status + inline NEXT_PUBLIC into web image
- Reject placeholder anon keys so misconfig fails loud
- Deliver Tier-0 Spark preview end-to-end in prod
- Ship template sets into the engine image so prod codegen resolves them
- Cross-origin isolate /generate so StackBlitz embed runs
- Re-fetch generation status after subscribe to close tier-0 redirect race
- Close tier-0 redirect race in advanced-mode subscription
- Persist purchased tier on paid upgrade so download unlocks
- Drop dead "continue without account" link on login
- Register IEmailService so CompileWorkerService can start
- Resolve upstreams at request time to stop prod 502s (#119)
- Fill the homepage prompt builder and clean launch-console copy (#120)
- Match deploy page to brand (logo + blue accent) (#121)
- Auto-return visitors to the app once the deploy finishes (#122)
- Return 503 from deploy shim so recovery poll works (#125)
- Atomic Stripe webhook, error taxonomy, and tier-race fix (#138)
- Periodic reconciler with re-enqueue, delivery hardening, input limits (#139)
- A11y completion (F9) (#148)
Dependencies
- Bump softprops/action-gh-release from 2 to 3 (#25)
- Bump actions/setup-node from 5 to 6 (#27)
- Bump aws-actions/configure-aws-credentials from 5 to 6 (#29)
- Bump actions/checkout from 5 to 6 (#26)
- Bump styled-jsx in /src/StackAlchemist.Web (#16)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#14)
- Bump pytest 8.3.3 -> 9.0.3 in V1-Python-React template
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#43)
- Bump @supabase/ssr in /src/StackAlchemist.Web (#39)
- Bump docker/build-push-action from 6 to 7 (#35)
- Bump docker/setup-buildx-action from 3 to 4 (#34)
- Bump actions/upload-artifact from 4 to 7 (#33)
- Bump python-dotenv (#52)
- Bump lucide-react in /src/StackAlchemist.Web (#55)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#60)
- Bump the next-react group across 1 directory with 4 updates (#53)
- Bump Node 20 → 22 (Node 20 LTS ended 2026-04-30)
- Bump Node 22 → 24 (skip the layover, latest LTS)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#71)
- Bump lucide-react in /src/StackAlchemist.Web (#70)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#74)
- Bump node from 24-alpine to 26-alpine (#98)
- Bump tailwind-merge in /src/StackAlchemist.Web (#103)
- Bump the next-react group (#99)
- Bump @supabase/ssr in /src/StackAlchemist.Web (#101)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#105)
- Bump lucide-react in /src/StackAlchemist.Web (#109)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#111)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#116)
- Bump next (#118)
- Bump lucide-react in /src/StackAlchemist.Web (#129)
- Bump the next-react group across 1 directory with 4 updates (#126)
- Bump @xyflow/react in /src/StackAlchemist.Web (#128)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#131)
- Bump lucide-react in /src/StackAlchemist.Web (#159)
Documentation
- Update production release and deployment documentation to reflect automated main branch trigger
- Sync documentation with current codebase state
- Add Show HN draft + Product Hunt hunter strategy
- Add CODE_AUDIT.md and HANDOFF.md
- Update with session 2 prog...
Release 3a5241a5e1a059b7a26f750ac89ad6790a1cd59b
Changelog
All notable changes to this project will be documented in this file.
[unreleased]
Bug Fixes
- Harden deploy pipeline for zero-downtime and reboot resilience
- Add git to builder and wget to runtime for sa-web health checks
- Fix Dockerfile syntax and sync frontend lockfile
- Ensure Docker network exists and robustify fallback logic
- Deploy engine and worker alongside web and add health checks
- Add git to web-builder, set engine port, fix healthz endpoint
- Copy .env to Next.js project dir so E2E tests get env vars
- Stabilize e2e contracts and enforce hybrid github actions gates
- Stabilize test environment integration workflow
- Correct secret mapping for e2e and deploy workflows
- Skip E2E integration gracefully when secrets are placeholder values
- Pin test deploy to x64 self-hosted runner
- Stabilize infrastructure and switch to npm
- Complete transition to npm and stabilize deployments
- Prevent port conflicts in test deployment by removing all standalone containers
- Ensure consistent container names in test deployment for health checks
- Complete transition to npm and stabilize deployments
- Prevent port conflicts in test deployment by removing all standalone containers
- Ensure consistent container names in test deployment for health checks
- Build production images sequentially to reduce runner resource pressure
- Build production images sequentially to reduce runner resource pressure
- Harden self-hosted deploy workflows
- Force-recreate on prod deploy to handle restart=always containers after reboot
- Eliminate band-aids with permanent root-cause fixes
- Fix prod deploy cancellation and test tunnel network disconnect
- Force-recreate on prod deploy to handle restart=always containers after reboot
- Rm named containers before compose-up; add maintenance page for both envs
- Rm named containers before compose-up; add maintenance page for both envs
- Harden tunnel, CI/CD runner, and LLM error surfacing
- Use 127.0.0.1 in nginx healthcheck (localhost resolves to IPv6 in alpine)
- Add ANTHROPIC_MODEL env var to prod compose; switch to claude-sonnet-4-5-20250929
- Deserialize ProjectType enum from JSON string + add ANTHROPIC_MODEL to prod compose
- Rename simple-mode-schema.ts → .tsx (contains JSX, lint parse error)
- Correct secret mapping for e2e and deploy workflows
- Skip E2E integration gracefully when secrets are placeholder values
- Align @ alias with Next.js tsconfig paths
- Add missing files that were never committed
- Harden CF tunnel routing + close SEO/a11y audit gaps
- Add parserOptions.ecmaFeatures.jsx to eslintrc — fix parse error in .tsx files
- Batch A — SSR h1s, landmarks, metadata, docs/content COPY
- Un-ignore docs/ and scope *.md to repo root
- Drop generateImageMetadata — 404'd with id-keyed URL
- Unblock CA2007 analyzer + vitest IntersectionObserver constructor
- Unblock CI — dedupe h1s, scope test CA2007
- Suppress CA2007 in Worker.Tests (symmetry with Engine.Tests)
- Migrate PostCSS pipeline to Tailwind v4 (#46)
- Unbreak CI — pin eslint ^9, complete eslint-config-next 16, migrate to flat config (#65)
- Re-pin eslint ^9, ignore eslint majors in dependabot.yml (#73)
- Close 10 code-scanning alerts
- Mask email PII in logs + bump postcss to ^8.5.10 (#78)
- Wire ITierGatingService into orchestrator + skip codegen on Tier 1 (#84)
- Serialize Release workflow to prevent changelog-commit race (#87)
- Clear three engine errors blocking nightly simple-mode-flow E2E (#92) (#94)
- Pin .NET base images to :10.0-resolute (#95)
- Derive SUPABASE_DB_PASSWORD from CI_SUPABASE_DB_URL (#96)
- Unbreak test-site noindex, correct FAQ AI model, noindex auth pages
- Persist status + inline NEXT_PUBLIC into web image
- Reject placeholder anon keys so misconfig fails loud
- Deliver Tier-0 Spark preview end-to-end in prod
- Ship template sets into the engine image so prod codegen resolves them
- Cross-origin isolate /generate so StackBlitz embed runs
- Re-fetch generation status after subscribe to close tier-0 redirect race
- Close tier-0 redirect race in advanced-mode subscription
- Persist purchased tier on paid upgrade so download unlocks
- Drop dead "continue without account" link on login
- Register IEmailService so CompileWorkerService can start
- Resolve upstreams at request time to stop prod 502s (#119)
- Fill the homepage prompt builder and clean launch-console copy (#120)
- Match deploy page to brand (logo + blue accent) (#121)
- Auto-return visitors to the app once the deploy finishes (#122)
- Return 503 from deploy shim so recovery poll works (#125)
- Atomic Stripe webhook, error taxonomy, and tier-race fix (#138)
- Periodic reconciler with re-enqueue, delivery hardening, input limits (#139)
- A11y completion (F9) (#148)
Dependencies
- Bump softprops/action-gh-release from 2 to 3 (#25)
- Bump actions/setup-node from 5 to 6 (#27)
- Bump aws-actions/configure-aws-credentials from 5 to 6 (#29)
- Bump actions/checkout from 5 to 6 (#26)
- Bump styled-jsx in /src/StackAlchemist.Web (#16)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#14)
- Bump pytest 8.3.3 -> 9.0.3 in V1-Python-React template
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#43)
- Bump @supabase/ssr in /src/StackAlchemist.Web (#39)
- Bump docker/build-push-action from 6 to 7 (#35)
- Bump docker/setup-buildx-action from 3 to 4 (#34)
- Bump actions/upload-artifact from 4 to 7 (#33)
- Bump python-dotenv (#52)
- Bump lucide-react in /src/StackAlchemist.Web (#55)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#60)
- Bump the next-react group across 1 directory with 4 updates (#53)
- Bump Node 20 → 22 (Node 20 LTS ended 2026-04-30)
- Bump Node 22 → 24 (skip the layover, latest LTS)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#71)
- Bump lucide-react in /src/StackAlchemist.Web (#70)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#74)
- Bump node from 24-alpine to 26-alpine (#98)
- Bump tailwind-merge in /src/StackAlchemist.Web (#103)
- Bump the next-react group (#99)
- Bump @supabase/ssr in /src/StackAlchemist.Web (#101)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#105)
- Bump lucide-react in /src/StackAlchemist.Web (#109)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#111)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#116)
- Bump next (#118)
- Bump lucide-react in /src/StackAlchemist.Web (#129)
- Bump the next-react group across 1 directory with 4 updates (#126)
- Bump @xyflow/react in /src/StackAlchemist.Web (#128)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#131)
- Bump lucide-react in /src/StackAlchemist.Web (#159)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#161)
- Bump the next-react group across 1 directory with 2 updates (#155)
Documentation
- Upd...
Release 30519854cacc85cf532983a7cc5a2ed7f85ee18c
Changelog
All notable changes to this project will be documented in this file.
[unreleased]
Bug Fixes
- Harden deploy pipeline for zero-downtime and reboot resilience
- Add git to builder and wget to runtime for sa-web health checks
- Fix Dockerfile syntax and sync frontend lockfile
- Ensure Docker network exists and robustify fallback logic
- Deploy engine and worker alongside web and add health checks
- Add git to web-builder, set engine port, fix healthz endpoint
- Copy .env to Next.js project dir so E2E tests get env vars
- Stabilize e2e contracts and enforce hybrid github actions gates
- Stabilize test environment integration workflow
- Correct secret mapping for e2e and deploy workflows
- Skip E2E integration gracefully when secrets are placeholder values
- Pin test deploy to x64 self-hosted runner
- Stabilize infrastructure and switch to npm
- Complete transition to npm and stabilize deployments
- Prevent port conflicts in test deployment by removing all standalone containers
- Ensure consistent container names in test deployment for health checks
- Complete transition to npm and stabilize deployments
- Prevent port conflicts in test deployment by removing all standalone containers
- Ensure consistent container names in test deployment for health checks
- Build production images sequentially to reduce runner resource pressure
- Build production images sequentially to reduce runner resource pressure
- Harden self-hosted deploy workflows
- Force-recreate on prod deploy to handle restart=always containers after reboot
- Eliminate band-aids with permanent root-cause fixes
- Fix prod deploy cancellation and test tunnel network disconnect
- Force-recreate on prod deploy to handle restart=always containers after reboot
- Rm named containers before compose-up; add maintenance page for both envs
- Rm named containers before compose-up; add maintenance page for both envs
- Harden tunnel, CI/CD runner, and LLM error surfacing
- Use 127.0.0.1 in nginx healthcheck (localhost resolves to IPv6 in alpine)
- Add ANTHROPIC_MODEL env var to prod compose; switch to claude-sonnet-4-5-20250929
- Deserialize ProjectType enum from JSON string + add ANTHROPIC_MODEL to prod compose
- Rename simple-mode-schema.ts → .tsx (contains JSX, lint parse error)
- Correct secret mapping for e2e and deploy workflows
- Skip E2E integration gracefully when secrets are placeholder values
- Align @ alias with Next.js tsconfig paths
- Add missing files that were never committed
- Harden CF tunnel routing + close SEO/a11y audit gaps
- Add parserOptions.ecmaFeatures.jsx to eslintrc — fix parse error in .tsx files
- Batch A — SSR h1s, landmarks, metadata, docs/content COPY
- Un-ignore docs/ and scope *.md to repo root
- Drop generateImageMetadata — 404'd with id-keyed URL
- Unblock CA2007 analyzer + vitest IntersectionObserver constructor
- Unblock CI — dedupe h1s, scope test CA2007
- Suppress CA2007 in Worker.Tests (symmetry with Engine.Tests)
- Migrate PostCSS pipeline to Tailwind v4 (#46)
- Unbreak CI — pin eslint ^9, complete eslint-config-next 16, migrate to flat config (#65)
- Re-pin eslint ^9, ignore eslint majors in dependabot.yml (#73)
- Close 10 code-scanning alerts
- Mask email PII in logs + bump postcss to ^8.5.10 (#78)
- Wire ITierGatingService into orchestrator + skip codegen on Tier 1 (#84)
- Serialize Release workflow to prevent changelog-commit race (#87)
- Clear three engine errors blocking nightly simple-mode-flow E2E (#92) (#94)
- Pin .NET base images to :10.0-resolute (#95)
- Derive SUPABASE_DB_PASSWORD from CI_SUPABASE_DB_URL (#96)
- Unbreak test-site noindex, correct FAQ AI model, noindex auth pages
- Persist status + inline NEXT_PUBLIC into web image
- Reject placeholder anon keys so misconfig fails loud
- Deliver Tier-0 Spark preview end-to-end in prod
- Ship template sets into the engine image so prod codegen resolves them
- Cross-origin isolate /generate so StackBlitz embed runs
- Re-fetch generation status after subscribe to close tier-0 redirect race
- Close tier-0 redirect race in advanced-mode subscription
- Persist purchased tier on paid upgrade so download unlocks
- Drop dead "continue without account" link on login
- Register IEmailService so CompileWorkerService can start
- Resolve upstreams at request time to stop prod 502s (#119)
- Fill the homepage prompt builder and clean launch-console copy (#120)
- Match deploy page to brand (logo + blue accent) (#121)
- Auto-return visitors to the app once the deploy finishes (#122)
- Return 503 from deploy shim so recovery poll works (#125)
- Atomic Stripe webhook, error taxonomy, and tier-race fix (#138)
- Periodic reconciler with re-enqueue, delivery hardening, input limits (#139)
- A11y completion (F9) (#148)
Dependencies
- Bump softprops/action-gh-release from 2 to 3 (#25)
- Bump actions/setup-node from 5 to 6 (#27)
- Bump aws-actions/configure-aws-credentials from 5 to 6 (#29)
- Bump actions/checkout from 5 to 6 (#26)
- Bump styled-jsx in /src/StackAlchemist.Web (#16)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#14)
- Bump pytest 8.3.3 -> 9.0.3 in V1-Python-React template
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#43)
- Bump @supabase/ssr in /src/StackAlchemist.Web (#39)
- Bump docker/build-push-action from 6 to 7 (#35)
- Bump docker/setup-buildx-action from 3 to 4 (#34)
- Bump actions/upload-artifact from 4 to 7 (#33)
- Bump python-dotenv (#52)
- Bump lucide-react in /src/StackAlchemist.Web (#55)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#60)
- Bump the next-react group across 1 directory with 4 updates (#53)
- Bump Node 20 → 22 (Node 20 LTS ended 2026-04-30)
- Bump Node 22 → 24 (skip the layover, latest LTS)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#71)
- Bump lucide-react in /src/StackAlchemist.Web (#70)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#74)
- Bump node from 24-alpine to 26-alpine (#98)
- Bump tailwind-merge in /src/StackAlchemist.Web (#103)
- Bump the next-react group (#99)
- Bump @supabase/ssr in /src/StackAlchemist.Web (#101)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#105)
- Bump lucide-react in /src/StackAlchemist.Web (#109)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#111)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#116)
- Bump next (#118)
- Bump lucide-react in /src/StackAlchemist.Web (#129)
- Bump the next-react group across 1 directory with 4 updates (#126)
- Bump @xyflow/react in /src/StackAlchemist.Web (#128)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#131)
- Bump lucide-react in /src/StackAlchemist.Web (#159)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#161)
- Bump the next-react group across 1 directory with 2 updates (#155)
Documentation
- Upd...
Release 165e2b3eab88a009a031d30c7e73c05cec183fbe
Changelog
All notable changes to this project will be documented in this file.
[unreleased]
Bug Fixes
- Harden deploy pipeline for zero-downtime and reboot resilience
- Add git to builder and wget to runtime for sa-web health checks
- Fix Dockerfile syntax and sync frontend lockfile
- Ensure Docker network exists and robustify fallback logic
- Deploy engine and worker alongside web and add health checks
- Add git to web-builder, set engine port, fix healthz endpoint
- Copy .env to Next.js project dir so E2E tests get env vars
- Stabilize e2e contracts and enforce hybrid github actions gates
- Stabilize test environment integration workflow
- Correct secret mapping for e2e and deploy workflows
- Skip E2E integration gracefully when secrets are placeholder values
- Pin test deploy to x64 self-hosted runner
- Stabilize infrastructure and switch to npm
- Complete transition to npm and stabilize deployments
- Prevent port conflicts in test deployment by removing all standalone containers
- Ensure consistent container names in test deployment for health checks
- Complete transition to npm and stabilize deployments
- Prevent port conflicts in test deployment by removing all standalone containers
- Ensure consistent container names in test deployment for health checks
- Build production images sequentially to reduce runner resource pressure
- Build production images sequentially to reduce runner resource pressure
- Harden self-hosted deploy workflows
- Force-recreate on prod deploy to handle restart=always containers after reboot
- Eliminate band-aids with permanent root-cause fixes
- Fix prod deploy cancellation and test tunnel network disconnect
- Force-recreate on prod deploy to handle restart=always containers after reboot
- Rm named containers before compose-up; add maintenance page for both envs
- Rm named containers before compose-up; add maintenance page for both envs
- Harden tunnel, CI/CD runner, and LLM error surfacing
- Use 127.0.0.1 in nginx healthcheck (localhost resolves to IPv6 in alpine)
- Add ANTHROPIC_MODEL env var to prod compose; switch to claude-sonnet-4-5-20250929
- Deserialize ProjectType enum from JSON string + add ANTHROPIC_MODEL to prod compose
- Rename simple-mode-schema.ts → .tsx (contains JSX, lint parse error)
- Correct secret mapping for e2e and deploy workflows
- Skip E2E integration gracefully when secrets are placeholder values
- Align @ alias with Next.js tsconfig paths
- Add missing files that were never committed
- Harden CF tunnel routing + close SEO/a11y audit gaps
- Add parserOptions.ecmaFeatures.jsx to eslintrc — fix parse error in .tsx files
- Batch A — SSR h1s, landmarks, metadata, docs/content COPY
- Un-ignore docs/ and scope *.md to repo root
- Drop generateImageMetadata — 404'd with id-keyed URL
- Unblock CA2007 analyzer + vitest IntersectionObserver constructor
- Unblock CI — dedupe h1s, scope test CA2007
- Suppress CA2007 in Worker.Tests (symmetry with Engine.Tests)
- Migrate PostCSS pipeline to Tailwind v4 (#46)
- Unbreak CI — pin eslint ^9, complete eslint-config-next 16, migrate to flat config (#65)
- Re-pin eslint ^9, ignore eslint majors in dependabot.yml (#73)
- Close 10 code-scanning alerts
- Mask email PII in logs + bump postcss to ^8.5.10 (#78)
- Wire ITierGatingService into orchestrator + skip codegen on Tier 1 (#84)
- Serialize Release workflow to prevent changelog-commit race (#87)
- Clear three engine errors blocking nightly simple-mode-flow E2E (#92) (#94)
- Pin .NET base images to :10.0-resolute (#95)
- Derive SUPABASE_DB_PASSWORD from CI_SUPABASE_DB_URL (#96)
- Unbreak test-site noindex, correct FAQ AI model, noindex auth pages
- Persist status + inline NEXT_PUBLIC into web image
- Reject placeholder anon keys so misconfig fails loud
- Deliver Tier-0 Spark preview end-to-end in prod
- Ship template sets into the engine image so prod codegen resolves them
- Cross-origin isolate /generate so StackBlitz embed runs
- Re-fetch generation status after subscribe to close tier-0 redirect race
- Close tier-0 redirect race in advanced-mode subscription
- Persist purchased tier on paid upgrade so download unlocks
- Drop dead "continue without account" link on login
- Register IEmailService so CompileWorkerService can start
- Resolve upstreams at request time to stop prod 502s (#119)
- Fill the homepage prompt builder and clean launch-console copy (#120)
- Match deploy page to brand (logo + blue accent) (#121)
- Auto-return visitors to the app once the deploy finishes (#122)
- Return 503 from deploy shim so recovery poll works (#125)
- Atomic Stripe webhook, error taxonomy, and tier-race fix (#138)
- Periodic reconciler with re-enqueue, delivery hardening, input limits (#139)
- A11y completion (F9) (#148)
Dependencies
- Bump softprops/action-gh-release from 2 to 3 (#25)
- Bump actions/setup-node from 5 to 6 (#27)
- Bump aws-actions/configure-aws-credentials from 5 to 6 (#29)
- Bump actions/checkout from 5 to 6 (#26)
- Bump styled-jsx in /src/StackAlchemist.Web (#16)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#14)
- Bump pytest 8.3.3 -> 9.0.3 in V1-Python-React template
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#43)
- Bump @supabase/ssr in /src/StackAlchemist.Web (#39)
- Bump docker/build-push-action from 6 to 7 (#35)
- Bump docker/setup-buildx-action from 3 to 4 (#34)
- Bump actions/upload-artifact from 4 to 7 (#33)
- Bump python-dotenv (#52)
- Bump lucide-react in /src/StackAlchemist.Web (#55)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#60)
- Bump the next-react group across 1 directory with 4 updates (#53)
- Bump Node 20 → 22 (Node 20 LTS ended 2026-04-30)
- Bump Node 22 → 24 (skip the layover, latest LTS)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#71)
- Bump lucide-react in /src/StackAlchemist.Web (#70)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#74)
- Bump node from 24-alpine to 26-alpine (#98)
- Bump tailwind-merge in /src/StackAlchemist.Web (#103)
- Bump the next-react group (#99)
- Bump @supabase/ssr in /src/StackAlchemist.Web (#101)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#105)
- Bump lucide-react in /src/StackAlchemist.Web (#109)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#111)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#116)
- Bump next (#118)
- Bump lucide-react in /src/StackAlchemist.Web (#129)
- Bump the next-react group across 1 directory with 4 updates (#126)
- Bump @xyflow/react in /src/StackAlchemist.Web (#128)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#131)
- Bump lucide-react in /src/StackAlchemist.Web (#159)
- Bump @supabase/supabase-js in /src/StackAlchemist.Web (#161)
- Bump the next-react group across 1 directory with 2 updates (#155)
- Bump @supabase/ssr in /...