87 Commits

Author SHA1 Message Date
pezkuwichain 5245f86678 fix: use main branch in github release workflow v1.0.4 2026-04-20 22:16:43 +03:00
pezkuwichain 817ce246b4 fix: remove trailing blank lines before closing braces (ktlint) 2026-04-20 16:57:22 +03:00
pezkuwichain a793993c1f fix: use Locale.US for DecimalFormat to fix $0 price display on Turkish locale devices
Bump version to 1.0.4
2026-04-20 16:28:16 +03:00
pezkuwichain f5b38eed8c chore: remove Branch.io SDK and route deep links through own domain
Branch.io was inherited from Nova Wallet fork but never configured.
Removed SDK integration, manifest intent filters, Gradle dependencies,
Dagger DI modules, and string resources. Deep linking now routes
exclusively through app.pezkuwichain.io with verified assetlinks.json.
2026-03-23 22:59:05 +03:00
pezkuwichain 28d0391d72 fix: store native libs uncompressed with 16KB zip alignment
Set jniLibs.useLegacyPackaging = false to ensure .so files are stored
uncompressed and 16KB-aligned within the AAB, as required by Google Play
for Android 15+ compatibility.
2026-03-14 19:50:06 +03:00
pezkuwichain 64d727dd21 fix: 16KB page alignment for all native libraries
- Rebuild renderscript-toolkit.aar from source with NDK 27 and 16KB alignment
- Rebuild libsr25519java.so from substrate-sdk source with 16KB alignment
- Realign libsqlcipher.so ELF segments to 16KB (preserves JNI API compatibility)
- Add jniLibs overrides for sr25519java and sqlcipher to replace AAR versions
- All native .so files now have 0x4000 (16KB) LOAD segment alignment
2026-03-14 18:35:15 +03:00
pezkuwichain 55df31b29b feat: prepare v1.0.3 production release with 16KB page alignment
- Add 16KB page size alignment for native Rust libraries (Google Play requirement)
- Make Play Store workflow parametric (track/status as inputs)
- Update release notes for all languages (en, tr, ku)
- Add .gitignore entries for node_modules and version.properties
2026-03-14 16:49:39 +03:00
pezkuwichain b4932c8b6e chore: bump version to 1.0.2 for Play Store release
Complete Turkish and Kurdish translations for all UI strings.
2026-03-11 06:27:11 +03:00
pezkuwichain 2fe578048b Fix unescaped apostrophes and remaining positional format specifiers in translations 2026-03-11 02:09:20 +03:00
pezkuwichain a91b1cb22b Fix positional format specifiers in English strings.xml 2026-03-11 01:56:24 +03:00
pezkuwichain ed0ffe0a3c Fix positional format specifiers in Kurdish strings.xml 2026-03-11 01:27:45 +03:00
pezkuwichain cc44f22163 fix: use positional format specifiers in Turkish translations
Convert multiple %s to %1$s, %2$s etc. in strings with multiple
substitutions to comply with Android resource format requirements.
2026-03-11 01:19:45 +03:00
pezkuwichain 8bbeddf2ba feat: complete Turkish and Kurdish translations for all UI strings
Turkish: expanded from 55 strings to full 2018 translatable strings
Kurdish: added 2 missing strings for complete coverage
2026-03-11 01:09:50 +03:00
pezkuwichain c965746f8f fix: use commit-count based versionCode to prevent downgrade on Firebase
CI_BUILD_ID was using github.run_number which is per-workflow, causing
different workflows to produce different versionCodes (144 vs 9).
Now computed from git commit count + offset, consistent across all workflows.
Also added bundle task to local auto-increment.
v1.0.1
2026-03-10 02:18:55 +03:00
pezkuwichain 8d150266fb fix: detect on-chain dispatch errors for citizenship and staking extrinsics
Switch from submitExtrinsic (fire-and-forget) to submitExtrinsicAndAwaitExecution
which waits for block inclusion and checks ExtrinsicFailed events. Previously the
app showed success even when pallet-level errors occurred (e.g. ReferrerNotCitizen,
AlreadyExists). Now dispatch errors are properly surfaced to the user.
2026-03-09 02:46:49 +03:00
pezkuwichain 44fd64496b feat: add complete Pezkuwi/citizenship translations to all 14 languages
Added (KYC) suffix to Apply&Actions button label in all languages.
Added ~29 missing citizenship and dashboard string keys to 12 languages
that were missing them (ru, es, pt, fr, it, ko, ja, zh-rCN, in, vi, hu, pl).
Added 3 missing dashboard keys to TR and KU.
2026-03-08 23:57:41 +03:00
pezkuwichain 84d0f39f8a fix: replace setFragmentResult with interface callback for citizenship dismiss
setFragmentResult API not available in this project. Use CitizenshipDismissListener
interface instead for parent-child fragment communication.
2026-03-08 19:06:21 +03:00
pezkuwichain 138c0199c9 fix: auto-refresh Pezkuwi dashboard card after actions
Add dashboardRefreshSignal to trigger re-fetch on swipe-to-refresh,
onResume, citizenship bottom sheet dismiss, and score tracking.
Rename button label to "Apply & Actions (KYC)" for clarity.
2026-03-08 17:32:40 +03:00
pezkuwichain cbce1070b4 Bump version to 1.0.1 and add release notes 2026-03-05 16:46:23 +03:00
pezkuwichain ba057617d3 fix: ktlint multiline-if-else braces in PezkuwiDashboardAdapter 2026-03-05 02:40:08 +03:00
pezkuwichain 91f2b5d254 feat: add Start Tracking button for StakingScore on dashboard
Query StakingScore::StakingStartBlock from People Chain to check
tracking status. Show "Start Tracking" button for approved citizens
who haven't opted in yet. Submits start_score_tracking() extrinsic
with loading state and error handling to prevent duplicate calls.
2026-03-05 02:33:31 +03:00
pezkuwichain 6939dfd4c3 Fix auto-pr to not fail when branches are already in sync 2026-03-02 15:08:24 +03:00
pezkuwichain 2177683838 Replace force-push sync with PR-based auto-merge workflow 2026-03-02 14:22:29 +03:00
pezkuwichain 81b0491691 fix: use safe call for nullable String in ifBlank 2026-03-01 22:22:41 +03:00
pezkuwichain 5705d0d578 fix: resolve citizenship bottom sheet not opening on button tap
Event(null) was swallowed by EventObserver's ?.let pattern, preventing
the CitizenshipBottomSheet from opening when tapping dashboard buttons.
Changed to Event("") with ifBlank conversion to preserve null referrer
semantics while ensuring the observer callback fires.
2026-03-01 22:08:19 +03:00
pezkuwichain d33a0a6289 fix: use https telegram link in dashboard share referral button 2026-02-28 04:22:16 +03:00
pezkuwichain 5771fbc10b fix: use https telegram link instead of custom scheme for sharing
Custom scheme pezkuwiwallet:// is not clickable in WhatsApp and
other messaging apps. Use https://t.me/pezkuwichainBot?start=ADDRESS
which is universally clickable and auto-fills the referrer field.
2026-02-28 02:40:06 +03:00
pezkuwichain 66be33c43e fix: disable referrer input when pre-filled from deep link
Prevent user from editing or clearing the referrer address when it
comes from a referral deep link to ensure correct on-chain submission.
2026-02-28 02:00:08 +03:00
pezkuwichain 33c6559a41 fix: connect referral link to blockchain via deep link handler
When Alice shares a referral link, it now generates a deep link URL
(pezkuwiwallet://pezkuwi/open/citizenship?referrer=address) that
auto-opens the citizenship form with Alice's address pre-filled as
the referrer, fixing the bug where referrer defaulted to founder.
2026-02-27 22:11:34 +03:00
pezkuwichain 894e5dac22 fix: prevent staking dashboard hang when exposure flag not cached
isPagedExposuresUsed() called storageCache.getEntry() which suspends
forever if the entry doesn't exist. The flag is only written by
ValidatorExposureUpdater (staking detail flow), so the dashboard
would hang indefinitely waiting for it.

Check cache first with isFullKeyInCache() and default to paged
exposures when the flag is absent. Also remove debug log statements.
2026-02-27 13:41:26 +03:00
pezkuwichain 2d0d46688e fix: save exposure flag for uncertain state to prevent setup screen hang
When neither paged nor legacy exposures exist for the current era,
ValidatorExposureUpdater returned early without saving the
PagedExposuresUsed flag. This caused storageCache.getEntry() to
suspend indefinitely, blocking the staking setup screen.

Save the flag as false for UNCERTAIN state so downstream code
can proceed with empty exposure data instead of hanging.
2026-02-27 04:30:53 +03:00
pezkuwichain 40f1b9bcaa fix: correct Google OAuth client ID and add auth diagnostics
- Updated RELEASE_GOOGLE_OAUTH_ID GitHub secret to use web client ID
  (client_type 3) instead of Android client ID (client_type 1).
  requestIdToken() requires the web/server client ID.
- Added diagnostic logging to Google Sign-In flow to capture exact
  error codes (ApiException statusCode) and OAuth client ID in use.
2026-02-27 00:44:36 +03:00
pezkuwichain ef1c71a320 style: fix ktlint formatting in staking dashboard logs 2026-02-26 23:50:34 +03:00
pezkuwichain 415085b0d5 fix: prevent staking dashboard crash from missing assets
- Replace assets.getValue() with safe access in addPricesToDashboard
  to prevent NoSuchElementException crash that kills the entire
  dashboard flow when any chain asset is missing from the DB
- Log exception details in chain updater catch blocks (was only
  logging chain name, swallowing the actual error)
- Add diagnostic logging to track dashboard item counts and missing
  assets for debugging
2026-02-26 22:38:18 +03:00
pezkuwichain 2374dac2ad fix: prevent staking dashboard infinite loading
- Add maxAttempts parameter to retryUntilDone (default unlimited for
  backward compat), use 5 retries for staking stats fetch
- Catch fetchStakingStats failure in dashboard update system and
  fallback to empty stats instead of hanging forever
- Restore stale scope detection in ComputationalCache so cancelled
  aggregate scopes are recreated instead of returning stale entries
2026-02-26 20:49:12 +03:00
pezkuwichain 853bbf567e fix: auto-detect sdkmanager path for self-hosted runners 2026-02-26 13:38:30 +03:00
pezkuwichain 2462c2b306 fix: resolve CI workflow failures across multiple jobs
- balances_test: update macos-13 → macos-14 (13 no longer supported)
- balances_test: fix null branch ref on schedule triggers
- balances_test: fix typo anroid-results → android-results
- install: fix broken NDK path reference (steps.setup-ndk not defined)
- install: use cmdline-tools/latest instead of hardcoded 16.0
- Created pezkuwichain/balances_test_result repo with gh-pages
- Added ACTIONS_DEPLOY_KEY secret for report deployment
2026-02-26 13:29:43 +03:00
pezkuwichain e43bb7a595 fix: enable full debug symbols in Rust native bindings
Add debug = 2 to release profile in all three Rust binding crates
so AGP can generate native-debug-symbols.zip for Play Store.
Also updated RELEASE_GOOGLE_OAUTH_ID secret to correct Android
client ID (was incorrectly set to Web client type).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 23:24:26 +03:00
pezkuwichain 49bbb8cf51 fix: enable native debug symbols for Play Store
Set strip = false in all Rust binding Cargo.toml files so AGP can
extract debug symbols before stripping for the final APK.
Previously strip = "debuginfo" removed symbols during Rust compilation,
leaving nothing for AGP's debugSymbolLevel = FULL to extract.
2026-02-24 23:06:31 +03:00
pezkuwichain 8da8dd0088 fix: preserve symbol tables in Rust bindings for Play Store debug symbols
Rust Cargo.toml had strip=true which removes ALL symbols including the
symbol table needed by AGP to generate native-debug-symbols.zip for
Play Store. Changed to strip="debuginfo" which keeps symbol tables
(needed for crash symbolication) but removes debug info (keeps .so small).

Also made debugSymbols conditional in distribute workflow so missing
symbols don't fail the upload.
2026-02-24 20:51:08 +03:00
pezkuwichain abc624b57a fix: remove debugSymbols from Play Store upload
Build doesn't generate native debug symbols artifact, causing the
Market publication step to fail with ENOENT. Remove the parameter
to unblock the upload. Debug symbols can be added back when NDK
symbols are actually generated.
2026-02-24 20:45:26 +03:00
pezkuwichain d8810676a6 ci: upload native debug symbols to Play Store
Add native debug symbols artifact to build workflow and download/attach
them in the distribute workflow to resolve Play Console warning.
2026-02-24 20:09:31 +03:00
pezkuwichain e6a087f907 ci: change Play Store track from production to alpha for closed testing 2026-02-24 19:04:01 +03:00
pezkuwichain c30cdf2411 build: add native debug symbols for releaseMarket 2026-02-24 18:20:18 +03:00
pezkuwichain f746697d57 ci: remove unused setvars step from Play Store workflow
The tw3lveparsecs/github-actions-setvars action was loading env vars
from variables/android.env that are never referenced in this workflow.
It caused a build failure when GitHub services were unavailable.
2026-02-24 10:03:33 +03:00
pezkuwichain 94a567c672 fix: prevent crash when DApp address fails SS58/Ethereum decode
Wrap accountId() in runCatching with fallback for addresses that
cannot be decoded as either SS58 or Ethereum format. Prevents
InvalidChecksumException crash when DApp sends an address with
an unrecognized format to the external signing flow.
2026-02-24 09:33:36 +03:00
pezkuwichain e13cb18576 ci: fix Play Store workflow for AAB submission
- Switch from assembleReleaseMarket (APK) to bundleReleaseMarket (AAB)
  Google Play requires AAB for new app submissions since August 2021
- Add bundle and mapping artifact uploads to reusable build workflow
- Fix mapping file path: release → releaseMarket
- Remove debugSymbols (not included in build artifact)
- Remove userFraction (incompatible with draft status)
- Remove whatsnew-ku (Play Store does not support Kurdish locale)
- Add if-no-files-found: ignore to APK upload for bundle-only builds
2026-02-24 08:11:05 +03:00
pezkuwichain 7a1e7d8270 fix: Era type encoding, CheckMortality cleanup, and release log guard
- Add Era AliasTo in PezkuwiPathTypeMapping for correct SCALE encoding
- Remove redundant isPezkuwi CheckMortality logic from ExtrinsicBuilderFactory
  and PolkadotExternalSignInteractor (standard path now works for all chains)
- Remove payload/signature hex logs from PezkuwiKeyPairSigner (security)
- Wrap debug logs with BuildConfig.DEBUG in PezkuwiKeyPairSigner,
  MetadataShortenerService, and WalletConnectSessionsEvent
2026-02-24 04:25:37 +03:00
pezkuwichain 8ed1909dc1 fix: use PezkuwiCheckMortality for WalletConnect sign requests
PolkadotExternalSignInteractor and ExtrinsicSplitter were using standard
CheckMortality which fails with pezsp_runtime DictEnum Era type.
Added isPezkuwiChain detection and routing to custom extensions.
2026-02-23 08:29:51 +03:00
pezkuwichain a1ce3137a1 i18n: add Turkish and Kurdish release notes for Play Store 2026-02-23 02:44:43 +03:00