35 lines
1.8 KiB
Markdown
35 lines
1.8 KiB
Markdown
# 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.
|