Add Stable app project to workspace#6974
Conversation
📝 WalkthroughWalkthroughAdds a new Stable iOS app variant and its config/templates, removes legacy Stable config from the Unstoppable project, parameterizes Fastlane for multi-variant builds, updates the workspace to include Stable, and adds CI/CD workflows for Stable deployments and updated Unstoppable deploy triggers. ChangesStable App Variant & Build System Refactor
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 4
🧹 Nitpick comments (2)
Stable/AppTests/AppTests.swift (1)
3-7: ⚡ Quick winPlaceholder test provides no value.
The test file contains only a generated placeholder with no assertions. Consider either removing this file or adding meaningful tests for the Stable app.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@Stable/AppTests/AppTests.swift` around lines 3 - 7, The file contains only a placeholder test (struct AppTests / func example) with no assertions; either remove the file or replace the placeholder with real test cases: implement one or more `@Test` async throws functions inside struct AppTests that exercise your Stable app logic and include concrete assertions (e.g., use the project's test helpers like `#expect`(...) or XCTest assertions) to verify expected behavior, and ensure the test harness compiles by importing required test modules and calling the APIs under test from within those test functions..github/workflows/deploy_stable_dev.yml (1)
3-9: 💤 Low valueConfirm
pathsfilter aligns with the new Stable project layout.The trigger restricts pushes to changes under
Stable/**orpackages/**. Given this PR also touchesfastlane/Fastfile, workspace files, and shared xcconfig/build settings, changes to those (which directly affect the Stable build) won’t trigger this workflow. If that’s intentional (rely onworkflow_dispatchfor those), ignore — otherwise consider extending the path filter (e.g.fastlane/**,*.xcworkspace/**, top-level config files) so CI runs when the build pipeline itself changes.Please confirm whether the new Stable target sources are fully self-contained under
Stable/andpackages/, or whether shared files outside those paths also need to trigger CI.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In @.github/workflows/deploy_stable_dev.yml around lines 3 - 9, The workflow's push trigger limits runs to changes under paths 'Stable/**' and 'packages/**' so edits to shared build scripts (e.g., fastlane/Fastfile), workspace files, or top-level configs won't trigger CI; update the push.paths list in the deploy_stable_dev.yml workflow to include the other relevant paths (for example add fastlane/**, *.xcworkspace/**, fastlane/Fastfile, top-level xcconfig/build files or any other shared config files) or remove the paths filter if you want all pushes to target/version/* to run, and confirm that Stable sources are indeed self-contained in 'Stable/' and 'packages/' before narrowing the filter.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.github/workflows/deploy_stable_appstore.yml:
- Around line 28-31: The "Setup Rust and Cargo" step currently uses the
deprecated actions-rs/toolchain@v1 runner; replace the uses entry with the
maintained dtolnay/rust-toolchain action (e.g.
dtolnay/rust-toolchain@<latest-tag>) and keep the toolchain input (toolchain:
stable) so the step still installs the stable Rust toolchain; update any
inputs/keys to match dtolnay/rust-toolchain's expected fields and confirm the
step name "Setup Rust and Cargo" remains consistent.
In @.github/workflows/deploy_stable_dev.yml:
- Line 13: The workflow's visible names are inconsistent: the workflow title
"Deploy Stable Dev to AppCenter", the Fastlane step that uploads to AppCenter,
and the job name "Build and Deploy to Firebase" contradict each other; decide
which target the dev_stable Fastlane lane actually deploys to and then make all
labels consistent by renaming the workflow "name:", the job name (currently
"Build and Deploy to Firebase"), and the Fastlane step description to the chosen
target (e.g., "Deploy Stable Dev to AppCenter" if dev_stable uploads to
AppCenter); also update any status-check/context names that reflect the job name
so the Actions UI and PR checks match the real deployment target.
- Around line 31-34: Replace the deprecated actions-rs/toolchain@v1 step named
"Setup Rust and Cargo" with the maintained dtolnay/rust-toolchain action and
configure the toolchain (stable) and targets via that action's inputs; update
the uses value to dtolnay/rust-toolchain and add a targets: list for the iOS
targets there, then remove the separate "Add iOS targets to Rust" step since
targets are installed by the rust-toolchain action.
In `@Stable/Stable/Configuration/Config.template.xcconfig`:
- Line 37: DEFAULT_WORDS is a build-time variable substituted into Info.plist
(referenced as ${DEFAULT_WORDS}) and must not be used to store secrets; remove
DEFAULT_WORDS from Config.template.xcconfig (or clear any usage) and eliminate
the ${DEFAULT_WORDS} entry from Info.plist, or ensure any mnemonic/seed/private
keys are instead stored only in Keychain using
kSecAttrAccessibleWhenUnlockedThisDeviceOnly per CRYPTO_GUIDELINES.md; search
for DEFAULT_WORDS, Info.plist entries, and any code paths that read that plist
value and update them to use Keychain APIs instead.
---
Nitpick comments:
In @.github/workflows/deploy_stable_dev.yml:
- Around line 3-9: The workflow's push trigger limits runs to changes under
paths 'Stable/**' and 'packages/**' so edits to shared build scripts (e.g.,
fastlane/Fastfile), workspace files, or top-level configs won't trigger CI;
update the push.paths list in the deploy_stable_dev.yml workflow to include the
other relevant paths (for example add fastlane/**, *.xcworkspace/**,
fastlane/Fastfile, top-level xcconfig/build files or any other shared config
files) or remove the paths filter if you want all pushes to target/version/* to
run, and confirm that Stable sources are indeed self-contained in 'Stable/' and
'packages/' before narrowing the filter.
In `@Stable/AppTests/AppTests.swift`:
- Around line 3-7: The file contains only a placeholder test (struct AppTests /
func example) with no assertions; either remove the file or replace the
placeholder with real test cases: implement one or more `@Test` async throws
functions inside struct AppTests that exercise your Stable app logic and include
concrete assertions (e.g., use the project's test helpers like `#expect`(...) or
XCTest assertions) to verify expected behavior, and ensure the test harness
compiles by importing required test modules and calling the APIs under test from
within those test functions.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: 120efa10-ec71-494a-977a-cfb245ac8ad1
⛔ Files ignored due to path filters (12)
Stable/Stable.xcodeproj/project.pbxprojis excluded by!**/*.pbxprojStable/Stable.xcodeproj/xcshareddata/xcschemes/Stable-Dev.xcschemeis excluded by!**/*.xcschemeStable/Stable.xcodeproj/xcshareddata/xcschemes/Stable-Prod.xcschemeis excluded by!**/*.xcschemeStable/Stable/Resources/Assets.xcassets/AccentColor.colorset/Contents.jsonis excluded by!**/*.xcassets/**Stable/Stable/Resources/Assets.xcassets/AppIcon-Dev.appiconset/Contents.jsonis excluded by!**/*.xcassets/**Stable/Stable/Resources/Assets.xcassets/AppIcon-Dev.appiconset/StableAppDev.pngis excluded by!**/*.png,!**/*.xcassets/**Stable/Stable/Resources/Assets.xcassets/AppIcon.appiconset/Contents.jsonis excluded by!**/*.xcassets/**Stable/Stable/Resources/Assets.xcassets/AppIcon.appiconset/StableApp.pngis excluded by!**/*.png,!**/*.xcassets/**Stable/Stable/Resources/Assets.xcassets/Contents.jsonis excluded by!**/*.xcassets/**Unstoppable/Unstoppable.xcodeproj/project.pbxprojis excluded by!**/*.pbxprojUnstoppable/Unstoppable.xcodeproj/xcshareddata/xcschemes/Unstoppable-Dev.xcschemeis excluded by!**/*.xcschemeUnstoppable/Unstoppable.xcodeproj/xcshareddata/xcschemes/Unstoppable-Prod.xcschemeis excluded by!**/*.xcscheme
📒 Files selected for processing (19)
.github/workflows/deploy_dev.yml.github/workflows/deploy_stable_appstore.yml.github/workflows/deploy_stable_dev.ymlStable/AppTests/AppTests.swiftStable/Stable/App/StableApp.swiftStable/Stable/Configuration/Config.template.xcconfigStable/Stable/ContentView.swiftUnstoppable/Unstoppable/Configuration/Stable/App-Stable-Dev.entitlementsUnstoppable/Unstoppable/Configuration/Stable/App-Stable-Dev.xcconfigUnstoppable/Unstoppable/Configuration/Stable/App-Stable-Prod.entitlementsUnstoppable/Unstoppable/Configuration/Stable/App-Stable-Prod.xcconfigUnstoppable/Unstoppable/Configuration/Stable/Intent-Stable-Dev.xcconfigUnstoppable/Unstoppable/Configuration/Stable/Intent-Stable-Prod.xcconfigUnstoppable/Unstoppable/Configuration/Stable/Widget-Stable-Dev.entitlementsUnstoppable/Unstoppable/Configuration/Stable/Widget-Stable-Dev.xcconfigUnstoppable/Unstoppable/Configuration/Stable/Widget-Stable-Prod.entitlementsUnstoppable/Unstoppable/Configuration/Stable/Widget-Stable-Prod.xcconfigWallet.xcworkspace/contents.xcworkspacedatafastlane/Fastfile
💤 Files with no reviewable changes (10)
- Unstoppable/Unstoppable/Configuration/Stable/Widget-Stable-Prod.entitlements
- Unstoppable/Unstoppable/Configuration/Stable/Intent-Stable-Dev.xcconfig
- Unstoppable/Unstoppable/Configuration/Stable/Widget-Stable-Dev.entitlements
- Unstoppable/Unstoppable/Configuration/Stable/Widget-Stable-Prod.xcconfig
- Unstoppable/Unstoppable/Configuration/Stable/App-Stable-Dev.entitlements
- Unstoppable/Unstoppable/Configuration/Stable/App-Stable-Dev.xcconfig
- Unstoppable/Unstoppable/Configuration/Stable/Intent-Stable-Prod.xcconfig
- Unstoppable/Unstoppable/Configuration/Stable/App-Stable-Prod.entitlements
- Unstoppable/Unstoppable/Configuration/Stable/App-Stable-Prod.xcconfig
- Unstoppable/Unstoppable/Configuration/Stable/Widget-Stable-Dev.xcconfig
There was a problem hiding this comment.
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
.github/workflows/deploy_dev.yml (1)
40-40:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winUpdate the step description to reflect Firebase deployment.
The step description still references "AppCenter" but the workflow name and actual deployment target is Firebase. Update the description for consistency.
📝 Proposed fix
- - name: Run Fastlane (build, upload to AppCenter) + - name: Run Fastlane (build, upload to Firebase)🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In @.github/workflows/deploy_dev.yml at line 40, Update the GitHub Actions step name string "Run Fastlane (build, upload to AppCenter)" to correctly reflect the Firebase target (e.g., "Run Fastlane (build, deploy to Firebase)" or similar) so the workflow description matches the actual deployment; edit the step name in the deploy_dev.yml where that exact string appears.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Outside diff comments:
In @.github/workflows/deploy_dev.yml:
- Line 40: Update the GitHub Actions step name string "Run Fastlane (build,
upload to AppCenter)" to correctly reflect the Firebase target (e.g., "Run
Fastlane (build, deploy to Firebase)" or similar) so the workflow description
matches the actual deployment; edit the step name in the deploy_dev.yml where
that exact string appears.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: 84d292ec-f3eb-4c00-917c-aeca558eb570
📒 Files selected for processing (4)
.github/workflows/deploy_appstore.yml.github/workflows/deploy_dev.yml.github/workflows/deploy_stable_appstore.yml.github/workflows/deploy_stable_dev.yml
🚧 Files skipped from review as they are similar to previous changes (2)
- .github/workflows/deploy_stable_appstore.yml
- .github/workflows/deploy_stable_dev.yml
Summary by CodeRabbit
New Features
Chores