74 Commits

Author SHA1 Message Date
pezkuwichain cfe50a252a fix: update_tag workflow - use GITHUB_TOKEN instead of PAT
- Removed dependency on WRITE_SECRET_PAT
- Use built-in GITHUB_TOKEN with contents:write permission
- Check existing tags via git instead of secrets
polkadot-ecosystem-fixed v1.0.0
2026-02-11 12:15:44 +03:00
pezkuwichain 1fac88b573 revert: restore original Nova staking code
Removed custom staking modifications - use Nova's original implementation.
Chain config (A+B=C) handles Polkadot 2.0 correctly via timelineChain.
2026-02-11 12:07:51 +03:00
pezkuwichain 20bf60fd3a feat: update splash logo, add missing string resources, add stakingBackingChainId 2026-02-10 17:01:24 +03:00
pezkuwichain f475ff858b feat: sync chains config, rebrand assets icon, update onboarding image
- Sync chains.json from pezkuwi-wallet-utils (staking on Asset Hub)
- Replace Nova star with Nevruz fire icon on Assets bottom nav tab
- Update onboarding welcome background image (all DPI variants)
- Fix build URLs to point to pezkuwi-wallet-utils GitHub raw
- Update staking reward calculator and era computation
- Bump version code to 159
2026-02-10 16:05:57 +03:00
pezkuwichain 62ffa5d959 Fix duplicate ChainRegistry import 2026-02-09 21:35:32 +03:00
pezkuwichain 4cd4999e04 Fix nomination pool interactors to use parent chain for exposures
For Asset Hub nomination pools, elected exposures must be queried from
the parent relay chain where validators actually exist.
2026-02-09 21:06:14 +03:00
pezkuwichain 97d2c803bf Fix nomination pools staking data query: use parent chain for exposures
For Asset Hub nomination pools, validator exposures and prefs must be
fetched from the parent relay chain, not Asset Hub itself.
2026-02-09 20:58:39 +03:00
pezkuwichain 66879ae3c1 feat(staking): prepare for Polkadot 2.0 nomination pools on Asset Hub
- ChainExt.kt: Handle nomination-pools without local backing type (Polkadot 2.0)
- Add hasLocalNominationPoolsBacking() helper function
- Default to RELAYCHAIN when no local backing type exists
- StakingDashboardUpdateSystem: Improved error logging
- StakingDashboardViewModel: Show toast when item is syncing
- Update chains.json: relay chain only has relaychain staking
2026-02-09 08:47:53 +03:00
pezkuwichain 6f8a8b9511 fix: ktlint - remove unused import and extra whitespace 2026-02-09 03:16:55 +03:00
pezkuwichain 8c74b537d0 fix: Add safety improvements for swap and XCM functionality
- Add independent chain warm-up with error handling
- Add fallback fee estimation when dry run fails
- Handle empty forwarded XCMs in dry run gracefully
- Support both legacy and new XCM config destination formats
- Use xcmPalletNameOrNull for safer pallet detection
- Add Teyrchain junction support for legacy cross-chain config
- Recover from dry run failures in cross-chain transfers
- Add Pezkuwi Asset Hub to swap warm-up chains
2026-02-09 03:03:06 +03:00
pezkuwichain 0457819ba4 chore: update gift icon with Pezkuwi branding 2026-02-09 02:27:29 +03:00
pezkuwichain 3539f47722 fix: ktlint issues - remove unused import and extra spaces 2026-02-09 01:37:45 +03:00
pezkuwichain 35ce943f65 feat(xcm): Add Pezkuwi Teyrchain junction support for cross-chain transfers
- Add TEYRCHAIN_INFO constant and TeyrchainInfo pallet lookup
- Add PezkuwiXcm pallet support in xcmPalletName functions
- Update ParachainInfoRepository to query TeyrchainId storage
- Add junctionTypeName to ParachainId for Teyrchain encoding
- Update MultiLocationEncoding to handle both Parachain and Teyrchain
- Detect Pezkuwi chains by genesis hash for correct junction type

Fixes cross-chain transfers between Pezkuwi, Asset Hub, and People chains.
2026-02-09 01:01:48 +03:00
pezkuwichain 9babf454c9 Fix cross-chain XCM config parsing for destination field
The XCM config JSON has a nested structure where chainId and assetId
are inside a "destination" object, but the Kotlin class expected them
at the root level. This was causing NullPointerException when parsing
cross-chain transfer configurations.

Changes:
- Add XcmTransferDestinationRemote class to represent nested destination
- Update DynamicXcmTransferRemote to use destination object instead of
  flat chainId/assetId fields
- Update Dynamic.kt mapping to access transfer.destination.chainId/assetId

This fixes cross-chain transfers between Pezkuwi, Pezkuwi Asset Hub,
and Pezkuwi People chains.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-08 05:23:23 +03:00
pezkuwichain 81c3e1bbaa fix: Fix ktlint errors (unused imports, line length, formatting) 2026-02-07 05:38:04 +03:00
pezkuwichain caa5e0f463 fix: Use actual seed from SecretStoreV2 for Pezkuwi bizinikiwi signing
The keypair.privateKey from SecretStoreV2 is NOT the original 32-byte seed.
This was causing public key mismatch when expanding the keypair.

Changes:
- SecretsSigner now gets seed via getAccountSecrets().seed()
- PezkuwiKeyPairSigner.fromSeed() expands seed to proper keypair
- Fixes "bad signature" error on HEZ transfers
2026-02-07 04:59:27 +03:00
pezkuwichain c12dd79c74 feat: Add bizinikiwi signing context for Pezkuwi ecosystem
Pezkuwi chains use "bizinikiwi" signing context instead of standard
"substrate" context used by Polkadot ecosystem. This was causing
"bad signature" errors on HEZ transfers.

Changes:
- Add sr25519-bizinikiwi native Rust binding with bizinikiwi context
- Add isPezkuwiChain extension to detect Pezkuwi ecosystem chains
- Add PezkuwiKeyPairSigner for signing with bizinikiwi context
- Modify SecretsSigner to use correct context based on chain:
  - Pezkuwi chains (3) -> BizinikiwSr25519 (bizinikiwi)
  - Other chains (98+) -> KeyPairSigner (substrate)
- Add live transfer test for Pezkuwi mainnet

Tested with successful HEZ transfer on Pezkuwi mainnet:
TX: 0xe25a4eaaeaa04122cca130582dba3cacb2280dea5d908924b45757ea67c27996
2026-02-07 03:41:52 +03:00
pezkuwichain 7542046890 docs: Update changelog with recent changes and current status 2026-02-03 06:21:36 +03:00
pezkuwichain 14973798e9 debug: Add detailed logging for extrinsic build failures 2026-02-03 06:18:03 +03:00
pezkuwichain b107c1bd1a fix: Fix ktlint errors in debug logging statements 2026-02-03 06:08:53 +03:00
pezkuwichain 58e6fca23d test: Add Pezkuwi integration tests for runtime type verification 2026-02-03 05:56:16 +03:00
pezkuwichain d70ee29442 ci: Add GitHub Action to auto-sync main and master branches 2026-02-03 05:44:20 +03:00
pezkuwichain 032cbde2d6 feat: Add Pezkuwi chain support with custom signed extensions
- Add PezkuwiAddressConstructor for custom address type handling
- Add custom signed extensions (CheckNonZeroSender, CheckWeight, WeightReclaim, PezkuwiCheckMortality)
- Add pezkuwi.json type definitions
- Update RuntimeSnapshotExt for multiple address type lookups
- Update CHAINS_URL to use GitHub-hosted chains.json with types config
- Add feeViaRuntimeCall support for Pezkuwi chains
- Add debug diagnostics for runtime type issues (to be cleaned before production)
- Add CHANGELOG_PEZKUWI.md documenting all changes
2026-02-03 05:41:52 +03:00
pezkuwichain bb189aeb8a fix: add AuthorizeCall signed extension for PezkuwiChain
PezkuwiChain requires AuthorizeCall as the first signed extension in
the TxExtension tuple. This commit adds:

- AuthorizeCall.kt: FixedValueTransactionExtension with empty payload
  (PhantomData equivalent)
- CustomTransactionExtensions: Detects PezkuwiChain via metadata and
  adds AuthorizeCall extension
- ExtrinsicBuilderFactory/ExtrinsicSplitter: Uses CustomTransactionExtensions

Without this fix, transactions fail with "bad signature" errors and
fee calculation (payment_queryInfo) fails with WASM trap errors.
2026-02-02 17:43:59 +03:00
pezkuwichain a5cc31f82c fix: Use lowercase type values in chains.json (native, statemine) 2026-02-02 06:30:10 +03:00
pezkuwichain 92c33641b1 feat: Add fullSyncByDefault to Pezkuwi chains and fix chain sorting
- Added fullSyncByDefault option to all Pezkuwi chains (mainnet, Asset Hub,
  People, Zagros) to enable automatic balance sync
- Fixed chain sorting to include Polkadot and Kusama relay chains
- Pezkuwi ecosystem now correctly appears first in network lists
2026-02-02 05:55:38 +03:00
pezkuwichain ee09983ff1 Fix ktlint spacing error in ChainExt.kt 2026-02-02 03:28:12 +03:00
pezkuwichain e412f49c0d Security: remove keystore files from repo and fix Kurdish translations
- Remove .jks files from git tracking (security)
- Fix duplicate string entries in values-ku/strings.xml
- Remove Turkish translations (values-tr)
- Update launcher icons and chain config
2026-02-02 03:13:48 +03:00
pezkuwichain b1d1aed538 Fix Pezkuwi mainnet chainId and teyrchain parentIds
Updated chainId from old testnet genesis to correct mainnet genesis:
- Pezkuwi: bb4a61ab0c4b8c12f5eab71d0c86c482e03a275ecdafee678dea712474d33d75
- Asset Hub parentId: updated to match mainnet
- People Chain parentId: updated to match mainnet

This fixes the issue where wallet was showing 0 balance for accounts
because it was looking for the wrong chain genesis hash.
2026-01-31 07:09:44 +03:00
pezkuwichain 817c1748f2 feat: add VPS deploy step for wallet.pezkuwichain.io 2026-01-27 20:46:52 +03:00
pezkuwichain 95c68744da Update app launcher icons and add crash prevention
- Update Pezkuwi launcher icon design for all density buckets
- Resize icons to correct Android dimensions (mdpi to xxxhdpi)
- Add error handling to BalanceDetailViewModel flows to prevent crashes
- Handle RPC failures gracefully with logging instead of crashing
2026-01-25 18:00:22 +03:00
pezkuwichain a506a85d37 Add crowdloans option to Pezkuwi chain for Coming Soon state 2026-01-25 17:34:25 +03:00
pezkuwichain 0ffa9ac7a0 Fix workflow: remove invalid secret reference from with block 2026-01-25 17:00:26 +03:00
pezkuwichain a1ec9a8b9b Add graceful error handling for RPC connection failures
- StatemineAssetBalance: Handle connection errors in queryAccountBalance,
  existentialDeposit, subscribeAccountBalanceUpdatePoint, and startSyncingBalance
- NativeAssetBalance: Handle connection errors in all balance query and sync methods
- Return safe defaults (zero balance, empty flows) instead of crashing
- Log errors for debugging without interrupting user experience
2026-01-25 16:45:13 +03:00
pezkuwichain fa41ffb4d4 Switch CI from assembleDevelop to assembleDebug for proper OAuth
- Changed build type from develop (.dev) to debug (.debug)
- Updated Firebase App ID secret reference
- Updated APK paths for debug build
- This aligns with pezkuwi-wallet-debug Firebase project setup

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 14:15:16 +03:00
pezkuwichain 429fc1ee43 Fix Google Drive backup OAuth configuration
- Add new debug keystore with unique SHA-1 fingerprint
- Update google-services.json with proper OAuth clients
- Configure debug build to use new keystore
- Both Android OAuth client (type 1) and Web client (type 3) now present

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 07:19:51 +03:00
pezkuwichain c1b4855d2c Enable Google Drive backup with OAuth 2026-01-25 04:57:05 +03:00
pezkuwichain 360627d836 Update version properties and add .kotlin to gitignore 2026-01-25 04:03:59 +03:00
pezkuwichain a6b10f932f Remove unused Nova branding assets for Play Store compliance
- Delete 19 unused ic_nova_*.png files from drawable folders
- Delete 4 Nova reference files from docs folder
- These files were not referenced anywhere in code
2026-01-25 02:49:36 +03:00
pezkuwichain bc876396c9 Update welcome screen background and fix misplaced assets
- Update ic_create_wallet_background for all densities
- Update ic_launcher_round
- Remove wrongly placed PNG files from res root folder
2026-01-25 02:37:00 +03:00
pezkuwichain 6a051ec9e0 Add project assets and debug configuration
- Add Pezkuwi brand logos and icons to docs folder
- Add debug Firebase configuration
- Add version properties
2026-01-25 00:18:56 +03:00
pezkuwichain a8c89e8267 Add Kurdish language to language selection 2026-01-24 23:04:32 +03:00
pezkuwichain 096587f11b Update logos and add HEZ/PEZ price fallback mechanism
- Update launcher icons (ic_launcher, ic_launcher_round, ic_launcher_foreground)
- Update ic_pezkuwi_logo for all density buckets
- Add priceId for HEZ (hezkurd) and PEZ (pezkuwi) tokens
- Implement price fallback: if CoinGecko price is 0 or missing:
  - HEZ = DOT price / 3
  - PEZ = DOT price / 10

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-24 19:52:18 +03:00
pezkuwichain 7e68d94a98 Update Pezkuwi logos and fix chain ordering
- Update ic_pezkuwi_logo with correct logo from docs
- Update ic_pezkuwi_card_logo with correct card logo
- Update app launcher icons (ic_launcher, ic_launcher_round, ic_launcher_foreground)
- ChainExt.kt and TokenSorting.kt changes for Pezkuwi chain priority

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-24 17:39:43 +03:00
pezkuwichain 4f5e65291f Set CI_BUILD_ID from github.run_number for auto version increment 2026-01-24 15:32:46 +03:00
pezkuwichain 15478b5fd4 Auto-increment versionCode on each build
- Reads/writes VERSION_CODE from version.properties
- Increments on assemble/install tasks
- CI builds still use CI_BUILD_ID
2026-01-24 09:34:15 +03:00
pezkuwichain 4d91cbd392 Fix Google Drive auth: add Android OAuth client 2026-01-24 09:31:37 +03:00
pezkuwichain 19f24fe706 Fix Pezkuwi chain ordering and logos
- Remove 0x prefix from Pezkuwi chainIds to match ChainGeneses constants
- Update chain icons to use pezkuwi-wallet-utils URLs
- Pezkuwi, Asset Hub, People now sorted correctly (0, 1, 2)
2026-01-24 08:55:58 +03:00
pezkuwichain b8b8deef06 Rebrand wallet provider: nova-wallet -> pezkuwi-wallet
- Replaced nova-wallet with pezkuwi-wallet
- Added pezkuwi-js provider for SDK compatibility
- Kept polkadot-js for Polkadot ecosystem compatibility
- Changed isNovaWallet to isPezkuwiWallet

Provider now registers as:
- polkadot-js (Polkadot ecosystem)
- pezkuwi-wallet (Pezkuwi wallet)
- pezkuwi-js (Pezkuwi JS SDK)
2026-01-24 08:18:47 +03:00
pezkuwichain bc21958a76 feat: update app launcher icon with Pezkuwi branding
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-24 05:20:15 +03:00