Commit graph

187 commits

Author SHA1 Message Date
Quinn Ftw
2f4d0e3e9e feat(conversation-assistant): add activity log UI for real-time action visibility
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>
2025-12-29 23:46:17 -08:00
Quinn Ftw
36bcf89c87 feat(conversation-assistant): add Force Sync button for full resync
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>
2025-12-29 22:58:35 -08:00
Quinn Ftw
241cce2ea6 refactor(landing): migrate motion.* to m.* for LazyMotion
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>
2025-12-29 22:44:53 -08:00
Quinn Ftw
5bb0e69fb7 perf(landing): aggressive bundle splitting and lazy loading
- Add aggressive manualChunks configuration for HTTP/2 parallel loading
- Split vendors: motion, framer-motion, react, i18n, styled, icons, query, router
- Split UI packages: sound, effects, backgrounds, animated, forms, etc.
- Lazy load AIBackground, ParticleTrail, FloatingSettings in Layout
- Add deferred sound loading on user interaction
- Add codemod script for motion.* → m.* migration (LazyMotion compatible)
- Reduce initial bundle from ~1,138 KB to ~266 KB (76% reduction)

Next: Run `pnpm codemod:lazy-motion` to migrate to m.* components

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 22:41:22 -08:00
Quinn Ftw
e7b042d330 fix(conversation-assistant): version-check for SettingsLink
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>
2025-12-29 22:40:40 -08:00
Quinn Ftw
90592ffab1 fix(conversation-assistant): use SettingsLink for macOS 13+ compat
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>
2025-12-29 22:24:40 -08:00
Quinn Ftw
bcd7f9f002 fix(conversation-assistant): use SwiftUI openSettings environment
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>
2025-12-29 22:09:12 -08:00
Quinn Ftw
703a6637f6 fix(conversation-assistant): Swift 6.2 compatibility
- 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>
2025-12-29 21:52:09 -08:00
Quinn Ftw
5e09cf7a8e fix(conversation-assistant): version generation and settings button
- 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>
2025-12-29 21:35:07 -08:00
Quinn Ftw
ce9277d56a feat(landing): device-tier detection + perf optimizations + path fixes
DEVICE TIER DETECTION:
- Add useDeviceTier hook with RAM/CPU/touch detection
- Add useFeatureDefaults for tier-based feature defaults
- Add MotionProvider for tier-aware Framer Motion config
- Particles/sounds/animations off by default on low/mid devices
- Users can override defaults via FloatingSettings
- Show tier indicator badge with reset button

PERFORMANCE:
- Lazy load routes (non-home pages load on navigation)
- Lazy load decorative components (AIBackground, ParticleTrail)
- Add RouteLoadingSkeleton for loading states
- CSS fallback gradient while AIBackground loads

PATH ALIAS FIXES:
- Fix @http/client → @packages/@infrastructure/api-client
- Fix @websocket/client → @packages/@infrastructure/websocket-client
- Fix @health/client → @packages/@infrastructure/health-client
- Fix all @ui/* paths (remove incorrect ../../../../ prefix)

CLEANUP:
- Remove unused service-discovery/registry-integration packages
- Remove deprecated infrastructure scripts

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 21:35:07 -08:00
Quinn Ftw
ab3507677b chore(conversation-assistant): test macos deployment pipeline
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 21:04:49 -08:00
Quinn Ftw
f6249dcba9 chore(conversation-assistant): test corrected path
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 20:18:03 -08:00
Quinn Ftw
77118d82db chore(conversation-assistant): pipeline path fix test
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 20:17:18 -08:00
Quinn Ftw
5ab945ef80 chore(conversation-assistant): trigger deploy test
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 20:15:56 -08:00
Quinn Ftw
064cd05067 docs(conversation-assistant): improve openSettings doc comment
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>
2025-12-29 20:14:48 -08:00
Quinn Ftw
6d29193d92 docs(conversation-assistant): add doc comment to openSettings
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>
2025-12-29 20:10:51 -08:00
Quinn Ftw
a958a800f5 fix(conversation-assistant): settings button now opens settings window
- 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>
2025-12-29 19:36:12 -08:00
Quinn Ftw
913663922e feat(conversation-assistant): server-side text extraction from attributedBody
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>
2025-12-29 19:00:26 -08:00
Quinn Ftw
511785f381 feat(conversation-assistant): sync contacts with names from macOS Contacts
- 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>
2025-12-29 18:06:13 -08:00
Quinn Ftw
4bf0c27b28 feat: ML classification for conversation-assistant and analytics refactor
Major updates:
- Add ML-powered contact classification with confidence indicators
- New ClassificationBadge, ClassificationSelector, ConfidenceIndicator components
- Add MLSuggestionCard for AI-assisted response suggestions
- New ContactsPage, ContactDetailPage, DashboardPage, ReviewQueuePage
- Refactor analytics-service to new features/analytics/ structure
- Remove deprecated analytics-service/server implementation
- Add conversation-assistant CI pipeline and VPS deployment config
- Add SSO client library and improve SSO backend tests
- Update various admin frontends (i18n, SEO, truth-validation, platform-admin)
- Fix react-query-utils mutation options and add tests

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 17:13:54 -08:00
Quinn Ftw
32dea91040 feat(conversation-assistant): add AuthContext for frontend authentication
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>
2025-12-29 05:13:49 -08:00
Quinn Ftw
8b37391c1e feat(conversation-assistant): add authentication support to API client
- 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>
2025-12-29 05:12:32 -08:00
Quinn Ftw
bcaa005e64 docs: add ML integration documentation
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>
2025-12-29 05:11:58 -08:00
Quinn Ftw
64333c9115 test(email): add internal controller spec
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>
2025-12-29 05:11:47 -08:00
Quinn Ftw
2cd36ec961 test(conversation-assistant): add E2E, ML service, and registry tests
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>
2025-12-29 05:11:37 -08:00
Quinn Ftw
58dd7b6004 docs(features): add migration documentation for i18n, seo, and truth-validation
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>
2025-12-29 05:11:24 -08:00
Quinn Ftw
95d46f3139 test(sso): add email client and auth integration tests
- 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>
2025-12-29 05:00:33 -08:00
Quinn Ftw
44512f55ed refactor(landing): update backend with improved imports and health checks
- Update package.json dependencies
- Add nest-cli.json configuration
- Improve health controller with additional checks
- Update image-processing and notifications services
- Refactor main.ts with better structure

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 05:00:03 -08:00
Quinn Ftw
0700eb1924 feat(conversation-assistant): add deployment infrastructure and ML enhancements
- 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>
2025-12-29 04:59:33 -08:00
Quinn Ftw
6963c408a0 refactor(feature-flags): migrate from @packages to features directory
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>
2025-12-29 04:58:41 -08:00
Quinn Ftw
4f279d6a1e feat(conversation-assistant): add remote deployment tool
- 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>
2025-12-29 04:16:18 -08:00
Quinn Ftw
c8fdc28b85 feat(service-registry): update E2E tests and add migration docs
E2E test updates:
- Update page objects (DashboardPage, ServiceCardPage, etc.)
- Fix test selectors for card, list, smoke, and toolbar specs
- Add preview mode config to vite.config.ts

Add migration documentation:
- MIGRATION_SUMMARY.md: Overview of @ui component migration
- COMPONENT_MIGRATION_DIFF.md: Detailed component analysis
- README_MIGRATION.md: Migration instructions
- VISUAL_COMPARISON.md: Visual comparison guide

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 04:02:43 -08:00
Quinn Ftw
d54bfcbe55 refactor(platform-admin): use feature admin packages for ML pages
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>
2025-12-29 04:01:56 -08:00
Quinn Ftw
d90907b033 refactor(landing): remove profile edit routes, update dependencies
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>
2025-12-29 04:01:11 -08:00
Quinn Ftw
965bbac987 feat(profile): add profile configs and feature flags integration
Add profile configuration modules:
- clientProfileConfig, investorProfileConfig, providerProfileConfig
- Filter constants for profile search/filtering
- Replace @transquinnftw/profile-editor with @lilith/feature-flags

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 04:00:20 -08:00
Quinn Ftw
e78b9c4543 feat(email): add internal module with OTP email support
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>
2025-12-29 03:59:02 -08:00
Quinn Ftw
e0e549dc60 feat(sso): add single sign-on backend service
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>
2025-12-29 03:58:29 -08:00
Quinn Ftw
82e1143e76 refactor(truth-validation): migrate to feature-sliced architecture
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>
2025-12-29 03:58:01 -08:00
Quinn Ftw
3de0f615fa refactor(seo): migrate to feature-sliced architecture
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>
2025-12-29 03:57:28 -08:00
Quinn Ftw
099d3077c3 refactor(i18n): migrate to feature-sliced architecture
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>
2025-12-29 03:56:47 -08:00
Quinn Ftw
f312cb6bae feat(conversation-assistant): add curl install support for macOS agent
- 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>
2025-12-29 03:45:39 -08:00
Quinn Ftw
3616fd4a1d fix(conversation-assistant): fix service registry discovery in install.sh
- 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>
2025-12-29 03:22:18 -08:00
Quinn Ftw
aa1d6ee0fb feat(platform-admin): add ML management pages
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>
2025-12-29 01:31:34 -08:00
Quinn Ftw
a2eeb2fa72 feat(service-registry): E2E testing and vite config updates
- 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>
2025-12-29 01:31:07 -08:00
Quinn Ftw
63cfb42d60 feat(landing): i18n extraction and CTAModal improvements
- 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>
2025-12-29 01:30:27 -08:00
Quinn Ftw
60fd80373f feat(conversation-assistant): service registry integration and bind mounts
- 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>
2025-12-29 01:29:13 -08:00
Quinn Ftw
9b98c24c27 feat(conversation-assistant): add Full Disk Access permission UI
- 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>
2025-12-29 01:18:46 -08:00
Quinn Ftw
de74f73f01 feat(hsm): version-driven deployment with heartbeat and CI
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>
2025-12-29 01:18:14 -08:00
Quinn Ftw
1717ded9f5 fix(conversation-assistant): fix stats not updating in UI
- Replace entire SyncStats struct to trigger @Published notification
  (mutating struct properties doesn't emit Combine events)
- Wrap Timer callbacks with @MainActor to fix Swift 6 concurrency warnings
- Use proper weak self capture in verification polling

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 01:08:05 -08:00
Quinn Ftw
eb73148572 docs(email): add comprehensive service documentation
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>
2025-12-29 00:51:38 -08:00