Home / Emurgo / yoroi
Nov 16, 7-8 PM (0)
Nov 16, 8-9 PM (0)
Nov 16, 9-10 PM (0)
Nov 16, 10-11 PM (0)
Nov 16, 11-12 AM (0)
Nov 17, 12-1 AM (0)
Nov 17, 1-2 AM (0)
Nov 17, 2-3 AM (0)
Nov 17, 3-4 AM (0)
Nov 17, 4-5 AM (0)
Nov 17, 5-6 AM (0)
Nov 17, 6-7 AM (0)
Nov 17, 7-8 AM (0)
Nov 17, 8-9 AM (1)
Nov 17, 9-10 AM (0)
Nov 17, 10-11 AM (0)
Nov 17, 11-12 PM (0)
Nov 17, 12-1 PM (0)
Nov 17, 1-2 PM (0)
Nov 17, 2-3 PM (0)
Nov 17, 3-4 PM (0)
Nov 17, 4-5 PM (6)
Nov 17, 5-6 PM (0)
Nov 17, 6-7 PM (0)
Nov 17, 7-8 PM (0)
Nov 17, 8-9 PM (0)
Nov 17, 9-10 PM (0)
Nov 17, 10-11 PM (1)
Nov 17, 11-12 AM (0)
Nov 18, 12-1 AM (2)
Nov 18, 1-2 AM (0)
Nov 18, 2-3 AM (0)
Nov 18, 3-4 AM (0)
Nov 18, 4-5 AM (0)
Nov 18, 5-6 AM (0)
Nov 18, 6-7 AM (0)
Nov 18, 7-8 AM (0)
Nov 18, 8-9 AM (1)
Nov 18, 9-10 AM (1)
Nov 18, 10-11 AM (1)
Nov 18, 11-12 PM (2)
Nov 18, 12-1 PM (0)
Nov 18, 1-2 PM (0)
Nov 18, 2-3 PM (0)
Nov 18, 3-4 PM (0)
Nov 18, 4-5 PM (3)
Nov 18, 5-6 PM (0)
Nov 18, 6-7 PM (0)
Nov 18, 7-8 PM (1)
Nov 18, 8-9 PM (0)
Nov 18, 9-10 PM (0)
Nov 18, 10-11 PM (0)
Nov 18, 11-12 AM (0)
Nov 19, 12-1 AM (0)
Nov 19, 1-2 AM (0)
Nov 19, 2-3 AM (0)
Nov 19, 3-4 AM (0)
Nov 19, 4-5 AM (0)
Nov 19, 5-6 AM (1)
Nov 19, 6-7 AM (0)
Nov 19, 7-8 AM (0)
Nov 19, 8-9 AM (1)
Nov 19, 9-10 AM (0)
Nov 19, 10-11 AM (4)
Nov 19, 11-12 PM (1)
Nov 19, 12-1 PM (1)
Nov 19, 1-2 PM (0)
Nov 19, 2-3 PM (1)
Nov 19, 3-4 PM (0)
Nov 19, 4-5 PM (0)
Nov 19, 5-6 PM (0)
Nov 19, 6-7 PM (0)
Nov 19, 7-8 PM (0)
Nov 19, 8-9 PM (0)
Nov 19, 9-10 PM (0)
Nov 19, 10-11 PM (1)
Nov 19, 11-12 AM (0)
Nov 20, 12-1 AM (0)
Nov 20, 1-2 AM (0)
Nov 20, 2-3 AM (0)
Nov 20, 3-4 AM (0)
Nov 20, 4-5 AM (0)
Nov 20, 5-6 AM (0)
Nov 20, 6-7 AM (0)
Nov 20, 7-8 AM (0)
Nov 20, 8-9 AM (3)
Nov 20, 9-10 AM (5)
Nov 20, 10-11 AM (7)
Nov 20, 11-12 PM (12)
Nov 20, 12-1 PM (0)
Nov 20, 1-2 PM (1)
Nov 20, 2-3 PM (5)
Nov 20, 3-4 PM (0)
Nov 20, 4-5 PM (0)
Nov 20, 5-6 PM (0)
Nov 20, 6-7 PM (0)
Nov 20, 7-8 PM (0)
Nov 20, 8-9 PM (3)
Nov 20, 9-10 PM (1)
Nov 20, 10-11 PM (0)
Nov 20, 11-12 AM (0)
Nov 21, 12-1 AM (0)
Nov 21, 1-2 AM (0)
Nov 21, 2-3 AM (0)
Nov 21, 3-4 AM (0)
Nov 21, 4-5 AM (0)
Nov 21, 5-6 AM (0)
Nov 21, 6-7 AM (0)
Nov 21, 7-8 AM (1)
Nov 21, 8-9 AM (2)
Nov 21, 9-10 AM (1)
Nov 21, 10-11 AM (0)
Nov 21, 11-12 PM (0)
Nov 21, 12-1 PM (0)
Nov 21, 1-2 PM (2)
Nov 21, 2-3 PM (0)
Nov 21, 3-4 PM (0)
Nov 21, 4-5 PM (0)
Nov 21, 5-6 PM (0)
Nov 21, 6-7 PM (0)
Nov 21, 7-8 PM (0)
Nov 21, 8-9 PM (2)
Nov 21, 9-10 PM (0)
Nov 21, 10-11 PM (0)
Nov 21, 11-12 AM (0)
Nov 22, 12-1 AM (0)
Nov 22, 1-2 AM (0)
Nov 22, 2-3 AM (0)
Nov 22, 3-4 AM (0)
Nov 22, 4-5 AM (0)
Nov 22, 5-6 AM (0)
Nov 22, 6-7 AM (0)
Nov 22, 7-8 AM (0)
Nov 22, 8-9 AM (0)
Nov 22, 9-10 AM (0)
Nov 22, 10-11 AM (0)
Nov 22, 11-12 PM (1)
Nov 22, 12-1 PM (11)
Nov 22, 1-2 PM (13)
Nov 22, 2-3 PM (3)
Nov 22, 3-4 PM (1)
Nov 22, 4-5 PM (0)
Nov 22, 5-6 PM (3)
Nov 22, 6-7 PM (0)
Nov 22, 7-8 PM (1)
Nov 22, 8-9 PM (1)
Nov 22, 9-10 PM (0)
Nov 22, 10-11 PM (0)
Nov 22, 11-12 AM (0)
Nov 23, 12-1 AM (0)
Nov 23, 1-2 AM (0)
Nov 23, 2-3 AM (0)
Nov 23, 3-4 AM (0)
Nov 23, 4-5 AM (0)
Nov 23, 5-6 AM (0)
Nov 23, 6-7 AM (0)
Nov 23, 7-8 AM (0)
Nov 23, 8-9 AM (0)
Nov 23, 9-10 AM (0)
Nov 23, 10-11 AM (0)
Nov 23, 11-12 PM (0)
Nov 23, 12-1 PM (0)
Nov 23, 1-2 PM (0)
Nov 23, 2-3 PM (0)
Nov 23, 3-4 PM (0)
Nov 23, 4-5 PM (0)
Nov 23, 5-6 PM (0)
Nov 23, 6-7 PM (0)
Nov 23, 7-8 PM (0)
108 commits this week Nov 16, 2025 - Nov 23, 2025
feat: add separate bundle IDs for development builds
- Create app.config.js to dynamically set different bundle IDs for dev builds
- Development builds use com.emurgo.yoroi.dev (iOS) and com.emurgo.dev (Android)
- App name changes to 'Yoroi Dev' for development builds
- Allows development and production apps to coexist on the same device
- Update eas.json to set EXPO_PUBLIC_BUILD_VARIANT=DEV for development profile
refactor(api): move types and utilities to packages, fix imports and lint
- Move API-related types from src/wallets/types/other.ts to packages/api/cardano/api-types.ts
- Move transaction types (TransactionStatus, WalletTransaction, etc.) to packages/types/wallet/transactions.ts
- Move wallet registration utilities to packages/api/cardano/utils/wallet-registration.ts
- Create error classes in packages/api/cardano/errors.ts (ApiHistoryError, SubmitTxInsufficientCollateralError)
- Create fetch utility in packages/api/cardano/utils/fetch.ts using @yoroi/common
- Update all imports across codebase to use new package locations
- Remove obsolete src/wallets/cardano/api/fetch.ts
- Fix all lint and type errors:
  - Remove all 'any' types (replaced with proper types)
  - Remove all 'require()' statements (replaced with ES6 imports)
  - Remove all '@ts-ignore' comments (added proper type definitions)
  - Fix import paths (use relative paths correctly)
- Export types from @yoroi/api and @yoroi/types for convenience
Unify error and success screens with ResultScreen component
- Create unified ResultScreen component to replace disparate error/success screens
- Add ResultScreenContext for default configurations per operation context
- Add useResultNavigation hook for consistent navigation to result screens
- Migrate all features (Send, Swap, Governance, Claim, Exchange, Dashboard) to use unified system
- Remove old wrapper screens (FailedTxScreen, SubmittedTxScreen) from all features
- Update navigation types to remove deprecated routes
- Add utxo-consolidation to OperationContext for proper type safety
- All screens now use consistent UI patterns with customizable messages and actions
refactor: consolidate duplicate utility functions and fix dangerous calculations
- Replace truncateWithEllipsis and shortenString with truncateString from @yoroi/common
- Fix normalizeTokenAmount to use atomicToDecimal instead of Math.pow(10, decimals)
- Fix formatAda to use atomicToDecimal for consistency
- All string truncation now uses common utility from @yoroi/common
- All base unit to decimal conversions now use atomicToDecimal to avoid precision errors
test(staking): add tests for config files and context providers
- Add governance/config.test.ts with tests for GOVERNANCE_ENDPOINTS and constants
- Add catalyst/config.test.ts with tests for catalystConfig
- Add governance/translators/react/context.test.tsx with tests for GovernanceProvider
- Add catalyst/translators/context.test.tsx with tests for CatalystProvider

All 132 tests passing
test(staking): add tests for pool-info-api utility functions
- Add pool-info-api.test.ts with tests for:
  - getMaybeNewEntriesByPool with various scenarios:
    - Pool found and enabled
    - Pool found but disabled
    - Pool not found
    - Missing new entries
    - Multiple groups
    - Empty/missing old entries
  - normalisePoolIdentifierOrKey:
    - Bech32 pool ID normalization
    - Hex hash normalization
    - Different wasm scopes
  - Constants validation

All 12 tests passing
test(staking): add comprehensive tests for pools API
- Add pool-transition-api.test.ts with tests for poolTransitionGetInfo
- Add api-maker.test.ts with comprehensive tests for poolInfoApiMaker:
  - Basic instantiation with default and custom request
  - getPool, getSingleExplorerPoolInfo, getManyExplorerPoolInfo
  - getSingleChainPoolInfo, getManyChainPoolInfo (with batching)
  - getSingleFullPoolInfo, getManyFullPoolInfo
  - getPoolTransitionInfoPublic
  - getTransition with various edge cases:
    - Null transition data, null suggestions
    - Null current/suggested pools
    - Default and invalid saturation thresholds
    - First unsaturated pool selection
    - Last pool when all saturated
    - Skipping null pools

All 38 tests passing
test(dapp-connector): add comprehensive tests for resolver and async-storage
- Add resolver.test.ts with tests for resolverHandleEvent edge cases:
  - Early returns for invalid eventData, JSON parsing failures
  - Source validation, id/method type checks
  - log_message event handling without sending message
  - Error handling and message sending
- Add async-storage.test.ts with tests for connectionStorageMaker:
  - Read, save, remove operations
  - Duplicate connection handling
  - Normalization of connections with missing network
  - Error handling for missing required fields
- Add tests to dapp-connector.test.ts for missing branches:
  - getCollateral with pending collateral
  - getCollateral with low balance
  - getCollateral returning UTXOs
  - getExtensions filtering CIP95 when not supported

Coverage improved: 96.35% → 97.16% statements, 100% branches, 90.47% functions
All 93 tests passing
test(links): add comprehensive tests for cardano link module
- Add helpers.test.ts with tests for address classification and validation
- Expand module.test.ts with tests for all authority types:
  - Browse authority (with/without app_path)
  - Transaction authority (with hash and fragments)
  - Address authority
  - Block authority (with hash and height)
  - Wallet, pay, payment, stake, and connect authorities
  - Query params with arrays
- Fix height validator to accept numbers (converted during parsing)
- Fix TypeScript errors by adding null checks for parse() results
- Fix type errors in params.test.ts with proper type assertions

All 177 tests passing, lint clean, types fixed
test: add coverage for swap package muesliswap adapters
- Add tests for setProviders method
- Add tests for tokens.response edge cases (null decimals, unverified tokens, primary token)
- Add tests for mapProtocolToOrderContract edge cases
- Add tests for limitOptions() method including error cases
- Add tests for estimate() and create() with wantedPrice
- Fix missing imports (isRight, isNonNullable, Portfolio, TokensResponse, Swap)
- Fix mock setup for limitOptions test
test: add coverage for remaining branch gaps in nearly complete packages
- Add test for empty asyncIterators array in promises.ts
- Add tests for callback and delay changes in useDebouncedCallback
- Add test for delay changes in useDebouncedValue
- Add test for absolute with negative value in to-bigint
- Add tests for missing branches in parse-number-from-text (formattedValue, undefined int/dec)
- Add tests for unexpected asset amount types in utxo-data
- Fix TypeScript errors in async-behavior.test.ts and promises.test.ts
test: add more coverage for remaining gaps
- Add useObservableValue test for getSnapshot being called multiple times
- Add to-bigint test for negative value when absolute is false
- Add getHandleApiError test for returning error as-is
- Add async-behavior.maker tests for error.unknown and custom error handlers
- Add wrapper test for actually rendering children

All 47 tests passing