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>
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>
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>
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>
- 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>
- 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>
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>
- 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>
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>
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>
- 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>
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>
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>
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>
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>
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>
- 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>
- 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>
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>
- 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>
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>
- 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>
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>
- 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>
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>
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>