Skip to content

FaceTime Integration & Call Automation #333

@ProjectLiminality

Description

@ProjectLiminality

Description

Implement AppleScript-based FaceTime integration to enable one-click call initiation from Obsidian commands, automatically transitioning to copilot mode for seamless conversation enhancement workflow.

Parent Specification: #269
Parent Epic: #257

Note: This feature is marked as Optional MVP - can be implemented after core copilot functionality is working.

Technical Approach

Metadata Structure

  • Add optional email and phone fields to person DreamNode metadata
  • Contact fields only applicable to person-type nodes (not idea-type)
  • Graceful fallback when metadata missing

AppleScript Integration

  • Create FaceTimeService for macOS FaceTime control
  • Use AppleScript via Electron child_process for call initiation
  • Design with future cross-platform abstraction in mind (Windows/Linux)

Implementation Phases

Phase 1: Basic FaceTime Launch

  • Add contact metadata fields to DreamNode type definitions
  • Implement AppleScript-based FaceTime call initiation
  • Command: "InterBrain: Start Video Call" - launches FaceTime with selected person
  • Command: "InterBrain: Set Contact Info" - temporary text input for testing metadata updates
  • Error handling for missing contact info and FaceTime unavailability

Phase 2: Automatic Mode Switching

  • Auto-switch to copilot mode when video call command triggered
  • Command: "InterBrain: End Video Call" - exits copilot mode manually
  • Smooth mode transition handling

Phase 3: Native Edit Mode UI Polish

  • Add contact info fields to edit mode UI for person nodes
  • Integrate contact editing into existing edit mode workflow
  • Remove temporary "Set Contact Info" command

Enhanced Acceptance Criteria

Metadata & Contact Management

  • Person DreamNode metadata includes optional email and phone fields
  • Contact fields stored in .udd/metadata.json format
  • Graceful error message when contact info missing
  • Temporary command for quick contact info testing (Phase 1)
  • Native edit mode UI for contact editing (Phase 3)

FaceTime Integration

  • FaceTimeService class created with AppleScript integration
  • Command "InterBrain: Start Video Call" initiates FaceTime call
  • FaceTime launches with contact pre-filled from metadata
  • Error handling for FaceTime app unavailability
  • Cross-platform abstraction considered in service design

Mode Switching

  • Automatic transition to copilot mode when call starts
  • Command "InterBrain: End Video Call" exits copilot mode
  • Smooth UX flow from call initiation to active copilot session
  • Proper cleanup when exiting copilot mode

User Experience

  • Clear error messages for all failure scenarios
  • Contact info only relevant for person-type nodes
  • Integration feels natural within existing InterBrain workflow
  • Edit mode shows contact fields for person nodes (Phase 3)

Dependencies

Definition of Done

  • Person DreamNode metadata supports email and phone fields
  • "InterBrain: Start Video Call" command successfully launches FaceTime
  • Automatic mode switching to copilot works seamlessly
  • "InterBrain: End Video Call" command exits copilot gracefully
  • Error states handled with clear user feedback
  • Edit mode UI allows editing contact info for person nodes
  • All phases tested in Obsidian development vault
  • Code follows project architectural patterns
  • Tests passing with npm run check-all

Implementation Priority

Status: Ready to implement - Core copilot functionality (#327) is complete and working.

Approach: Incremental development on single feature branch with three phases, each tested before moving to next.

Metadata

Metadata

Assignees

No one assigned

    Labels

    featureFeature level issues

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions