Skip to content

feat(exo-408): Settings shows the Bitcoin address a split's share is paid from (revives #289) - #330

Merged
corpetty merged 3 commits into
mainfrom
revive/289
Oct 17, 2026
Merged

corpetty merged 3 commits into
mainfrom
revive/289

Conversation

@corpetty

Copy link
Copy Markdown
Owner

Revives #289 by rebasing it onto current main. The only conflict was Settings.qml, where main had reorganized the identity section: the Bitcoin key row was already there, one level deeper. I kept main's layout and inserted only this PR's new block (the payer-address rows) after the key row, re-indented to match. Also carries a pebbles note (exo-80b) for #321.

Re-tested on main (2026-10-17):

  • suite 263/263, including the new btc_payer_address_test with BIP-173 vectors;
  • both .lgx packages build;
  • ui-lint has only the 2 baseline-new findings already on main;
  • on display, in Basecamp 0.3.2 (release AppImage, this build installed): Settings → Advanced shows the rows under Your Bitcoin key, each with Copy: mainnet bc1q…, testnet · testnet4 · signet tb1q…, regtest bcrt1q….

Original description:

Item 12 of exo-408. A Bitcoin split's debtor pays from wpkh(<their muster key>), with coins from their own node, but no screen showed that address, only the key.

  • payerAddresses (bitcoin/script) gives wpkh of the key on every network, pinned to BIP-173's own vectors.
  • identity() and settings() return it as btcPayers: [{network, chain, address}].
  • Settings lists one address per bech32 prefix, naming the networks that share it (testnet, testnet4 and signet all use tb1…), each with Copy.
  • identity()'s contract description, stale since the two-identity model, now names what it returns.

Tests:

  • btc_payer_address_test: the BIP-173 mainnet and testnet vectors, and one row per network with its own chain and prefix.
  • The Bitcoin tests pass (8/8).
  • nim check of the hosted module is clean, and ui-lint has no findings.
  • A new gallery fixture, settings-btc-payer, was recorded from scripts/split-self-test.sh on a runner built with this change and asserts the rows are visible.

🤖 Generated with Claude Code

…paid from

Item 12 of exo-408. A Bitcoin split's debtor pays from wpkh(<their
muster key>), coins from their own node, but no screen showed that
address, only the key. payerAddresses (bitcoin/script) gives wpkh of
the key on every network; identity() and settings() return it as
btcPayers; Settings lists one address per bech32 prefix, naming the
networks that share it, with Copy. identity()'s contract description,
stale since the two-identity model, now names what it returns.

Tested-Behavior: btc_payer_address_test 1-2 (BIP-173's mainnet and testnet vectors for the generator key; one row per network with its chain and prefix); Bitcoin tests 8/8; nim check of muster_module.nim clean; ui-lint 0 findings

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Session-Id: 4184ac11-a506-5256-a1c3-4f1e988410ce
Recorded from scripts/split-self-test.sh on a runner built with the change; the fixture asserts the payer rows are visible.

Tested-Behavior: gallery settings-btc-payer (settingsBtcPayer visible, 0 QML warnings); settings fixture unchanged

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Session-Id: 4184ac11-a506-5256-a1c3-4f1e988410ce
TDD-Exempt: issue tracker only.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Session-Id: dae9f1e7-9a60-57e2-8d29-9afc3c6527d1
@corpetty
corpetty merged commit 7eb7f83 into main Oct 17, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant