Skip to content

Documentation cleanup with new naming convention for the application … - #118

Merged
ShahanaFarooqui merged 1 commit into
ElementsProject:mainfrom
ShahanaFarooqui:docs-cleanup
Jul 10, 2025
Merged

Documentation cleanup with new naming convention for the application …#118
ShahanaFarooqui merged 1 commit into
ElementsProject:mainfrom
ShahanaFarooqui:docs-cleanup

Conversation

@ShahanaFarooqui

Copy link
Copy Markdown
Collaborator

…version

@ShahanaFarooqui
ShahanaFarooqui merged commit f9dcb47 into ElementsProject:main Jul 10, 2025
3 checks passed
8144225309 referenced this pull request in 8144225309/superscalar-wallet May 20, 2026
…121)

Closes the wallet-side gap that left handleJoin as a UI-state-only stub.
Clicking 'Join Factory' on a vouch-discovered LSP now:

1. Opens a JoinFactoryModal with the LSP's pubkey + lnAddresses (from
   the rendezvous vouch).
2. Modal fires factory-browse-host { node_id, address } — the plugin
   auto-connect helper (superscalar-cln task #118) uses the address
   hint to establish BOLT-8 peering before sending FACTORY_INFO_REQUEST.
3. Renders the LSP's advertised factories in a table; user picks one
   via radio button and enters a contribution amount (default 100k sat).
4. Fires factory-join-request { lsp_node_id, instance_id,
   contribution_sats, address } and surfaces the request_id / status /
   reason from the plugin response.

Service layer additions (apps/frontend/src/services/http.service.ts):
  FactoriesService.browseHost(peerNodeId, address?, sinceBlock?)
  FactoriesService.joinRequest(lspNodeId, instanceIdHex, contributionSats, address?)
  FactoriesService.cancelJoinRequest(requestId)

Sample-mode rows still use the legacy local-state stub since they're
not real LSPs.

Companion to superscalar-cln tasks #118 (RPC-level auto-connect) and
#120 (send_factory_msg auto-reconnect). Together: the UI Join button
now drives a real BOLT-8 + custommsg exchange, and the resulting
ceremony fan-out reconnects each participant before sending PROPOSE.
8144225309 referenced this pull request in 8144225309/superscalar-wallet May 29, 2026
Closes the final gap in the join-by-strangers flow. Today:

  - Coordinator-advertised LSPs show up in the Open Factories list
    → click row → Join Factory button → JoinFactoryModal browses
    the LSP and lets you pick a factory.
  - Someone with a full superscalar://join?... URL pastes it into
    "Join via invite link" → AcceptInviteModal parses + fires the
    join request.

The missing case: a friend DMs you "my LSP is <pubkey>@<host:port>,
come browse my factories." Nothing to paste into invite link (no iid
yet — you haven't picked which factory), and not in the coordinator
list. You're stuck with manual lightning-cli, or copying the pubkey
and creating a fake invite URL by hand.

New ManualConnectModal lets you type a pubkey + address and pops
the existing JoinFactoryModal to browse what factories the LSP
hosts. No new plugin RPC: factory-browse-host already takes a
peer + address hint, and the plugin's auto-connect helper
(PR #118) does the BOLT-8 hop.

What ships:
  - apps/frontend/src/components/connect/ManualConnectModal/
    ManualConnectModal.tsx — modal with pubkey + address + optional
    alias fields, validation, and a paste-helper that splits
    <pubkey>@<host:port> if you paste the full CLN connect format.
  - apps/frontend/src/components/connect/ConnectList/ConnectList.tsx —
    new "Connect to LSP manually ›" button next to the existing
    "Join via invite link ›" button. On submit, constructs a
    synthetic FactoryRow with the user's pubkey + alias + lnAddresses
    and routes it to the existing JoinFactoryModal flow.
  - The two trigger buttons share a flex row instead of stacking,
    cleaning up the rough </Card>/<div> formatting that was there.

testids: manual-connect-modal, manual-connect-pubkey,
manual-connect-address, manual-connect-alias, manual-connect-submit,
manual-connect-error, open-manual-connect.

Validation:
  - pubkey: 66 hex chars (33 bytes secp256k1 compressed)
  - address: host:port format (host shape NOT strict — IPv4 / IPv6 /
    .onion / DNS all valid, CLN's connectd does real check)
  - address optional if already a peer (peer is reused)

Closes the wallet-side of task #119. With this + the existing
InviteModal + AcceptInviteModal + browse-from-known-LSP path, every
practical out-of-band onboarding flow is supported.
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