feat(desktop): show where workers join a pool the app hosts #548

Merged
admin merged 1 commits from feat/hosting-address-overview into dev 2026-10-20 03:19:13 +00:00
Owner

Closes #529. This is the second of the two PRs agreed in #545; the first was #546.

What changes

While the app's own node hosts a pool, Node overview gets a card titled "Other machines join this pool here". It shows:

  • the address, or addresses, workers give as --coordinator, each with a copy button. With All interfaces, each of this computer's own addresses is listed.
  • on Windows, a firewall rule to run once in PowerShell as administrator, with a copy button:
    netsh advfirewall firewall add rule name="Sisyphus pool (TCP 7700)" dir=in action=allow protocol=TCP localport=7700 profile=private
    The rule is scoped to the pool port, inbound TCP, on private networks only, as agreed: the app shows the command and does not run anything with elevation.
  • on other systems, one line naming the port the firewall must allow.

If the saved address was not this computer's when the app started, the card shows the same warning as Settings instead.

The card is not shown for a node the app did not start, or while hosting is off. To do this, the hosting state now also carries platform.

Tests

  • dev/pool-hosting-settings.test.mjs: the addresses a worker is told (one chosen address, or all of this computer's when listening on all interfaces), and the exact firewall command.
  • e2e: against a node the app did not start, Node overview has no hosting card.
  • Checked by hand on the R620 under xvfb, with the app starting its own node:
    • Hosting on 192.168.137.100:7799: the card showed 192.168.137.100:7799 and the firewall line, and the node found 3 peers through discovery.
    • Hosting on 10.99.99.99: the card showed the warning.
  • npm test (120 passing), tsc and npm run build pass.

Docs: the user guide and part 4 of docs/multi-machine-test.md say where to find the address and the firewall command.

Closes #529. This is the second of the two PRs agreed in #545; the first was #546. **What changes** While the app's own node hosts a pool, **Node overview** gets a card titled "Other machines join this pool here". It shows: - the address, or addresses, workers give as `--coordinator`, each with a copy button. With **All interfaces**, each of this computer's own addresses is listed. - on Windows, a firewall rule to run once in PowerShell as administrator, with a copy button: `netsh advfirewall firewall add rule name="Sisyphus pool (TCP 7700)" dir=in action=allow protocol=TCP localport=7700 profile=private` The rule is scoped to the pool port, inbound TCP, on private networks only, as agreed: the app shows the command and does not run anything with elevation. - on other systems, one line naming the port the firewall must allow. If the saved address was not this computer's when the app started, the card shows the same warning as Settings instead. The card is not shown for a node the app did not start, or while hosting is off. To do this, the hosting state now also carries `platform`. **Tests** - `dev/pool-hosting-settings.test.mjs`: the addresses a worker is told (one chosen address, or all of this computer's when listening on all interfaces), and the exact firewall command. - `e2e`: against a node the app did not start, Node overview has no hosting card. - Checked by hand on the R620 under xvfb, with the app starting its own node: - Hosting on `192.168.137.100:7799`: the card showed `192.168.137.100:7799` and the firewall line, and the node found 3 peers through discovery. - Hosting on `10.99.99.99`: the card showed the warning. - `npm test` (120 passing), `tsc` and `npm run build` pass. **Docs:** the user guide and part 4 of `docs/multi-machine-test.md` say where to find the address and the firewall command.
excho0 approved these changes 2026-10-20 02:52:17 +00:00
excho0 left a comment
Owner

Reviewed the hosting overview flow and its boundary with the daemon. The card is limited to app-managed hosting, the Windows command is scoped to the configured TCP port and private profile, and the control API remains loopback-only. The issue checklist now tracks the overview work in this PR. /cc @rvnminers-A-and-N

Reviewed the hosting overview flow and its boundary with the daemon. The card is limited to app-managed hosting, the Windows command is scoped to the configured TCP port and private profile, and the control API remains loopback-only. The issue checklist now tracks the overview work in this PR. /cc @rvnminers-A-and-N
Sign in to join this conversation.
No Reviewers
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Sisyphus/Sisyphus#548