Commit graph

273 commits

Author SHA1 Message Date
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
Lilith
0acd70b14f build: v0.0.32
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 21:04:53 -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
Lilith
89feb319ba build: v0.0.31
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 21:04:37 -08:00
Quinn Ftw
62504aa06a feat(pipeline): split conversation-assistant into macos/server deployments
- 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>
2025-12-29 21:04:11 -08:00
Lilith
9903cc1286 build: v0.0.30
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 20:18:07 -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
Lilith
d5d29d38ad build: v0.0.29
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 20:17:22 -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
Lilith
08a492fa49 build: v0.0.28
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 20:16:00 -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
Lilith
316a6c9203 build: v0.0.27
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 20:14:52 -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
Lilith
412e3dff06 build: v0.0.26
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 20:10:55 -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
Lilith
b989dce376 build: v0.0.25
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 19:42:26 -08:00
Quinn Ftw
9b8d998641 fix(pipeline): use tag range for change detection fallback
HEAD~1 only detected the previous commit, missing earlier changes
in the same release. Now compares LAST_TAG..HEAD~1 to catch all
changes since the previous release tag.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 19:42:22 -08:00
Quinn Ftw
86c4f31d12 Merge version sync from codebase-release 2025-12-29 19:41:10 -08:00
Lilith
a6517efc25 build: v0.0.24
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 19:40:57 -08:00
Quinn Ftw
6a55982e1f fix(pipeline): detect conversation-assistant changes for deployment
Add pattern matching for features/conversation-assistant/ and case
handler to trigger deploy-conversation-assistant.sh on changes.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 19:40:42 -08:00
Lilith
0de6e83bd3 build: v0.0.23
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 19:36:23 -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
Lilith
28dbcc5651 build: v0.0.22
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 19:00:37 -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
8e74974d20 chore: add pnpm override for reflect-metadata version
Update pnpm-lock.yaml with resolved dependencies.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 05:01:05 -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
8d0202ca81 chore: update pnpm workspace for new feature structure
Add workspace patterns for feature-sliced architecture:
- features/*/react: React packages within features
- features/*/client/*: Client packages (e.g., TypeScript clients)

Update pnpm-lock.yaml with new dependencies.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 04:03:21 -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
b52ba44cb4 feat(feature-flags): add feature flag infrastructure package
New feature flag package with React and NestJS support:
- FeatureFlagService core with default flags
- React hooks (useFeatureFlag) and FeatureGate component
- FeatureFlagProvider for React context
- NestJS module integration
- TypeScript type definitions

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 03:59:40 -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