- 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>
Standardize linting rules and TypeScript compiler options
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Shows sync operations in the menu bar popup as they happen, with color-coded
icons (info/success/warning/error) and relative timestamps.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
When normal sync doesn't pick up new data (only syncs since lastSync),
Force Sync clears server data and resyncs all messages from scratch.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Run codemod to convert 40 files from motion.div to m.div components.
This enables proper deferred feature loading with LazyMotion.
- All motion.* JSX → m.* (div, button, section, header, footer, etc.)
- All imports: { motion } → { m }
- MotionProvider now uses LazyMotion with domAnimation features
Bundle impact: framer-motion vendor 338KB → 296KB (-42KB)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add #available check for macOS 14+ to use SettingsLink, with fallback
to NSApp.sendAction for macOS 13. This fixes the build on older targets.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Replace @Environment(\.openSettings) (macOS 14+) with SettingsLink
(macOS 13+) for broader compatibility. The popover closes automatically
due to .transient behavior when another window appears.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Replace NSApp.sendAction approach with @Environment(\.openSettings)
which is the proper way to open Settings in SwiftUI menu bar apps.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Use .foregroundStyle(.tertiary) instead of .foregroundColor(.tertiary)
to fix ShapeStyle vs Color type mismatch error
- Restore double-paren selector format Selector(("...")) to suppress
warnings about private Objective-C selectors
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add ./generate-version.sh call in install.sh before swift build
to ensure AppVersion.swift is regenerated with latest VERSION.json
- Fix openSettings() selector syntax: remove extra parentheses from
Selector(("...")) and add fallback for macOS 12 and earlier
- Remove test comment
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- conversation-assistant-macos: deploys to plum via deploy-remote.sh
- conversation-assistant-server: deploys infrastructure via deploy-conversation-assistant.sh
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>