Releases: paytaca/paytaca-app
Release list
Release v0.25.0
Highlights
- Nostr Chat (NIP-17) — Full end-to-end encrypted private messaging with group chats, reactions, media sharing, in-chat BCH payments, typing indicators, and active status.
- Rewards App Overhaul — Complete UI/UX redesign with gamification, help tours, points redemption, referral links, and a Join Rewards Program prompt.
- P2P Ramp Improvements — Eliminated duplicate API calls, peer info display with trade stats, report user flow, and escrow verification fixes.
- Performance & UX — Home page loading optimizations, token list improvements, safe insets, and a reimagined apps page.
New Features
Nostr Chat (NIP-17 Private Messaging)
- Encrypted DMs & group chats over Nostr with NIP-17 gift-wrapped events (Kind 14) and NIP-78 group metadata
- Emoji reactions (NIP-25) with animated badges, detail popup, and undo
- Reply, edit, delete with a long-press floating context menu; edit/delete within a 1-minute window
- Encrypted media sharing via Blossom servers with image resize prompts (Small/Medium/Large) for files >= 1 MB, lazy-loading, and persistent thumbnail cache
- In-chat BCH payments via
/send <amount> [currency]command with swipe-to-confirm and rich payment cards - Read receipts via NIP-25 Kind 7 "👀" reactions, gift-wrapped for privacy, with unread badge counts
- Active status indicators (green dots) showing contacts active within the last 3 minutes, backed by WebSocket + touch API
- Typing status indicator riding on the existing status WebSocket, throttled to 3s
- Push notifications via Watchtower OAuth with client-side registration and in-app fallback for web/PWA
- User profiles with avatar upload (Blossom storage), display name publishing, and BCH address publishing (NIP-78)
- Contact management — add, rename, block, archive, delete; shareable group invite links with request-to-join flow
- Server-authoritative room list with encrypted group names (NIP-44); relay messages no longer mutate room objects
- Per-wallet isolation of chat state (rooms, messages, caches, profile) via
byWallet[walletHash]structure - Telegram-like UI with tabs (All/Unread/Archived), floating chat icon in footer with animated unread badge, theme-aware glassmorphic styling, multiline auto-grow textarea, and relay connection status chip
- Reliability — exponential backoff for relay resubscription, WebSocket ping/keepalive, auto-resubscribe on background tab return
- Renamed
PrivateGroup→ClosedPrivateGroupandPublicGroup→OpenPrivateGroup - Chat disabled on chipnet
Rewards App
- Complete UI/UX redesign of Rewards home, User Rewards, and RFP (Refer-a-Friend) pages with achievement icons, points badges, and reusable cards
- Collapsible rewards summary on home page showing aggregated points, LIFT conversion ratio, and BCH/fiat prices fetched from Cauldron
- Gamified points redemption — RedeemPointsDialog with celebration effects, real-time max redeemable from API, dynamic token balance from promo contract, and integration with rewards swap contract
- Redemption history dialog tracking point-to-token conversions
- Referral program — QR code sharing via ReferralQrDialog encoding full referral URL (
https://rewards.paytaca.com/referral?code=...), deep link handling on Android & iOS, and auto-open referral dialog with pre-filled code - Help tours — data-driven HelpCard component with step-by-step guides, contextual highlighting, scroll-to-view, and smart card placement
- Transaction points — automatic point awarding for marketplace/merchant, cashin, eload, and P2P ramp transactions
- One-time points tracking for first-time user actions (first 7 transactions)
- Join Rewards Program prompt shown once after initial app load, tracked per-wallet; defers until backup reminder is resolved
- Referral banner for new users who skipped entering a referral code during wallet creation
- Beta flag removed — Rewards is now a production app
P2P Ramp
- Peer info component with trade stats (completed/failed/completion %) and reported badge
- Report user flow with reason selection dialog and greyscale styling for reported users
- Price percentage indicator on TradeInfoCard with skeleton loader
- Rate Your Experience with pre-composed feedback chips and trade breakdown display
Apps Page
- Reimagined apps page with categorized list, sticky category chips, visible descriptions, beta section, and search bar
- Pinned apps with long-press context menu
- List/grid view toggle replacing the previous tour
Wallet & Home
- Token list improvements — drag reorder fixes, hide/unhide assets (replacing delete), eye icon toggles
- Token info card on transaction history with Send/Receive/Swap/Chart actions
- View All card on home page when favorite tokens exceed the subscription limit
- BCH info card on transaction history (previously only cash tokens)
- Home page performance — batched price API calls (parallel chunks of 10), store mutation guards skipping no-op updates, and excluded unused
senders/recipientsfields from list views - Transaction caching in localStorage for instant home page rendering
- Chat avatar caching in localStorage for instant display
Bug Fixes
P2P Exchange
- Escrow verification not triggering after swipe-to-escrow — reordered
EscrowTransfer.vuesoescrowPendingOrder()is awaited before emittingsuccess, preventing a race that left the page stuck inescrow-bchstate until manual navigation. (#731)
Wallet / Transactions
- Token metadata inconsistency between home/asset-list and transaction history resolved via BCMR store lookup and background enrichment.
- Address scan — cached master HD node with TTL, fixed
usedDiscoveryfallback, and added balance refresh. - Imported wallet showing zero balance —
getMnemonic(index)now tries hash-based storage before migration flag, fixing mnemonic retrieval for wallets imported from other wallets. - Multisig UTXO type mismatch — false "Insufficient BCH balance" errors fixed by converting
targetSatoshistobigintbefore UTXO selection. - WalletConnect message signing — fixed "buffer length error" by replacing BCHjs signer with libauth; changed response format from hex to base64 to match
personal_signexpectations.
UI / Display
- Safe inset bottom for
fixed-bottomclass — fixed marketplace cart/chat button spacing at the bottom of the screen. (#717)
Localization
- Added ~300 new Nostr chat translation keys across 17 locales.
- Added missing translation keys for apps page, chat profile prompt, and ResetChatDialog.
- Wrapped hardcoded strings in rewards app with translation keys.
- German (
de):Depositchanged from "Anzahlung" to "Empfangen"; added missingShare→ "Teilen". - Added
--keyand--keysflags to i18n tooling for targeted re-translation.
Technical Changes
- New store module:
src/store/nostr-chat/— complete Vuex store with per-wallet state isolation - New services:
src/services/nostr-chat.js,src/wallet/nostr.js(NIP-06/17/25/59),src/wallet/nostr-media.js(Blossom),src/utils/chat-markup.js,src/utils/watchtower-oauth.js - New chat components:
ChatInput,MessageBubble,RoomList,SendBchDialog,RelayStatusChip - New chat pages:
index,conversation,dm-info,group-info,profile,debug/push-notifications-reset - Rewards components:
AchievementCard,AchievementIcon,PointsBadge,HelpCard,ErrorCard,TransactionItem/TransactionList,PointsReceivedDialog,ReferralQrDialog,RedeemPointsDialog,RedeemHistoryDialog,JoinRewardsDialog - PromoContract — updated artifact, rewards swap contract integration, points withdrawal with fee handling, Watchtower UTXO fetching with
getUtxos()fallback - EngagementHub utilities — reorganized env vars, new API calls for LIFT conversion ratio, redemption history, max redeemable, swap contract details
- Dependencies — updated
nostr-tools,@wizardconnect/wallet,bitcoincash-oauth-client
Pull Requests Merged
- #692 — Improvements/rewards app
- #713 — NIP-17 Nostr private messaging chat
- #714 — Rewards app translations
- #715 — P2P Ramp improvements
- #716 — Miscellaneous UI/UX improvements
- #717 — Safe inset bottom for fixed-bottom class
- #718 — Token list UI improvements
- #719 — Token info card & view all card on home page
- #720 — Wallet UX: seed phrase, preferences, per-wallet chat isolation
- #721 — Various UI fixes and improvements
- #722 — Missing translation keys and user-rewards null crash
- #723 — Active status indicator with WebSocket + touch API
- #724 — Nostr chat activity improvements
- #725 — Server-authoritative room list
- #726 — Home page loading improvements
- #727 — Rewards referral code link & deep linking
- #728 — Rename PrivateGroup/PublicGroup terminology
- #729 — Join Rewards Program button
- #730 — Promo contract address subscription
- #731 — Apps UX improvements (escrow verification fix)
- #732 — Chat typing status indicator
- #733 — Fix chat profile horizontal overflow on Android
- #734 — Fix RFP page hang when navigating from rewards home for new users
v0.24.6
Release notes
Bug Fixes
Multisig
- UTXO type mismatch: Fixed false "Insufficient BCH balance" errors by converting
targetSatoshistobigintbefore passing toselectUtxos, and normalizing types throughout UTXO selection logic. - Wallet file download crash on mobile: Fixed app crash when exporting/downloading wallet files on native mobile platforms.
- Wallet watcher + WC session error handling: Improved robustness with early-return guard for falsy
walletId, try/catch aroundgetWalletWcSessionswith 404-specific handling, and proper fallbacks for missing coordination server data.
WalletConnect
- Message signing: Fixed "buffer length error" by replacing BCHjs signer with libauth; changed response format from hex to base64 to match
personal_signexpectations from dapps. Added address verification between client's expected signer and the session signer address. - Disconnect race condition: Prevented race condition in
@wizardconnect/walletduring disconnect.
Reservations / Lift Token
- Discount display: Extracted
getDiscountedPriceUsd/getOriginalPriceUsdinto shared utilities to fix inconsistent discount display between PurchasesTabPanel and PurchaseInfoDialog. - Reservation confirmation: Immediately populate wallet's public key on new reservations so confirmation succeeds on first try. Added comprehensive error handling around
confirmReservation(),initializeVestingContract(),convertDateToBlockHeight(),getAddressPath(), and libauth wallet init. - Oracle data: Added error handling around
getOracleData()and fixedwalletBalancevalue error with optional chaining. - Missing i18n keys: Added translation keys for
FailedToGetContractDataandFailedToGenerateAddress.
UI / Display
- BCH receipt amount: Grayed out trailing zeros in BCH amounts with all-zero decimals; adaptive font-size for receipt amounts.
- Token fiat prices: Refresh fiat prices for all displayed tokens, not just favorites.
QR Scanning
- Normalized UR QR comparisons: Fixed QR content comparison by normalizing UR strings before comparison.
Wallet Import / Mnemonic Storage
- Imported wallet showing zero balance: Fixed mnemonic retrieval failing for wallets imported from other wallets.
getMnemonic(index)now also tries the new hash-based storage scheme even before migration is flagged, so wallets stored via the restore flow (which use only hash-based keys) are immediately found instead of returningnull. - Old-scheme key overwrite: Fixed
storeMnemonicoverwriting wallet 0's old-scheme mnemonic when called with a wallet hash string during import. Old-scheme backup storage is now skipped when the correct index isn't known.
Localization
- German (de): Changed
Depositfrom "Anzahlung" to "Empfangen" to match normal wallet terminology. Added missingShare→ "Teilen".
v0.24.5
Release notes
- Block native keyboard when custom keyboard is active.
- Improved collectibles pagination with input mode and teleporting controls.
- Removed deprecated Connected Address from BEX; updated popup dimensions.
- Fixed marketplace checkout — save buyer's address, improved error debugging.
- Fixed WizardConnect to only broadcast when dApp sets the flag.
v0.24.4
Release Notes
Improvements
- Full 8-decimal precision for BCH amounts with grayed trailing zeros (40% opacity)
- New
v-bch-amountdirective applied across transaction details, lists, and asset displays - Fixed number formatting for Canada, Ireland, Singapore, India, South Africa, Bahrain, and Saint Helena
- Added language mappings for 40+ countries (Arabic, German, French, Spanish)
- Currency auto-updates when selecting a country
- Advance subscription buffer management: maintains 50-pair buffer to prevent subscription gaps
- Contract hydration support for pool withdrawals and smart contract transactions
Bug Fixes
- Fixed WizardConnect address derivation with correct libauth hash160 usage
- Removed cross-wallet timeout collision in WizardConnect buffer management
- Fixed Arabic translation: fixed a number of obvious mistranslations
- Corrected Taiwan locale to zh-TW (Traditional Chinese)
- Fixed spendable BCH calculation for Cauldron max tradeable amount
- Improved transaction fee accuracy with proper BCH input size calculation
Contributors
v0.24.3
Version 0.24.3 polishes transaction details, fixes a double playback issue on the success screen, improves seed phrase import validation, and updates WizardConnect for better connection stability.
Improvements
-
Transaction Details
- Added navigation between transaction detail and transaction summary pages for multi-asset transactions.
- Added a button on the transaction detail page to jump to the summary when a transaction involves multiple assets.
-
Seed Phrase Import
- Improved UX with per-word validation against the BIP39 wordlist.
- Invalid words are highlighted with a red border and background for immediate visual feedback.
- Debounced validation (400 ms) triggers when correcting invalid words.
-
WizardConnect
- Bumped
@wizardconnect/coreand@wizardconnect/walletto^0.2.0. - Fixes silent disconnects by adding ping/pong keepalive.
- Removed stale patches that no longer apply to the 0.2.x line.
- Bumped
Bug Fixes
- Transaction Details
- Fixed missing network fee when navigating directly from the send page (now fetches complete API data in the background).
- Prevented confetti and success audio from playing twice when the background fetch updates the transaction data.
Contributors
v0.24.2
Release Notes
Version 0.24.2 fixes a crash on GrapheneOS / Android 14+ when using the share functionality and adds order status polling for the E-Load service.
- Android: specify RECEIVER_NOT_EXPORTED in @capacitor/share for Android 14+
- E-Load: add order status polling and check status button
v0.24.1
Release Notes
Version 0.24.1 tightens integrations and polishes existing flows. Multisig wallets now sync with a coordination server, Cauldron auto-trading is available inside the send page, QR scanning and mobile UX are improved, and remaining SmartBCH references have been cleaned up.
Improvements
- Multisig: server-side wallet sync, encrypted proposal sharing, and signature import between cosigners
- Multisig: import wallets from server using encrypted descriptors
- Multisig: XPub QR code in wallet settings for easier onboarding
- Multisig: modernized proposal view with contextual actions and conflicted-proposal cleanup
- Cauldron: toggle to auto-satisfy token-denominated payments with trade summary before sending
- Cauldron: max button accounts for Cauldron-enabled recipients
- QR scanner: manual zoom and flashlight controls with QR-only filtering
- WizardConnect: parallel broadcast via watchtower and better duplicate-request suppression
- WalletConnect: restore pending session requests on app restart
- WalletConnect: option to include or exclude reserved funds when building transactions
- P2P Ramp: upload proof-of-payment immediately on file selection
- P2P Ramp: collapsible contract info, appeal details in standby, and automatic escrow retry
- Send: preserve exact BCH amount when fiat prices refresh
- Send: transaction summary for multi-asset transactions
- Receive: Generate New Address button with confirmation dialog
- Home: pending request badges and favorite-token prioritization
- iOS 16 build compatibility and safe-area fixes
- Skip success sound when device is silent
Bug Fixes
- Fix max recursion in send page forms
- Fix balance refresh skeleton delay and max amount shown in base units
- Fix custom keyboard visibility and layout issues on mobile
- Fix lag when navigating wallet settings or switching wallets
- Fix duplicate sign requests after WizardConnect reconnects
- Fix WizardConnect manager init on boot and token UTXO deserialization crash
- Fix WalletConnect session restoration on app load
- Fix Cauldron page state not resetting on wallet switch
- Fix sending NFTs with empty commitment
- Fix NFT transaction links pointing to wrong explorer
- Fix watchtower balance API endpoint and address whitespace handling
- Fix empty contract address causing escrow 404s
- Fix marketplace cart not removing zero-quantity items
- Fix wallet / PSBT downloads on native mobile using system sharing
- Fix proposal QR code sizing on mobile
Technical Changes
- Removed all SmartBCH support
- Upgraded
@wizardconnectto 0.1.13 / 0.1.10 - Added Capacitor file sharing and ECIES cipher packages
- Patched barcode-scanner with TRY_HARDER and setZoom
This release contains contributions from the Paytaca team and community members including @joemarct, @hantyrram, @khirvy019, @kittleik, @MerlinB, @mr-zwets, @LukeHeimen, and @SeanNikki123.
v0.24.0
Release Notes
New Features
E-Load Service App (Philippines)
- New App: Mobile/data loads, cable subscriptions, and game pins for Philippine users
- Bitcoin Cash OAuth: Secure authentication integrated with BCH wallets
- Promo Search: Find and filter load promos with real-time pricing
- Order History: Track and manage load purchases with transaction details
- Swipe-to-Confirm: Secure payment flow with confirmation gesture
- Country Selector: Automatic service availability based on location
Address Book
- Contact Management: Save frequently used addresses with names and metadata
- QR Code Support: Scan and share addresses via QR codes
- Address Types: Support for BCH, SLP, and CashToken addresses per contact
- Alphabetical Indexing: Quick navigation through contact list
- Favorites: Mark frequently used contacts as favorites
- Search & Filter: Find contacts quickly by name or address
- API Integration: Cloud-synced address book with wallet-hash authentication
WizardConnect
- New Protocol: Alternative dApp connection protocol alongside WalletConnect
- Wallet-Specific Sessions: Isolate connections per wallet
- Unified UI: Consistent interface with WalletConnect styling
- QR Scanner: Built-in scanning for connection establishment
App Lock & Security
- Per-Wallet Lock: Individual lock settings for each wallet
- Glassmorphic Lock Screen: Modern, secure lock interface
- Biometric Support: Fingerprint/Face ID authentication
- Dynamic Screenshot Control: Security-based screenshot restrictions
- Immediate Lock: Quick lock on app resume from background
- PIN Migration: Legacy PIN key handling improvements
Wallet Management Enhancements
- Wallet Names: Assign custom names during creation and management
- Wallet Reordering: Drag-and-drop wallet organization
- Per-Wallet Settings: Individual settings for each wallet
- Multi-wallet Storage: Improved storage system with backward compatibility
- Delete All Wallets: Bulk wallet deletion option in multisig
- Backup Reminders: Per-wallet backup reminder system
Transaction Improvements
- Send Success Page: Dedicated success screen after transactions
- Transaction Detail Page: Full-page transaction details instead of dialog
- Quick Actions: Bundle Save Receipt, Add Memo, and Add to Address Book
- Receipt Improvements: Include memo and network fee in receipt images
- Address Book Integration: Quick add recipient from transaction detail
- Celebration Effects: Visual feedback on successful transactions
Subscription System (Paytaca Plus)
- Tier-Based Limits: Different feature limits based on subscription level
- LIFT Token Integration: Subscription management via LIFT token
- Aggregated Balance: LIFT balance aggregated across all wallets
- Subscription Details Page: View and manage subscription status
Cauldron DEX Enhancements
- Tab Navigation: Swap between Swap and Pools via tabs instead of dropdown
- Riften Indexer: Switched to new indexer and rostrum for better performance
- Trade Verification: Improved trade result handling and verification
- Balance Display: Show balances in add-pool interface
- Fee Display: Include platform and network fees in trade summaries
WalletConnect V2 Improvements
- Connected Apps UI: Redesigned connected applications interface
- Per-Wallet Sessions: Sessions isolated per wallet
- Address Dialog: View connected address with QR code and balance
- Dynamic Theming: QR scanner with theme-aware styling
- Session Management: Improved connection reset and management
Improvements
UI/UX
- Home Page: Latest Transactions section added
- Onboarding Flow: Reworked wallet creation and restoration experience
- Theme Consistency: Improved dark/light mode support across all apps
- Asset Cards: Enhanced UI with long-press support and glassmorphic theme
- Seed Phrase Display: Numbered badges for clearer word ordering
- Navigation: Better back button handling and dynamic navigation
- Mobile Optimization: Safe area handling for iOS/Android notch and footer
Token Management
- Favorites System: API-based token ordering with favorite limits
- Asset Selection: Improved token selection pages with search
- Balance Modes: Toggle between BCH and fiat display modes
- Token Metadata: Better handling and caching of token information
P2P Ramp
- Price Deviation Warnings: Alert when ad price deviates from market by >= 5%
- Ad Creation UX: Improved currency limits handling
- Appeal System: Better chat and proof handling during disputes
- Authentication: Improved auth token handling and wallet-specific sessions
Marketplace
- Order Management: Restored orders list with sticky bottom behavior
- Storefront Display: Banner instead of badge for closed stores
- Search & Filter: Improved product search and active orders UI
- Rider Assignment: Allow assignment with delivery address only during checkout
Performance & Stability
- Token Fetching: Optimized balance loading and API calls
- Transaction History: Improved caching and loading states
- UTXO Management: Better consolidation and address scanning
- Error Handling: Comprehensive error boundaries and user feedback
Bug Fixes
Critical Security
- Fixed legacy PIN key deletion when deleting wallet
- Prevented stale WalletConnect sessions after wallet switch
- Fixed E2E encryption for transaction memos and marketplace chat
- Resolved auth token infinite loops in P2P Ramp
Send/Receive
- Fixed NFT send balance validation false positives
- Resolved BIP21 URI parsing with price_id preservation
- Fixed network fee calculation and display
- Corrected consolidation transaction detection
- Fixed receive notification guard for mobile
Wallet & Accounts
- Fixed wallet switch navigation loops from push notifications
- Resolved multisig wallet creation and import issues
- Fixed wallet hash access in various components
- Corrected mnemonic deletion during wallet cleanup
Marketplace & P2P
- Fixed ad update failures in P2P Ramp
- Resolved marketplace order status display issues
- Fixed runtime errors in non-existent marketplace orders
- Corrected appeal endpoint authentication
Display & Localization
- Fixed Arabic locale number formatting
- Resolved Chinese translations for BCH and balance
- Fixed long text handling in various components
- Corrected dark mode visibility issues
Audio & Notifications
- Fixed audio focus interrupting background music
- Resolved push notification handling for wallet switching
- Fixed notification settings display and clarity
Technical Changes
Dependencies
- Updated
@reown/walletkitto v1.5.1 - Updated WalletConnect packages to v2.22.4
- Added
@wizardconnect/coreand@wizardconnect/wallet - Updated
@cashlab/cauldronto v1.0.2 - Updated
bitcoincash-oauth-clientto v0.2.2 - Updated
quasarto v2.18.1
Infrastructure
- Migrated to Riften indexer for Cauldron DEX
- Implemented wallet-hash-based mnemonic storage
- Added comprehensive test coverage with Mocha
- Improved CI/CD workflow with dependency installation
APIs & Services
- Address Book API integration with wallet-hash authentication
- E-Load Service API with OAuth and retry logic
- Watchtower integration improvements
- Price feed and market data optimization
Known Issues
- E-Load Service is only available in the Philippines region
- Some beta features (Multisig, StableHedge) have limited availability
- P2P Ramp, Marketplace, Crypto Swap, and StableHedge are disabled on chipnet
Contributors
Thank you to all contributors who made this release possible:
- Development Team: Paytaca Core Contributors
- Community: Bug reporters and feature requesters
- Special thanks: @dagurval for WizardConnect contributions
v0.23.2
Release notes
Improvements
- Improved wallet creation/restore flow with wallet name step, numbered seed phrase badges, and validation feedback
- LIFT token balance now aggregates across all wallets for subscription tier display
- Cauldron DEX navigation updated to tab selector for Swap/Pools and improved trade handling
- Added memo to transaction receipt image and visible MAX button in send/swap forms
Bug Fixes
- Fixed BCH balance display issues and used Latin numerals for Arabic locales
- Fixed footer positioning on Android devices and navigation for Cash In/Swap apps
- Corrected Chinese translations and removed redundant UI elements
v0.23.1
Release notes
- Receive QR: add price_id and expires (5 min) params for fiat amounts
- WalletConnect: sessions now isolated per wallet
- Cauldron DEX: added max button, switched to Riften indexer and rostrum
- Send: show network fee on success screen with proper fiat formatting
- Send: redirect to transaction detail after successful send
- LIFT Token: improved swap and vesting contract flows
- Various fixes: send race conditions, navigation loops, stale wallet sessions, UI layout improvements