Commit Graph
911 Commits
Author SHA1 Message Date
Kurdistan Tech Ministry 54c70afe4b fix: expose actual WC error message instead of generic fallback 2026-02-24 22:01:49 +03:00
Kurdistan Tech Ministry c79966c192 fix: expose actual WC error message instead of generic fallback 2026-02-24 22:01:49 +03:00
Kurdistan Tech Ministry 6d8820ced0 fix: use session-approved chainId for WC signing requests
WC SignClient validates that the request chainId is in the session's
approved namespaces. When the DApp browser creates a session, it may
only approve the relay chain. Signing requests for Asset Hub or People
Chain then fail with "Missing or invalid chainId".

Fix: always use a chainId from the session's approved chains for the
WC request. The wallet determines the actual signing chain from the
transaction payload's genesisHash, not from the WC request chainId.
2026-02-24 20:36:56 +03:00
Kurdistan Tech Ministry 1bedda8006 fix: use session-approved chainId for WC signing requests
WC SignClient validates that the request chainId is in the session's
approved namespaces. When the DApp browser creates a session, it may
only approve the relay chain. Signing requests for Asset Hub or People
Chain then fail with "Missing or invalid chainId".

Fix: always use a chainId from the session's approved chains for the
WC request. The wallet determines the actual signing chain from the
transaction payload's genesisHash, not from the WC request chainId.
2026-02-24 20:36:56 +03:00
Kurdistan Tech Ministry a4e68ff9c1 fix: hardcode chain genesis hashes in WC session to fix signing
WC session was missing Asset Hub and People Chain because their APIs
weren't connected yet at session creation time. Also fix catch blocks
in ExistingCitizenAuth that referenced undefined err variable.
2026-02-24 20:00:20 +03:00
Kurdistan Tech Ministry 8b906f0b84 fix: hardcode chain genesis hashes in WC session to fix signing
WC session was missing Asset Hub and People Chain because their APIs
weren't connected yet at session creation time. Also fix catch blocks
in ExistingCitizenAuth that referenced undefined err variable.
2026-02-24 20:00:20 +03:00
Kurdistan Tech Ministry 609953c689 fix: rewrite ID card to flow layout for mobile readability 2026-02-24 10:42:14 +03:00
Kurdistan Tech Ministry aac6c6581c fix: rewrite ID card to flow layout for mobile readability 2026-02-24 10:42:14 +03:00
Kurdistan Tech Ministry 0ddcb5d453 update: upgrade @pezkuwi/api to 16.5.36, clean up images and assets
- Upgrade @pezkuwi/api 16.5.11 -> 16.5.36 in supabase edge functions
- Remove manual SS58-to-hex workaround, use native SS58 addresses
- Add kurdistan flag and Dijital Kurdistan images
- Add PezkuwiExplorer to web public assets
- Remove unused react-logo and telegram_welcome images
- Add *.bak to gitignore
2026-02-24 10:28:47 +03:00
Kurdistan Tech Ministry 87b081fa60 update: upgrade @pezkuwi/api to 16.5.36, clean up images and assets
- Upgrade @pezkuwi/api 16.5.11 -> 16.5.36 in supabase edge functions
- Remove manual SS58-to-hex workaround, use native SS58 addresses
- Add kurdistan flag and Dijital Kurdistan images
- Add PezkuwiExplorer to web public assets
- Remove unused react-logo and telegram_welcome images
- Add *.bak to gitignore
2026-02-24 10:28:47 +03:00
Kurdistan Tech Ministry 84969d158f fix: citizen portal mobile responsive layout
- Shrink title/banner fonts and padding on mobile
- Move digital ID card above entrance buttons
- Auto-resize uploaded photos via canvas instead of 2MB limit
- Make entrance cards compact 2-column grid on all screens
2026-02-24 10:26:25 +03:00
Kurdistan Tech Ministry 570e426333 fix: citizen portal mobile responsive layout
- Shrink title/banner fonts and padding on mobile
- Move digital ID card above entrance buttons
- Auto-resize uploaded photos via canvas instead of 2MB limit
- Make entrance cards compact 2-column grid on all screens
2026-02-24 10:26:25 +03:00
Kurdistan Tech Ministry c85ae06fe1 fix: send plain SS58 address in WC signRaw instead of CAIP-10
The signRaw handler was wrapping the address in CAIP-10 format
(polkadot:<chain>:<address>) before sending to the wallet. The wallet
expects a plain SS58 address in polkadot_signMessage params, causing
InvalidChecksumException crash when trying to decode the CAIP-10 string.
2026-02-24 09:45:01 +03:00
Kurdistan Tech Ministry 6c4960c32a fix: send plain SS58 address in WC signRaw instead of CAIP-10
The signRaw handler was wrapping the address in CAIP-10 format
(polkadot:<chain>:<address>) before sending to the wallet. The wallet
expects a plain SS58 address in polkadot_signMessage params, causing
InvalidChecksumException crash when trying to decode the CAIP-10 string.
2026-02-24 09:45:01 +03:00
Kurdistan Tech Ministry 9bad24bc84 fix: add storage RLS policies for p2p-payment-proofs bucket
Allow open INSERT/SELECT/DELETE on p2p-payment-proofs bucket since
users authenticate via wallet identity, not Supabase Auth.
2026-02-24 06:28:16 +03:00
Kurdistan Tech Ministry b8a0d5a5f3 fix: add storage RLS policies for p2p-payment-proofs bucket
Allow open INSERT/SELECT/DELETE on p2p-payment-proofs bucket since
users authenticate via wallet identity, not Supabase Auth.
2026-02-24 06:28:16 +03:00
Kurdistan Tech Ministry 508f0763f4 fix: payment proof lifecycle, repeating toast, and escrow migrations
- Replace IPFS/Pinata upload with Supabase Storage for payment proofs
- Add 1-day auto-expiry for proof images (retained if disputed)
- Fix repeating "payment deadline expired" toast (fire once, clear interval)
- Fix cancel_reason → cancellation_reason column reference
- Add payment proof lifecycle migration (proof_expires_at, cleanup functions)
- Add atomic escrow migration (accept_p2p_offer, complete/cancel trade)
- Add cleanup-proofs edge function for daily expired proof deletion
2026-02-24 06:15:22 +03:00
Kurdistan Tech Ministry 607ef72948 fix: payment proof lifecycle, repeating toast, and escrow migrations
- Replace IPFS/Pinata upload with Supabase Storage for payment proofs
- Add 1-day auto-expiry for proof images (retained if disputed)
- Fix repeating "payment deadline expired" toast (fire once, clear interval)
- Fix cancel_reason → cancellation_reason column reference
- Add payment proof lifecycle migration (proof_expires_at, cleanup functions)
- Add atomic escrow migration (accept_p2p_offer, complete/cancel trade)
- Add cleanup-proofs edge function for daily expired proof deletion
2026-02-24 06:15:22 +03:00
Kurdistan Tech Ministry c969e31700 fix: correct cancel_reason column name to cancellation_reason
Also add migration to drop remaining auth.users FK constraints
on p2p_messages, notifications, ratings, audit_log tables.
2026-02-24 05:34:42 +03:00
Kurdistan Tech Ministry d380e6a3cd fix: correct cancel_reason column name to cancellation_reason
Also add migration to drop remaining auth.users FK constraints
on p2p_messages, notifications, ratings, audit_log tables.
2026-02-24 05:34:42 +03:00
Kurdistan Tech Ministry 12d6f4f3fd fix: show actual Supabase error details in P2P toast messages
PostgrestError is not instanceof Error, so catch blocks were falling
through to generic messages. Now extracts .message and .details from
Supabase errors for better debugging.
2026-02-24 05:00:45 +03:00
Kurdistan Tech Ministry 0a9349f2b3 fix: show actual Supabase error details in P2P toast messages
PostgrestError is not instanceof Error, so catch blocks were falling
through to generic messages. Now extracts .message and .details from
Supabase errors for better debugging.
2026-02-24 05:00:45 +03:00
Kurdistan Tech Ministry 72ae102f0e fix: add Sonner toast renderer for P2P trade notifications
P2P modules (TradeModal, p2p-fiat) use Sonner toast but the Sonner
Toaster component was not mounted in App.tsx. Only the shadcn Toaster
was rendered, causing all P2P toast.error/success calls to be invisible.
2026-02-24 04:46:35 +03:00
Kurdistan Tech Ministry 231506a9f1 fix: add Sonner toast renderer for P2P trade notifications
P2P modules (TradeModal, p2p-fiat) use Sonner toast but the Sonner
Toaster component was not mounted in App.tsx. Only the shadcn Toaster
was rendered, causing all P2P toast.error/success calls to be invisible.
2026-02-24 04:46:35 +03:00
Kurdistan Tech Ministry 698f2acff7 fix: update withdrawal time from 5-30 to 1-3 min in Farsi and Sorani 2026-02-24 04:11:21 +03:00
Kurdistan Tech Ministry 0ccac1253b fix: update withdrawal time from 5-30 to 1-3 min in Farsi and Sorani 2026-02-24 04:11:21 +03:00
Kurdistan Tech Ministry 3461b0fad2 fix: update P2P withdrawal processing time from 5-30 to 1-3 minutes 2026-02-24 04:07:07 +03:00
Kurdistan Tech Ministry d73c84e042 fix: update P2P withdrawal processing time from 5-30 to 1-3 minutes 2026-02-24 04:07:07 +03:00
Kurdistan Tech Ministry 6d5856a010 feat: compact OKX-style mobile P2P ad cards 2026-02-24 03:47:03 +03:00
Kurdistan Tech Ministry 9f35eaadf6 feat: compact OKX-style mobile P2P ad cards 2026-02-24 03:47:03 +03:00
Kurdistan Tech Ministry f9119943e9 feat: add P2P messages inbox and OKX-style navigation
- Add P2PMessages inbox page listing all trade conversations
- Update P2PDashboard top nav with icon+label buttons (Orders, Ads, Messages)
- Add unread message count badge with realtime subscription
- Add /p2p/messages route
- Add i18n translations for all 6 locales
2026-02-24 03:24:28 +03:00
Kurdistan Tech Ministry 57bbec5cdd feat: add P2P messages inbox and OKX-style navigation
- Add P2PMessages inbox page listing all trade conversations
- Update P2PDashboard top nav with icon+label buttons (Orders, Ads, Messages)
- Add unread message count badge with realtime subscription
- Add /p2p/messages route
- Add i18n translations for all 6 locales
2026-02-24 03:24:28 +03:00
Kurdistan Tech Ministry 4536c454a4 fix: WalletConnect multi-chain signing for Asset Hub deposits 2026-02-24 03:14:00 +03:00
Kurdistan Tech Ministry 42bb4140f2 fix: WalletConnect multi-chain signing for Asset Hub deposits 2026-02-24 03:14:00 +03:00
Kurdistan Tech Ministry 402eaf4684 fix: use PLATFORM_WALLET_MNEMONIC env var in process-withdrawal 2026-02-24 00:58:12 +03:00
Kurdistan Tech Ministry b1de3cc017 fix: use PLATFORM_WALLET_MNEMONIC env var in process-withdrawal 2026-02-24 00:58:12 +03:00
Kurdistan Tech Ministry edd733a33a fix: unify platform wallet for deposit and withdrawal
Changed PLATFORM_WALLET to deposit wallet address (5H18ZZBU...)
so both deposit and withdrawal use the same custody wallet.
2026-02-24 00:50:49 +03:00
Kurdistan Tech Ministry 889e0f5886 fix: unify platform wallet for deposit and withdrawal
Changed PLATFORM_WALLET to deposit wallet address (5H18ZZBU...)
so both deposit and withdrawal use the same custody wallet.
2026-02-24 00:50:49 +03:00
Kurdistan Tech Ministry cc986b4ed7 fix: Asset Hub AccountId32 encoding for withdrawal edge functions
Deno npm shim breaks SS58 decoding in @pezkuwi/api type registry,
causing PezspCoreCryptoAccountId32 to receive 48-byte SS58 strings
instead of 32-byte public keys. Added inline ss58ToHex decoder and
explicit hex-based nonce fetching to avoid all SS58 → AccountId32
conversions at the API level. Also adds P2P E2E test script (45/45).
2026-02-24 00:16:11 +03:00
Kurdistan Tech Ministry bb70bc4596 fix: Asset Hub AccountId32 encoding for withdrawal edge functions
Deno npm shim breaks SS58 decoding in @pezkuwi/api type registry,
causing PezspCoreCryptoAccountId32 to receive 48-byte SS58 strings
instead of 32-byte public keys. Added inline ss58ToHex decoder and
explicit hex-based nonce fetching to avoid all SS58 → AccountId32
conversions at the API level. Also adds P2P E2E test script (45/45).
2026-02-24 00:16:11 +03:00
Kurdistan Tech Ministry d40647aa50 fix: remove price_per_unit from offer insert (generated column) 2026-02-23 22:36:15 +03:00
Kurdistan Tech Ministry 56adb45b07 fix: remove price_per_unit from offer insert (generated column) 2026-02-23 22:36:15 +03:00
Kurdistan Tech Ministry 9ed9fd1a44 fix: withdrawal end-to-end flow and UI improvements
- requestWithdraw() calls process-withdraw edge function for full flow
  (lock balance + blockchain TX + complete) instead of just DB lock
- Remove pending request block from withdrawal validation — backend
  already enforces available_balance with FOR UPDATE row lock
- Pending requests shown as info alert instead of blocking error
- Balance card: numbers right-aligned, 2 decimal places
2026-02-23 22:32:58 +03:00
Kurdistan Tech Ministry 2150ab4997 fix: withdrawal end-to-end flow and UI improvements
- requestWithdraw() calls process-withdraw edge function for full flow
  (lock balance + blockchain TX + complete) instead of just DB lock
- Remove pending request block from withdrawal validation — backend
  already enforces available_balance with FOR UPDATE row lock
- Pending requests shown as info alert instead of blocking error
- Balance card: numbers right-aligned, 2 decimal places
2026-02-23 22:32:58 +03:00
Kurdistan Tech Ministry a50979ad52 fix: withdrawal calls process-withdraw edge function, balance card UI improvements
- requestWithdraw() now calls process-withdraw edge function instead of
  just locking balance in DB. This triggers the full flow: lock balance,
  send blockchain TX, complete withdrawal.
- Balance card: numbers right-aligned, 2 decimal places instead of 4
- Added public SELECT RLS policy on payment_methods table (was blocking
  anon users from loading payment method dropdown)
2026-02-23 22:19:06 +03:00
Kurdistan Tech Ministry b839a1834d fix: withdrawal calls process-withdraw edge function, balance card UI improvements
- requestWithdraw() now calls process-withdraw edge function instead of
  just locking balance in DB. This triggers the full flow: lock balance,
  send blockchain TX, complete withdrawal.
- Balance card: numbers right-aligned, 2 decimal places instead of 4
- Added public SELECT RLS policy on payment_methods table (was blocking
  anon users from loading payment method dropdown)
2026-02-23 22:19:06 +03:00
Kurdistan Tech Ministry fa811dcfc7 fix: wait for block finalization in verify-deposit instead of failing
Replace hard fail on unfinalized blocks with a retry loop that polls
every 6 seconds up to 60 seconds. The TX is already fully verified via
events at this point — we just wait for GRANDPA finality before crediting.
2026-02-23 22:09:46 +03:00
Kurdistan Tech Ministry 646e388b28 fix: wait for block finalization in verify-deposit instead of failing
Replace hard fail on unfinalized blocks with a retry loop that polls
every 6 seconds up to 60 seconds. The TX is already fully verified via
events at this point — we just wait for GRANDPA finality before crediting.
2026-02-23 22:09:46 +03:00
Kurdistan Tech Ministry ee50666c64 fix: route P2P deposits and verification to Asset Hub instead of relay chain
DepositModal was building transactions via relay chain API, and all three
edge functions (verify-deposit, process-withdraw, process-withdrawal) had
RPC endpoints hardcoded or defaulting to the relay chain. This caused
deposit verification to fail with "Transaction not yet finalized" and
created a chain mismatch with the withdrawal system which operates on
Asset Hub.

- DepositModal: use assetHubApi instead of api for transfer TX
- verify-deposit: RPC_HTTP/RPC_WS default to asset-hub-rpc (env override)
- process-withdraw: RPC_ENDPOINT default to asset-hub-rpc (env override)
- process-withdrawal: RPC_ENDPOINT default to asset-hub-rpc
2026-02-23 21:50:57 +03:00
Kurdistan Tech Ministry a50a5dbffb fix: route P2P deposits and verification to Asset Hub instead of relay chain
DepositModal was building transactions via relay chain API, and all three
edge functions (verify-deposit, process-withdraw, process-withdrawal) had
RPC endpoints hardcoded or defaulting to the relay chain. This caused
deposit verification to fail with "Transaction not yet finalized" and
created a chain mismatch with the withdrawal system which operates on
Asset Hub.

- DepositModal: use assetHubApi instead of api for transfer TX
- verify-deposit: RPC_HTTP/RPC_WS default to asset-hub-rpc (env override)
- process-withdraw: RPC_ENDPOINT default to asset-hub-rpc (env override)
- process-withdrawal: RPC_ENDPOINT default to asset-hub-rpc
2026-02-23 21:50:57 +03:00