Skip to content

Remove Stable project from workspace#6998

Merged
ealymbaev merged 1 commit into
version/0.49from
remove-stable
May 19, 2026
Merged

Remove Stable project from workspace#6998
ealymbaev merged 1 commit into
version/0.49from
remove-stable

Conversation

@ealymbaev

@ealymbaev ealymbaev commented May 19, 2026

Copy link
Copy Markdown
Contributor

Summary by CodeRabbit

Release Notes

  • Breaking Changes

    • Discontinued the Stable app variant; only Development app is available
  • Chores

    • Simplified GitHub Actions deployment workflows and consolidated testing/staging pipelines
    • Reorganized build configuration system and automated build automation tooling
    • Updated project workspace structure to reflect streamlined app architecture

Review Change Stack

@coderabbitai

coderabbitai Bot commented May 19, 2026

Copy link
Copy Markdown

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 7a6a0b3d-8634-47d4-87ab-7ac06597615e

📥 Commits

Reviewing files that changed from the base of the PR and between 43a4176 and 3bfa084.

⛔ Files ignored due to path filters (73)
  • Stable/Stable.xcodeproj/project.pbxproj is excluded by !**/*.pbxproj
  • Stable/Stable.xcodeproj/xcshareddata/xcschemes/Stable-Dev.xcscheme is excluded by !**/*.xcscheme
  • Stable/Stable.xcodeproj/xcshareddata/xcschemes/Stable-Prod.xcscheme is excluded by !**/*.xcscheme
  • Stable/Stable/Resources/Assets.xcassets/AccentColor.colorset/Contents.json is excluded by !**/*.xcassets/**
  • Stable/Stable/Resources/Assets.xcassets/AppIcon-Dev.appiconset/Contents.json is excluded by !**/*.xcassets/**
  • Stable/Stable/Resources/Assets.xcassets/AppIcon-Dev.appiconset/StableAppDev.png is excluded by !**/*.png, !**/*.xcassets/**
  • Stable/Stable/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json is excluded by !**/*.xcassets/**
  • Stable/Stable/Resources/Assets.xcassets/AppIcon.appiconset/StableApp.png is excluded by !**/*.png, !**/*.xcassets/**
  • Stable/Stable/Resources/Assets.xcassets/Contents.json is excluded by !**/*.xcassets/**
  • Stable/Stable/Resources/Assets.xcassets/Icons/Contents.json is excluded by !**/*.xcassets/**
  • Stable/Stable/Resources/Assets.xcassets/Icons/arrow_b_right.imageset/Contents.json is excluded by !**/*.xcassets/**
  • Stable/Stable/Resources/Assets.xcassets/Icons/arrow_b_right.imageset/arrow_b_right.svg is excluded by !**/*.svg, !**/*.xcassets/**
  • Stable/Stable/Resources/Assets.xcassets/Icons/arrow_in.imageset/Arrow_In_24.svg is excluded by !**/*.svg, !**/*.xcassets/**
  • Stable/Stable/Resources/Assets.xcassets/Icons/arrow_in.imageset/Contents.json is excluded by !**/*.xcassets/**
  • Stable/Stable/Resources/Assets.xcassets/Icons/check.imageset/Check_24.svg is excluded by !**/*.svg, !**/*.xcassets/**
  • Stable/Stable/Resources/Assets.xcassets/Icons/check.imageset/Contents.json is excluded by !**/*.xcassets/**
  • Stable/Stable/Resources/Assets.xcassets/Icons/close.imageset/Close_24.svg is excluded by !**/*.svg, !**/*.xcassets/**
  • Stable/Stable/Resources/Assets.xcassets/Icons/close.imageset/Contents.json is excluded by !**/*.xcassets/**
  • Stable/Stable/Resources/Assets.xcassets/Icons/done_e_filled_full.imageset/Contents.json is excluded by !**/*.xcassets/**
  • Stable/Stable/Resources/Assets.xcassets/Icons/done_e_filled_full.imageset/Union.svg is excluded by !**/*.svg, !**/*.xcassets/**
  • Stable/Stable/Resources/Assets.xcassets/Icons/heart.imageset/Contents.json is excluded by !**/*.xcassets/**
  • Stable/Stable/Resources/Assets.xcassets/Icons/heart.imageset/Heart_24.svg is excluded by !**/*.svg, !**/*.xcassets/**
  • Stable/Stable/Resources/Assets.xcassets/Icons/heart_filled.imageset/Contents.json is excluded by !**/*.xcassets/**
  • Stable/Stable/Resources/Assets.xcassets/Icons/heart_filled.imageset/Heart_Filled_24.svg is excluded by !**/*.svg, !**/*.xcassets/**
  • Stable/Stable/Resources/Assets.xcassets/Icons/info.imageset/Contents.json is excluded by !**/*.xcassets/**
  • Stable/Stable/Resources/Assets.xcassets/Icons/info.imageset/Info_24.svg is excluded by !**/*.svg, !**/*.xcassets/**
  • Stable/Stable/Resources/Assets.xcassets/Icons/magic.imageset/Contents.json is excluded by !**/*.xcassets/**
  • Stable/Stable/Resources/Assets.xcassets/Icons/magic.imageset/Magic_24.svg is excluded by !**/*.svg, !**/*.xcassets/**
  • Stable/Stable/Resources/Assets.xcassets/Icons/premium_filled.imageset/Contents.json is excluded by !**/*.xcassets/**
  • Stable/Stable/Resources/Assets.xcassets/Icons/premium_filled.imageset/Premium_Filled_24.svg is excluded by !**/*.svg, !**/*.xcassets/**
  • Stable/Stable/Resources/Assets.xcassets/Icons/settings_filled.imageset/Contents.json is excluded by !**/*.xcassets/**
  • Stable/Stable/Resources/Assets.xcassets/Icons/settings_filled.imageset/Settings_Filled_24.svg is excluded by !**/*.svg, !**/*.xcassets/**
  • Stable/Stable/Resources/Assets.xcassets/Icons/trash.imageset/Contents.json is excluded by !**/*.xcassets/**
  • Stable/Stable/Resources/Assets.xcassets/Icons/trash.imageset/Trash_24.svg is excluded by !**/*.svg, !**/*.xcassets/**
  • Stable/Stable/Resources/Assets.xcassets/Icons/warning.imageset/Contents.json is excluded by !**/*.xcassets/**
  • Stable/Stable/Resources/Assets.xcassets/Icons/warning.imageset/Warning_24.svg is excluded by !**/*.svg, !**/*.xcassets/**
  • Stable/Stable/Resources/Assets.xcassets/Images/Contents.json is excluded by !**/*.xcassets/**
  • Stable/Stable/Resources/Assets.xcassets/Images/intro1.imageset/Contents.json is excluded by !**/*.xcassets/**
  • Stable/Stable/Resources/Assets.xcassets/Images/intro1.imageset/intro1.png is excluded by !**/*.png, !**/*.xcassets/**
  • Stable/Stable/Resources/Assets.xcassets/Images/intro2.imageset/Contents.json is excluded by !**/*.xcassets/**
  • Stable/Stable/Resources/Assets.xcassets/Images/intro2.imageset/intro2.png is excluded by !**/*.png, !**/*.xcassets/**
  • Stable/Stable/Resources/Assets.xcassets/Images/intro3.imageset/Contents.json is excluded by !**/*.xcassets/**
  • Stable/Stable/Resources/Assets.xcassets/Images/intro3.imageset/intro3.png is excluded by !**/*.png, !**/*.xcassets/**
  • Stable/Stable/Resources/Assets.xcassets/Images/setup_wallet.imageset/BG-Images@2x.png is excluded by !**/*.png, !**/*.xcassets/**
  • Stable/Stable/Resources/Assets.xcassets/Images/setup_wallet.imageset/Contents.json is excluded by !**/*.xcassets/**
  • Stable/Stable/Resources/Assets.xcassets/Images/seya.imageset/Contents.json is excluded by !**/*.xcassets/**
  • Stable/Stable/Resources/Assets.xcassets/Images/seya.imageset/seya.svg is excluded by !**/*.svg, !**/*.xcassets/**
  • Stable/Stable/Resources/Colors.xcassets/Andy.colorset/Contents.json is excluded by !**/*.xcassets/**
  • Stable/Stable/Resources/Colors.xcassets/Blade.colorset/Contents.json is excluded by !**/*.xcassets/**
  • Stable/Stable/Resources/Colors.xcassets/Bright.colorset/Contents.json is excluded by !**/*.xcassets/**
  • Stable/Stable/Resources/Colors.xcassets/Carbon.colorset/Contents.json is excluded by !**/*.xcassets/**
  • Stable/Stable/Resources/Colors.xcassets/Contents.json is excluded by !**/*.xcassets/**
  • Stable/Stable/Resources/Colors.xcassets/Dark.colorset/Contents.json is excluded by !**/*.xcassets/**
  • Stable/Stable/Resources/Colors.xcassets/Gray.colorset/Contents.json is excluded by !**/*.xcassets/**
  • Stable/Stable/Resources/Colors.xcassets/Jacob.colorset/Contents.json is excluded by !**/*.xcassets/**
  • Stable/Stable/Resources/Colors.xcassets/Lawrence.colorset/Contents.json is excluded by !**/*.xcassets/**
  • Stable/Stable/Resources/Colors.xcassets/Leah.colorset/Contents.json is excluded by !**/*.xcassets/**
  • Stable/Stable/Resources/Colors.xcassets/Light.colorset/Contents.json is excluded by !**/*.xcassets/**
  • Stable/Stable/Resources/Colors.xcassets/Lime.colorset/Contents.json is excluded by !**/*.xcassets/**
  • Stable/Stable/Resources/Colors.xcassets/LimeD.colorset/Contents.json is excluded by !**/*.xcassets/**
  • Stable/Stable/Resources/Colors.xcassets/LimeL.colorset/Contents.json is excluded by !**/*.xcassets/**
  • Stable/Stable/Resources/Colors.xcassets/LimeText.colorset/Contents.json is excluded by !**/*.xcassets/**
  • Stable/Stable/Resources/Colors.xcassets/Lucian.colorset/Contents.json is excluded by !**/*.xcassets/**
  • Stable/Stable/Resources/Colors.xcassets/Ocean.colorset/Contents.json is excluded by !**/*.xcassets/**
  • Stable/Stable/Resources/Colors.xcassets/Remus.colorset/Contents.json is excluded by !**/*.xcassets/**
  • Stable/Stable/Resources/Colors.xcassets/Smoke.colorset/Contents.json is excluded by !**/*.xcassets/**
  • Stable/Stable/Resources/Colors.xcassets/Steel.colorset/Contents.json is excluded by !**/*.xcassets/**
  • Stable/Stable/Resources/Colors.xcassets/Tyler.colorset/Contents.json is excluded by !**/*.xcassets/**
  • Stable/Stable/Resources/Fonts/Manrope-Medium.ttf is excluded by !**/*.ttf
  • Stable/Stable/Resources/Fonts/Manrope-Regular.ttf is excluded by !**/*.ttf
  • Stable/Stable/Resources/Fonts/Manrope-SemiBold.ttf is excluded by !**/*.ttf
  • Unstoppable/Unstoppable.xcodeproj/xcshareddata/xcschemes/Development.xcscheme is excluded by !**/*.xcscheme
  • Unstoppable/Unstoppable.xcodeproj/xcshareddata/xcschemes/Production.xcscheme is excluded by !**/*.xcscheme
📒 Files selected for processing (39)
  • .github/workflows/deploy_appstore.yml
  • .github/workflows/deploy_dev.yml
  • .github/workflows/deploy_stable_appstore.yml
  • .github/workflows/deploy_stable_dev.yml
  • .github/workflows/notify_telegram.yml
  • Stable/AppTests/AppTests.swift
  • Stable/Stable/App/AppConfig.swift
  • Stable/Stable/App/AppTheme.swift
  • Stable/Stable/App/StableApp.swift
  • Stable/Stable/Configuration/Config.template.xcconfig
  • Stable/Stable/Core/Core.swift
  • Stable/Stable/Modules/App/AppView.swift
  • Stable/Stable/Modules/Intro/IntroView.swift
  • Stable/Stable/Modules/Launch/LaunchErrorView.swift
  • Stable/Stable/Modules/Main/MainView.swift
  • Stable/Stable/Modules/NewWallet/InputCard.swift
  • Stable/Stable/Modules/NewWallet/NewWalletView.swift
  • Stable/Stable/Modules/Settings/SettingsNavigationRow.swift
  • Stable/Stable/Modules/Settings/SettingsView.swift
  • Stable/Stable/Modules/SetupWallet/SetupWalletOptionRow.swift
  • Stable/Stable/Modules/SetupWallet/SetupWalletView.swift
  • Stable/Stable/Resources/Localizable.xcstrings
  • Stable/Stable/Supporting/Info.plist
  • Stable/Stable/UserInterface/Components.swift
  • Stable/Stable/UserInterface/Components/BadgeView.swift
  • Stable/Stable/UserInterface/Components/IconButton.swift
  • Stable/Stable/UserInterface/Components/ThemeButton.swift
  • Stable/Stable/UserInterface/Components/ThemeCard.swift
  • Stable/Stable/UserInterface/Components/ThemeImage.swift
  • Stable/Stable/UserInterface/Components/ThemeSelector.swift
  • Stable/Stable/UserInterface/Components/ThemeText.swift
  • Stable/Stable/UserInterface/Components/ThemeView.swift
  • Stable/Stable/UserInterface/CopyHelper.swift
  • Stable/Stable/UserInterface/Extensions/Color.swift
  • Stable/Stable/UserInterface/Extensions/Font.swift
  • Stable/Stable/UserInterface/Extensions/View.swift
  • Stable/Stable/UserInterface/TextStyle.swift
  • Wallet.xcworkspace/contents.xcworkspacedata
  • fastlane/Fastfile
💤 Files with no reviewable changes (36)
  • Wallet.xcworkspace/contents.xcworkspacedata
  • Stable/Stable/App/AppTheme.swift
  • Stable/Stable/Modules/NewWallet/InputCard.swift
  • Stable/Stable/UserInterface/Components/ThemeView.swift
  • Stable/Stable/UserInterface/Components/BadgeView.swift
  • Stable/Stable/UserInterface/Components.swift
  • Stable/Stable/UserInterface/Components/ThemeImage.swift
  • Stable/Stable/UserInterface/Components/ThemeCard.swift
  • .github/workflows/notify_telegram.yml
  • Stable/Stable/Resources/Localizable.xcstrings
  • Stable/Stable/Modules/NewWallet/NewWalletView.swift
  • Stable/AppTests/AppTests.swift
  • Stable/Stable/UserInterface/Components/ThemeButton.swift
  • Stable/Stable/Modules/Main/MainView.swift
  • Stable/Stable/Modules/SetupWallet/SetupWalletView.swift
  • Stable/Stable/App/StableApp.swift
  • Stable/Stable/Modules/SetupWallet/SetupWalletOptionRow.swift
  • Stable/Stable/UserInterface/CopyHelper.swift
  • Stable/Stable/Modules/Settings/SettingsNavigationRow.swift
  • Stable/Stable/UserInterface/TextStyle.swift
  • Stable/Stable/Modules/Intro/IntroView.swift
  • Stable/Stable/UserInterface/Extensions/Font.swift
  • Stable/Stable/UserInterface/Components/IconButton.swift
  • Stable/Stable/Modules/App/AppView.swift
  • Stable/Stable/UserInterface/Extensions/View.swift
  • Stable/Stable/Supporting/Info.plist
  • .github/workflows/deploy_stable_appstore.yml
  • .github/workflows/deploy_stable_dev.yml
  • Stable/Stable/UserInterface/Extensions/Color.swift
  • Stable/Stable/Configuration/Config.template.xcconfig
  • Stable/Stable/Modules/Launch/LaunchErrorView.swift
  • Stable/Stable/Modules/Settings/SettingsView.swift
  • Stable/Stable/UserInterface/Components/ThemeSelector.swift
  • Stable/Stable/UserInterface/Components/ThemeText.swift
  • Stable/Stable/Core/Core.swift
  • Stable/Stable/App/AppConfig.swift

📝 Walkthrough

Walkthrough

This PR removes the Stable app variant entirely from the project. Deployment workflows are renamed and deduplicated, the workspace switches to reference only the Unstoppable project, and the Fastlane build system is refactored to eliminate stable-specific lanes and consolidate to unified global configuration constants.

Changes

Stable App Variant Removal

Layer / File(s) Summary
Deployment workflows and workspace migration
.github/workflows/deploy_appstore.yml, .github/workflows/deploy_dev.yml, .github/workflows/deploy_stable_appstore.yml (deleted), .github/workflows/deploy_stable_dev.yml (deleted), .github/workflows/notify_telegram.yml, Wallet.xcworkspace/contents.xcworkspacedata, Stable/Stable/UserInterface/CopyHelper.swift
Workflow display names shortened; deploy_stable_* workflows removed entirely; path filter removed from deploy_dev trigger so any version branch push runs the workflow; Telegram notification filter removed to notify on all matching PRs; workspace FileRef updated to reference Unstoppable/Unstoppable.xcodeproj instead of Stable/Stable.xcodeproj; CopyHelper clipboard utility deleted.
Fastlane configuration consolidation
fastlane/Fastfile (constants section)
Stable app identifier constants removed (STABLE_APP_ID, STABLE_BASE_APP_ID); new shared build constants introduced (WORKSPACE, XCODEPROJ, XCCONFIG_PATH set to global paths); ALL_APP_IDS constant added; XCCONFIG_KEYS reformatted to %w[...] list with expanded key coverage; temp keychain helper refactored to with_temp_keychain and delete_temp_keychain utilities.
Fastlane build and signing flow
fastlane/Fastfile (build methods and dev lane)
New apply_xcconfig helper that derives paths from global constants and updates all xcconfig keys in one step; build_and_sign refactored to call unified xcconfig helper and use global XCODEPROJ for build number increments (no longer accepts xcodeproj/xcconfig_path parameters); gym invocation updated to use WORKSPACE constant and fixed export options with provisioning profile mapping via MATCH_TYPE_PROFILE_NAMES; lane :dev wired to use Development scheme without passing xcodeproj/xcconfig parameters.
Fastlane lanes modernization
fastlane/Fastfile (match and release lanes)
Stable build lanes (lane :dev_stable, lane :release_stable) removed; lane :match_readonly and lane :match_generate refactored to iterate match types via new run_match helper (changing app identifier composition for readonly vs generation and dropping stable-specific identifiers); lane :release scheme string updated to Production.

Deleted Stable App Files (no code changes shown in this diff, listed for reference):

  • App entry points and core: Stable/Stable/App/StableApp.swift, Stable/Stable/App/AppConfig.swift, Stable/Stable/App/AppTheme.swift, Stable/Stable/Core/Core.swift
  • UI screens: Stable/Stable/Modules/App/AppView.swift, Stable/Stable/Modules/Intro/IntroView.swift, Stable/Stable/Modules/Launch/LaunchErrorView.swift, Stable/Stable/Modules/Main/MainView.swift, Stable/Stable/Modules/NewWallet/NewWalletView.swift, Stable/Stable/Modules/NewWallet/InputCard.swift, Stable/Stable/Modules/Settings/SettingsView.swift, Stable/Stable/Modules/Settings/SettingsNavigationRow.swift, Stable/Stable/Modules/SetupWallet/SetupWalletView.swift, Stable/Stable/Modules/SetupWallet/SetupWalletOptionRow.swift
  • UI components: Stable/Stable/UserInterface/Components/ThemeButton.swift, Stable/Stable/UserInterface/Components/ThemeText.swift, Stable/Stable/UserInterface/Components/ThemeView.swift, Stable/Stable/UserInterface/Components/ThemeCard.swift, Stable/Stable/UserInterface/Components/ThemeImage.swift, Stable/Stable/UserInterface/Components/ThemeSelector.swift, Stable/Stable/UserInterface/Components/IconButton.swift, Stable/Stable/UserInterface/Components/BadgeView.swift, Stable/Stable/UserInterface/Components.swift
  • Extensions and utilities: Stable/Stable/UserInterface/Extensions/Color.swift, Stable/Stable/UserInterface/Extensions/Font.swift, Stable/Stable/UserInterface/Extensions/View.swift, Stable/Stable/UserInterface/TextStyle.swift
  • Resources and configuration: Stable/Stable/Resources/Localizable.xcstrings, Stable/Stable/Supporting/Info.plist, Stable/Stable/Configuration/Config.template.xcconfig, Stable/AppTests/AppTests.swift

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

Suggested reviewers

  • ant013
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'Remove Stable project from workspace' clearly and concisely describes the main change—elimination of the Stable app project and all its associated files, workflows, and configurations from the workspace.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch remove-stable

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@ealymbaev ealymbaev merged commit 702345f into version/0.49 May 19, 2026
2 checks passed
@ealymbaev ealymbaev deleted the remove-stable branch May 19, 2026 11:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants