diff --git a/.claude/rules/git-rules.md b/.claude/rules/git-rules.md index fbfba63f29..02384fa5c2 100644 --- a/.claude/rules/git-rules.md +++ b/.claude/rules/git-rules.md @@ -2,16 +2,18 @@ ## Branch Naming -| Type | Format | Example | -|------|--------|---------| +| Type | Format | Example | +|---------|-------------------------------------|-------------------------------------| | Feature | `feature/AND-xxx_short_description` | `feature/AND-13391_balance_fetcher` | -| Bugfix | `bugfix/AND-xxx_short_description` | `bugfix/AND-14000_fix_crash` | -| Pre-release | `x.x_pre_release` | `5.36_pre_release` | +| Bugfix | `bugfix/AND-xxx_short_description` | `bugfix/AND-14000_fix_crash` | +| Release | `releases/x.xx` | `releases/5.36` | +| Hotfix | `releases/x.xx.x` | `releases/5.36.1` | **Key branches:** + - `develop` — main integration branch, all feature/bugfix branches merge here -- `x.x_pre_release` — branched from `develop` on the last day of sprint for the upcoming release; receives regression bugfixes and additional release items -- `release` — merging into this branch triggers appTester build and production artifacts; PRs come from `x.x_pre_release` +- `releases/x.xx` — release branches, branched from `develop` +- `releases/x.xx.x` — hotfix branches, branched from `releases/x.xx` ## Commit Messages diff --git a/CLAUDE.md b/CLAUDE.md index 32252fee68..15175b74e7 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -32,6 +32,10 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co **Build types:** `debug`, `mocked`, `internal`, `external`, `release`. +## Branching + +See @.claude/rules/git-rules.md + ## Architecture Overview ### Module Layers diff --git a/app/src/main/java/com/tangem/tap/network/auth/DefaultAuthProvider.kt b/app/src/main/java/com/tangem/tap/network/auth/DefaultAuthProvider.kt index 027441c202..ebbc510654 100644 --- a/app/src/main/java/com/tangem/tap/network/auth/DefaultAuthProvider.kt +++ b/app/src/main/java/com/tangem/tap/network/auth/DefaultAuthProvider.kt @@ -48,8 +48,9 @@ internal class DefaultAuthProvider( ApiEnvironment.DEV_2, ApiEnvironment.DEV_3, -> environmentConfig.tangemApiKeyDev - ApiEnvironment.STAGE_2, ApiEnvironment.STAGE, + ApiEnvironment.STAGE_2, + ApiEnvironment.STAGE_3, -> environmentConfig.tangemApiKeyStage ApiEnvironment.PROD -> environmentConfig.tangemApiKey } ?: error("No tangem tech api config provided") diff --git a/core/datasource/src/main/java/com/tangem/datasource/api/common/config/ApiEnvironment.kt b/core/datasource/src/main/java/com/tangem/datasource/api/common/config/ApiEnvironment.kt index f976466d89..ef6cc31168 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/api/common/config/ApiEnvironment.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/api/common/config/ApiEnvironment.kt @@ -25,6 +25,9 @@ enum class ApiEnvironment { @Json(name = "STAGE_2") STAGE_2, + @Json(name = "STAGE_3") + STAGE_3, + @Json(name = "MOCK") MOCK, diff --git a/core/datasource/src/main/java/com/tangem/datasource/api/common/config/Express.kt b/core/datasource/src/main/java/com/tangem/datasource/api/common/config/Express.kt index b9923936b3..3cf8112a90 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/api/common/config/Express.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/api/common/config/Express.kt @@ -31,6 +31,7 @@ internal class Express( createDev3Environment(), createStageEnvironment(), createStage2Environment(), + createStage3Environment(), createMockedEnvironment(), createProdEnvironment(), ) @@ -80,6 +81,12 @@ internal class Express( headers = createHeaders(isProd = false), ) + private fun createStage3Environment(): ApiEnvironmentConfig = ApiEnvironmentConfig( + environment = ApiEnvironment.STAGE_3, + baseUrl = "[REDACTED_ENV_URL]", + headers = createHeaders(isProd = false), + ) + private fun createMockedEnvironment(): ApiEnvironmentConfig = ApiEnvironmentConfig( environment = ApiEnvironment.MOCK, baseUrl = "[REDACTED_ENV_URL]", diff --git a/core/datasource/src/main/java/com/tangem/datasource/api/common/config/TangemPay.kt b/core/datasource/src/main/java/com/tangem/datasource/api/common/config/TangemPay.kt index 5c20eca2cf..f6c8752c2d 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/api/common/config/TangemPay.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/api/common/config/TangemPay.kt @@ -65,6 +65,7 @@ internal sealed class TangemPay( ApiEnvironment.PROD -> environmentConfig.bffStaticToken ApiEnvironment.STAGE, ApiEnvironment.STAGE_2, + ApiEnvironment.STAGE_3, ApiEnvironment.DEV_2, ApiEnvironment.DEV_3, -> null @@ -84,6 +85,7 @@ internal sealed class TangemPay( ApiEnvironment.DEV_3, ApiEnvironment.STAGE, ApiEnvironment.STAGE_2, + ApiEnvironment.STAGE_3, -> error("Unknown environment: $apiEnvironment") } } @@ -102,6 +104,7 @@ internal sealed class TangemPay( ApiEnvironment.DEV_3, ApiEnvironment.STAGE, ApiEnvironment.STAGE_2, + ApiEnvironment.STAGE_3, -> error("Unknown environment: $apiEnvironment") } } diff --git a/core/datasource/src/main/java/com/tangem/datasource/api/common/config/YieldSupply.kt b/core/datasource/src/main/java/com/tangem/datasource/api/common/config/YieldSupply.kt index ed04143824..4964259c7d 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/api/common/config/YieldSupply.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/api/common/config/YieldSupply.kt @@ -78,6 +78,7 @@ internal class YieldSupply( ApiEnvironment.DEV_3, ApiEnvironment.STAGE, ApiEnvironment.STAGE_2, + ApiEnvironment.STAGE_3, -> environmentConfig.yieldModuleApiKeyDev ApiEnvironment.PROD -> environmentConfig.yieldModuleApiKey } ?: error("No tangem tech api config provided") diff --git a/data/visa/src/main/kotlin/com/tangem/data/pay/repository/DefaultTangemPayCardDetailsRepository.kt b/data/visa/src/main/kotlin/com/tangem/data/pay/repository/DefaultTangemPayCardDetailsRepository.kt index 2f05b72de7..88f54d413e 100644 --- a/data/visa/src/main/kotlin/com/tangem/data/pay/repository/DefaultTangemPayCardDetailsRepository.kt +++ b/data/visa/src/main/kotlin/com/tangem/data/pay/repository/DefaultTangemPayCardDetailsRepository.kt @@ -334,6 +334,7 @@ internal class DefaultTangemPayCardDetailsRepository @Inject constructor( ApiEnvironment.DEV_3, ApiEnvironment.STAGE, ApiEnvironment.STAGE_2, + ApiEnvironment.STAGE_3, ApiEnvironment.MOCK, -> visaLibLoader.getOrCreateConfig().rainRSAPublicKey.dev ApiEnvironment.PROD -> visaLibLoader.getOrCreateConfig().rainRSAPublicKey.prod diff --git a/data/visa/src/main/kotlin/com/tangem/data/visa/DefaultVisaActivationRepository.kt b/data/visa/src/main/kotlin/com/tangem/data/visa/DefaultVisaActivationRepository.kt index 0b617bfe36..69f541207e 100644 --- a/data/visa/src/main/kotlin/com/tangem/data/visa/DefaultVisaActivationRepository.kt +++ b/data/visa/src/main/kotlin/com/tangem/data/visa/DefaultVisaActivationRepository.kt @@ -173,6 +173,7 @@ internal class DefaultVisaActivationRepository @AssistedInject constructor( ApiEnvironment.DEV_3, ApiEnvironment.STAGE, ApiEnvironment.STAGE_2, + ApiEnvironment.STAGE_3, ApiEnvironment.MOCK, -> rsaPublicKey.dev ApiEnvironment.PROD -> rsaPublicKey.prod diff --git a/features/tester/impl/src/main/java/com/tangem/feature/tester/presentation/environments/utils/ApiEnvironmentComparator.kt b/features/tester/impl/src/main/java/com/tangem/feature/tester/presentation/environments/utils/ApiEnvironmentComparator.kt index 69b0648f7d..730dbc9299 100644 --- a/features/tester/impl/src/main/java/com/tangem/feature/tester/presentation/environments/utils/ApiEnvironmentComparator.kt +++ b/features/tester/impl/src/main/java/com/tangem/feature/tester/presentation/environments/utils/ApiEnvironmentComparator.kt @@ -17,8 +17,9 @@ internal object ApiEnvironmentComparator : Comparator { ApiEnvironment.DEV_3 -> 2 ApiEnvironment.STAGE -> 3 ApiEnvironment.STAGE_2 -> 4 - ApiEnvironment.MOCK -> 5 - ApiEnvironment.PROD -> 6 + ApiEnvironment.STAGE_3 -> 5 + ApiEnvironment.MOCK -> 6 + ApiEnvironment.PROD -> 7 } }