From de70a7ab118bf2694e1b0719005ea14aa3903da2 Mon Sep 17 00:00:00 2001 From: Bartosz Rozwarski Date: Mon, 22 Jun 2026 15:28:21 +0200 Subject: [PATCH 1/4] feat(swift-example-app): rebrand to "Dash Developer Pro" for TestFlight Set the home-screen display name (CFBundleDisplayName) to "Dash Developer Pro" and change the app bundle identifier to org.dashfoundation.DashDeveloperPro so the example app can ship as a standalone product on TestFlight / App Store Connect. Test target bundle identifiers are left unchanged. Co-Authored-By: Claude Opus 4.8 --- packages/swift-sdk/SwiftExampleApp/Info.plist | 2 ++ .../SwiftExampleApp/SwiftExampleApp.xcodeproj/project.pbxproj | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/swift-sdk/SwiftExampleApp/Info.plist b/packages/swift-sdk/SwiftExampleApp/Info.plist index d02649ab3f9..b4168b66bef 100644 --- a/packages/swift-sdk/SwiftExampleApp/Info.plist +++ b/packages/swift-sdk/SwiftExampleApp/Info.plist @@ -13,6 +13,8 @@ 6.0 CFBundleName $(PRODUCT_NAME) + CFBundleDisplayName + Dash Developer Pro CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString diff --git a/packages/swift-sdk/SwiftExampleApp/SwiftExampleApp.xcodeproj/project.pbxproj b/packages/swift-sdk/SwiftExampleApp/SwiftExampleApp.xcodeproj/project.pbxproj index 93529314cc1..2ae615eb93f 100644 --- a/packages/swift-sdk/SwiftExampleApp/SwiftExampleApp.xcodeproj/project.pbxproj +++ b/packages/swift-sdk/SwiftExampleApp/SwiftExampleApp.xcodeproj/project.pbxproj @@ -444,7 +444,7 @@ "@executable_path/Frameworks", ); MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = org.dashfoundation.SwiftExampleApp; + PRODUCT_BUNDLE_IDENTIFIER = org.dashfoundation.DashDeveloperPro; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 6.0; @@ -473,7 +473,7 @@ "@executable_path/Frameworks", ); MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = org.dashfoundation.SwiftExampleApp; + PRODUCT_BUNDLE_IDENTIFIER = org.dashfoundation.DashDeveloperPro; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 6.0; From 0811ee980a0304e3683c465204c72c6e205a27c8 Mon Sep 17 00:00:00 2001 From: Bartosz Rozwarski Date: Mon, 22 Jun 2026 15:41:33 +0200 Subject: [PATCH 2/4] chore(swift-example-app): point dev tooling at the new bundle id MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Update the simulator-control skill and get_logs.sh to use org.dashfoundation.DashDeveloperPro so simctl launch/terminate and log collection keep working after the rebrand. The artifact-finding step still looks for SwiftExampleApp.app since PRODUCT_NAME is unchanged — only the bundle identifier moved. Co-Authored-By: Claude Opus 4.8 --- .claude/skills/simulator-control/SKILL.md | 8 +++++--- packages/swift-sdk/get_logs.sh | 4 ++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/.claude/skills/simulator-control/SKILL.md b/.claude/skills/simulator-control/SKILL.md index 698696be3f1..d29f8a48d4b 100644 --- a/.claude/skills/simulator-control/SKILL.md +++ b/.claude/skills/simulator-control/SKILL.md @@ -26,7 +26,7 @@ Without `idb` the inspection workflows (screenshot + SwiftData + logs) still wor export PATH="$HOME/.local/bin:$PATH" UDID=$(xcrun simctl list devices booted | awk -F'[()]' '/Booted/ {print $2}') idb connect $UDID # starts idb_companion alongside the running sim -BUNDLE=org.dashfoundation.SwiftExampleApp +BUNDLE=org.dashfoundation.DashDeveloperPro # === INSPECT === xcrun simctl io booted screenshot /tmp/sim.png # screenshot @@ -278,8 +278,10 @@ If `idb connect` succeeds but `idb ui describe-all` returns a single root elemen The skill assumes the binary on the simulator is current. It's not, if you've built but forgotten to install. After every `./build_ios.sh --target sim` (or any code change), push the fresh artifact: ```bash -BUNDLE=org.dashfoundation.SwiftExampleApp -APP=$(find ~/Library/Developer/Xcode/DerivedData -name "${BUNDLE##*.}.app" -path "*Debug-iphonesimulator*" -not -path "*Index.noindex*" 2>/dev/null | head -1) +BUNDLE=org.dashfoundation.DashDeveloperPro +# The .app on disk is named after PRODUCT_NAME (still "SwiftExampleApp"), which +# differs from the bundle id — find by the product name, launch by the bundle id. +APP=$(find ~/Library/Developer/Xcode/DerivedData -name "SwiftExampleApp.app" -path "*Debug-iphonesimulator*" -not -path "*Index.noindex*" 2>/dev/null | head -1) xcrun simctl install booted "$APP" xcrun simctl launch booted "$BUNDLE" # or terminate-then-launch to force a fresh process ``` diff --git a/packages/swift-sdk/get_logs.sh b/packages/swift-sdk/get_logs.sh index 236626afca9..a675476b5ad 100755 --- a/packages/swift-sdk/get_logs.sh +++ b/packages/swift-sdk/get_logs.sh @@ -23,12 +23,12 @@ set -euo pipefail # [--session ] # # Defaults: -# bundle-id: org.dashfoundation.SwiftExampleApp +# bundle-id: org.dashfoundation.DashDeveloperPro # out: ./logs-- # device: interactive picker when more than one is available # session: interactive picker when more than one is available -BUNDLE_ID="org.dashfoundation.SwiftExampleApp" +BUNDLE_ID="org.dashfoundation.DashDeveloperPro" OUT_DIR="" DEVICE="" SESSION="" From dc3ae6e9022c22eaffeffbe3d5b2142393727a6e Mon Sep 17 00:00:00 2001 From: Bartosz Rozwarski Date: Tue, 23 Jun 2026 11:59:38 +0200 Subject: [PATCH 3/4] chore(swift-example-app): drop simulator-control skill from branding PR Restore .claude/skills/simulator-control/SKILL.md to its base state so it no longer appears in this PR's diff. Keep the PR scoped to the app (Info.plist, project.pbxproj) plus get_logs.sh. The skill still references the old bundle id and can be updated separately if needed. Co-Authored-By: Claude Opus 4.8 --- .claude/skills/simulator-control/SKILL.md | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/.claude/skills/simulator-control/SKILL.md b/.claude/skills/simulator-control/SKILL.md index d29f8a48d4b..698696be3f1 100644 --- a/.claude/skills/simulator-control/SKILL.md +++ b/.claude/skills/simulator-control/SKILL.md @@ -26,7 +26,7 @@ Without `idb` the inspection workflows (screenshot + SwiftData + logs) still wor export PATH="$HOME/.local/bin:$PATH" UDID=$(xcrun simctl list devices booted | awk -F'[()]' '/Booted/ {print $2}') idb connect $UDID # starts idb_companion alongside the running sim -BUNDLE=org.dashfoundation.DashDeveloperPro +BUNDLE=org.dashfoundation.SwiftExampleApp # === INSPECT === xcrun simctl io booted screenshot /tmp/sim.png # screenshot @@ -278,10 +278,8 @@ If `idb connect` succeeds but `idb ui describe-all` returns a single root elemen The skill assumes the binary on the simulator is current. It's not, if you've built but forgotten to install. After every `./build_ios.sh --target sim` (or any code change), push the fresh artifact: ```bash -BUNDLE=org.dashfoundation.DashDeveloperPro -# The .app on disk is named after PRODUCT_NAME (still "SwiftExampleApp"), which -# differs from the bundle id — find by the product name, launch by the bundle id. -APP=$(find ~/Library/Developer/Xcode/DerivedData -name "SwiftExampleApp.app" -path "*Debug-iphonesimulator*" -not -path "*Index.noindex*" 2>/dev/null | head -1) +BUNDLE=org.dashfoundation.SwiftExampleApp +APP=$(find ~/Library/Developer/Xcode/DerivedData -name "${BUNDLE##*.}.app" -path "*Debug-iphonesimulator*" -not -path "*Index.noindex*" 2>/dev/null | head -1) xcrun simctl install booted "$APP" xcrun simctl launch booted "$BUNDLE" # or terminate-then-launch to force a fresh process ``` From 814e4b827a80c56c0f60806c0a8c7a56eea1f406 Mon Sep 17 00:00:00 2001 From: Bartosz Rozwarski Date: Tue, 23 Jun 2026 12:00:42 +0200 Subject: [PATCH 4/4] chore(swift-example-app): restore simulator-control skill bundle-id update Bring back the .claude/skills/simulator-control/SKILL.md change so the skill points at org.dashfoundation.DashDeveloperPro (the install block still finds SwiftExampleApp.app since PRODUCT_NAME is unchanged). Keeps the skill working after the rename. Co-Authored-By: Claude Opus 4.8 --- .claude/skills/simulator-control/SKILL.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.claude/skills/simulator-control/SKILL.md b/.claude/skills/simulator-control/SKILL.md index 698696be3f1..d29f8a48d4b 100644 --- a/.claude/skills/simulator-control/SKILL.md +++ b/.claude/skills/simulator-control/SKILL.md @@ -26,7 +26,7 @@ Without `idb` the inspection workflows (screenshot + SwiftData + logs) still wor export PATH="$HOME/.local/bin:$PATH" UDID=$(xcrun simctl list devices booted | awk -F'[()]' '/Booted/ {print $2}') idb connect $UDID # starts idb_companion alongside the running sim -BUNDLE=org.dashfoundation.SwiftExampleApp +BUNDLE=org.dashfoundation.DashDeveloperPro # === INSPECT === xcrun simctl io booted screenshot /tmp/sim.png # screenshot @@ -278,8 +278,10 @@ If `idb connect` succeeds but `idb ui describe-all` returns a single root elemen The skill assumes the binary on the simulator is current. It's not, if you've built but forgotten to install. After every `./build_ios.sh --target sim` (or any code change), push the fresh artifact: ```bash -BUNDLE=org.dashfoundation.SwiftExampleApp -APP=$(find ~/Library/Developer/Xcode/DerivedData -name "${BUNDLE##*.}.app" -path "*Debug-iphonesimulator*" -not -path "*Index.noindex*" 2>/dev/null | head -1) +BUNDLE=org.dashfoundation.DashDeveloperPro +# The .app on disk is named after PRODUCT_NAME (still "SwiftExampleApp"), which +# differs from the bundle id — find by the product name, launch by the bundle id. +APP=$(find ~/Library/Developer/Xcode/DerivedData -name "SwiftExampleApp.app" -path "*Debug-iphonesimulator*" -not -path "*Index.noindex*" 2>/dev/null | head -1) xcrun simctl install booted "$APP" xcrun simctl launch booted "$BUNDLE" # or terminate-then-launch to force a fresh process ```