Commit graph

1345 commits

Author SHA1 Message Date
Thebora Kompanioni
a1abd6c7e6
feat: add language selector to login page (#1431)
Some checks are pending
Build / build (v26.5.0) (push) Waiting to run
CodeQL / Analyze (push) Waiting to run
Deploy Storybook / deploy (push) Waiting to run
* 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
2026-08-13 11:53:27 +05:30
Anirudh Patwal
0b707f44fc
fix(a11y): make settings rows keyboard-accessible (#1430)
Some checks are pending
Build / build (v26.5.0) (push) Waiting to run
CodeQL / Analyze (push) Waiting to run
Deploy Storybook / deploy (push) Waiting to run
2026-08-12 10:55:54 +02:00
Aman Yadav
69423b6b1d
perf(context): optimize combinedUtxosHash from O(n^2) to O(n) (#1424) 2026-08-11 21:18:00 +02:00
Kishore B
d406a18456
feat: add orderbook availability pre-check for send and sweep (#1407) 2026-08-11 20:49:16 +02:00
Kishore B
047a8ab779
refactor(ui): consolidate Send and Sweep precondition alerts (#1402)
Signed-off-by: kishore08-07 <kishorebsm8@gmail.com>
2026-08-11 21:50:55 +05:30
Guflly
d9918b30b0
fix(earn): export complete report as CSV (#1426) 2026-08-11 17:49:57 +02:00
Parth
04c62c12fd
fix(fb): explain missing eligible UTXOs (#1408)
Some checks are pending
Build / build (v26.5.0) (push) Waiting to run
CodeQL / Analyze (push) Waiting to run
Deploy Storybook / deploy (push) Waiting to run
2026-08-11 09:53:42 +02:00
Parth
c832b80a2f
feat(earn): show own offer status in local orderbook (#1420) 2026-08-10 22:04:39 +02:00
theborakompanioni
1535a8148e
chore(build): fix lint warnings in form validation test
Some checks are pending
Build / build (v26.5.0) (push) Waiting to run
CodeQL / Analyze (push) Waiting to run
Deploy Storybook / deploy (push) Waiting to run
2026-08-09 22:58:11 +02:00
GuTS805
6022ed3d41
fix(a11y): make balance visibility toggle keyboard-accessible (#1412) 2026-08-09 21:05:49 +02:00
Aman Yadav
8f9d8d5917
fix(validation): correctly handle zero block height in blockHeightField (#1414) 2026-08-09 20:57:31 +02:00
Anirudh Patwal
56541c5c29
fix(fb): re-freeze fidelity bond utxo when renew/move sweep fails (#1399) 2026-08-09 20:47:48 +02:00
Kishore B
b9f2730a72
feat(wallet): implement wallet transaction history (#1368)
* 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>
2026-08-09 20:44:07 +02:00
theborakompanioni
037bf95784
chore(dev): expose orderbook watcher for dev container 2026-08-09 20:37:53 +02:00
Kishore B
152793a11b
ui(send): improve active collaborative send info (#1413)
* refactor(send): improve active collaborative send alert

Signed-off-by: kishore08-07 <kishorebsm8@gmail.com>

* chore: remove schedulerRunning flag from send alert

* chore(storybook): add ActiveCollaborativeSendAlert story

* chore(ui): ActiveCollaborativeSendAlert is an Item component

* chore(ui): blur forms when maker/taker operation is running

---------

Signed-off-by: kishore08-07 <kishorebsm8@gmail.com>
Co-authored-by: theborakompanioni <theborakompanioni+github@gmail.com>
2026-08-09 17:54:34 +02:00
Thebora Kompanioni
8eef1958a5
build(deps): update dependencies (#1416)
Some checks failed
Build / build (v26.5.0) (push) Has been cancelled
CodeQL / Analyze (push) Has been cancelled
Deploy Storybook / deploy (push) Has been cancelled
@hookform/resolvers            5.5.7  →    5.5.8
 @storybook/addon-a11y         10.5.5  →   10.5.7
 @storybook/addon-docs         10.5.5  →   10.5.7
 @storybook/addon-vitest       10.5.5  →   10.5.7
 @storybook/react-vite         10.5.5  →   10.5.7
 @testing-library/user-event   14.6.1  →   14.6.3
 @types/react                 19.2.17  →  19.2.18
 @types/react-dom              19.2.3  →   19.2.4
 conventional-changelog         8.1.0  →    8.1.1
 eslint-plugin-storybook       10.5.5  →   10.5.7
 storybook                     10.5.5  →   10.5.7
 vite                           8.2.0  →    8.2.1

 @chromatic-com/storybook   5.2.1  →   5.3.0
 @hookform/resolvers        5.5.8  →   5.7.1
 @noble/hashes              2.2.0  →   2.3.0
 globals                   17.8.0  →  17.9.0
 lint-staged               17.2.0  →  17.3.0
 lucide-react              1.28.0  →  1.30.0
 react-hook-form           7.83.0  →  7.84.0
 typescript-eslint         8.65.0  →  8.66.0
2026-08-07 23:26:18 +05:30
Kishore B
28888dbb6d
refactor: externalize hardcoded polling intervals and delays (#1406)
Some checks failed
Build / build (v26.5.0) (push) Has been cancelled
CodeQL / Analyze (push) Has been cancelled
Deploy Storybook / deploy (push) Has been cancelled
* refactor: externalize hardcoded polling intervals and delays

Signed-off-by: kishore08-07 <kishorebsm8@gmail.com>

* refactor(constants): move schedule polling interval dev config to env.dev

Signed-off-by: kishore08-07 <kishorebsm8@gmail.com>

---------

Signed-off-by: kishore08-07 <kishorebsm8@gmail.com>
2026-08-05 18:18:52 +05:30
Thebora Kompanioni
d0326db3e7
chore(ui): align buttons in logs and earn report (#1405)
Some checks are pending
Build / build (v26.5.0) (push) Waiting to run
CodeQL / Analyze (push) Waiting to run
Deploy Storybook / deploy (push) Waiting to run
* chore(report): align buttons

* chore: align search input and button rows in earn report and logs
2026-08-04 22:52:54 +05:30
GuTS805
9fb32af42f
fix: pin toLocaleString() calls to en-US locale (#1400)
* 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
2026-08-04 22:32:48 +05:30
Thebora Kompanioni
4c2a886c6b
chore: print console warning (#1403)
Some checks are pending
Build / build (v26.5.0) (push) Waiting to run
CodeQL / Analyze (push) Waiting to run
Deploy Storybook / deploy (push) Waiting to run
2026-08-03 15:38:34 +05:30
Thebora Kompanioni
4a90f342ff
refactor: use specific address type in ambiguity check (#1404)
Some checks are pending
Build / build (v26.5.0) (push) Waiting to run
CodeQL / Analyze (push) Waiting to run
Deploy Storybook / deploy (push) Waiting to run
2026-08-03 01:03:04 +05:30
Thebora Kompanioni
c70a8892a6
chore(build): remove console.debug from prod build (#1401) 2026-08-03 01:00:28 +05:30
Ash
51a23b4c5a
fix(validation): distinguish testnet and regtest for bech32 addresses (#1395)
Some checks are pending
Build / build (v26.5.0) (push) Waiting to run
CodeQL / Analyze (push) Waiting to run
Deploy Storybook / deploy (push) Waiting to run
* 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
2026-08-02 13:53:24 +05:30
theborakompanioni
1c23525da5
chore(pre-release): v2.0.0-beta.2
Some checks failed
Deploy Storybook / deploy (push) Waiting to run
Build / build (v26.5.0) (push) Has been cancelled
CodeQL / Analyze (push) Has been cancelled
2026-07-31 23:34:03 +02:00
theborakompanioni
471442ad80
chore: improve texts and add more tests for precondition alerts 2026-07-31 23:26:09 +02:00
theborakompanioni
1a22e97cfb
chore(earn): precondition alerts with non-frozen fb warning 2026-07-31 22:44:41 +02:00
theborakompanioni
6d7b0362e3
chore: send/sweep precondition alerts with non-frozen fb warning 2026-07-31 21:13:51 +02:00
theborakompanioni
25246e1690
chore(fb): freeze utxo after creating fb 2026-07-31 17:33:25 +02:00
theborakompanioni
edf97c30a7
chore(fb): freeze utxo after renewing fb 2026-07-31 16:34:17 +02:00
theborakompanioni
f7f4de6ab3
refactor: wrap fidelity bond sweep in mutation 2026-07-31 15:54:45 +02:00
theborakompanioni
0c77dc37aa
chore: allow freezing/unfreezing of fidelity bonds 2026-07-31 13:27:57 +02:00
theborakompanioni
7988595766
test: change mainnet test address placeholders 2026-07-31 13:27:57 +02:00
theborakompanioni
2b69ef3dbb
test(send): more send form schema tests 2026-07-31 13:27:56 +02:00
theborakompanioni
150e880040
fix(send): disallow send from a jar with unfrozen fidelity bond 2026-07-31 13:27:56 +02:00
theborakompanioni
d8e6d6aa15
chore: define error type for manual coin control needed 2026-07-31 13:27:56 +02:00
Thebora Kompanioni
e0d7479711
build(deps): update dependencies (#1390)
Some checks are pending
Build / build (v26.5.0) (push) Waiting to run
CodeQL / Analyze (push) Waiting to run
Deploy Storybook / deploy (push) Waiting to run
* build(deps): update dependencies

 @vitejs/plugin-react   6.0.4  →   6.0.5
 lucide-react          1.26.0  →  1.28.0
 react-router-dom      7.18.1  →  7.18.2
 vite                   8.1.5  →   8.2.0
 @storybook/addon-a11y    10.5.4  →  10.5.5
 @storybook/addon-docs    10.5.4  →  10.5.5
 @storybook/addon-vitest  10.5.4  →  10.5.5
 @storybook/react-vite    10.5.4  →  10.5.5
 @types/node              26.1.1  →  26.1.2
 eslint-plugin-storybook  10.5.4  →  10.5.5
 storybook                10.5.4  →  10.5.5
 @playwright/test           1.61.1  →  1.62.0
 @testing-library/jest-dom   6.9.1  →  6.10.0
 globals                    17.7.0  →  17.8.0

* build: fix vitest warnings after update

* build(deps): update @hookform/resolvers to v5.5.7

* build(deps): update msw-storybook-addon to v3.0.0

note: still uses a deprecated feature as the migration path did not work properly

* build(dev-deps): update jsdom to v30.0.1
2026-07-30 21:25:10 +02:00
Thebora Kompanioni
02115e808a
chore(ci): pin ci actions (#1389) 2026-07-30 21:23:08 +02:00
Brian Soltani
9346804bf8
fix(wallet): keep jars visible and clickable during background refetch (#1392)
* 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
2026-07-30 23:13:42 +05:30
Thebora Kompanioni
306e6b83d1
chore(orderbook): improve bond and relative fee display value (#1384)
* 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
2026-07-30 16:52:44 +02:00
Thebora Kompanioni
59e959da97
fix(earn): disable fidelity bond actions while rescanning (#1373) 2026-07-30 16:52:26 +02:00
Thebora Kompanioni
bce1df33e9
chore(send): jars with frozen funds are selectable (#1370)
* 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
2026-07-30 11:35:19 +02:00
Thebora Kompanioni
d5b38740c7
fix: disable freeze/unfreeze when maker/taker/rescan is active (#1379)
Some checks are pending
Build / build (v26.5.0) (push) Waiting to run
CodeQL / Analyze (push) Waiting to run
Deploy Storybook / deploy (push) Waiting to run
2026-07-30 01:09:50 +05:30
Thebora Kompanioni
864e976772
ui(xpub): colored labels on xpub dialog (#1372) 2026-07-29 19:50:06 +05:30
Parth
ff0a9f229e
fix(receive): block new addresses during rescan (#1367)
* fix(receive): block new addresses during rescan

* test(receive): click disabled address button
2026-07-29 16:50:38 +05:30
Thebora Kompanioni
6490a96714
fix(receive): save sourceJarIndex before async operation (#1369)
Some checks failed
Build / build (v26.5.0) (push) Has been cancelled
CodeQL / Analyze (push) Has been cancelled
Deploy Storybook / deploy (push) Has been cancelled
* 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
2026-07-29 09:18:20 +02:00
Parth
0e24250e3d
refactor: standardize remaining dialog forms (#1358)
Some checks are pending
Build / build (v26.5.0) (push) Waiting to run
CodeQL / Analyze (push) Waiting to run
Deploy Storybook / deploy (push) Waiting to run
* 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
2026-07-28 13:27:08 +05:30
Thebora Kompanioni
01a952ff63
refactor: improve balance summary calculation (#1350)
* chore: store bonded balance in BalanceSummary

* refactor: improve balance summary calculation
2026-07-27 14:48:12 +05:30
Parth
fc1a02cead
refactor(send): standardize jar selector form handling (#1357)
* refactor(send): add jar selector form schema

* refactor(send): use react-hook-form for jar selection
2026-07-27 14:17:04 +05:30
Ash
82cc4762ff
fix(sweep): validate destination addresses against wallet network (#1355)
Some checks are pending
Build / build (v26.5.0) (push) Waiting to run
CodeQL / Analyze (push) Waiting to run
Deploy Storybook / deploy (push) Waiting to run
2026-07-26 21:03:31 +02:00
Thebora Kompanioni
8789e63798
chore: raise coverage thresholds (#1356) 2026-07-26 21:14:44 +05:30