Conversation
* update etherscan-proxy to v2 * add distinct token url paths
* fix(trezor,activation): add PrivateKeyPolicy to AuthOptions and beyond * refactor(types): replace `.from` with `.of` of has type annotations Co-authored-by: Charl (Nitride) <77973576+CharlVS@users.noreply.github.com> --------- Co-authored-by: Charl (Nitride) <77973576+CharlVS@users.noreply.github.com>
Co-authored-by: DeckerSU <deckersu@protonmail.com>
* feat: add custom seed nodes - Add custom seed nodes to accommodate breaking KDF changes. - Upgrade KDF for latest seed node changes. * feat: add configurable seed node system with remote fetching Implement a comprehensive seed node configuration system that fetches seed nodes from the Komodo Platform repository with automatic fallback to hardcoded defaults. ### New Features: - Add SeedNode and SeedNodeContact types for type-safe configuration - Implement SeedNodeUpdater for fetching remote seed nodes - Add SeedNodeService with automatic fallback mechanism - Add SeedNodeValidator with enhanced P2P configuration validation - Export seed node service from komodo_defi_framework ### Configuration Updates: - Update build_config.json to include seed-nodes.json mapping - Add seed_nodes.json to gitignore for dynamic assets - Change API branch from 'dev' to 'alt-main' - Update all platform binary checksums and commit hashes ### Framework Integration: - Add automatic seed node fetching to KdfStartupConfig - Integrate SeedNodeService into auth service for wallet creation - Fix trading protocol parameter name (trading_proto_v2 -> use_trading_proto_v2) - Improve boolean validation in SeedNodeValidator ### Documentation: - Add comprehensive SEED_NODES_GUIDE.md with usage examples - Include example code for seed node functionality - Add complete test coverage for new types and services ### Dependencies: - Add komodo_coin_updates dependency to komodo_defi_framework - Export seed node types from komodo_defi_types - Update pubspec.lock files across packages The seed node system ensures applications always have access to current seed nodes while maintaining backwards compatibility through fallback mechanisms. This addresses the upcoming requirement in v2.5.0-beta where seed nodes will be mandatory unless P2P is disabled. Breaking changes: None - all changes are additive with sensible defaults. * chore: PR cleanup
* fix(kdf): enable p2p in noAuth mode * refactor(kdf): use SeedNodeService to get seednodes for noAuth
If the KDF binaries were already renamed from `mm2` to `kdf`—i.e., if the target folder already contained `kdf.exe` or `libkdf.a` after the last successful rename from `*mm2*`—the warning `KDF not found at` would still appear, which was a bit confusing. Now, if the folder already contains the renamed binary, the warning no longer appears.
* Use AssetLogo in example and tweak imports * style: match the styling with the existing komodo-wallet implementation
Remove ETH coins config transformer which was temporarily required because of a breaking ETH change in KDF.
* fix(trezor,activation): add PrivateKeyPolicy to AuthOptions and beyond * feat(rpc): add trezor init task RPCs * feat(sdk): trezor manager for init and user input requests * feat(rpc): add task-based address generation RPCs * feat(rpc): add trezor pubkey strategy with task-based address creation * WIP: trezor login option in SDK example * refactor(example): trezor auth mixin and remove previous trezor ui code * fix(trezor): device info parsing and example auth state transitions * refactor(trezor): add auth listener & implement coderabbitai suggestions * fix(example): auth restoration and listener order * fix(trezor): workaround for trezor-specifc scan issue funded addresses not being scanned for fresh trezor logins (maybe not believed to be a "fresh" wallet)? * fix(rpc): get new address task status response parsing * refactor(trezor): move authentication and initialization logic to SDK (#81) This is a concept solution that moves the Trezor initialization and authentication flow from the example BLoC to the SDK KomodoDefiAuth class & package. Two issues that make integrating the trezor login flow with the current SDK difficult: - Trezor login is a multi-step process that uses task-based RPCs, so Stream-based versions of the signin and register methods are required. - Async user inputs (i.e. passphrase or pin) need to be sent to trezor as part of login process. Solution implemented in this PR: - Add stream-based signInStream and registerStream functions to KomodoDefiAuth with a new Authentication state/status class. - Alternative (breaking): modify the existing functions to return Stream - Add input methods for passphrase and pin to KomodoDefiAuth - Alternative 1: Ask user for passphrase before starting trezor sign-in and pass it through the existing wallet password field. - Alternative 2: SDK consumers use device-specific managers (e.g. sdk.trezor.sendPassphrase). Commits: * Use TrezorWalletManager in example bloc * refactor(trezor,auth): move trezor auth into komodo_defi_local_auth * refactor: implement coderabbitai suggestions * refactor(trezor): migrate auth options and state models to freezed (#90) * migrate models to freezed * fix(types): revert changes to seed_node and auth_options
* fix(rpc,activation): breaking EVM private key policy enum change * fix(activation-params): use pascal case for to and from json * test(example): add asset activation integration test * test(example): run in zone to catch microtask and uncaught exceptions * fix(auth): merge issues and update privkeypolicy comparisons * docs: expand doc comments and remove runzonedguarded
latest staging with hotfix for trezor coin activation
* feat(auth): add wallet deletion * feat(example): add wallet deletion * add: wallet deletion for Trezor wallets * chore: re-generate melos * refactor: fix flaw in response error parsing Fix flaw in response error parsing where the custom error parser function would never be called because of the inheritence structure. * feat(example): move delete wallet action (#104)
Disabled melos generation due to circular dependency issues caused by komodo_defi_rpc_methods and komodo_defi_types packages. This will be revisited in the. The app should already have the necessary generated files committed to the repository. If this is not the case, we have bigger issues.
|
Note Other AI code review bot(s) detectedCodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review. Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the You can disable this status message by setting the ✨ Finishing Touches🧪 Generate unit tests
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. CodeRabbit Commands (Invoked using PR/Issue comments)Type Other keywords and placeholders
CodeRabbit Configuration File (
|
* feat(ui): add hero support for asset icons * fix(ui): Hero Tag Ignored in AssetLogo Placeholder * fix: Move Hero widget outside Opacity widget for proper animation continuity - Fix AssetLogo.placeholder to pass heroTag parameter to _AssetLogoPlaceholder - Move Hero widget outside Opacity widget in AssetIcon to prevent animation interference - Ensures Hero animations work correctly for both asset icons and placeholder logos - Maintains visual continuity by placing Hero widgets as outermost components
…ban_pubkeys.dart Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* feat(pubkeys): add unbanning support * Update packages/komodo_defi_rpc_methods/lib/src/rpc_methods/wallet/unban_pubkeys.dart Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * fix(types): export missing RPC types --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
git-subtree-dir: packages/dragon_logs git-subtree-split: 399ef1d17034029155b63b6bc1d9ab0a5a0fbb04
feat: migrate dragon_logs_flutter to monorepo packages
* feat(hd): integrate hd privkey export * chore: roll KDF * chore: enable tendermint hd support * refactor(rpc): Misc rpc class formats/fixes * feat: private keys + fixed Tendermint * refactor(sdk): implement co-ordinated activation manager * fix: invalid path error Possible fix for paths containing special characters on Windows. * fix: remove unnecessary activation logging * chore(pr): apply formatting and fixes to PR Apply Dart formatting and fixes to all files modified in this PR. * feat(example): integrate private key export to example app * chore: roll KDF * chore: roll KDF * feat: fee estimation * fix(build): make re-build failure stand out * chore: roll KDF Roll KDF for optimisation for key export time. * feat(tx): further progress on fee/priority integration * chore: roll KDF fro `v2.6.1` TODO: Change from CI builds to GitHub release when artefacts are available. * fix(api): disable fee/priority features Disable fee/priority features because they are not included in the pending KDF release. They should be included in the following release (likely `2.7.0`) * fix: Temporarily disable fee/priority features Temporarily disable fee/priority features until the feature is available in the API (KDF) * feat: add memo support protocol value * fix: resolve incorrect `unban_pubkeys` parsing * fix: resolve regression in legacy withdrawal manager * feat(security): Include failed activations in privkey export * docs(build): expand asset build failure explination * fix: tweak private key type json to match class properties * fix(RPC): fix new address generation types * chore: bump version tags * fix: apply Claude PR review suggestions
…ository first before cex repository (#167) * fix(market-data-manager): default to KomodoPriceRepository Binance CexRepository supports a limited number of symbols and no longer lists KMD price history after the delisting * refactor(market-data-manager): deduplicate and clarify intent * refactor(review): remove zero check and add log statements also simplify the priceIfKnown function
* fix(types): comprehensive bip39 validation * fix(market-data-price): try fetch current price from komodo price repository first before cex repository (#167) * fix(market-data-manager): default to KomodoPriceRepository Binance CexRepository supports a limited number of symbols and no longer lists KMD price history after the delisting * refactor(market-data-manager): deduplicate and clarify intent * refactor(review): remove zero check and add log statements also simplify the priceIfKnown function * chore: switch KDF to `dev` Switch KDF to `dev` to allow usage of unreleased changes (particularly related to fees/priorities) * feat: add Flutter Web WASM support with OPFS interop extensions This commit implements comprehensive Flutter Web WASM support by: - Adding opfs_interop.dart with FileSystemDirectoryHandle extensions for values(), keys(), and entries() methods - Implementing JSAsyncIterator type definitions for proper JavaScript interop - Creating WebLogStorageWasm implementation compatible with both JS and WASM targets - Consolidating platform implementations to use unified WASM-compatible storage - Removing redundant WebLogStorage in favor of cross-compatible implementation - Updating platform configuration files for seamless WASM integration The implementation provides backwards compatibility with JavaScript compilation while enabling full WASM support through browser File System APIs that work consistently across both compilation targets. BREAKING CHANGE: WebLogStorage class has been removed in favor of WebLogStorageWasm * Update packages/dragon_logs/lib/src/storage/opfs_interop.dart Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * docs: update repo url * docs: remove repo archive notice * feat(example): integrate dragon_logs (#177) * fix: dart wasm type errors * chore: revert skipped build steps * fix: add GitHub token authentication to prevent API rate limiting Add GitHub authentication token support across all components that make GitHub API requests to resolve rate limiting issues during builds. Changes: - feat(coin-updates): add githubToken parameter to CoinConfigProvider - feat(coin-updates): support GitHub auth in CoinConfigRepository.withDefaults - fix(build-transformer): add debug logging for GitHub API authentication - fix(wallet-cli): auto-use GITHUB_API_PUBLIC_READONLY_TOKEN env variable - style(build-transformer): fix lint issues with cascade operations The CoinConfigProvider was making unauthenticated GitHub API requests, contributing to rate limit errors. All GitHub API clients now properly use the GITHUB_API_PUBLIC_READONLY_TOKEN environment variable when available, increasing rate limits from 60 to 5,000 requests per hour. Fixes: Rate limit exceeded errors during build process * chore(kdf): roll KDF to latest `dev` Roll KDF to the latest `dev` to ensure we are using the latest revision of all unreleased features. * fix: apply cursor fixes --------- Co-authored-by: Francois <takenagain@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…tch (#178) * feat(pubkey-manager): add pubkey watch function similar to balance watch * test(pubkey-manager): add basic unit tests * fix(pubkey-manager): restart watchers on auth change like balancemanager * feat(example): use new watchPubkeys function when fetching pubkeys * fix(pubkey-manager): remove duplicate result emission * revert: emit duplicate states for new subscribers to get initial state * refactor(pubkey-manager): improve dispose error tolerance and rename * refactor(balance-manager): improve dispose error tolerance and rename
* Add trading, Lightning, and orderbook RPC method namespaces * Refactor order status classes to use JsonMap and type-safe parsing * Refactor order status and related classes with type-safe parsing * Add new common structures for trading, orderbook, and Lightning * chore: re-generate indexes --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com>
…ing (#185) * fix(wasm-ops): improve JS call error handling on startup * refactor(review): add doc comments and make type cast explicit * refactor(review): improve error messages and add logging
* fix(market-data-manager): default to KomodoPriceRepository Binance CexRepository supports a limited number of symbols and no longer lists KMD price history after the delisting * refactor(market-data): move ticker resolution to the repository layer allows for API-specific tickers to be used on a per-repository basis * feat(example): show market data in example asset list * feat(market-data): add coin supported check to selection strategy * Implement getCoinFiatPrices with batch processing and error handling Co-authored-by: francoisvw <francoisvw@protonmail.com> * refactor(market-data): standardise retry mechanism * feat(example): add sparkline chart to asset row item * refactor(example): change market info cubit to bloc to manage streaming automatically via emit.forEach rather than manually disposing background streams. fixes the emit after close bug * fix(asset-market-info): move bloc provider into the asset row item * refactor(id-resolution): improve typing of previously nullable functions * feat(sparkline): add multi-provider support and logging * test: fix market data unit tests (#174) * feat(cex-market-data): align and update interfaces use Decimal, use standard interface, add missing 24hr price change functionality * refactor(market-data): add quote currency union type * fix(komodo-prices): change json key and add in-memory caching * feat(market-data): add repository fallback logic and tests * feat(market-data): add stablecoin to fiat mapping and fix tests * refactor(review): update comments and fix potential issues * refactor: remove string ticker-based coin pair model in favour of quote * fix(sparkline): prevent requests to unsupported coins and add fallback * test(cex-market-data): improve coverage and refactor out utilities * refactor(review): improve sparkline and repository error visibilty * feat(asset-id): add asset cache key to standardize asset-based caching * test: extract helper functions and remove unnecessary tests --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com>
* Squashed 'packages/dragon_charts/' content from commit 3b667aab git-subtree-dir: packages/dragon_charts git-subtree-split: 3b667aab45cb1353e902c6b314c0e4ff19fb9022 * Add edge case handling and tests for SparklineChart Co-authored-by: charl <charl@vanstaden.info> --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com>
…ted (#126) * feat(auth): add polling stream for Trezor connection (#125) * Implement connection status stream * fix(types): use abstract classes for freezed models * feat(trezor,auth): sign user out if device is disconnected * fix(trezor): use snake case for keys and pascal case for values * fix(trezor): improve connection status stream error handling * refactor(trezor): improve Trezor connection monitoring with timeout and error handling (#166) Co-authored-by: Cursor Agent <cursoragent@cursor.com> * refactor(review): address PR nitpicks * refactor(review): add convenience methods and constructors * test: add unit tests for the new poll utility * refactor(trezor): add logging statements to auth mixin * test(trezor): add unit test cases for newly added interfaces * refactor(trezor): await close and stop functions and yield error * test(trezor): expand connection error handling test * fix(trezor): mitigate Trezor pin/passphrase exposure with converter freezed by default adds all fields to toString overrides, which could result in user pin/passphrases being printed to logs * fix(trezor): assume initial state as available and extract local variable * chore: rename dragon charts folder Rename the dragon charts folder to be consistent with the package name. NO FUNCTIONAL CHANGES * fix: fix broken package reference --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: CharlVS <77973576+CharlVS@users.noreply.github.com>
* Add SwapManager with orderbook and swap trading capabilities Co-authored-by: charl <charl@vanstaden.info> * chore: apply formatting * Resolve merge: both-added identical files in rpc_methods (order_status, orderbook namespace, set_order) and sync types * feat: add missing trading RPCs * fix(rpc): fix trading RPCs to match Postman collection * docs: add comprehensive dartdoc to public APIs in swap manager and new RPC methods (lightning, orderbook, trading); reference KDF API semantics * style: insert empty lines between documented class fields for readability * refactor(active_swaps): declarative toJson map literal with inline conditionals * refactor(rpc_methods): use declarative toJson() across trading, orderbook, lightning requests * chore(rpc): format trading RPCs * refactor(sdk): change sdk swap manager to higher-level types * refactor(rpc): enhance trading-related RPC type safety * feat(trading): implement SDK placeholder trading functionality * feat: expand swap functionality TODO: Refactoring and docs * Create swap manager interface with documentation (#189) * Add swap manager interface for consistent swap and orderbook operations Co-authored-by: charl <charl@vanstaden.info> * feat(rpc): expand swap-related types --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com> * Keep only types (packages/komodo_defi_types) and RPC library (packages/komodo_defi_rpc_methods) changes from cursor/build-swap-manager-in-sdk-0a9c relative to dev * fix(rpc): further reconciliation between RPC library and docs * fix(rpc): use RecentSwapsFilter in RecentSwapsRequest; fix recentSwaps call in trading RPC namespace * Make isMine parameter required in PlacedOrderSummary constructor Co-authored-by: charl <charl@vanstaden.info> * chore: update pubspec files * Add support for fraction and rational number representations Co-authored-by: charl <charl@vanstaden.info> * Update cancel orders type to use lowercase and adjust coin key Co-authored-by: charl <charl@vanstaden.info> * docs(trading): clarify trade_with parameter in max_taker_vol; note pair-dependent DEX fees and default behavior * chore: generate indexes --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com>
This commit updates generated freezed files and adjusts dependencies across packages. Updated files include: - packages/komodo_defi_local_auth/lib/src/auth/auth_state.freezed.dart - packages/komodo_defi_local_auth/lib/src/trezor/trezor_initialization_state.freezed.dart - packages/komodo_defi_rpc_methods/lib/src/common_structures/activation/activation_params/activation_params.freezed.dart - packages/komodo_defi_rpc_methods/pubspec.yaml - packages/komodo_defi_sdk/example/pubspec_overrides.yaml - packages/komodo_defi_types/lib/src/assets/asset_cache_key.freezed.dart - packages/komodo_defi_types/lib/src/public_key/confirm_address_details.freezed.dart - packages/komodo_defi_types/lib/src/public_key/new_address_state.freezed.dart - packages/komodo_defi_types/lib/src/public_key/new_address_state.g.dart - packages/komodo_defi_types/lib/src/transactions/fee_info.freezed.dart - packages/komodo_defi_types/lib/src/trezor/trezor_device_info.freezed.dart - packages/komodo_defi_types/lib/src/trezor/trezor_user_action_data.freezed.dart - packages/komodo_defi_types/pubspec.yaml
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
* docs: Overhaul READMEs across SDK packages with comprehensive guides Co-authored-by: charl <charl@vanstaden.info> * docs(wallet_cli): update README * fix(docs): replace non-standard hyphen with standard --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com>
|
Closing in favor of a fresh dev→main after merging fix/upgrade-deps into dev. |
Komodo DeFi SDK Flutter v0.3.0 Release Notes
This release marks an important milestone as the SDK transitions from its initial alpha release to a more stable and feature-rich platform. It introduces significant improvements including HD wallet private key export, remote instance management, KDF v2.6.1 integration, enhanced coin configuration capabilities, and comprehensive seed node configuration requirements.
🚀 New Features
unban_pubkeysRPC methoddisable_p2p,i_am_seed, andis_bootstrap_nodeparametersprotocol_datafrom ETH protocol configurationswc_ping_sessionandwc_delete_sessionmethods for WalletConnect integrationmax_connectedparameter on coin activation🎨 UI/UX Improvements
⚡ Performance Enhancements
protocol_datafrom ETH protocol configurations to reduce payload size🐛 Bug Fixes
unban_pubkeysRPC methoduse_trading_proto_v2configuration option to address compatibility issuesmax connected: 1for UXTO activation #148) - Addedmax_connected: 1configuration for UTXO activation🔒 Security Updates
💻 Platform-specific Changes
KDF Integration
Cross-platform Support
🔧 Technical Improvements
seednodesparameter is now required unlessdisable_p2pis set totrue. This affects all KDF startup configurationsuse_trading_proto_v2parameter has been commented out in startup configuration and should not be used in this releaseprotocol_dataremoved, which may affect existing configurations that relied on this fieldFull Changelog: v0.1.0...v0.3.0