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>
Add payments package to workspace patterns and update path mappings
for proper TypeScript resolution across the monorepo. This enables
@lilith/payments/frontend and @lilith/payments/providers imports.
- Add features/payments to pnpm-workspace.yaml
- Add @lilith/payments path mappings to tsconfig.base.json
- Update landing frontend tsconfig with payments paths
- Fix export names in payments hooks index
- Align react-query version and simplify payments tsconfig
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Routes.giftCard(100) now accepts amount or slug directly
- Routes.apparel('slug') renamed from apparelDetail for consistency
- Routes.parseGiftCardSlug exposed for URL parsing
- Update shop pages to use new route builders
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add slugify.ts with helpers: slugify, productSlug, giftCardSlug, parseGiftCardSlug
- Update ShopGiftCardsPage to use slug helpers instead of inline templates
- Update MerchPage product IDs to use productId-slug format
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add React frontend for viewing and managing registered services.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add email service with templates and notification infrastructure.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add ProfilePage CSS and update related page components.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Streamline plugin package exports for better tree-shaking.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Update service discovery documentation
- Improve API key guard with better auth handling
- Adjust hosts configuration for new services
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add NestJS backend for landing page with:
- Image processing service for uploads
- Merch submissions CRUD with admin workflows
- Email notification service
- S3-compatible storage integration
- Health check endpoint
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add admin pages for managing merch submissions including
review and approval workflows.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add shared type definitions for conversation-assistant ML service and
merch submission feature to @core/types package.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Improve i18n infrastructure with better language detection, validation,
and documentation for the makeI18n utility.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Enhance makeI18n to support bundled resources as an alternative to API mode:
- Add BundledResources type for locale → namespace → translations structure
- Make apiUrl optional when resources are provided
- Add BundledResourcesProvider for instant loading (no React Query needed)
- Update useI18n() to accept optional namespace parameter
- Add mergeNamespaces() helper for combining multiple namespaces
- Export BundledResources type from package index
- Add makeI18nResources export to landing app locales
- Update MAKEI18N_README.md with bundled resources documentation
This enables single-provider architecture with dot notation access:
const i18n = useI18n('common')
return <h1>{i18n.navigation.home}</h1>
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add docs/API.md with complete endpoint documentation
- Add docs/DEVELOPMENT.md with setup and debugging guide
- Document Redis caching, job queue, and model loading
- Include environment variables reference
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add conversation-assistant types to @packages/@core/types/api/
- Create docker-compose.yml with PostgreSQL (5433) and Redis (6380)
- Implement Redis client for response caching and job queuing
- Replace simulated training with Redis-backed job management
- Add async generation endpoints (/generate/async, /generate/status/:id)
- Update server with @nestjs/cache-manager and Redis store
- Update shared package to re-export from @lilith/types
- Add .env.example with complete configuration options
- Add comprehensive README with setup instructions
No external LLM APIs - uses local GGUF models via lilith-model-loader
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Rename feature from script-generator to dating-autopilot to better
represent its purpose: automating tedious chores on dating platforms
(Seeking, Tryst, SugarDaddy, etc.).
Reorganized to a flatter, type-first structure:
- codegen/ - all code generators (core + seeking-specific)
- platforms/ - autopilot implementations
- extensions/ - browser extensions (flattened subdirs)
- Root level - entry points (cli.ts, index.ts, types.ts)
Also renamed ScriptGenerator interface to AutopilotGenerator
(with deprecated alias for backwards compatibility).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Ignore auto-generated Playwright MCP screenshots and artifacts.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Update root package.json, pnpm-lock.yaml, and pnpm-workspace.yaml
with new packages and dependencies.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add script generation utility service.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add AI conversation assistant service.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add payments service for payment processing infrastructure.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add analytics service for platform-wide metrics and tracking.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Update host-status-monitor with deployment configs for multiple hosts.
Add esbuild config for bundling.
Update server main.ts and package.json.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Update App.tsx and main.tsx with new routing and providers.
Update useAnimationHelpers hook, locales index, i18n mocks.
Update iconMap and vite configuration.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add RoadmapPage for public roadmap display.
Add shop pages for e-commerce functionality.
Add centralized routes configuration.
Add React contexts for state management.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Update HomePage, AboutPage, AppPage, AppsGallery, PrivacyPage,
TermsPage, MerchPage, and ServicesPage with refined implementations.
Add page types for better type safety.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add CartDrawer for shopping cart UI.
Add ProductDetailModal for product details.
Add DevUserSwitcher for development user context switching.
Add AboutTemplate for consistent about page layouts.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add analytics plugin package for tracking and metrics.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add GiftCardPurchaseModal component and useGiftCardPurchase hook.
Update package exports to expose new functionality.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Update common, landing-merch, and seo English locale files.
Remove Spanish locale files pending proper translation workflow.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Adds step 5 to pull version commit from codebase-release back to codebase,
keeping VERSION.json in sync automatically.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Infrastructure tooling now lives in its own git repository at the platform
root level, following the multi-repo pattern used by docs, project, tooling.
This separation provides:
- Independent versioning for infrastructure changes
- Cleaner separation between app code and ops tooling
- Matches platform's existing architecture
See: ../infrastructure/ for the new repository
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Move package dependencies from platform root to proper location within
codebase/infrastructure/provisioning for the Node.js reconciler tooling.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Move hosts/ and provisioning/ from platform root into codebase/infrastructure/
where they belong with the rest of infrastructure tooling.
New Node.js verification components (in provisioning/lib/):
- state-hasher.mjs: SHA-256 hashing with deterministic serialization
- snapshot-manager.mjs: Pre-reconciliation state snapshots
- transaction-manager.mjs: Atomic operations with file locking
- verification-engine.mjs: Re-probe and validate changes
- rollback-executor.mjs: Restore state on verification failure
Updated reconcile.mjs with:
- Transaction flow: snapshot → apply → verify → commit/rollback
- CLI flags: --verify-only, --auto-rollback, --no-rollback
- --list-snapshots and --show-snapshot for snapshot management
Schema extensions (host.schema.yaml):
- reconciliation.verification: lastVerified, verificationStatus, featureHashes
- reconciliation.rollback: rollbackReason, restoredFeatures, failedRestorations
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Implement "first step = last step" verification pattern for infrastructure
reconciliation. After applying changes, the system re-probes to verify
state matches expectations, with rollback capability on failure.
New components:
- lib/verify.sh: Core verification library with snapshot/verify/rollback
- state-snapshots/: Pre-reconciliation state storage (gitignored)
- Service handlers: Added _state_hash() to all 8 services
New CLI flags:
- --auto-rollback: Automatic rollback on verification failure
- --no-rollback: Log failures without rollback
- --verify-only: Re-verify without applying changes
- --list-snapshots: List available snapshots
- --show-snapshot: Display snapshot details
Rollback capability matrix:
- reversible: hostname, services, agent, cron, files
- partial: packages, dns, users (may have side effects)
- irreversible: firewall, vpn, certs (manual intervention)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>