Repository navigation
feat(exo-1f9): members share accounts of their own with the room; releases ship every platform - #346
Merged
Merged
Conversation
… a LEZ multisig can be set up with it
A member puts an account their muster keystore holds in front of the room (a LEZ public
account first), so anyone in the room can use it where an account of theirs is needed.
- coordination/member_accounts.nim: member/<who>/account/<address>, author-signed, with
the account key's BIP-340 proof over hash-input "muster.member-account.v1" {room, member,
chain, kind, key}. It counts only for the member it proves, only in this room, and only
for the first member who proved that key; /retract takes it back. The keystore label is
never sent: crypto/account_labels.nim derives the candidates (lez-member/0, the paying
account; lez-account/<n>, fresh ones).
- lez-msig: lez_msig_open {accounts: {identity: key}} picks, for a member, an account they
shared, as their approval key. It counts as their join, so their client derives no fresh
key. The driver, settlement and proposing find the member's key through myMsigLabel (the
derived key or a shared account, whichever the config holds). An account the member did
not share is refused at open.
- hosted: coordinate_disclose_my_account / coordinate_member_accounts /
coordinate_retract_my_account.
- UI: "Accounts members shared" in the room's accounts panel (Share a new LEZ account,
Share my paying account, Stop sharing), and, in the LEZ multisig form, each member's
approval key: a new one, or one of the accounts they shared.
Tested-Behavior: member_accounts_test 5/5 (disclosure and proof; another member's key, another room's proof, an unauthored one all refused; retract; a multisig set up with Bob's account: his join, the config's key, his approval counted; his proposal); lez_msig_live_e2e §7 on a local LEZ v0.3 zone: the program paid on Bob's approval signed with his shared account; probe_return_marshalling_host; ui-lint 0 new; check-action-corpus
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Session-Id: 82cf96d0-9403-5a71-95d3-2ef04ee3e51c
… shared accounts (exo-1f9) catalog-release.sh takes muster_module and muster_ui from the lgx variants run that built HEAD (linux-amd64, linux-arm64, darwin-arm64, merged into one .lgx per package). When no run built HEAD, it dispatches the workflow on HEAD's pushed branch and waits for it. --here builds on this host for its platform only, as every release before this one did. lez_msig_module is still built here, for linux-amd64. RELEASING.md and CLAUDE.md follow, and docs/design/lez-msig.md §8 describes approval keys from accounts members shared. TDD-Exempt: release script and docs; exercised by the next release (the run lookup, the dispatch-and-wait, --from-run's existing checks) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Session-Id: 82cf96d0-9403-5a71-95d3-2ef04ee3e51c
Seen on a display: the name field and the two share buttons sat in one row whose minimum width exceeded the room details panel. The ColumnLayout then widened every filled child to match, so the caption and "Add an account" were clipped at the panel's edge. The name field now has a row of its own, the buttons wrap in a Flow, and an account's line wraps rather than setting the row's width. The section is renamed "Members' own accounts", so it is not read as the room's shared accounts above it. Tested-Behavior: ui-lint 0 new; looked at again on a display after the rebuild Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Session-Id: 82cf96d0-9403-5a71-95d3-2ef04ee3e51c
…ount proposes on chain Seen on a display: A shared "savings", picked it as its own approval key, and created a 2-of-2; the program's config holds that key. Fixed what looking showed: - the form said every member takes part "with a new key", which a picked account makes untrue; now "unless you pick an account they shared below"; - Create sat beside the threshold fields, truncated in the narrow panel, above the key pickers it depends on. It now has its own row, after the pickers; - the name field kept its text after sharing. lez_msig_live_e2e §7 now also has Bob propose from his shared account: the program checks the proposer's signature with that key, and pays. Tested-Behavior: lez_msig_live_e2e 7/7 on a local LEZ v0.3 zone (§7: paid on Bob's approval and on his proposal, both signed with his shared account); ui-lint 0 new Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Session-Id: 82cf96d0-9403-5a71-95d3-2ef04ee3e51c
TDD-Exempt: issue tracker events only Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Session-Id: 82cf96d0-9403-5a71-95d3-2ef04ee3e51c
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
member/<who>/account/<address>is author-signed and carries the account key's BIP-340 signature over hash-inputmuster.member-account.v1{room, member, chain, kind, key}. So it counts only for that member, only in this room, and only for the first member who proved that key./retracttakes an account back.crypto/account_labels.nim:lez-member/0, the paying account;lez-account/<n>, fresh ones).coordinate_disclose_my_account,coordinate_member_accounts,coordinate_retract_my_account.lez_msig_open {accounts: {identity: key}}picks, for any member, one of the accounts they shared as their approval key. It counts as their join, so their client derives no fresh key.myMsigLabel: the derived key or a shared account, whichever the config holds.catalog-release.shtakesmuster_moduleandmuster_uifrom thelgx variantsrun that built HEAD (linux-amd64, linux-arm64, darwin-arm64). When no run built HEAD, it dispatches one and waits.--herebuilds for this host only, as every release so far did.Tests
module/tests/run-suite.sh: 278/278.member_accounts_test5/5:lez_msig_live_e2e§7 on a local LEZ v0.3 zone: the program paid on Bob's approval and on his proposal, both signed with his shared account.scripts/ui-parity.sh12/12;scripts/ui-lint.sh0 new;check-action-corpus(newroom/share-my-account).🤖 Generated with Claude Code