Commit graph

18 commits

Author SHA1 Message Date
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
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
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
190802c6f1 fix(conversation-assistant): add missing API and view files
- 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>
2025-12-29 00:12:25 -08:00
Quinn Ftw
a67a2cc110 fix(conversation-assistant): fix sync status UI not updating
- 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>
2025-12-28 23:10:58 -08:00
Quinn Ftw
94da62eea6 feat: add conversation-assistant feature scaffold
Add AI conversation assistant service.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 16:10:47 -08:00