Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
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
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,5 @@ app/*.apk
*.log

fearless.jks
fearless-upload.jks
/buildSrc/build
30 changes: 26 additions & 4 deletions app/build.gradle
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
//file:noinspection GroovyImplicitNullArgumentCall
import com.github.triplet.gradle.androidpublisher.ReleaseStatus
import java.util.Properties

apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'
Expand All @@ -12,6 +13,20 @@ apply plugin: 'com.google.firebase.appdistribution'
apply plugin: "com.github.triplet.play"
apply from: "../scripts/versions.gradle"

def localKeystoreProperties = new Properties()
def localKeystorePropertiesFile = rootProject.file("local.properties")
if (localKeystorePropertiesFile.exists()) {
localKeystoreProperties.load(localKeystorePropertiesFile.newDataInputStream())
}

def envOrLocalProp = { envKey, propKey ->
def envValue = System.getenv(envKey)
if (envValue != null && !envValue.trim().isEmpty()) {
return envValue
}
return localKeystoreProperties.getProperty(propKey)
}

android {
compileSdk rootProject.compileSdkVersion
defaultConfig {
Expand All @@ -24,10 +39,17 @@ android {
}
signingConfigs {
ci {
storeFile file(System.env.CI_KEYSTORE_PATH ?: "../debug-keystore.jks")
storePassword System.env.CI_KEYSTORE_PASS ?: "00000000"
keyAlias System.env.CI_KEYSTORE_KEY_ALIAS ?: "fearless"
keyPassword System.env.CI_KEYSTORE_KEY_PASS ?: "00000000"
def keystorePath = envOrLocalProp("CI_KEYSTORE_PATH", "ANDROID_RELEASE_KEYSTORE_PATH")
def localKeystore = rootProject.file("fearless-upload.jks")
def resolvedStoreFile = keystorePath ? file(keystorePath) : localKeystore
if (!resolvedStoreFile.exists()) {
resolvedStoreFile = localKeystore
}
storeFile resolvedStoreFile

storePassword envOrLocalProp("CI_KEYSTORE_PASS", "ANDROID_RELEASE_KEYSTORE_PASSWORD") ?: "00000000"
keyAlias envOrLocalProp("CI_KEYSTORE_KEY_ALIAS", "ANDROID_RELEASE_KEYSTORE_ALIAS") ?: "fearless-upload"
keyPassword envOrLocalProp("CI_KEYSTORE_KEY_PASS", "ANDROID_RELEASE_KEYSTORE_KEY_PASSWORD") ?: "00000000"
}
debug {
storeFile file("../debug-keystore.jks")
Expand Down
2 changes: 2 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ buildscript {
classpath libs.gradleplugins.compose
classpath libs.org.jacoco.core
classpath libs.sonarqube.gradle.plugin
// Force R8 version compatible with Kotlin 2.1.x metadata
classpath libs.r8
}

configurations.configureEach {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package jp.co.soramitsu.common.vibration

import android.annotation.SuppressLint
import android.os.Vibrator

class DeviceVibrator(
Expand All @@ -10,6 +11,7 @@ class DeviceVibrator(
private const val SHORT_VIBRATION_DURATION = 200L
}

@SuppressLint("MissingPermission") // Permission declared in the manifest; VIBRATE is a normal permission.
fun makeShortVibration() {
vibrator.vibrate(SHORT_VIBRATION_DURATION)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,6 @@ abstract class DynamicListBottomSheet<T : Any>(
}

val listContent = findViewById<RecyclerView>(R.id.dynamicListSheetContent)
listContent?.setHasFixedSize(true)

val adapter = DynamicListSheetAdapter(payload.selected, this, diffCallback, holderCreator())
listContent?.adapter = adapter
Expand Down
4 changes: 2 additions & 2 deletions common/src/main/res/values-in/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -813,7 +813,7 @@
<string name="staking_custom_proceed_button_enabled_title" formatted="false">Tampilkan yang dipilih: %d (maks %d)</string>
<string name="staking_custom_validators_list_title">Pilih validator</string>
<string name="staking_custom_validators_settings_filters">Tampilkan</string>
<string name="staking_custom_validators_settings_sort_apy">Estimasi imbalan (% APY)</string>
<string name="staking_custom_validators_settings_sort_apy">Estimasi imbalan (%% APY)</string>
<string name="staking_custom_validators_settings_sort_total_stake">Jumlah stake (%s)</string>
<string name="staking_custom_validators_title">Pilih validator khusus</string>
<string name="staking_custom_validators_update_list">Perbarui daftar Anda</string>
Expand Down Expand Up @@ -985,7 +985,7 @@
<string name="staking_unbonding_limit_reached_title">Batas permintaan tidak terikat tercapai</string>
<string name="staking_unbondings_placeholder">Transaksi unstaking akan muncul di sini</string>
<string name="staking_unstaking_period">Periode unstaking</string>
<string name="staking_validator_apy_percent">Estimasi imbalan (% APY)</string>
<string name="staking_validator_apy_percent">Estimasi imbalan (%% APY)</string>
<string name="staking_validator_estimated_reward">Estimasi hadiah</string>
<string name="staking_validator_info_title">Info validator</string>
<string name="staking_validator_my_oversubscribed_message">Oversubscribed. Anda tidak akan menerima hadiah dari validator di era ini.</string>
Expand Down
4 changes: 2 additions & 2 deletions common/src/main/res/values-ja/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -865,7 +865,7 @@
<string name="staking_custom_proceed_button_enabled_title" formatted="false">選択したものを表示: %d (最大 %d)</string>
<string name="staking_custom_validators_list_title">バリデーターの選択</string>
<string name="staking_custom_validators_settings_filters">表示</string>
<string name="staking_custom_validators_settings_sort_apy">推定報酬 (% APY)</string>
<string name="staking_custom_validators_settings_sort_apy">推定報酬 (%% APY)</string>
<string name="staking_custom_validators_settings_sort_total_stake">総ステーク (%s)</string>
<string name="staking_custom_validators_title">カスタム・バリデーターを選択する</string>
<string name="staking_custom_validators_update_list">リストを更新</string>
Expand Down Expand Up @@ -1036,7 +1036,7 @@
<string name="staking_unbonding_limit_reached_title">ステーキング解除リクエストの制限に達しました</string>
<string name="staking_unbondings_placeholder">ステーキング解除トランザクション履歴がここに表示されます</string>
<string name="staking_unstaking_period">ステーキング解除期間</string>
<string name="staking_validator_apy_percent">推定報酬 (% APY)</string>
<string name="staking_validator_apy_percent">推定報酬 (%% APY)</string>
<string name="staking_validator_estimated_reward">推定報酬</string>
<string name="staking_validator_info_title">バリデーター情報</string>
<string name="staking_validator_my_oversubscribed_message">申し込み殺到、この時代ではバリデーターから報酬を受け取れません</string>
Expand Down
4 changes: 2 additions & 2 deletions common/src/main/res/values-pt/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -793,7 +793,7 @@
<string name="staking_custom_proceed_button_enabled_title" formatted="false">Mostrar selecionados: %d (max %d)</string>
<string name="staking_custom_validators_list_title">Selecione validadores</string>
<string name="staking_custom_validators_settings_filters">Mostrar</string>
<string name="staking_custom_validators_settings_sort_apy">Recompensas estimadas (% APY)</string>
<string name="staking_custom_validators_settings_sort_apy">Recompensas estimadas (%% APY)</string>
<string name="staking_custom_validators_settings_sort_total_stake">Stake total (%s)</string>
<string name="staking_custom_validators_title">Escolher validadores personalizados</string>
<string name="staking_custom_validators_update_list">Atualize a sua lista</string>
Expand Down Expand Up @@ -965,7 +965,7 @@
<string name="staking_unbonding_limit_reached_title">Limite de pedidos de unstaking atingido</string>
<string name="staking_unbondings_placeholder">As transações de unstaking aparecerão aqui</string>
<string name="staking_unstaking_period">Período de Unstaking</string>
<string name="staking_validator_apy_percent">Recompensa estimada (% APY)</string>
<string name="staking_validator_apy_percent">Recompensa estimada (%% APY)</string>
<string name="staking_validator_estimated_reward">Recompensa estimada</string>
<string name="staking_validator_info_title">Informação do validador</string>
<string name="staking_validator_my_oversubscribed_message">Excesso de subscrições. Não receberá recompensas do validador nesta era.</string>
Expand Down
4 changes: 2 additions & 2 deletions common/src/main/res/values-ru/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -888,7 +888,7 @@
<string name="staking_custom_proceed_button_enabled_title" formatted="false">Показать выбранных: %d (макс. %d)</string>
<string name="staking_custom_validators_list_title">Выберите валидаторов</string>
<string name="staking_custom_validators_settings_filters">Показать</string>
<string name="staking_custom_validators_settings_sort_apy">Примерное вознаграждение (% APY)</string>
<string name="staking_custom_validators_settings_sort_apy">Примерное вознаграждение (%% APY)</string>
<string name="staking_custom_validators_settings_sort_total_stake">Общий стейк (%s)</string>
<string name="staking_custom_validators_title">Выберите валидаторов сами</string>
<string name="staking_custom_validators_update_list">Обновить свой список</string>
Expand Down Expand Up @@ -1062,7 +1062,7 @@
<string name="staking_unbonding_limit_reached_title">Достигнут лимит запросов на вывод из стейка</string>
<string name="staking_unbondings_placeholder">Операции по выводу из стейка появятся здесь</string>
<string name="staking_unstaking_period">Время вывода</string>
<string name="staking_validator_apy_percent">Примерное вознаграждение (% APY)</string>
<string name="staking_validator_apy_percent">Примерное вознаграждение (%% APY)</string>
<string name="staking_validator_estimated_reward">Примерное вознаграждение</string>
<string name="staking_validator_info_title">Информация о валидаторе</string>
<string name="staking_validator_my_oversubscribed_message">Превышен лимит номинаторов для валидатора. В этой эре вы не получите награду от этого валидатора.</string>
Expand Down
4 changes: 2 additions & 2 deletions common/src/main/res/values-tr/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -870,7 +870,7 @@
<string name="staking_custom_proceed_button_enabled_title" formatted="false">Seçilenleri göster: %d (maks %d )</string>
<string name="staking_custom_validators_list_title">Doğrulayıcıları seçin.</string>
<string name="staking_custom_validators_settings_filters">Göster</string>
<string name="staking_custom_validators_settings_sort_apy">Tahmini ödüller (% APY)</string>
<string name="staking_custom_validators_settings_sort_apy">Tahmini ödüller (%% APY)</string>
<string name="staking_custom_validators_settings_sort_total_stake">Toplam stake (%s)</string>
<string name="staking_custom_validators_title">Özel doğrulayıcıları seçin</string>
<string name="staking_custom_validators_update_list">Listenizi güncelleyin</string>
Expand Down Expand Up @@ -1042,7 +1042,7 @@
<string name="staking_unbonding_limit_reached_title">Stake kaldırma istekleri sınırına ulaşıldı</string>
<string name="staking_unbondings_placeholder">Stake kaldırma işlemleri burada görünecek</string>
<string name="staking_unstaking_period">Unstake dönemi</string>
<string name="staking_validator_apy_percent">Tahmini ödüller (% APY)</string>
<string name="staking_validator_apy_percent">Tahmini ödüller (%% APY)</string>
<string name="staking_validator_estimated_reward">Tahmini ödül</string>
<string name="staking_validator_info_title">Doğrulayıcı bilgileri</string>
<string name="staking_validator_my_oversubscribed_message">Fazla abone var. Bu dönemde doğrulayıcıdan ödül almayacaksınız</string>
Expand Down
4 changes: 2 additions & 2 deletions common/src/main/res/values-vi/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -900,7 +900,7 @@
<string name="staking_custom_proceed_button_enabled_title" formatted="false">Hiện đã chọn: %d (tối đa %d)</string>
<string name="staking_custom_validators_list_title">Chọn validator</string>
<string name="staking_custom_validators_settings_filters">Hiển thị</string>
<string name="staking_custom_validators_settings_sort_apy">Phần thưởng ước tính (% APY)</string>
<string name="staking_custom_validators_settings_sort_apy">Phần thưởng ước tính (%% APY)</string>
<string name="staking_custom_validators_settings_sort_total_stake">Tổng số stake (%s)</string>
<string name="staking_custom_validators_title">Chọn các validator tùy chỉnh</string>
<string name="staking_custom_validators_update_list">Cập nhật danh sách của bạn</string>
Expand Down Expand Up @@ -1072,7 +1072,7 @@
<string name="staking_unbonding_limit_reached_title">Đã đạt đến giới hạn yêu cầu unstaking</string>
<string name="staking_unbondings_placeholder">Các giao dịch unstaking sẽ xuất hiện tại đây</string>
<string name="staking_unstaking_period">Khoảng thời gian unstake</string>
<string name="staking_validator_apy_percent">Phần thưởng ước tính (% APY)</string>
<string name="staking_validator_apy_percent">Phần thưởng ước tính (%% APY)</string>
<string name="staking_validator_estimated_reward">Phần thưởng ước tính</string>
<string name="staking_validator_info_title">Thông tin validator</string>
<string name="staking_validator_my_oversubscribed_message">Đã đăng ký quá hạn mức. Bạn sẽ không nhận được phần thưởng từ validator trong thời gian này.</string>
Expand Down
4 changes: 2 additions & 2 deletions common/src/main/res/values-zh/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -865,7 +865,7 @@
<string name="staking_custom_proceed_button_enabled_title" formatted="false">显示所选: %d (最多%d )</string>
<string name="staking_custom_validators_list_title">选择验证人</string>
<string name="staking_custom_validators_settings_filters">显示</string>
<string name="staking_custom_validators_settings_sort_apy">预计奖励(% APY)</string>
<string name="staking_custom_validators_settings_sort_apy">预计奖励(%% APY)</string>
<string name="staking_custom_validators_settings_sort_total_stake">质押总数 ( %s )</string>
<string name="staking_custom_validators_title">选择自定义验证人</string>
<string name="staking_custom_validators_update_list">更新你的清单</string>
Expand Down Expand Up @@ -1036,7 +1036,7 @@
<string name="staking_unbonding_limit_reached_title">取消质押请求已达到限制</string>
<string name="staking_unbondings_placeholder">解除质押的交易将显示在此处</string>
<string name="staking_unstaking_period">解除质押期</string>
<string name="staking_validator_apy_percent">预计奖励(% APY)</string>
<string name="staking_validator_apy_percent">预计奖励(%% APY)</string>
<string name="staking_validator_estimated_reward">预计奖励</string>
<string name="staking_validator_info_title">验证人信息</string>
<string name="staking_validator_my_oversubscribed_message">超额抵押。在这个时间段,您将无法从验证人那里获得奖励。</string>
Expand Down
6 changes: 3 additions & 3 deletions common/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -915,7 +915,7 @@
<string name="staking_custom_proceed_button_enabled_title" formatted="false">Show selected: %d (max %d)</string>
<string name="staking_custom_validators_list_title">Select validators</string>
<string name="staking_custom_validators_settings_filters">Show</string>
<string name="staking_custom_validators_settings_sort_apy">Estimated rewards (% APY)</string>
<string name="staking_custom_validators_settings_sort_apy">Estimated rewards (%% APY)</string>
<string name="staking_custom_validators_settings_sort_total_stake">Total stake (%s)</string>
<string name="staking_custom_validators_title">Select custom validators</string>
<string name="staking_custom_validators_update_list">Update your list</string>
Expand Down Expand Up @@ -1087,7 +1087,7 @@
<string name="staking_unbonding_limit_reached_title">Unstaking requests limit reached</string>
<string name="staking_unbondings_placeholder">Unstaking transactions will appear here</string>
<string name="staking_unstaking_period">Unstaking period</string>
<string name="staking_validator_apy_percent">Estimated reward (% APY)</string>
<string name="staking_validator_apy_percent">Estimated reward (%% APY)</string>
<string name="staking_validator_estimated_reward">Estimated reward</string>
<string name="staking_validator_info_title">Validator info</string>
<string name="staking_validator_my_oversubscribed_message">Oversubscribed. You will not receive rewards from the validator in this era.</string>
Expand Down Expand Up @@ -1248,4 +1248,4 @@
<string name="what_accounts_for_export">What accounts in the wallet do you want to export?</string>
<string name="yesterday">Yesterday</string>
<string name="your_collator">Your collator</string>
</resources>
</resources>
51 changes: 43 additions & 8 deletions docs/releases/4.2.0.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,28 +2,63 @@

## Summary

Promote 4.2.0 from 4.2.0‑beta.1 with no functional changes. Stability verified across core flows and ecosystems.
Promote 4.2.0 from 4.2.0‑beta.1 with no functional changes. Stability already verified across core flows and ecosystems during beta; this release locks the artifacts, tags the repo, and rolls out broadly.

## Changes Since 4.2.0‑beta.1

- No functional changes; version bump only
- Continue to monitor crash/ANR metrics and session health

## Pre‑Release Steps

1. Versioning & docs
- Update `versionName`/`versionCode` to `4.2.0` in `build.gradle`.
- Ensure `CHANGELOG.md` and this file reflect the final scope (reuse beta highlights).
2. Alignment & toolchain validation
- `./gradlew printPolkadotSdkAlignment` — confirm URLs and optional shared_features pin.
- `./gradlew detektAll`
- `./gradlew runTest`
- `./gradlew :app:lint`
- `./gradlew postMergeVerify`
3. Smoke tests (reuse beta matrix)
- Polkadot/Kusama transfers, staking read paths.
- Ethereum/Polygon/BSC send + Reown signing.
- TON send/receive; Coinbase provider fetch; remote asset sync refresh.
4. Release artifacts
- `./gradlew :app:assembleRelease`
- Archive the generated AAB/APK plus `mapping.txt` and detekt/test reports.

## Release Packaging & Submission

1. Tag the repo after verifying artifacts: `git tag -s 4.2.0 -m "fearless-Android 4.2.0" && git push origin 4.2.0`.
2. Upload the release bundle to Google Play (Production track, staged rollout) using the same localized notes as beta.
3. Attach internal links (Confluence/Jira) to `docs/releases/4.2.0-beta.md` and QA sign-off.
4. Announce code freeze lifted once Play shows the build in review.

## Rollout Plan

- Staged rollout: 10% → 25% → 50% → 100%
- Halt criteria: crash‑free drop > 0.5% or new P0/P1 defects in core flows
- Day 0: Start at 10% of production. Monitor crash-free users, ANR rate, WalletConnect errors, TON RPC failures.
- Day 2 (≥24h healthy): Increase to 25%. Validate Coinbase provider metrics and EVM signing telemetry.
- Day 4: Increase to 50% if crash-free ≥99.5% and no new P0/P1 issues.
- Day 6+: Go to 100% once KPIs remain stable; otherwise hold rollout and investigate.
- Communication: Post rollout status in release channel after each increment; include key metrics snapshot.

## Monitoring & Halt Criteria

- Halt/rollback if crash-free sessions drop by >0.5%, ANR rate increases >0.2%, or any new P0/P1 defect in onboarding, send, staking, TON, or Reown flows.
- If halted, pause the staged rollout in Play, gather logs/Crashlytics links, and triage before resuming.
- Keep Jenkins/GitHub CI green for hotfix readiness.

## Store Notes (Play)

- Use the same release notes as the beta
- Attach links to docs/releases/4.2.0-beta.md for internal reference
- Use the same release notes as the beta (TON public features, Coinbase provider, Reown migration, toolchain upgrades, stability fixes).
- Reference this doc plus `docs/releases/4.2.0-beta.md` in internal QA submissions.

## Post‑Release

- Tag: `git tag -s 4.2.0 -m "fearless-Android 4.2.0" && git push origin 4.2.0`
- Create `4.2.x` patch branch if needed
- Update `docs/status.md` and `docs/roadmap.md` to reflect current state
- Keep monitoring metrics for 7 days; escalate regressions to roadmap/docs.
- Create `4.2.x` patch branch if hotfix required.
- Update `docs/status.md` and `docs/roadmap.md` once rollout completes to capture live health snapshot.

## Polkadot stable2503 Alignment

Expand Down
Loading