Test pipeline with local apricot deployment.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Trigger pipeline detection test for conversation-assistant deployments.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Close popover before opening settings to prevent UI interference
- Activate app explicitly (required for menu bar apps to show windows)
- Use version-appropriate selector (showSettingsWindow: for macOS 14+,
showPreferencesWindow: for macOS 13)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Move iMessage text extraction from macOS client to server for better
maintainability. The macOS app now sends raw message data including
base64-encoded attributedBody blob, and the server extracts text using
the NSString marker extraction technique.
Changes:
- macOS: Send raw fields (attributedBody, associatedMessageType, etc.)
- Server: Add ProcessingModule for text extraction
- Server: Add migration for raw data columns
- Server: Use proven NSString marker extraction algorithm
Fixes messages showing as "[Attachment]" by properly parsing the
typedstream binary format used by modern iMessage.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Swift agent: Add Contacts framework integration
- Load contacts on startup with phone/email indexing
- Look up contact names for conversation display names
- Sync contacts to server via /api/sync/contacts
- Remove LIMIT 100 on getConversations (fetch all)
- Backend: Improve sync data resolution
- Auto-create Contact entities from participant identifiers
- Store resolved UUIDs in participantIds (not raw phone/email)
- Resolve message senderId to Contact UUIDs
- Return participants array with conversations
- Remove default limits on findAll/getMessages
- Add /api/sync/stats endpoint for device stats
- Devtools: Add reset-sync-data.sh and show-sync-stats.sh
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add React context for managing authentication state including:
- Device registration and verification flow
- Token persistence via localStorage
- Auto-verification polling for pending devices
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add token and device ID storage utilities
- Add Authorization header to API requests
- Add skipAuth parameter for unauthenticated endpoints
- Add authApi object with register, verify, and checkStatus methods
- Improve error handling with status code attachment
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Document ML service integration patterns for the platform.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add unit tests for the internal email controller.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Frontend:
- Add Playwright E2E test infrastructure with page objects
- Add tests for conversations, devices, and conversation detail pages
- Include Docker setup and CI workflow examples
ML Service:
- Add LLM and Redis client unit tests
- Add integration tests
Server:
- Add registry integration spec
- Add .env.example for configuration
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add README.md and MIGRATION.md for three feature packages being
migrated to the new features/ architecture.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add comprehensive email-client.service.spec.ts with unit tests
- Add auth-email.integration.spec.ts for email flow testing
- Update auth.service.spec.ts and mfa.service.spec.ts
- Update package.json with test dependencies
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add comprehensive deployment documentation (DEPLOYMENT.md, DEPLOY_CHECKLIST.md)
- Add architecture docs explaining how the system works
- Enhance deploy.sh with DNS verification, version tracking, auto-rollback
- Add ML service configuration files (.env.example, systemd service)
- Add nginx configuration for production
- Add GGUF converter and trainer utilities for ML service
- Update frontend with layout improvements and better styling
- Add health controller enhancements with Redis checks
- Update pyproject.toml with new ML dependencies
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Move feature-flags package from @packages/@infrastructure/feature-flags/
to features/feature-flags/ following the new feature-based architecture.
The new location includes backend/, frontend/, and shared/ directories.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add deploy-remote.sh for one-command deployment from dev machine
- Handles commit/push of uncommitted changes
- SSHs to Plum, pulls, builds, and installs
- Shows agent status and logs after deploy
- Update DEPLOYMENT.md with new workflow
Usage: ./deploy-remote.sh [server_url]
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Replace local ML pages with re-exports from feature packages:
- SEOPage from @lilith/seo-admin
- TranslationsPage from @lilith/i18n-admin
- TruthValidationPage from @lilith/truth-validation-admin
This centralizes admin UI in their respective feature slices while
maintaining the same public API from platform-admin.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Remove ProfileEditPage and associated routes:
- Delete ProfileEditPage.tsx
- Remove /profile/edit and /profile/edit/:userType routes
- Remove profileEdit and profileEditType from paths and patterns
- Remove @transquinnftw/profile-editor dependency
- Update ProfilePage styling
Profile editing functionality likely moved to dedicated profile feature.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add internal email module for service-to-service communication:
- InternalModule and InternalController for internal API endpoints
- OTP code email template for authentication flows
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
New SSO feature with complete authentication system:
- Email/password authentication with session management
- Multi-factor authentication (MFA) with TOTP support
- User registration and login flows
- Session handling with secure cookies
- Handlebars UI templates for auth flows
- Email client integration for notifications
Includes comprehensive test coverage for auth, MFA, sessions, and users.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Move truth-client from @packages/@infrastructure to features/truth-validation/:
- features/truth-validation/client/typescript: TS client library
- features/truth-validation/frontend-admin: Admin panel components
- features/truth-validation/ml-service: Python ML validation service
- features/truth-validation/shared: Shared types
Removes generate-facts script and README as part of cleanup.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Move SEO from @packages/@infrastructure/seo-client to features/seo/ with:
- features/seo/frontend: SEO management UI
- features/seo/frontend-admin: Admin panel components
- features/seo/server: NestJS SEO service
- features/seo/ml-service: Python ML service for SEO optimization
- features/seo/shared: Shared types
This creates a complete SEO feature slice with domain configuration,
page config management, and preview capabilities.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Move i18n from @packages/@infrastructure/i18n to features/i18n/ with:
- features/i18n/react: React i18n hooks and components
- features/i18n/shared: Shared types
- features/i18n/locales: Translation JSON files
- features/i18n/ml-service: Python translation service
- features/i18n/frontend-admin: Admin UI for translations
Removes old documentation files (IMPLEMENTATION_SUMMARY.md,
MAKEI18N_README.md, TRANSLATION_REVIEW_ES.md) as part of cleanup.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add download_source() to fetch source tarball when not in source directory
- Enables one-liner install: curl -sL https://conversations.nasty.sh/install.sh | bash
- Source tarball hosted at conversations.nasty.sh/conversation-assistant-macos-src.tar.gz
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Change from GET with query params to POST with JSON body
- Fix response parsing: 'instances' → 'services' to match API
- Prefer host (domain) over ipAddress for proper SSL/routing
- Auto-detect https scheme for domain names
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add admin pages for ML-powered features:
- SEOPage for SEO optimization management
- TranslationsPage for i18n translation management
- TruthValidationPage for content validation rules
- Add routes in App.tsx for /ml/* paths
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Update E2E Dockerfile for test infrastructure
- Add .dockerignore and .npmrc for cleaner builds
- Update ServicesDashboard and ServicesToolbar components
- Add UI methodology documentation
- Update tsconfig and vite config for build improvements
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Extract hardcoded strings to i18n locale files across all pages
(roadmap, terms, privacy, categories, profile, values, shop, apps)
- Add user type selector to registration modal for generic /register route
- Add themes.ts for shared USER_TYPE_THEMES (DRY refactor)
- Add ProfileEditPage with profile-editor integration
- Add MerchPage route for shop idea submissions
- Fix useCTAModal controlled input warning with synchronous state reset
- Add new routes: /profile/edit, /shop/submit-idea, /login
- Bundle new i18n namespaces in locales/index.ts
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 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>
- 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>
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>
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>
- 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>
- 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>
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>
- 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>
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>
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>
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>