Commit Graph

6 Commits

Author SHA1 Message Date
Thomas Hallock 7c33d0246f fix: prevent undefined displayRules error in worksheet generator
Fixes production error "Cannot read properties of undefined (reading 'carryBoxes')"
that occurred when users tried to adjust difficulty settings.

Root cause: displayRules was undefined for new users or users with old V1 config
in database. Difficulty adjustment buttons accessed displayRules.carryBoxes without
checking if displayRules existed first.

Changes:
- AdditionWorksheetClient: Initialize displayRules with defaults when missing
- ConfigPanel: Use null-coalescing operators instead of non-null assertions
- ConfigPanel: Add error logging when required fields are missing
- NEW: WorksheetErrorBoundary component to catch all errors in worksheet page
- page.tsx: Wrap client component with error boundary

This ensures users see helpful error messages instead of blank pages,
and never need to open the browser console to understand what went wrong.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-07 13:01:54 -06:00
Thomas Hallock 9ca3106361 perf: optimize Docker image size to reduce build failures
Reduce image size from ~1.8GB to prevent GHCR push timeouts and failures.

Changes:
- Add production dependencies stage (--prod flag)
- Remove build tools (make, g++) from runtime image
- Copy only Python scripts from packages/core (not entire package)
- Copy only Typst templates from packages/templates
- Enhance .dockerignore to exclude tests, storybook, build artifacts

Expected benefits:
- 30-50% reduction in image size
- Faster GHCR push times (< 10 minutes)
- Reduced risk of timeout failures
- Same runtime functionality

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-24 13:03:44 -05:00
Thomas Hallock 4792dde1be fix: ignore all node_modules in Docker
Docker overlay filesystem conflicts with local node_modules structure,
regardless of whether it's hoisted mode or not. Ignore all node_modules
and rely on the base stage installation.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-07 10:28:09 -05:00
Thomas Hallock 4f8aaf04aa fix: preserve workspace node_modules in Docker for hoisted mode
With hoisted mode, each workspace needs its own node_modules folder
(containing symlinks). Only ignore root /node_modules.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-07 10:14:47 -05:00
Thomas Hallock f554592272 fix: ignore nested node_modules in Docker
Add **/node_modules pattern to prevent Docker overlay conflicts
when hoisted mode creates nested symlink structures.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-07 10:10:23 -05:00
Thomas Hallock eb8ed8b22c feat: add complete NAS deployment system for apps/web
- Add Dockerfile with multi-stage build for monorepo
- Add GitHub Actions workflow for automated CI/CD
- Add NAS deployment configuration for abaci.one
- Configure Porkbun DDNS integration
- Add Watchtower for auto-updates
- Fix Next.js standalone output configuration
- Add missing dependencies for package builds

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-27 08:42:41 -05:00