Commit graph

1197 commits

Author SHA1 Message Date
Thebora Kompanioni
ee5770eeeb
chore(ui): improve footer on small screens (#1243)
* chore(footer): align blockheight

* ui(footer): improve footer on small screens

* chore(storybook): add BetaWarningDialog story

* review: remove flex container of footer warning
2026-05-17 21:38:08 +02:00
Parth
0eea853109
chore(storybook): add core component stories (#1247) 2026-05-17 14:42:06 +02:00
Thebora Kompanioni
165d0c4b9c
chore(ui): improve activity indicators (#1249)
Co-authored-by: Kishore B <85435355+kishore08-07@users.noreply.github.com>
2026-05-17 11:02:49 +02:00
Thebora Kompanioni
1de645b7c5
chore(websocket): add JmWebsocketContext (#1244) 2026-05-11 18:46:46 +02:00
Thebora Kompanioni
d851cb9c74
build(deps): update dependencies (#1242)
@storybook/addon-a11y           10.3.5  →   10.3.6
 @storybook/addon-docs           10.3.5  →   10.3.6
 @storybook/addon-vitest         10.3.5  →   10.3.6
 @storybook/react-vite           10.3.5  →   10.3.6
 @tanstack/eslint-plugin-query  5.100.6  →  5.100.9
 @tanstack/react-query          5.100.6  →  5.100.9
 eslint-plugin-compat             7.0.1  →    7.0.2
 eslint-plugin-storybook         10.3.5  →   10.3.6
 jsdom                           29.1.0  →   29.1.1
 storybook                       10.3.5  →   10.3.6
 typescript-eslint               8.59.1  →   8.59.2
 zustand                         5.0.12  →   5.0.13
 react          19.2.5  →  19.2.6
 react-dom      19.2.5  →  19.2.6
 react-i18next  17.0.6  →  17.0.7
 vite            7.3.2  →   7.3.3

 globals           17.5.0  →  17.6.0
 lucide-react      1.13.0  →  1.14.0
 react-hook-form   7.74.0  →  7.75.0
 react-router-dom  7.14.2  →  7.15.0
2026-05-08 17:24:56 +02:00
Thebora Kompanioni
a5d47c8be0
build(ci): report test coverage (#1241) 2026-05-08 17:07:56 +02:00
Kishore B
1b37ad3169
refactor(forms):replace yup path parsing with array-level validation and optimize cross-field checks (#1235)
* refactor(forms):remove yup path parsing, add array-level validation, reducing re-validation

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

* fix(lint): remove type assertions

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

* update resolver and context in SweepPage component

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

---------

Signed-off-by: kishore08-07 <kishorebsm8@gmail.com>
2026-05-06 14:10:51 +05:30
Thebora Kompanioni
454daa2839
chore(regtest): initial joinmarket-ng backend for regtest environment (#1240)
* chore(regtest): initial joinmarket-ng backend for regtest environment

Adds jmwalletd, directory servers, makers, and bitcoind to the regtest
docker-compose environment so jam can be developed against the jm-ng
backend end-to-end.

chore(regtest): wire docker compose env and vite dev proxy for jm-ng

Connects the local regtest containers into a single compose network,
adds tor and fund-wallet helpers, and points Vite's dev proxy at the
local jmwalletd instance.

fix(tags): recognize cj-change, used-empty, and flagged UTXO statuses

joinmarket-ng's WalletService emits four statuses jam's JmPlainTagValue
didn't cover: 'cj-change' (deanonymising change from our CJ),
'used-empty' (previously-used address with zero balance), and 'flagged'
(address shared in a CJ that later failed). They fell through to the
generic 'default' badge with no distinguishing styling.

Add them to JmPlainTagValue and the status->variant map. 'used-empty'
maps to the existing 'used' variant, 'flagged' to 'reused' (both signal
a used address the user should avoid reusing). Add a dedicated
'cj-change' badge variant (emerald) next to 'cj-out' so the
deanonymising change output is visually distinct from an equal-amount
CJ output.

fix(send): keep direct send available with maker

Only block collaborative sends while the maker service is running. Direct sends stay enabled and the form explains why the collaborative toggle is unavailable.

Changelog: Allow direct sends while the maker service is running

docs(dev): explain jm-ng backend workflow

fix(auth): only clear auth on invalid_token 401s

Previously every 401 response cleared the session and logged the user out. jm-ng returns 401 for service-state errors (e.g. POST /tumbler/stop when nothing is running), which should never drop the session. Inspect the WWW-Authenticate header and only clear auth when the server signals ``error="invalid_token"``.

Changelog: Non-auth 401 responses no longer log the user out.

fix(dev): proxy /jmws to the jm-ng HTTPS port

jm-ng serves WebSocket on the same port as the HTTPS API. The `jm-ng:dev` script used to override JMWALLETD_WEBSOCKET_PORT to 32283, but the regtest stack exposes that port without a matching listener, so vite proxied WebSocket upgrades into a dead port and the handshake returned empty. Default the env var to JMWALLETD_API_PORT and drop the override.

Changelog: Fix WebSocket proxying in the local jm-ng dev setup.

fix(dev): correct jm-ng websocket port and proxy targets

Update the README and developer docs to reflect that both ports must be
set when overriding for a custom jm-ng setup.

fix(dev): correct jm-ng websocket port (#1237)

chore(dev): distinct server configs for various backends

* chore(regtest): address jm-ng review comments

---------

Co-authored-by: m0wer <m0wer@sgn.space>
Co-authored-by: Parth Bandwal <143504541+parrth20@users.noreply.github.com>
2026-05-05 13:52:41 +02:00
Parth
f522eae074
fix(earn): try prevent "no confirmed coins" on earn page (#1239)
fix(earn): handle unavailable confirmed balance
2026-05-04 23:55:56 +05:30
theborakompanioni
fd819cf8ca
fix: maxCjFeeRelInPercent validation 2026-05-02 00:22:51 +02:00
Thebora Kompanioni
3cf02afd16
chore: valid number must be finite (#1234)
* chore: valid number must be finite

* chore: add util function isValidInteger

* chore: use isValidNumber and isValidInteger
2026-05-02 00:54:35 +05:30
theborakompanioni
43a1daa752 chore(utxo): fix address group selection 2026-04-30 16:15:21 +02:00
theborakompanioni
16152a4997 chore: disable table 'selection all' toggle on submit 2026-04-30 16:15:21 +02:00
theborakompanioni
00a7dcf055 refactor: rename blockHeightInreased to blockHeightChanged 2026-04-30 16:15:21 +02:00
theborakompanioni
f1783e811f ui(utxo): move tags and confirmation to start 2026-04-30 16:15:21 +02:00
theborakompanioni
4962c0afc6 fix(utxo): disable row selection while operation is in progress 2026-04-30 16:15:21 +02:00
theborakompanioni
d67152b373 fix: do not re-apply initial row selection 2026-04-30 16:15:21 +02:00
theborakompanioni
0b17392c97 chore: reload utxos after blockheight change 2026-04-30 16:15:21 +02:00
theborakompanioni
6a0a4b1932 test: verify total coin supply 2026-04-30 14:00:47 +02:00
theborakompanioni
6108f1b17e fix(fee): tx fee unit input on form resets 2026-04-30 14:00:47 +02:00
theborakompanioni
cfcc5d498f chore(send): min/max for direct send amount 2026-04-30 14:00:47 +02:00
theborakompanioni
161c404614 chore(send): remove duplicate fee config validation 2026-04-30 14:00:47 +02:00
theborakompanioni
5fa9341adf fix: pass value to TxFeeUnitInput 2026-04-30 14:00:47 +02:00
theborakompanioni
2f6d4fc467 refactor: pass fee config to FeeConfigDialog 2026-04-30 14:00:47 +02:00
theborakompanioni
15ac2574c7 test(storybook): add Story for FeeConfigDialog 2026-04-30 14:00:47 +02:00
theborakompanioni
8fbb4894cd test(fees): verify toJamFeeConfigValues 2026-04-30 14:00:47 +02:00
theborakompanioni
3a6bfe7e70 fix(tx-fee): adapt step and use int for min on input 2026-04-30 14:00:47 +02:00
theborakompanioni
0f90fc786d fix(eslint): remove unused memo dependency 2026-04-30 14:00:47 +02:00
theborakompanioni
fb96cb709d refactor(fee-dialog): move and rename FeeLimitDialog to FeeConfigDialog 2026-04-30 14:00:47 +02:00
theborakompanioni
6a54006a30 refactor(fee-dialog): provide factors as string without number conversion 2026-04-30 14:00:47 +02:00
theborakompanioni
40435ee217 fix: correctly apply feeFactor for jam fee settings 2026-04-30 14:00:47 +02:00
theborakompanioni
c0773f4a35 chore(ui): add AlertIcon to collapsible content title on errors 2026-04-30 14:00:47 +02:00
theborakompanioni
b383911abb refactor(fees): type-safe fee values conversion 2026-04-30 14:00:47 +02:00
theborakompanioni
efe4b2e5e7 chore(fee-dialog): add nested TxFeeForm 2026-04-30 14:00:47 +02:00
theborakompanioni
98920cf279 chore(send): add nested TxFeeForm 2026-04-30 14:00:47 +02:00
theborakompanioni
fbb8b15051 feat(send): add tx fee to send request 2026-04-30 14:00:47 +02:00
theborakompanioni
768918ab8e feat(send): add tx fee input to send form 2026-04-30 14:00:47 +02:00
theborakompanioni
5dbb5dbdf8
cleanup: remove legacy from v2 merge 2026-04-29 10:11:37 +02:00
Thebora Kompanioni
79915db774
build(deps): update dependencies and fix eslint violations (#1230)
* build(deps): update dependencies

 @tailwindcss/vite               4.2.2  →    4.2.4
 @tanstack/eslint-plugin-query  5.99.0  →  5.100.1
 @tanstack/react-query          5.99.0  →  5.100.1
 prettier-plugin-tailwindcss     0.7.2  →    0.7.3
 react-i18next                  17.0.2  →   17.0.4
 react-router-dom               7.14.1  →   7.14.2
 tailwindcss                     4.2.2  →    4.2.4
 typescript                      6.0.2  →    6.0.3
 @scure/bip32                    2.0.1  →    2.2.0
 @scure/bip39                    2.0.1  →    2.2.0
 eslint-plugin-react-hooks       7.0.1  →    7.1.1
 lucide-react                    1.8.0  →    1.9.0
 react-hook-form                7.72.1  →   7.73.1
 typescript-eslint              8.58.2  →   8.59.0

* chore(build): fix violations after eslint plugin updates

* chore: check window availability in useIsMobile

* build(deps): update dependencies

 @tanstack/eslint-plugin-query  5.100.1  →  5.100.6
 @tanstack/react-query          5.100.1  →  5.100.6
 prettier-plugin-tailwindcss      0.7.3  →    0.7.4
 react-i18next                   17.0.4  →   17.0.6
 typescript-eslint               8.59.0  →   8.59.1

* build(deps): update dependencies

 jsdom                        29.0.2  →  29.1.0
 lucide-react                  1.9.0  →  1.13.0
 prettier-plugin-tailwindcss   0.7.4  →   0.8.0
 react-hook-form              7.73.1  →  7.74.0

* build(ci): check format

* chore(ci): run pipeline for master and devel
2026-04-29 10:07:37 +02:00
Parth
c22d59eaed
refactor(forms): use react-hook-form for sweep and fidelity bond flows (#1224)
* refactor(sweep): add destination form schema

* refactor(sweep): use react-hook-form for destinations

* refactor(earn): add fidelity bond form schema

* refactor(earn): use react-hook-form in fidelity bond wizard

* refactor(earn): improve fidelity bond schema jar validation

* refactor(earn): fix stable utxo watch defaults in wizard

* refactor(sweep): use stable defaults for destination watch

* test(sweep): use regtest addresses in sweep schema tests

* refactor(earn): align fidelity bond source jar form shape
2026-04-29 03:11:30 +05:30
theborakompanioni
efa22b92e5
chore: clear auth and query cache only if authenticated
e.g. does not clear wallet query on invalid login attempts
2026-04-27 12:01:47 +02:00
theborakompanioni
eed2ca4373
chore(ui): fix height of mnemonic verification container 2026-04-27 10:55:07 +02:00
Anurag Mishra
1ade350915
fix: prevent dev mode wallet autoreload loop (#1214)
- replace useQuery with useEffect
- use useRef to track previous rescan to prevent rerenders on rescan status change
2026-04-26 18:38:29 +02:00
Ash
998bdf7812
fix(settings): render-phase state update in AccountXpubsDialog (#1223)
fix(settings): cleanup render state updates, stabilize seedQueryOptions, and related fixes
2026-04-25 21:04:02 +02:00
theborakompanioni
37b2c438ab
chore(storybook): stable query client in preview 2026-04-25 19:44:54 +02:00
Thebora Kompanioni
be033ee83a
chore(build): remove console.debug from prod build (#1216)
chore(build): remove console.debug statements in prod build
2026-04-20 00:08:36 +05:30
Kishore B
49b11e2028
refactor(wallet): use tanstack table state in wallet tables (#1218) 2026-04-19 12:23:55 +02:00
Kishore B
5106b8bc1a
refactor(orderbook): use tanstack table state in orderbook table (#1217)
Signed-off-by: kishore08-07 <kishorebsm8@gmail.com>
2026-04-17 21:52:59 +02:00
Ashish Kumar Dash
7f640a2b87
fix: align api client path encoding (#1209) 2026-04-17 00:39:11 +02:00
theborakompanioni
1cc492bc7a build(deps): update dependencies
@chromatic-com/storybook        5.1.1  →   5.1.2
 @noble/hashes                   2.0.1  →   2.2.0
 @tanstack/eslint-plugin-query  5.97.0  →  5.99.0
 @tanstack/react-query          5.97.0  →  5.99.0
 globals                        17.4.0  →  17.5.0
 prettier                        3.8.2  →   3.8.3
 react-router-dom               7.14.0  →  7.14.1
 typescript-eslint              8.58.1  →  8.58.2
2026-04-17 00:31:12 +02:00