* chore: remove wrapper from language selector and move to ui module
* chore: rename SettingItem -> SettingsItem
* chore(settings): hover and pointer only for items with action
* feat: add language selector to login page
* feat(wallet): implement transaction history feature
- Add useQueryWalletHistory hook to fetch paginated transaction history from daemon
- Add TxHistoryTable component to render sortable and expandable transaction rows
- Add TxHistoryContent container for handling loading states and batch pagination
- Add TxHistoryOverlay full-screen dialog for viewing complete history
- Integrate inline Recent Activity section into MainWalletPage
- Add translation keys
- Add comprehensive unit tests
Signed-off-by: kishore08-07 <kishorebsm8@gmail.com>
* Update src/i18n/locales/en/translation.json
Co-authored-by: Thebora Kompanioni <theborakompanioni@users.noreply.github.com>
* feat(wallet): migrate transaction history to dedicated page and update dashboard view
- Move transaction history to top-level /wallet/history route and add sidebar link
- Refactor dashboard transaction history into a collapsible accordion section
- Auto-refetch transaction history on UTXO set hash () updates
- Fallback to raw string for unrecognized roles in
- Standardize i18n keys
Signed-off-by: kishore08-07 <kishorebsm8@gmail.com>
* style(wallet): update taker role badge variant to cj-change in TxHistoryTable
Signed-off-by: kishore08-07 <kishorebsm8@gmail.com>
* chore: hide tx history behind feature toggle
---------
Signed-off-by: kishore08-07 <kishorebsm8@gmail.com>
Co-authored-by: Thebora Kompanioni <theborakompanioni@users.noreply.github.com>
Co-authored-by: theborakompanioni <theborakompanioni+github@gmail.com>
* fix: pin toLocaleString() calls to en-US locale
Several number formatting call sites relied on the host machine's default
locale instead of a fixed one, causing inconsistent digit grouping in the
UI and non-deterministic test failures on non-US locales.
* fix: address review feedback, adapt tests instead of hardcoding locale in components
* fix(validation): distinguish testnet and regtest for bech32 addresses
Base58 addresses (p2pkh/p2sh) genuinely collapse between testnet and regtest
because they share version bytes, so bitcoin-address-validation always labels
them testnet - the interchangeable fallback is correct for those. Bech32
addresses, however, carry a distinct HRP (tb1 vs bcrt1) and are already
identified per-network, so gate the fallback on !bech32. This stops a bcrt1
(regtest) address passing on a testnet wallet, and vice versa.
Follow-up to #1355.
* docs(test): correct base58 address type in comment (P2PKH, not P2SH)
* test(validation): pin testnet/regtest separation for bech32m taproot addresses
* fix(wallet): keep jars visible and clickable during background refetch
Gate the jars grid on isLoading instead of isFetching, matching the balance display above it. isFetching is true on every background refetch, so the jars (and the Jar Details overlay they open) were being replaced by a spinner any time wallet data refreshed, even though the previous jars were still valid to show.
* test(wallet): assert jars stay visible during background refetch
Update the jars spinner test to match the new isLoading-based gate. The test now asserts that a jar name stays on screen and the background refetch still calls refetch on click, instead of asserting a spinner appears.
* test(wallet): assert jar overlay opens on click during background refetch
* chore(orderbook): improve bond and relative fee display value
* ui(earn): hover effects on fidelity bond and offer cards
* fix: use correct repo url base
* chore(jar-detials): improve confirmations display value
* chore(send): remove dev/prod distinction for minimum collaborators
this is already dynamically done by fetching the backend config value
* chore(send): jars with frozen funds are selectable
* ui(send): justify jars and increase space to precondition alert
* build: fix errors in test setups
* feat(send): open utxo selector on click on selected jar
* test: add tests for Jar and SelectableJar
* chore(ui): frozen balance with class 'invisible' instead of 'hidden'
* ui(receive): justify around jars
* chore(i18n): improve missing source jar utxos message
* fix(receive): save sourceJarIndex before async operation
* chore: flag if address from parsed from bip21 uri
* chore: scan applied alert only when parsed from uri
* refactor(earn): standardize move-to-jar form
* refactor(earn): standardize bond renewal form
* refactor(send): standardize utxo selection form
* chore(settings): remove stale form migration todo
* refactor(earn): rely on form confirmation default