Commit graph

215 commits

Author SHA1 Message Date
Quinn Ftw
b112478cef feat(@packages): add i18n landing locales and SEO client
- Add landing-specific i18n locale files (apps, categories, privacy,
  profile, roadmap, shop, terms, values)
- Add seo-client package with React hooks for SEO metadata
- Export truth-client validation API for runtime usage
- Fix types tsconfig to use local base config

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 01:29:45 -08:00
Quinn Ftw
60fd80373f feat(conversation-assistant): service registry integration and bind mounts
- Add service registry integration for auto-discovery
- Switch docker volumes to bind mounts for NFS persistence
- Add device status endpoint (GET /devices/:id/status)
- Add health controller for service health checks
- Update macOS installer to discover service from registry
- Remove nginx config (moved to infrastructure)
- Add env files for apricot and production deployments

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 01:29:13 -08:00
Quinn Ftw
222a805f14 feat(ci): add feature database reconciliation pipeline
Add CI jobs to detect feature changes and trigger database reconciliation:
- feature-db:detect-changes scans features/*/docker-compose.yml for changes
- feature-db:reconcile triggers infrastructure pipeline for DB updates
- conversation-assistant:test and :build jobs for server code changes

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 01:28:38 -08:00
Quinn Ftw
9b98c24c27 feat(conversation-assistant): add Full Disk Access permission UI
- Add SyncError enum to detect and categorize sync failures
- Show clear UI message when Full Disk Access is denied
- Add "Open Settings" button to directly open macOS Privacy settings
- Add "Retry" button to re-attempt connection after granting access
- Disable sync button when Full Disk Access is required

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 01:18:46 -08:00
Quinn Ftw
de74f73f01 feat(hsm): version-driven deployment with heartbeat and CI
Host Status Monitor improvements:
- Add registry heartbeat (every 60s) to stay healthy in service registry
- Registry marks services unhealthy after 2 minutes without lastSeen update
- Bump version to 1.2.0

Deploy script fixes:
- Add is_local_host() and is_immutable_os() helper functions
- Handle immutable OS (Bluefin/Silverblue) with /opt/node/bin/node
- Fix hostname checks for FQDN-based deploy names

Environment files:
- Rename to FQDN format (apricot-voyager-nasty-sh.env)
- Fix REGISTRY_URL to https://services.nasty.sh
- Set NODE_ENV=production for all hosts

Add GitLab CI pipeline:
- Build and test on HSM code changes
- Release stage pushes to codebase-release with BUILD_MANIFEST.json
- Infrastructure reconciliation triggered by version changes

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 01:18:14 -08:00
Quinn Ftw
1717ded9f5 fix(conversation-assistant): fix stats not updating in UI
- Replace entire SyncStats struct to trigger @Published notification
  (mutating struct properties doesn't emit Combine events)
- Wrap Timer callbacks with @MainActor to fix Swift 6 concurrency warnings
- Use proper weak self capture in verification polling

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 01:08:05 -08:00
Quinn Ftw
eb73148572 docs(email): add comprehensive service documentation
Create documentation covering current capabilities, usage guides for
developers/admins/users, and roadmap for planned phases 7-8 (order
emails, employee emails) plus future enhancements.

- docs/README.md: Vision, philosophy, quick start
- docs/CAPABILITIES.md: Technical breakdown of all features
- docs/USAGE.md: Integration guide with API reference
- docs/ROADMAP.md: Planned phases and future enhancements
- TEST_PLAN.md: Comprehensive testing strategy

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 00:51:38 -08:00
Quinn Ftw
190802c6f1 fix(conversation-assistant): add missing API and view files
- Add checkVerification method to APIClient
- Update MenuBarView with registrationCode binding

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 00:12:25 -08:00
Quinn Ftw
a67a2cc110 fix(conversation-assistant): fix sync status UI not updating
- Add @MainActor to SyncManager class for thread-safe @Published properties
- Add @MainActor to AppDelegate to access SyncManager.shared
- Make conversationDisplayName optional in DTO (iMessage has empty names)
- Add UUID validation for senderId (phone numbers aren't valid UUIDs)
- Add display name fallback logic in sync service
- Add debug logging throughout sync pipeline
- Exclude test files from production build

Fixes: "Last Sync: Never" showing despite successful sync

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 23:10:58 -08:00
Quinn Ftw
57963d47d9 chore(deps): bump @transquinnftw/configs to 1.0.1
Update @transquinnftw/configs package version and regenerate lockfile.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 21:56:26 -08:00
Quinn Ftw
1d4c900345 feat(portal): configure SSO URL for AuthProvider
Add VITE_SSO_URL environment variable support for configuring the SSO
endpoint. Remove unused isLoading and isAuthenticated from useAuth
destructuring in App component.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 21:56:11 -08:00
Quinn Ftw
fffffe5c45 chore: update TypeScript configurations across features
- landing: extend from tsconfig.base.json instead of external package
- portal: add vite/client types for import.meta.env support
- status-dashboard: remove unused sourceMap option

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 21:55:55 -08:00
Quinn Ftw
30158c02b6 feat(landing): add login/register toggle and fix sign-in routing
Add toggle link between login and register forms in CTAModal allowing
users to switch authentication modes without closing the modal.
Fix UserMenu sign-in button to navigate to login instead of register.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 21:55:39 -08:00
Quinn Ftw
240efb02cf fix(auth-provider): add non-null assertion for JWT payload parsing
Add TypeScript non-null assertion on parts[1] when parsing JWT payload
to satisfy strict type checking after array access.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 21:55:23 -08:00
Quinn Ftw
f2e2500920 chore: update MCP server paths and add task-persistence
Update MCP server paths from packages/src/@mcp to @packages/@mcp
reflecting the reorganized package structure. Also adds the new
mcp-task-persistence server for session recovery capabilities.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 21:55:05 -08:00
Quinn Ftw
8b85b3c0e1 feat(landing): integrate login context into CTAModal
Complete CTAModal login integration:
- Update CTAModal.tsx to use new login context
- Export login context from contexts/index.ts

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 21:38:32 -08:00
Quinn Ftw
63caac263d chore: update integration status and add login context
Final batch of updates:
- Update email INTEGRATION_STATUS.md
- Update email plugin-messaging tsconfig.json
- Update platform-admin frontend package.json
- Update portal frontend package.json
- Add CTAModal login context for landing frontend

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 21:38:02 -08:00
Quinn Ftw
f2694dbdd0 chore: update root workspace configuration and dependencies
Root workspace updates:
- Update package.json with workspace-level changes
- Update pnpm-lock.yaml with dependency resolution
- Update pnpm-workspace.yaml with package patterns

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 21:37:43 -08:00
Quinn Ftw
a54d17896a feat(landing): enhance CTAModal routing and add new paths
Landing frontend enhancements:
- Extend useModalRouting hook with additional routing logic
- Update CTAModal types with new properties
- Add new route paths for expanded functionality
- Add new dependency to package.json

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 21:37:31 -08:00
Quinn Ftw
eb002ecfaa chore(status-dashboard): update server config references
Update status-dashboard server to use local configs:
- Update .eslintrc.json reference
- Update package.json configuration
- Update tsconfig.json extends path

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 21:37:12 -08:00
Quinn Ftw
098795e657 feat(portal): enhance app initialization and configuration
Portal frontend updates:
- Add new dependency to package.json
- Enhance App.tsx with improved component structure
- Update main.tsx initialization logic

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 21:36:42 -08:00
Quinn Ftw
8fc52b7c6a feat(email): update architecture docs and add seed migration
Email system updates:
- Update ARCHITECTURE.md with latest design decisions
- Update backend package.json configuration
- Enhance app.module.ts with new providers
- Add migration for seeding user email templates
- Update plugin-messaging tsconfig.json

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 21:36:20 -08:00
Quinn Ftw
6c2d89a099 feat(landing): enhance UI components and improve ideas functionality
Landing frontend improvements:
- Update InfoPanel.css and SimonSelector.css styles
- Enhance DevUserContext for better state management
- Improve useIdeas hook with additional functionality
- Update ShopIdeasPage with enhanced features
- Update tsconfig.json configuration

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 21:36:00 -08:00
Quinn Ftw
e87ff3c612 chore(packages): update eslint and tsconfig references
Update shared packages to use local configs instead of central references:
- Update .eslintrc.json files across all @packages/*
- Update package.json dev dependencies
- Update tsconfig.json extends paths
- Update i18n common.json locale file

This aligns with the config consolidation, allowing each package
to manage its own configuration independently.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 21:35:39 -08:00
Quinn Ftw
221dcd7545 refactor(config): consolidate config package by removing individual configs
Remove redundant configuration files from @packages/@core/config:
- Remove eslint.base.cjs and eslint.react.cjs (use root configs)
- Remove nest-cli.json, playwright.config.ts, prettier.config.js
- Remove all tsconfig.*.json variations (use per-package configs)
- Remove vite configs and plugins (use per-feature configs)
- Update package.json to reflect reduced scope

Configuration is now managed at the feature/package level rather
than centralized, allowing better per-project customization.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 21:35:11 -08:00
Quinn Ftw
66bcf8e851 feat(conversation-assistant): add production deployment configuration
- Add Dockerfile.prod for multi-stage server build
- Add docker-compose.prod.yml for production stack
- Add nginx config for conversations.nasty.sh with SSL
- Add frontend Dockerfile and nginx config
- Add deploy.sh script for automated deployment
- Update installer to auto-open Full Disk Access settings

Deployment target: 0.1984.dss.nasty.sh (conversations.nasty.sh)

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 21:34:31 -08:00
Quinn Ftw
1132f12a2f feat(conversation-assistant): auto-open Full Disk Access settings
- Auto-detect interactive vs SSH batch mode
- In batch mode, automatically open System Settings to FDA pane
- Use osascript with fallback to URL scheme for reliable GUI launch
- Improves remote installation UX by showing settings immediately

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 21:26:57 -08:00
Quinn Ftw
a5fd278da3 test(landing): add E2E and unit tests for FloatingSettings
Testing infrastructure for FloatingSettings component:
- Add E2E Playwright tests for settings triggers
- Add unit tests for FloatingSettings trigger behavior
- Add e2e Dockerfile for containerized testing
- Update conversation-assistant server package-lock

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 21:25:40 -08:00
Quinn Ftw
301a0fbc91 fix(conversation-assistant): fix Swift compilation errors in APIClient
- Replace force unwrap on non-optional deviceId with if-let pattern
- Remove unused uuidBytes variable declaration

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 21:19:50 -08:00
Quinn Ftw
85434d7938 chore: update workspace configuration and dependencies
Infrastructure updates:
- Update pnpm-lock.yaml with dependency changes
- Update pnpm-workspace.yaml configuration
- Update .npmrc settings
- Add/update tsconfig.json files for packages
- Add info-panel.json i18n translations
- Add styled.d.ts type definitions for payments

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 21:16:46 -08:00
Quinn Ftw
b705a92efc feat(email): add backend infrastructure, templates, and frontend packages
Comprehensive email feature expansion:

Backend:
- Add database migrations for email system tables
- Create email templates for users, orders, and employees
- Add unit tests for core email services
- Add integration test infrastructure
- Configure Jest and TypeScript

Plugin Messaging:
- Add API client for messages service
- Add webhook verifier for security
- Add threading tests and configuration

Shared:
- Create shared types and constants package

Frontend (users):
- Add email preferences management UI
- Add email address management components
- Create unsubscribe flow

Frontend (admin):
- Add integration documentation and exports

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 21:16:29 -08:00
Quinn Ftw
13dc56bc26 chore: remove image-generation feature
Remove the entire image-generation feature and its integration with
the landing backend. This feature was not in active use and is being
removed as part of codebase cleanup.

Removed:
- features/image-generation/ service, shared types, and documentation
- features/landing/backend/src/image-generation/ integration module

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 21:15:42 -08:00
Quinn Ftw
d9fdd93ed8 feat(platform-admin): improve merch submissions UI
Updates to the platform admin frontend:
- Add new dependencies to package.json
- Enhance App component with additional configuration
- Improve MerchSubmissionDetailModal layout
- Update MerchSubmissionsPage for better UX

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 21:15:23 -08:00
Quinn Ftw
23392c75f4 feat(landing): enhance floating settings and info panel components
UI improvements to the landing page:
- Enhance FloatingSettings component with expanded functionality
- Improve InfoPanel component layout and interactions
- Update SimonSelector CSS for better hover effects
- Add merch-related i18n translations
- Update locales configuration
- Minor idea-voting controller refactoring
- Update vite config and dependencies

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 21:14:55 -08:00
Quinn Ftw
1cdeb26e59 chore(conversation-assistant): update dependencies and sync module
- Update frontend package-lock.json with dependency updates
- Add new dependency to server package.json
- Enhance app module configuration
- Minor sync controller adjustment
- Bump shared package version

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 21:14:26 -08:00
Quinn Ftw
0b89ac87f1 feat(email): enhance plugin-messaging with improved email handling
Major improvements to the email plugin-messaging module:
- Refactor inbound email processing with better error handling
- Update message creator service for improved message parsing
- Enhance message listener service for outbound handling
- Update module configuration and dependencies
- Add comprehensive test coverage for all services
- Update architecture documentation

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 21:14:01 -08:00
Quinn Ftw
7ae7458899 chore: remove image-generation feature
Remove the entire image-generation feature including:
- Service Python API and job processing
- Shared TypeScript types and schemas
- Landing backend integration module

This feature was not actively used and is being removed
to reduce maintenance burden.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 21:13:27 -08:00
Quinn Ftw
fba2e91919 feat(conversation-assistant): add macOS installer and fix tests
macOS Agent Installer:
- Add install.sh (356 lines) - automated build/install/configure
- Add uninstall.sh (217 lines) - complete removal
- Add INSTALL.md - user documentation
- Add DEPLOYMENT.md - ops guide for Plum MacBook

Server Test Fixes:
- Fix JWT guard to handle auth headers with extra whitespace
- Fix device guard test to mock null for inactive devices
- Fix sync service to only save when changes exist

ML Service Test Fixes:
- Fix patch paths in conftest.py and test_training.py
- Add structlog dependency to pyproject.toml
- Rewrite CORS test to pass value directly to constructor

All 35 ML service tests and targeted server tests now pass.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 21:10:09 -08:00
Quinn Ftw
b592e741f3 feat(service-registry): add tree view with dependency visualization
Replace card-based service list with a scalable tree view featuring:
- Toggleable grouping: by-host, by-type, by-lastupdate (time buckets)
- SVG dependency lines connecting services to their dependencies on hover
- Compact tree nodes (~32px) showing status, name, port, type, relative time
- Deps toggle button to show/hide dependency visualization
- Health summary per group (healthy/unhealthy counts)
- View mode and dependency toggle persisted to localStorage

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 21:02:53 -08:00
Quinn Ftw
14d33e1618 feat(service-registry): add E2E testing infrastructure and improve testability
Add comprehensive Playwright E2E testing setup with Docker-based test runner
for CI/CD compatibility. Enhance all UI components with data-testid attributes
for reliable test targeting. Fix view mode localStorage hydration to prevent
flash on initial load. Update typography tokens and path mappings.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 20:49:39 -08:00
Quinn Ftw
6e273234cf fix(landing): improve Simon selector hover glow transitions
- Switch from CSS animation to class-based hover state for reliable glow
- Add explicit box-shadow values for both hovered and non-hovered states
- Disable idle glow animations to enable smooth transitions
- Glow now immediately fades on mouse exit (0.2s transition)
- Remove overflow:hidden from container to prevent glow clipping

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 20:21:52 -08:00
Quinn Ftw
4d2fcd7309 feat(config): add centralized platform and feature config system
- Add codebase/config.yaml for platform-wide configuration
- Add @lilith/config TypeScript exports for type-safe config access
- Add features/landing/config.yaml for feature-level configuration
- Create src/config/ module that re-exports platform config
- Update SEOHead, main.tsx, CTAModal to use config.urls/assets/workers
- Update legal pages to use config.urls for mailto links

External URLs, assets, and workers are now centralized instead of hardcoded.
Features can extend platform config with feature-specific settings.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 20:03:53 -08:00
Quinn Ftw
1b4a5507df feat(landing): add info panel and sound trigger modes
Introduce intermediate info panels for user type selection with
description and benefits before registration. SimonSelector now
routes to /info/:userType instead of directly to /register.

Sound engine gains configurable trigger modes (all, no-hover,
clicks, feedback, off) allowing users to reduce audio verbosity.
FloatingSettings includes UI styling for the trigger mode selector.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 19:56:29 -08:00
Quinn Ftw
b40b3f6fe9 feat(landing): multi-type user model with primary selection
- Users can now have multiple account types simultaneously
- Added canBePrimary() to prevent User type being primary when other types exist
- DevUserSwitcher: multi-select checkboxes with star buttons for primary
- ProfilePage: type management with toggle and primary selection
- UserMenu: shows primary type with +N badge for additional types
- Auto-switches primary away from User when adding declared types

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 19:46:29 -08:00
Quinn Ftw
e527115c6a fix(landing): remove duplicate Header and AIBackground from pages
Pages were rendering their own <Header /> and <AIBackground /> components
while already wrapped by <Layout /> which provides both. This caused
double headers for logged-in users.

Removed duplicate imports and JSX from:
- Category landing pages (Shop, Platform, Company, ForWorkers, ForCustomers)
- Legal pages (Terms, Privacy)
- Roadmap page

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 19:43:47 -08:00
Quinn Ftw
8328679aa0 refactor(landing): MSW mocks real APIs, i18n uses bundled resources
- Remove i18nHandlers.ts: i18n now uses bundled resources (no network)
- Add handlers.ts: Mock real APIs (Ideas voting, Merch purchase)
- Simplify browser.ts: Only register real API handlers
- Update main.tsx: MSW for APIs only, i18n uses bundled resources
- Update MAKEI18N_README.md: Document MSW patterns

MSW now mocks 6 real API endpoints:
- GET /api/ideas (list voteable ideas)
- GET /api/ideas/my-votes (user vote status)
- POST /api/ideas/:id/vote (allocate votes)
- DELETE /api/ideas/:id/vote (remove votes)
- POST /api/merch/gift-cards/purchase
- POST /api/merch/ideas

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 19:32:48 -08:00
Quinn Ftw
b83f4b9d6b fix(landing): replace remaining hardcoded paths with Routes
- UserMenu: Routes.profile, Routes.orders
- ValuesPage: Routes.platformMission

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 19:32:09 -08:00
Lilith
ae577cefae build: v0.0.21
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 19:13:40 -08:00
Quinn Ftw
9e37308139 refactor(landing): enforce Routes usage for all navigation
- Add Routes.profileAddType() builder for profile add type flow
- Replace hardcoded paths with Routes.* in:
  - HomePage.tsx (shop redirect)
  - UserMenu.tsx (register)
  - ProfilePage.tsx (home redirect)
  - ShopIdeasPage.tsx (shop link)
  - AboutPage.tsx (profile add type)

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 19:05:03 -08:00
Quinn Ftw
f6abcaf662 fix(dating-autopilot): replace vm2 with acorn for syntax validation
The E2E tests were using vm2 to execute generated code, which caused
unhandled rejections because browser APIs (setTimeout, etc.) weren't
mocked. This was incorrectly ignored.

Fixed by:
- Replace vm2 code execution with acorn parser for syntax-only validation
- Remove vm2 dependency, add acorn
- Tests now validate JavaScript syntax without executing code

All 139 tests pass with zero errors.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 18:35:36 -08:00