IOS updates

This commit is contained in:
Mark Gregory
2026-10-06 09:13:11 +01:00
parent 736765180c
commit eac5910dbb
15 changed files with 1288 additions and 10 deletions
+22
View File
@@ -0,0 +1,22 @@
# SonarDesk iOS + Team — Phase 1
Added the non-destructive shared workspace domain foundation.
## Added
- `WorkspaceKind`: personal/team
- `WorkspaceRole`: owner/admin/developer/viewer
- `SonarWorkspace`
- `WorkspaceMember`
- `WorkspaceStore`
- iCloud Drive persistence for workspace metadata
- Explicit credential boundary: SonarQube tokens stay device-local in Keychain
## Next in Xcode
1. Add a SonarDesk iOS app target (`net.absdev.SonarDesk.iOS`).
2. Enable the existing iCloud container `iCloud.net.absdev.SonarDesk` plus CloudKit.
3. Share API/models/workspace files with both targets.
4. Add an iOS-specific app entry point and `NavigationSplitView`.
5. Implement Dashboard, Projects and Project Detail.
6. Introduce CloudKit private/shared workspace repository and migrate the workspace JSON records.
No existing macOS source was modified in Phase 1; the new synchronized-folder files are automatically visible to the current Xcode project.
+34
View File
@@ -0,0 +1,34 @@
# 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.
+19
View File
@@ -0,0 +1,19 @@
# SonarDesk Phase 3 — Buildable iOS/iPadOS target
This phase fixes the missing Xcode target from Phase 2.
## Added
- `SonarDesk-iOS` native application target in `SonarDesk.xcodeproj`
- iPhone + iPad destinations (`TARGETED_DEVICE_FAMILY = 1,2`)
- iOS 17 deployment target
- bundle identifier `net.absdev.SonarDesk.iOS`
- iOS-specific iCloud/CloudKit entitlements
- self-contained iOS shared source copies so AppKit-only macOS files are not compiled into iOS
- Dashboard, Projects, Project Detail, Settings and workspace selector
## Important
The macOS `SonarDesk` target is retained separately. Its licensing source/configuration was not intentionally changed by this phase.
Open `SonarDesk.xcodeproj`, choose the `SonarDesk-iOS` scheme/target and an iPhone/iPad simulator or device.
If Xcode reports a provisioning error for `net.absdev.SonarDesk.iOS` or the iCloud container, enable the App ID/capabilities for your Apple Developer team in Signing & Capabilities. This cannot be provisioned from the Linux build environment used to prepare this archive.
+3
View File
@@ -0,0 +1,3 @@
# Phase 3.2 — iOS SonarQube Server Configuration
Adds full on-device server management to the iPhone/iPad target: add, edit, delete, select, test connection, multiple servers, and secure Keychain token storage. Existing tokens are never displayed. HTTPS is required except localhost loopback development URLs.