Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
blank_issues_enabled: false
contact_links:
- name: Security vulnerability
url: https://github.com/hideouts-io/iOS-Developer-Toolkit/security/advisories/new
url: https://github.com/hideouts-io/iOS-Developer-Toolkit-Swift/security/advisories/new
about: Report vulnerabilities privately. Do not open a public issue.
- name: Questions and usage help
url: https://github.com/hideouts-io/iOS-Developer-Toolkit/discussions
url: https://github.com/hideouts-io/iOS-Developer-Toolkit-Swift/discussions
about: Ask setup, compatibility, and workflow questions in Discussions.
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ jobs:
- name: Render every page at the default and minimum window sizes
run: |
scripts/check-layout.sh \
"$RUNNER_TEMP/dd/Build/Products/Debug/iOS Developer Toolkit.app/Contents/MacOS/iOS Developer Toolkit" \
"$RUNNER_TEMP/dd/Build/Products/Debug/iOS Developer Toolkit (Swift).app/Contents/MacOS/iOS Developer Toolkit (Swift)" \
"$RUNNER_TEMP/layout"
- uses: actions/upload-artifact@v7
if: always()
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,8 @@ jobs:
run: |
sha256sum -c SHA256SUMS.txt
version="${GITHUB_REF_NAME#v}"
zip="release-assets/iOS-Developer-Toolkit-$version-macOS-universal.zip"
sbom="release-assets/iOS-Developer-Toolkit-$version.spdx.json"
zip="release-assets/iOS-Developer-Toolkit-Swift-$version-macOS-universal.zip"
sbom="release-assets/iOS-Developer-Toolkit-Swift-$version.spdx.json"
test -f "../$zip" && test -f "../$sbom"
echo "zip=$zip" >> "$GITHUB_OUTPUT"
echo "sbom=$sbom" >> "$GITHUB_OUTPUT"
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ mvt-analysis-*/
location-logs/
Location Logs/
iOS Developer Toolkit Location Logs/
iOS Developer Toolkit (Swift) Location Logs/
Live Logs/
Generated Routes/
location-events.jsonl
Expand Down
7 changes: 6 additions & 1 deletion App/UITests/SmokeUITests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ final class SmokeUITests: XCTestCase {
}

func testEveryWorkspaceOpens() throws {
let workspaces = ["overview", "device", "readiness", "apps", "installApp", "location", "liveLogs", "actions", "backup", "evidence", "externalTools", "activity", "help", "safety"]
let workspaces = ["overview", "device", "developerImage", "readiness", "apps", "installApp", "location", "liveLogs", "actions", "backup", "evidence", "externalTools", "activity", "help", "safety"]
for workspace in workspaces {
let item = app.descendants(matching: .any)["sidebar-\(workspace)"]
XCTAssertTrue(item.waitForExistence(timeout: 5), "Missing sidebar item \(workspace)")
Expand All @@ -64,8 +64,13 @@ final class SmokeUITests: XCTestCase {
}

func testDeveloperImageCardShowsStateAndBlocksDemoMount() throws {
// The Device page summarizes the state and opens the Developer Image page.
app.descendants(matching: .any)["sidebar-device"].click()
let open = app.buttons["open-developer-image"]
XCTAssertTrue(open.waitForExistence(timeout: 10), "The Device page does not link to the Developer Image page")
open.click()
XCTAssertTrue(app.descendants(matching: .any)["ddi-state"].waitForExistence(timeout: 10), "The developer image state is not shown")
XCTAssertTrue(app.descendants(matching: .any)["ddi-mechanism"].exists, "The mount method choice is missing")
let mount = app.buttons["mount-ddi"]
XCTAssertTrue(mount.waitForExistence(timeout: 5))
XCTAssertFalse(mount.isEnabled, "Mounting must be disabled in Demo Mode")
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion App/iOSDeveloperToolkit/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleDisplayName</key>
<string>iOS Developer Toolkit</string>
<string>iOS Developer Toolkit (Swift)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
Expand Down
4 changes: 2 additions & 2 deletions App/iOSDeveloperToolkit/Model/DeveloperImageModel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ final class DeveloperImageModel {
let failure = LockedValue<Error?>(nil)
working.insert(device.id)
defer { working.remove(device.id) }
let result = await app.run("Mount developer image", workspace: .device, target: target, transport: mechanism.label) { operation in
let result = await app.run("Mount developer image", workspace: .developerImage, target: target, transport: mechanism.label) { operation in
do {
return try await manager.mount(target, mechanism: mechanism, userFolders: folders) { progress in
operation.report(progress.step, progress: progress.fraction)
Expand All @@ -82,7 +82,7 @@ final class DeveloperImageModel {
let folders = folders
working.insert(device.id)
defer { working.remove(device.id) }
if let result = await app.run("Unmount developer image", workspace: .device, target: target, transport: "mobile_image_mounter UnmountImage", { _ in
if let result = await app.run("Unmount developer image", workspace: .developerImage, target: target, transport: "mobile_image_mounter UnmountImage", { _ in
try await manager.unmount(target, userFolders: folders)
}) {
statuses[device.id] = result
Expand Down
4 changes: 2 additions & 2 deletions App/iOSDeveloperToolkit/Model/FeatureModels.swift
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@ final class InstallModel {
@Observable
@MainActor
final class BackupModel {
var destination = URL.documents.appendingPathComponent("iOS Developer Toolkit Backups")
var destination = URL.documents.appendingPathComponent("\(ToolkitVersion.applicationName) Backups")
var forceFullBackup = false
var requireEncryption = true
var encryptionEnabled: Bool?
Expand Down Expand Up @@ -265,7 +265,7 @@ final class BackupModel {
@Observable
@MainActor
final class EvidenceModel {
var outputRoot = URL.documents.appendingPathComponent("iOS Developer Toolkit Cases")
var outputRoot = URL.documents.appendingPathComponent("\(ToolkitVersion.applicationName) Cases")
var options = CollectionOptions()
var caseTitle = ""
var casePurpose = ""
Expand Down
2 changes: 1 addition & 1 deletion App/iOSDeveloperToolkit/Model/LocationModel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ final class LocationModel {
var lastSimulatedTarget: DeviceTarget?
private var playbackTask: Task<Void, Never>?

let evidenceDirectory = FileManager.default.homeDirectoryForCurrentUser.appendingPathComponent("Documents/iOS Developer Toolkit Location Logs")
let evidenceDirectory = FileManager.default.homeDirectoryForCurrentUser.appendingPathComponent("Documents/\(ToolkitVersion.applicationName) Location Logs")

init() {
// Screenshot mode shows sample places so personal saved places never appear in docs.
Expand Down
2 changes: 1 addition & 1 deletion App/iOSDeveloperToolkit/Model/ScreenshotHarness.swift
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import ToolkitFeatures

/// Renders the app's own window for documentation and GUI verification:
///
/// "iOS Developer Toolkit" -capture-screenshots <folder>
/// "iOS Developer Toolkit (Swift)" -capture-screenshots <folder>
/// [-demo-mode] [-ui-testing] [-window-size WxH] [-only overview,apps]
/// [-populate-demo YES] [-select-booted-simulator YES] [-start-simulator-log YES]
/// [-scroll-fraction 0.0–1.0] [-show-sheet reconnect|shortcuts|advanced] [-select-physical-device YES]
Expand Down
1 change: 1 addition & 0 deletions App/iOSDeveloperToolkit/Views/ContentView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ struct WorkspaceView: View {
switch workspace {
case .overview: OverviewView()
case .device: DeviceDetailView()
case .developerImage: DeveloperImageView()
case .readiness: ReadinessView()
case .apps: AppsView()
case .installApp: InstallAppView()
Expand Down
Loading
Loading