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
NavigationSplitViewroot 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.swiftSonarDesk/Services/SonarQubeClient.swiftSonarDesk/Services/KeychainService.swiftSonarDesk/Services/ICloudDriveStore.swiftSonarDesk/Stores/AppState.swiftSonarDesk/Shared/Workspaces/WorkspaceModels.swiftSonarDesk/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.