Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
992 commits
Select commit Hold shift + click to select a range
5c20d81
chore(coinjoin): remove unused isTaprootTx function
mroz22 May 10, 2026
9aba568
chore(coinjoin): drop write-only Account.signedRounds property
mroz22 May 10, 2026
9189938
chore(coinjoin): remove unused CoinjoinClient.getRounds method
mroz22 May 10, 2026
edb77ed
chore(coinjoin): drop unnecessary export from getScriptTypeFromScript…
mroz22 May 10, 2026
601560a
chore(coinjoin): drop unnecessary export from getRawLiquidityClue
mroz22 May 11, 2026
d5dd7b7
fix(solana): move "type": "module" to top-level per publishConfig rule
mroz22 May 14, 2026
cfbbcd7
feat(suite-native): Mobile Swap: send fromAccount and receiveAccount …
jbazant May 12, 2026
70d65cd
feat(suite-native): Mobile Swap: Refetch quotes when receive account …
jbazant May 13, 2026
b144b28
refactor(suite-native): replace deprecated account fixtures in useExc…
jbazant May 14, 2026
4edc60c
fix(suite): Trading: make sure Tron address is correctly accessed
jbazant May 14, 2026
ff44ad5
refactor(connect): keep authenticateDevice runtime schema out of conn…
claude May 6, 2026
e16d4bf
feat(connect): inline EIP-712 hashing, deprecate connect-plugin-ethereum
mroz22 Apr 27, 2026
63307fe
fix(suite-native): update ExchangeFormQuoteDebugView to display pre-a…
jbazant May 14, 2026
6402af1
fix(suite-common): soften maxAllowance comparison against UINT256_MAX
jbazant May 14, 2026
9638a42
fix(suite): Fix empty wallet skeleton
jvaclavik May 15, 2026
74451e5
chore(suite): allow approving over balance in yield deposit
matusbalascak May 14, 2026
2f58707
feat(suite): Add tooltip to my assets view
jvaclavik May 15, 2026
0f6a33a
feat(suite): Add tooltip to eject icon button
jvaclavik May 15, 2026
e6ef864
refactor(components): remove label prop from Card component
seibei-iguchi May 14, 2026
d4d2acc
fix(wallet-core): fix multiplying ms by s when creating fake pending tx
tomasklim May 14, 2026
5b3091d
chore(intl): remove unused translation strings
pavelmario May 15, 2026
c1cc29b
fix: eth custom fee handling in tx simulation
cermakjiri May 14, 2026
9b04c75
fix: stale validation of evm eip 1559 fee fields
cermakjiri May 14, 2026
fc5b71d
chore(suite-native): Create add-coin-account package for shared logic…
jbazant May 13, 2026
d89fcfb
fix(suite): connect silent mode remaining states
martykan May 14, 2026
fbf0eae
chore: recreate expo-device patch
Lemonexe May 13, 2026
efd7789
chore: recreate expo-modules-core patch
Lemonexe May 13, 2026
2b40a69
chore: recreate expo-updates patch
Lemonexe May 13, 2026
7a6b9e9
chore: recreate nextra patch
Lemonexe May 13, 2026
67e5d10
chore: remove obsolete patch-package
Lemonexe May 13, 2026
6a26b5f
feat(connect-common): new event CORE_CALL_CANCEL
karliatto May 12, 2026
d700696
feat(connect): separate pupup close from cancel method
karliatto May 12, 2026
e8e057b
feat(connect-web): when cancel use CORE_CALL_CANCEL,
karliatto May 12, 2026
a590216
feat(connect-webextension): when cancel use CORE_CALL_CANCEL,
karliatto May 12, 2026
c80200c
refactor(suite): use CORE_CALL_CANCEL when canceling
karliatto May 12, 2026
ed3c920
refactor(suite): keep POPUP.CLOSED backward compatibility for old cli…
karliatto May 13, 2026
9ec4e34
refactor(connect-webextension): keep POPUP.CLOSE for backward compati…
karliatto May 13, 2026
b802a42
feat(utils): isUUID
karliatto May 7, 2026
e7b7f87
feat(connect-common): add callId to uiMessage
karliatto May 7, 2026
edabd23
feat(connect): add callId to uiMessage
karliatto May 7, 2026
736998f
feat(connect-cli): expand UI/DEVICE event logging
karliatto May 7, 2026
4c6fbff
style(suite): Update description formatting in hero messages
jvaclavik May 15, 2026
e98313b
chore(solana): bump version to 10.0.0-alpha.1
martykan May 15, 2026
c77c203
refactor: QuotaManager to DI to hadle all errors
peter-sanderson Apr 2, 2026
35604b3
fix(suite): make message system feature lists scrollable
izmy May 14, 2026
227b923
refactor(suite): use grid for message system experiment map
izmy May 14, 2026
9c82238
fix(suite): allow closing message manager from backdrop
izmy May 14, 2026
6f41d0b
fix(message-system): validate config item ids
izmy May 14, 2026
411125c
feat(suite-native): always show connected/remembered devices in devic…
yanascz May 15, 2026
937ac6c
fix(suite-native): show correct device icon for THP devices
yanascz May 15, 2026
2c14107
chore(suite-native): remove unused property isVisible from DeviceList
yanascz May 15, 2026
d3c7dcf
fix(e2e): use tsx instead of ts-node to fix ESM issue
Lemonexe May 15, 2026
4e9bcf6
style(suite): Update release notes tooltip in fw update
jvaclavik May 15, 2026
5ce17c5
fix(suite): allow earn dashboard preview without device
izmy May 15, 2026
3fdad2e
feat(suite): Add tooltip for NetworkIconSet
jvaclavik May 15, 2026
cbeac54
fix(suite-native): display "Recipient address" in output review for "…
jbazant May 15, 2026
a62c6c0
chore(suite-native): refactor ReviewOutputItem with exhaustive flowTy…
jbazant May 15, 2026
81aa08d
fix(suite): handle unavailable yield apy
izmy May 15, 2026
fb62845
fix(suite): handle fully deposited yield vaults
izmy May 15, 2026
ab07f6e
fix(suite): show error banner when yield vaults fetch fails
izmy May 15, 2026
618dd4b
feat(suite-native): add localization component for Payment method
smidlma May 11, 2026
7c676e3
feat(suite-native): handle edge case with empty string
smidlma May 11, 2026
8f52a8b
refactor: collapse if/return boolean-coercion into direct return
mroz22 May 7, 2026
785156c
chore(connect-popup): remove unused selectWalletConnectAppPermissions…
mroz22 May 10, 2026
a6051ce
feat(connect): remove getAccountDescriptor public API
mroz22 May 14, 2026
956095e
test(connect): capture device screen content during e2e auto-confirm
mroz22 May 16, 2026
882c519
test(connect): discovery showOnTrezor variants for *GetPublicKey
mroz22 May 16, 2026
6af3375
test: urls test maintainability
Lemonexe May 15, 2026
3143e47
test(e2e): start collecting tropic_model.logs from tenv
Vere-Grey May 18, 2026
1175787
fix(ci): coins packages path in npm release action
martykan May 15, 2026
ac925e5
chore(solana): not a private package
martykan May 15, 2026
5c9387a
feat(ci): Token usage collector for E2E utils
HajekOndrej May 14, 2026
13748bd
feat(suite-native): add message system context for concierge
smidlma May 15, 2026
8389f6b
chore(address-validator): trim to Suite-only currencies
mroz22 May 18, 2026
58b80b6
fix(suite-native): sync behavior with iOS and detect gesture only on …
smidlma May 18, 2026
435e73f
chore(transport): tighten Logger interface rest-args to unknown[]
mroz22 May 18, 2026
076c5ad
chore(blockchain-link-types): type blockfrost AddressNotification.tx
mroz22 May 18, 2026
2ae61b2
chore(components): tighten DropdownMenuItem.onClick return type
mroz22 May 18, 2026
f5d57ec
chore(metadata-types): type AbstractMetadataProvider.setFileContent c…
mroz22 May 18, 2026
3d65200
chore(components): tighten Link onClick MouseEvent generic
mroz22 May 18, 2026
950fe29
chore(wallet-utils): remove unused readUtxoOutpoint function
mroz22 May 10, 2026
1c72c7a
chore(suite-native): generalize coins packages in metro config
marekrjpolak May 19, 2026
b91ed41
chore(solana): add imports to coins-solana index
marekrjpolak May 19, 2026
0ec3c5e
chore(eslint): add rule enforcing imports from subpaths of coins pack…
marekrjpolak May 19, 2026
f3a7664
chore(coins): update README.md
marekrjpolak May 19, 2026
c649387
feat(utils): throwError supports error as a param
marekrjpolak May 15, 2026
32383ee
refactor: use throwError where possible
marekrjpolak May 18, 2026
f73236e
fix(suite-native): add abort signal to stop thunk from rewriting stor…
smidlma May 14, 2026
68c1395
fix(ci): Optimized token usage for llm test selector
HajekOndrej May 19, 2026
bec9901
chore(suite): improve processes in stablecoin yield explained modal
tomasklim May 17, 2026
f498dce
refactor(transport): split into transport-common / transport / transp…
mroz22 May 20, 2026
13645a9
test(bot): update analyze bot to group root causes
Vere-Grey May 19, 2026
1a39621
chore(transport): drop unused createBridgeTransports helper
mroz22 May 20, 2026
846fe97
feat(suite-common): introduce useSectionDataFilter
jbazant May 15, 2026
194483b
feat(suite-native): Mobile Trade: introduce MyAssets search
jbazant May 15, 2026
4540174
feat(suite-native): Mobile Trade: improve order of results in MyAsset…
jbazant May 15, 2026
72e592f
chore(suite-native): add E2E test for My Assets filtering
jbazant May 15, 2026
f127e03
fix(suite-native): Translate "All" in FilterTabs component
jbazant May 15, 2026
f8d6345
chore(suite-native): autoscroll to selected FilterTab
jbazant May 15, 2026
b3670d9
feat(suite-native): add autoCorrect prop to asset search input compon…
jbazant May 15, 2026
78321ff
fix(suite-native): clear FilterTabs as soon as visible prop changes
jbazant May 15, 2026
bd3f777
chore(suite-native): rename `visible` prop to `isVisible` in FilterTa…
jbazant May 20, 2026
848017c
fix(connect-common): narrow protocol pkg runtime import
martykan May 15, 2026
3199483
fix(trading): keep approval modal params during refresh
sherpaPSX May 13, 2026
c4855ad
feat(trading): split TradingFormOffer into scoped components
sherpaPSX May 12, 2026
11a1598
feat(trading): implement common hook and confirm button for trading f…
sherpaPSX May 12, 2026
0e6a5c0
feat(trading): refactor TradingFormOffer into scoped components and u…
sherpaPSX May 12, 2026
90f2e17
chore(intl): remove unused translation strings
pavelmario May 20, 2026
3666c6a
fix(suite-native): trade - filter accounts without trade id
BrantalikP Mar 26, 2026
d7b539d
chore(suite-native): trade - filter accounts without trade id test co…
jbazant May 20, 2026
c42df15
fix(suite): render yield approve modal from KNOWN_VAULTS
matusbalascak May 19, 2026
4aaff15
refactor(calldata): introduce typed EVM decoder API
matusbalascak May 19, 2026
72464fa
refactor(suite-common): adopt new calldata API
matusbalascak May 19, 2026
58ca46f
fix(suite-common): support RBF for yield deposit/withdraw/redeem
matusbalascak May 18, 2026
2889380
refactor(connect-web): convert (x && x.y) checks to optional chaining
mroz22 May 20, 2026
22b6639
refactor(connect-explorer): convert (x && x.y) checks to optional cha…
mroz22 May 20, 2026
f389d23
refactor(blockchain-link): convert (x && x.y) checks to optional chai…
mroz22 May 20, 2026
184e00b
test(blockchain-link): paginate Horizon to reduce Stellar pushTransac…
mroz22 May 18, 2026
c4b51d4
refactor(utxo-lib): convert (x && x.y) checks to optional chaining
mroz22 May 20, 2026
71c397a
fix(suite): respect MEV protection setting in yield
matusbalascak May 21, 2026
30b70b6
refactor: convert (x && x.y) checks to optional chaining
mroz22 May 7, 2026
618e52a
chore(eslint): enable @typescript-eslint/prefer-optional-chain
mroz22 May 17, 2026
6c42d26
refactor: apply prefer-optional-chain across monorepo
mroz22 May 17, 2026
344c5f7
refactor(suite-native): move AccountLabel to accounts package
peter-sanderson May 14, 2026
6c862c2
refactor(suite-native): extract address package
peter-sanderson May 14, 2026
fdfb90f
refactor(suite-native): move transaction output labels to transactions
peter-sanderson May 14, 2026
d7a1bd9
refactor(suite-native): move suite sync hooks to suite-sync
peter-sanderson May 14, 2026
f64a9a0
refactor(suite-native): move send form label to module-send
peter-sanderson May 14, 2026
a4c5325
refactor(suite-native): extract wallet label package
peter-sanderson May 14, 2026
50565b3
fix(suite-native): restore suite-sync project reference
peter-sanderson May 15, 2026
a147206
feat(ci): add sfw to every yarn install in CI
Lemonexe May 14, 2026
f6c22ef
test(e2e): show errors in CI logs
marekrjpolak May 20, 2026
a539add
chore(ci): silence sfw summaries when successful
Lemonexe May 21, 2026
5e45dec
fix(suite): show account type badge in yield claim account rows
izmy May 20, 2026
004211e
fix(suite): validate earn yield route params and stabilize claim loading
izmy May 20, 2026
8dd6e3a
fix(suite): sync amount input validation on yield form step transitions
izmy May 20, 2026
fa1112a
feat: disable yarn postinstall scripts
Lemonexe May 20, 2026
230f942
chore: update yarn
Lemonexe May 15, 2026
2c2a769
chore(analytics): rename YieldSupply event to YieldDeposit
tomasklim May 20, 2026
c4753bf
feat(analytics): track vaultId on yield navigate, deposit, withdraw e…
tomasklim May 20, 2026
0a537a9
feat(analytics): track Buy button click from earn dashboard
tomasklim May 20, 2026
f8dae5e
feat(analytics): add yieldInteraction event for tooltips, help, educa…
tomasklim May 20, 2026
855bd63
feat(analytics): track on-chain tx outcomes + duration + leftPending
tomasklim May 20, 2026
6457f6e
feat(analytics): track exact vs unlimited approval choice on yield de…
tomasklim May 20, 2026
aa25430
feat(analytics): track entry to stablecoin yield section
tomasklim May 20, 2026
214b086
feat(analytics): track Max button click on deposit and withdraw forms
tomasklim May 20, 2026
5af9183
feat(analytics): track opening tx detail modal from yield pending state
tomasklim May 20, 2026
1368598
feat(analytics): track tx simulation modal confirm/cancel in yield flows
tomasklim May 21, 2026
1a2db53
feat(suite): responsive card layout for earn dashboard
izmy May 19, 2026
60e302f
fix(suite): wrap long spender address in allowance modal
izmy May 19, 2026
8adffcd
fix(suite): stack tx detail properties on narrow viewports
izmy May 19, 2026
eec60e7
feat(suite): responsive layout for earn yield completion screens
izmy May 20, 2026
bff4b45
feat(suite): responsive earn yield page header
izmy May 20, 2026
a5415d5
feat(ci): create check-pr-size composite action
HajekOndrej May 21, 2026
8aee390
refactor(connect): drop node:crypto from thp/firmware code
mroz22 Apr 29, 2026
274ca5f
chore(transport): switch usb test mock to ESM
mroz22 May 20, 2026
5e3202a
refactor(types): replace typeof undefined with never in discriminated…
mroz22 May 20, 2026
f1ec159
refactor(connect): unify *GetPublicKey response shape
mroz22 May 5, 2026
f87afcf
fix(suite): remove copy-pasted data-testid from Cardano staking banner
mroz22 May 21, 2026
284f6d6
fix(suite): keep tx review modal open during yield RBF
matusbalascak May 21, 2026
905b2a7
chore(suite): label yield approve/revoke modal spender as 'Vault'
matusbalascak May 21, 2026
cef3ce0
chore(redux-utils): remove unused notImplementedOriginalReduxThunk fa…
mroz22 May 10, 2026
bb417b3
chore(wallet-config): remove unused hasNetworkSettlementLayer and isP…
mroz22 May 10, 2026
1fd785a
fix(suite-native): simplify animations in HistoryButton and Footer co…
jbazant May 21, 2026
732a89a
fix(suite): handle disconnected device in yield firmware update prompt
izmy May 21, 2026
29a9dfc
fix(suite): timeout and retry for yield allowance fetch
matusbalascak May 22, 2026
af35189
fix(eslint): properly extend no-restricted-imports rule in connect es…
marekrjpolak May 21, 2026
f542acc
feat(suite): show Claim button in Earn Staking table when claim is av…
izmy May 18, 2026
a474caa
refactor(suite): inject platform encryption from composition roots
peter-sanderson May 21, 2026
17bfe6a
refactor(suite): move Address into @suite/address
peter-sanderson May 14, 2026
f1567f4
refactor(suite): move SuiteSyncInteractionsTooltip into suite-sync
peter-sanderson May 14, 2026
903bd89
refactor(suite): move suite sync turn-on ui into packages
peter-sanderson May 14, 2026
4b8c7c8
refactor(suite): move suite sync desktop slice into suite-sync
peter-sanderson May 14, 2026
38ab05e
refactor(suite): extract labeling package
peter-sanderson May 14, 2026
d653a86
test(labeling): stabilize selector tests
peter-sanderson May 14, 2026
ed24242
fix(suite): handle mac fullscreen when hiding connect popup
martykan May 14, 2026
1f3f3e9
refactor(suite): remove trading form draft persistence
vytick May 20, 2026
0f1657a
feat(suite): purge trading form drafts from storage
vytick May 20, 2026
c1e2c77
refactor(suite): use shared services hook
peter-sanderson May 15, 2026
472c580
fix: handle confirm button loading state in tx simulation modal
cermakjiri May 21, 2026
7307bdd
fix(suite): sanitize formulae in CSV export
Lemonexe May 21, 2026
db2f12d
fix(protobuf): add esm .js extension to generated definitions
szymonlesisz May 21, 2026
2b9f6eb
chore(eslint): remove unused eslint-plugin-chai-friendly config
mroz22 May 20, 2026
f41ccb0
chore(nx): include all root jest files in test:unit cache inputs
mroz22 May 24, 2026
0376fb4
chore(transport): drop unused configured field from bridge info response
mroz22 May 22, 2026
eeccf34
docs(packages): document @trezor to @suite import exception during re…
OriginalEveres May 21, 2026
33527e9
test(transport): document listen()/stop() listener leak in AbstractAp…
mroz22 May 23, 2026
202ccc9
test(transport): document SessionsClient.dispose() listener leak on s…
mroz22 May 23, 2026
6747d21
test(node-utils): document HttpServer connection/error listener leak
mroz22 May 23, 2026
29b21c2
test(ipc-proxy): document per-instance invoke handler leak in createI…
mroz22 May 23, 2026
775a942
chore(jest): wire JestCustomEnv into all node-env packages
mroz22 May 24, 2026
7bf3577
fix(suite-desktop): more robust autorestart on linux
Lemonexe May 15, 2026
7bfeb54
chore(skills): fix packages docs
OriginalEveres May 25, 2026
2966c0b
refactor: simplify ternaries to optional chaining and nullish coalescing
mroz22 May 21, 2026
7e42e55
feat: add optional env var to disable transport browser ping
cermakjiri May 25, 2026
0560c04
fix: stale state of merkle rewards after claim
cermakjiri May 25, 2026
c535994
fix(suite): suppress sign-tx-error toast for invalid compose params
mroz22 May 22, 2026
b4fc54d
feat(trading): add fiat flags to currency picker
sherpaPSX May 21, 2026
0bdba60
fix(send): keep modals visible during device signing
sherpaPSX May 14, 2026
74d75e3
chore(eslint): forbid `typeof undefined` in type positions
mroz22 May 20, 2026
08d2daf
refactor(suite): extract external link components into @suite/externa…
OriginalEveres May 20, 2026
2f5849c
refactor(suite): extract tor utilities and types into @suite/tor package
OriginalEveres May 21, 2026
b1a59db
chore(suite): remove dead barrel re-exports of external-links components
OriginalEveres May 22, 2026
589587a
test(tor, external-links): move tests to their respective packages
OriginalEveres May 22, 2026
6eaab06
chore(packages, suite): update project references
OriginalEveres May 22, 2026
1b09e7c
feat(ci): Github actions for LLM test runner
HajekOndrej May 25, 2026
b7e6f8d
feat(e2e): Api 34 for android e2e tests
HajekOndrej May 18, 2026
f83536e
refactor(suite): move Address & Labeling code to @suite packages
peter-sanderson May 14, 2026
7594463
chore(analytics): improve yield
tomasklim May 25, 2026
4cef2cb
chore(analytics): report current apy when user deposit/withdraw
tomasklim May 25, 2026
75e09c1
feat(connect): add `internal` method permission
marekrjpolak May 25, 2026
71ede4f
fix(connect): move custom backend setting from constructor to run
marekrjpolak May 25, 2026
0eed624
feat(suite): Add ResizableBox to Guide
jvaclavik May 12, 2026
f9457c9
fix(suite): Update heading responsiveness
jvaclavik May 25, 2026
3b6ad76
style(suite): Polish formatting in Guide
jvaclavik May 25, 2026
aed9f21
feat(suite): Add modal for opening images from guide
jvaclavik May 25, 2026
28011b0
fix(suite): Add minimal width of the content
jvaclavik May 25, 2026
a7b4162
style(suite): Improve images in guide
jvaclavik May 25, 2026
3f47a69
fix: resolve yield flow
cermakjiri May 25, 2026
e2ba876
test(e2e-suite): stabilize label tests by hiding notification banners
Vere-Grey May 25, 2026
7843e0a
test(utxo-lib): cover scriptSignature.toDER and noble-compatibility g…
mroz22 May 25, 2026
d035515
chore(utxo-lib): replace bip66 with @noble/curves DER utils
mroz22 May 10, 2026
eeadcfe
fix(suite): Make settings responsive again
jvaclavik May 25, 2026
10ceef9
fix(suite-native): persist selected quote through exchange approval
vytick May 18, 2026
c8dae45
feat(ckb): Add CKB icons, typography and localization messages
DinhMaiMTD Mar 24, 2026
825e5cd
feat(ckb): Define CKB coins, networks, and general configurations
DinhMaiMTD Mar 24, 2026
40aafd8
feat(ckb): Implement CKB Connect API methods and definitions
DinhMaiMTD Mar 25, 2026
790daef
feat(ckb): Implement Blockchain-link worker for CKB
DinhMaiMTD Mar 26, 2026
beaf949
feat(ckb): Integrate CKB into Suite Core UI, Components, and Wallet m…
DinhMaiMTD Mar 26, 2026
5420ccb
feat(ckb): Add CKB Send Form Logic
DinhMaiMTD Mar 26, 2026
7805d2a
refactor(ckb): remove unused code CKBSignedTx
DinhMaiMTD Apr 5, 2026
5d69df8
fix(ckb): using library ckb-ccc to build transaction
DinhMaiMTD Apr 6, 2026
9f28029
fix(ckb): re-implement protobuf messages in definitions/ structure
DinhMaiMTD Apr 27, 2026
93e34b0
fix(ckb): adapt API methods to new AbstractMethod constructor pattern
DinhMaiMTD Apr 27, 2026
46a5b21
chore: regenerate yarn.lock after rebase
DinhMaiMTD Apr 27, 2026
49e879d
fix(ckb): hide trading UI for unsupported networks
DinhMaiMTD May 3, 2026
bad5986
feat(ckb): add slow/medium/fast fee levels
DinhMaiMTD May 4, 2026
3fb94f1
fix(ckb): optimize fee fallback search and pagination performance
DinhMaiMTD May 6, 2026
998a1ec
fix(ckb): remove signature format conversion, firmware now outputs CK…
DinhMaiMTD May 6, 2026
4392a1d
fix(ckb): add address validation and testnet symbol mapping
DinhMaiMTD May 7, 2026
d6c41cd
fix(ckb): resolve type errors and lint issues from CKB integration
DinhMaiMTD May 8, 2026
d00df71
fix(ckb): check transaction history when determining empty account st…
DinhMaiMTD May 9, 2026
32218bc
fix(ckb): use WebSocket transport instead of HTTP to reduce connectio…
DinhMaiMTD May 9, 2026
fa43c67
refactor(ckb): fix pagination total count, remove redundant code and …
DinhMaiMTD May 9, 2026
92e4ddc
fix(ckb): keep 0x hash prefix and remove unused estimateFee handler
DinhMaiMTD May 20, 2026
338b0c6
fix(ckb): resolve send crash caused by invalid UTXO txid format
DinhMaiMTD May 21, 2026
4dc19d3
feat(ckb): add sign and verify message support
DinhMaiMTD May 22, 2026
12c47fd
refactor(ckb): remove unused getAccountBalanceHistory handler and agg…
DinhMaiMTD May 25, 2026
9381f54
feat(ckb): register Capability_CKB and remove useless fee binary sear…
DinhMaiMTD May 25, 2026
bc1d2bd
chore(protobuf): regenerate fileDesc binaries to include CKB types
DinhMaiMTD May 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
1 change: 1 addition & 0 deletions .depcheckrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
"worker-loader",
"process",
"rimraf",
"rollup-plugin-dts",
"tslib",
"buffer",
"node-gyp",
Expand Down
38 changes: 38 additions & 0 deletions .github/actions/check-pr-size/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# .github/actions/check-pr-size/action.yml
name: "Check PR Size"
description: >
Determines whether a PR is small enough for LLM test selection.
Small PR = max 7 changed files and max 500 total lines changed.
inputs:
changed-files:
description: "Number of changed files (github.event.pull_request.changed_files)"
required: true
additions:
description: "Number of line additions (github.event.pull_request.additions)"
required: true
deletions:
description: "Number of line deletions (github.event.pull_request.deletions)"
required: true
outputs:
is_small_pr:
description: "'true' if the PR is small enough for LLM analysis, 'false' otherwise"
value: ${{ steps.check.outputs.is_small_pr }}
runs:
using: "composite"
steps:
- name: Check PR size
id: check
shell: bash
env:
CHANGED_FILES: ${{ inputs.changed-files }}
ADDITIONS: ${{ inputs.additions }}
DELETIONS: ${{ inputs.deletions }}
run: |
TOTAL_CHANGES=$(( ADDITIONS + DELETIONS ))
if [ "$CHANGED_FILES" -le 7 ] && [ "$TOTAL_CHANGES" -le 500 ]; then
echo "is_small_pr=true" >> "$GITHUB_OUTPUT"
echo "Small PR: $CHANGED_FILES changed files, $TOTAL_CHANGES lines changed"
else
echo "is_small_pr=false" >> "$GITHUB_OUTPUT"
echo "Large PR, skipping LLM test selector: $CHANGED_FILES changed files, $TOTAL_CHANGES lines changed"
fi
61 changes: 61 additions & 0 deletions .github/actions/determine-test-strategy/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
name: "Determine E2E Test Strategy"
description: >
Classifies PR changes into one of three strategies:
specific-tests (only e2e test files changed),
run-everything (e2e framework or mixed changes),
or analyze (non-e2e code changed → LLM analysis needed).
outputs:
strategy:
description: "specific-tests | run-everything | analyze"
value: ${{ steps.classify.outputs.strategy }}
spec-list:
description: "Comma-separated list of test file paths (only set when strategy=specific-tests)"
value: ${{ steps.classify.outputs.spec-list }}
runs:
using: "composite"
steps:
- name: Classify changed files
id: classify
shell: bash
run: |
set -euo pipefail

# Use the PR base ref SHA from GitHub context — the current HEAD of the base
# branch, used as the diff base for this PR. Fetching just that one commit is enough;
BASE_SHA="${{ github.event.pull_request.base.sha }}"
git fetch origin "$BASE_SHA" --depth=1

CHANGED=$(git diff "$BASE_SHA" HEAD --name-only)
echo "Changed files:"
echo "$CHANGED"

if [[ -z "$CHANGED" ]]; then
echo "No changed files detected. Running everything."
echo "strategy=run-everything" >> "$GITHUB_OUTPUT"
echo "spec-list=" >> "$GITHUB_OUTPUT"
exit 0
fi

# Check if any file is outside suite/e2e/ entirely (production code)
OUTSIDE_E2E=$(echo "$CHANGED" | grep -v '^suite/e2e/' || true)
if [[ -n "$OUTSIDE_E2E" ]]; then
echo "Production code changed — proceeding to LLM analysis."
echo "strategy=analyze" >> "$GITHUB_OUTPUT"
echo "spec-list=" >> "$GITHUB_OUTPUT"
exit 0
fi

# All files are under suite/e2e/ — check if any are outside tests/
OUTSIDE_TESTS=$(echo "$CHANGED" | grep '^suite/e2e/' | grep -v '^suite/e2e/tests/' || true)
if [[ -n "$OUTSIDE_TESTS" ]]; then
echo "E2E framework files changed — running everything."
echo "strategy=run-everything" >> "$GITHUB_OUTPUT"
echo "spec-list=" >> "$GITHUB_OUTPUT"
exit 0
fi

# All changed files are under suite/e2e/tests/ — run only those
TEST_FILES=$(echo "$CHANGED" | grep '^suite/e2e/tests/' | tr '\n' ',' | sed 's/,$//')
echo "Only test files changed. Running: $TEST_FILES"
echo "strategy=specific-tests" >> "$GITHUB_OUTPUT"
echo "spec-list=$TEST_FILES" >> "$GITHUB_OUTPUT"
50 changes: 50 additions & 0 deletions .github/actions/llm-test-selector/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: "LLM Test Selector"
description: >
Runs the LLM-based test selector against the PR diff.
SECURITY: The calling job must check out the trusted develop branch and
fetch the PR head as 'pr-head' before invoking this action.
Only code from the trusted checkout is installed and executed.
inputs:
claude-api-key:
description: "Anthropic API key for the LLM test selector"
required: true
outputs:
spec-list:
description: "Comma-separated list of recommended test file paths (repo-root-relative)"
value: ${{ steps.parse.outputs.spec-list }}
runs:
using: "composite"
steps:
- name: Setup Node.js
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6
with:
node-version-file: ".nvmrc"
cache: yarn

- name: Cache node_modules
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5
with:
path: node_modules
key: node_modules-${{ hashFiles('yarn.lock') }}
restore-keys: node_modules-

- name: Install dependencies
shell: bash
run: yarn workspaces focus @trezor/e2e-utils

- name: Run LLM test selector
shell: bash
env:
CLAUDE_API_KEY: ${{ inputs.claude-api-key }}
run: |
yarn workspace @trezor/e2e-utils select-tests-llm --head-ref pr-head > llm-selection.json
echo "LLM test selector output:"
cat llm-selection.json

- name: Parse spec list from LLM output
id: parse
shell: bash
run: |
SPEC_LIST=$(jq -r '[.recommendations[].test] | join(",")' llm-selection.json)
echo "spec-list=$SPEC_LIST" >> "$GITHUB_OUTPUT"
echo "Spec list: $SPEC_LIST"
13 changes: 7 additions & 6 deletions .github/actions/minimal-yarn-install/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,17 +23,18 @@ runs:
restore-keys: |
yarn-cache-folder-

- name: Modify .yarnrc.yml to disable scripts
shell: bash
run: |
echo -e "\nenableScripts: false" >> .yarnrc.yml

# We don't need to run in hardened mode because it's enough to run hardened install only in "Setup and Cache Dependencies" step
- name: Modify .yarnrc.yml to disable hardened mode
shell: bash
run: |
echo -e "\nenableHardenedMode: false" >> .yarnrc.yml

- name: Install Socket Firewall
uses: SocketDev/action@2d3f25590c6ed6ba11a9a14c064d962a3a04698f # v1.3.1
with:
mode: firewall-free
job-summary: errors

- name: Install dependencies using Yarn
shell: bash
run: yarn --immutable
run: sfw --silent yarn --immutable
121 changes: 121 additions & 0 deletions .github/actions/post-llm-analysis/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
name: "Post LLM Analysis to PR"
description: >
Reads llm-selection.json from the workspace and overwrites the
LLM test recommendation section in the PR description.
inputs:
selection-file:
description: "Path to the llm-selection.json file"
required: false
default: "llm-selection.json"
trezor-bot-app-id:
description: "Trezor Bot GitHub App ID"
required: true
trezor-bot-private-key:
description: "Trezor Bot GitHub App private key"
required: true
runs:
using: "composite"
steps:
- name: Generate GitHub App token
id: trezor-bot-token
uses: actions/create-github-app-token@1b10c78c7865c340bc4f6099eb2f838309f1e8c3 # v3
with:
app-id: ${{ inputs.trezor-bot-app-id }}
private-key: ${{ inputs.trezor-bot-private-key }}

- name: Update PR description with LLM test selection
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
with:
github-token: ${{ steps.trezor-bot-token.outputs.token }}
script: |
const fs = require('fs');
const selectionFile = '${{ inputs.selection-file }}';
const result = JSON.parse(fs.readFileSync(selectionFile, 'utf8'));

const priorityEmoji = { high: '🔴', medium: '🟡', low: '🟢' };
const priorityOrder = ['high', 'medium', 'low'];

const START_MARKER = '<!-- LLM-TEST-SELECTOR:START -->';
const END_MARKER = '<!-- LLM-TEST-SELECTOR:END -->';
const HEADING_START = '<!-- LLM-TEST-SELECTOR:HEADING:START -->';
const HEADING_END = '<!-- LLM-TEST-SELECTOR:HEADING:END -->';
const headingBlock = `${HEADING_START}\n## 🤖 LLM Test Recommendations\n${HEADING_END}`;

const lines = [];

lines.push(`**Summary:** ${result.summary}`);
lines.push('');

if (result.changed_files && result.changed_files.length > 0) {
lines.push(`<details><summary><b>Changed files (${result.changed_files.length})</b></summary>`);
lines.push('');
result.changed_files.forEach(f => lines.push(`- \`${f}\``));
lines.push('');
lines.push('</details>');
lines.push('');
}

if (result.recommendations && result.recommendations.length > 0) {
lines.push(`**Recommended tests (${result.recommendations.length})**`);
lines.push('');
for (const priority of priorityOrder) {
const recs = result.recommendations.filter(r => r.priority === priority);
if (recs.length === 0) continue;
const label = priority.charAt(0).toUpperCase() + priority.slice(1);
lines.push(`<details><summary>${priorityEmoji[priority]} <b>${label} priority (${recs.length})</b></summary>`);
lines.push('');
for (const rec of recs) {
lines.push(`- \`${rec.test}\` — ${rec.reasoning}`);
}
lines.push('');
lines.push('</details>');
lines.push('');
}
} else {
lines.push('_No test recommendations found._');
lines.push('');
}

if (result.uncovered_changes && result.uncovered_changes.length > 0) {
lines.push(`⚠️ **Changes with no test coverage (${result.uncovered_changes.length})**`);
result.uncovered_changes.forEach(f => lines.push(`- \`${f}\``));
lines.push('');
}

lines.push(`_Updated: ${new Date().toISOString()}_`);

const newSection = START_MARKER + '\n' + lines.join('\n') + '\n' + END_MARKER;

const pr = await github.rest.pulls.get({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: context.payload.pull_request.number,
});

let body = pr.data.body || '';

// Ensure the heading block exists (written only once).
if (!body.includes(HEADING_START)) {
const sep = body.endsWith('\n\n') ? '' : body.endsWith('\n') ? '\n' : '\n\n';
body = body + sep + headingBlock;
}

// Update the section in-place or insert it right after the heading block.
let newBody;
if (body.includes(START_MARKER) && body.includes(END_MARKER)) {
const before = body.slice(0, body.indexOf(START_MARKER));
const after = body.slice(body.indexOf(END_MARKER) + END_MARKER.length);
newBody = before + newSection + after;
} else {
const insertAt = body.indexOf(HEADING_END) + HEADING_END.length;
newBody = body.slice(0, insertAt) + '\n\n' + newSection + body.slice(insertAt);
}

await github.rest.pulls.update({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: context.payload.pull_request.number,
body: newBody,
});

console.log('PR description updated with LLM test recommendations.');
18 changes: 15 additions & 3 deletions .github/actions/release-connect-npm/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,11 @@ name: "NPM Connect Deploy Action"
description: "Releases to NPM any Connect package or Trezor dependency"
inputs:
deploymentType:
description: "Specifies the deployment type for the npm package. Choose 'beta' for pre-release versions that are not ready for production use, and 'production' for stable versions intended for end-users."
description: "Specifies the deployment type for the npm package. Use 'alpha' for early prereleases, 'beta' for prereleases close to production, and 'latest' for stable versions intended for end-users."
required: true
type: choice
options:
- alpha
- beta
- latest
packageName:
Expand All @@ -31,6 +32,7 @@ inputs:
- crypto-utils
- device-utils
- device-authenticity
- coins-solana
- connect
- connect-web
- connect-webextension
Expand All @@ -54,9 +56,15 @@ runs:
node-version-file: ".nvmrc"
cache: yarn

- name: Install Socket Firewall
uses: SocketDev/action@2d3f25590c6ed6ba11a9a14c064d962a3a04698f # v1.3.1
with:
mode: firewall-free
job-summary: errors

- name: Install dependencies
shell: bash
run: yarn install --immutable
run: sfw --silent yarn install --immutable

- name: Check version
shell: bash
Expand All @@ -65,6 +73,10 @@ runs:
- name: Publish to NPM
shell: bash
run: |
cd ./packages/${{ inputs.packageName }}
if [[ "${{ inputs.packageName }}" == coins-* ]]; then
cd ./coins/${{ inputs.packageName }}
else
cd ./packages/${{ inputs.packageName }}
fi
yarn build:lib
yarn npm publish --tag ${{ inputs.deploymentType }} --access public
9 changes: 7 additions & 2 deletions .github/actions/release-connect/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -63,11 +63,16 @@ runs:
node-version-file: ".nvmrc"
cache: yarn

- name: Install Socket Firewall
uses: SocketDev/action@2d3f25590c6ed6ba11a9a14c064d962a3a04698f # v1.3.1
with:
mode: firewall-free
job-summary: errors

- name: Install dependencies
shell: bash
run: |
echo -e "\nenableScripts: false" >> .yarnrc.yml
yarn install --immutable # focus install is not used here to make sure that all global patches are applied for the release.
sfw --silent yarn install --immutable # focus install is not used here to make sure that all global patches are applied for the release.

- name: Build connect-explorer-theme
shell: bash
Expand Down
2 changes: 2 additions & 0 deletions .github/actions/upload-test-logs/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ runs:
run: |
docker cp docker-trezor-user-env-unix-1:/trezor-user-env/logs/debugging.log trezor-user-env-debugging.log || true
docker cp docker-trezor-user-env-unix-1:/trezor-user-env/logs/emulator_bridge.log tenv-emulator-bridge-debugging.log || true
docker cp trezor-user-env.unix:/trezor-user-env/logs/tropic_model.log "$LOG_DIR/trezor-user-env-tropic_model.log" || true
docker cp docker-trezor-user-env-unix-1:/trezor-user-env/docker/version.txt trezor-user-env-version.txt || true
docker logs docker-electrum-regtest-1 > electrum-regtest.txt 2>&1 || true
docker logs docker-quota-db-1 > quota-db.log 2>&1 || true
Expand All @@ -28,6 +29,7 @@ runs:
path: |
trezor-user-env-debugging.log
tenv-emulator-bridge-debugging.log
trezor-user-env-tropic_model.log
trezor-user-env-version.txt
electrum-regtest.txt
quota-db.log
Expand Down
Loading
Loading