Files
SonarDesk/docs/PHASE-2-IOS.md
2026-10-06 09:13:11 +01:00

1.8 KiB

SonarDesk iOS + Team — Phase 2

Phase 2 adds the first native iPhone/iPad client source while leaving the existing macOS target and licensing implementation untouched.

Added

  • Native iOS app entry point (SonarDeskIOSApp)
  • Adaptive NavigationSplitView root interface
  • iOS Dashboard
  • Failed Quality Gate projects highlighted in red
  • Project browser with search and pull-to-refresh
  • Project detail metrics
  • Workspace selector using the Phase 1 Personal/Team model
  • iOS settings showing workspace/server and the device-local credential boundary
  • Separate iOS entitlements file with the existing iCloud container and CloudKit capability

Shared files for the iOS target

Add these existing source groups to iOS target membership:

  • SonarDesk/Models/Models.swift
  • SonarDesk/Services/SonarQubeClient.swift
  • SonarDesk/Services/KeychainService.swift
  • SonarDesk/Services/ICloudDriveStore.swift
  • SonarDesk/Stores/AppState.swift
  • SonarDesk/Shared/Workspaces/WorkspaceModels.swift
  • SonarDesk/Shared/Workspaces/WorkspaceStore.swift

Do not add the macOS SonarDesk/App/SonarDeskApp.swift to the iOS target. Use SonarDesk-iOS/SonarDeskIOSApp.swift as the iOS app entry point.

Xcode target

Create an iOS App target named SonarDesk-iOS with bundle identifier net.absdev.SonarDesk.iOS, iPhone + iPad destinations, and the deployment target you want to support. Assign SonarDesk-iOS/SonarDesk-iOS.entitlements to that target.

The existing macOS entitlements, licensing files, bundle identifier, and licence verification code are unchanged.

Phase 3

Replace workspace JSON mirroring with a CloudKit repository, implement CKShare-backed team workspaces/invitations, member roles, and server metadata synchronization. Credentials remain in each member's Keychain.