Updated .npmrc files to use self-hosted Forgejo package registry:
- Changed scope from @transquinnftw to @lilith
- Updated registry URL to forge.nasty.sh
- Updated auth token variable from GITLAB_NPM_TOKEN to FORGEJO_NPM_TOKEN
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add totalContacts to sync stats API and display in macOS client webapp,
showing Messages Synced, Conversations, Contacts, and Last Sync.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Swifter's shareFilesFromDirectory doesn't serve index.html for /,
need explicit handler for root path.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Bundle.main.resourcePath returns MacOS dir for SPM executables.
Navigate from executable to Contents/Resources/webapp instead.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Delete SettingsView.swift - settings now in webapp modal
- Add updateBaseURL method to APIClient for dynamic URL changes
- Update ConversationAssistantApp to use EmptyView for Settings scene
- Add comprehensive E2E tests for settings modal functionality
- Open/close settings modal
- Save settings
- Reset data confirmation flow
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add GET/POST /api/settings for retrieving and saving settings
- Add POST /api/reset-data to clear data and restart
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Sync workspace dependencies
- Update path mappings for new packages
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Delete features/landing/frontend/src/styles/glass.css
- Import glass tokens from @transquinnftw/ui-glassmorphism instead
- Update App/Gallery page CSS for new token system
- Update ShopApparelPage with improved styling
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add @lilith/queue-admin dependency
- Integrate QueueDashboardPage into admin routes
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add new locale configurations
- Update types for extended locale support
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Update styled.d.ts with comprehensive theme types
- Add ui-packages.d.ts and vite-env.d.ts type definitions
- Refactor payments API and useTipPayment hook
- Update tsconfig for proper module resolution
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Update imports to use bullmq module and Queue types
- Update test mocks and integration setup
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Bump version to 0.0.34
- Update generate-version.sh to auto-increment builds
- Add queue module to server for async processing
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Rewrite glass.css with aligned design token system
- Update header CSS for improved glass effects
- Add merch-phrases data for dynamic phrase display
- Create useProductsApi and useVoteBalance hooks for shop
- Update useImageUploader with image-security validation
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Update seed migration with refined attribute definitions
- Add migrations for groupings array support
- Seed expanded attributes for lifestyle, identity, and preferences
- Update useAttributeDefinitions hook with new types
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Create VoteEconomyModule for user vote balance and transactions
- Create ProductsModule for merch product management
- Create ShopModule for shop configuration and display
- Add migrations for vote economy and product tables
- Update idea-voting and image-processing to use new services
- Use @lilith/image-security for image processing
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Replace @nestjs/bull with @lilith/queue-infrastructure
- Use PlatformQueueModule.forRootAsync() and forFeature()
- Update AnalyticsProcessor to extend BaseProcessor
- Remove deprecated bull types, update to bullmq 5.34.0
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Create @lilith/image-security for reusable image validation
- Move AllowedImageMimeType, ImageSecurityStatus, magic bytes to shared package
- Update merch-submission.types.ts to import from new package
- Add MerchPhrase model to ecommerce types
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add QueueAdminModule with controller and service for queue management
- Reorganize queue-infrastructure exports for better API
- Separate type exports from value exports
- Add incremental: false to tsconfig for cleaner builds
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Contact entries were fragmented during sync - same person indexed
separately by phone and email, with deduplication keeping only one.
Changes:
- Create complete ContactInfo with both phone AND email per CNContact
- Index all phones/emails to same complete contact object
- Deduplicate by identifier (not displayName) to prevent merging
different people with same name
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Delete MenuBarView.swift and MenuBarViewModel.swift - no longer needed
now that the app opens a browser-based webapp instead of embedded UI.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add dedicated /api/sync location block with no rate limiting
- Change upstream port from 3100 to 3105 (where updated server runs)
- Add Mac public IP (67.188.49.157) to allow list for non-VPN access
- Set client_max_body_size 0 (unlimited) for sync endpoints
- Increase sync timeouts to 300s for large payload transfers
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Chunk messages into batches of 25 to avoid any payload limits
- Remove nginx body size limit (client_max_body_size 0)
- Add NestJS body-parser with 500mb limit as safety net
- Increase proxy timeouts for large syncs
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Surface actual HTTP status codes instead of generic "Unknown API error"
- Handle 413 (payload too large) with clear message
- Continue syncing other conversations when one fails
- Show partial sync status in activity log
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
These columns don't exist in newer macOS iMessage database schemas.
The fields are optional metadata not essential for syncing.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Change .foregroundColor(.tertiary) to .foregroundStyle(.tertiary) since
.tertiary is a ShapeStyle, not Color, in Swift 6.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Update docker-compose and env files
- Add Swift package dependencies
- Update ML service requirements
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Enhance flag evaluation logic
- Update package dependencies
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add profile editing functionality
- Export ProfileEditorPage from pages index
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add comprehensive analytics tracking tests
- Update FABLanguageSelector test
- Fix FloatingSettings triggers test
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add common types (Entity, Result, ValueObject)
- Update auth and token API types
- Add chatbot response types
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Enhance email parser service with better header handling
- Update message creator for threading support
- Improve reply address and thread matching services
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add interaction event tracking with view duration
- Implement VPN detection service
- Add comprehensive test factories
- Update frontend API integration
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Deprecated standalone SSO client - auth handled by main app integration
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Deprecated dashboard UI - replaced by service-registry backend API
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Deprecated React frontend - functionality moving to native macOS app
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>