AiPBX

Spec 002: iOS Mobile App Feature Parity & In-App Media Viewer


1. Problem & Goal (What & Why)

1.1 Problem Statement

The native iOS mobile client (AiPBX-ios) has achieved WebRTC video calling, PushKit VoIP notifications, 23-language localization, CallKit integration, swipe-to-delete call history, and notification inline reply. However:

  1. In chat, tapping a photo currently invokes UIApplication.shared.open(url), ejecting the user out of AiPBX into Mobile Safari instead of opening an in-app full-screen photo viewer (unlike Android’s ImageViewerDialog).
  2. Version tags and build numbers across AiPBX-ios and AiPBX-Android need synchronization with the core PBX repository (v1.50.35).
  3. The project roadmap (docs/roadmap.md) still lists iOS video calls and parity features as open, requiring reconciliation.

1.2 Proposed Solution

  1. In-App Image Viewer (ImageViewerOverlay / ImageViewerView): Implement a native SwiftUI full-screen modal viewer with pinch-to-zoom (MagnificationGesture), pan (DragGesture), double-tap to reset/zoom, and tap/swipe to dismiss.
  2. Version Synchronization: Update VERSION across AiPBX-ios and AiPBX-Android to 1.50.35, updating build numbers and version strings in project.pbxproj and LoginView.swift.
  3. Roadmap & Documentation Reconciliation: Update docs/roadmap.md to reflect that video calls and iOS app parity are fully implemented and verified.

2. User Stories & Acceptance Criteria (DoD)

User Stories

Acceptance Criteria (Definition of Done)


3. Technical Design (How)

3.1 In-App Image Viewer Component

File: AiPBX-ios/AiPBX/Views/Components/ImageViewerOverlay.swift

3.2 Version Synchronization


4. Implementation Tasks & Checklist