feat(desktop): the globe draws each pool member where it shares it is #595

Merged
admin merged 1 commits from feat/globe-shared-places into dev 2026-10-21 03:45:21 +00:00
Owner

Part of #573. Since #592, a member's pin reaches its pool, rounded on the member's machine as its owner chose. The coordinator's local ListWorkers gives each worker's shared_location. This PR puts it on the globe:

  • The coordinator's globe draws each member at the place it shares. A member that shares nothing stays in the middle of the country its address is in, as before. A member known only as a worker, not as a libp2p peer, is drawn too.
  • The places are read again whenever the node's state changes, the same way the owner's own pin is (#590). A node that coordinates no pool gets nothing and draws as before.
  • Markers move only when a place really changes: the marker key now includes the coordinates.
  • The hover label drops the country code when it isn't known.

Tests

  • dev/globe-markers.test.mjs adds cases for:
    • a shared place winning over the country;
    • a member known only by its shared place;
    • a moved place changing the key;
    • places read from either client, including proto3's left-out zeros;
    • nonsense being left out.
  • All 160 unit tests and the typecheck pass.
  • Locally, against a daemon built from dev, I ran three e2e tests and they pass: "the window shows the node it is connected to", "a window with WebGL offers the topology", and "the topology canvas stays mounted…".
  • Seeing two real members on the globe needs the laptop and the R620 together, which I'll check with the owner.

The docs are updated in docs/user-guide.md and apps/sisyphus/README.md.

Part of #573. Since #592, a member's pin reaches its pool, rounded on the member's machine as its owner chose. The coordinator's local `ListWorkers` gives each worker's `shared_location`. This PR puts it on the globe: - **The coordinator's globe draws each member at the place it shares.** A member that shares nothing stays in the middle of the country its address is in, as before. A member known only as a worker, not as a libp2p peer, is drawn too. - **The places are read again whenever the node's state changes**, the same way the owner's own pin is (#590). A node that coordinates no pool gets nothing and draws as before. - **Markers move only when a place really changes:** the marker key now includes the coordinates. - **The hover label** drops the country code when it isn't known. **Tests** - `dev/globe-markers.test.mjs` adds cases for: - a shared place winning over the country; - a member known only by its shared place; - a moved place changing the key; - places read from either client, including proto3's left-out zeros; - nonsense being left out. - All 160 unit tests and the typecheck pass. - Locally, against a daemon built from dev, I ran three e2e tests and they pass: "the window shows the node it is connected to", "a window with WebGL offers the topology", and "the topology canvas stays mounted…". - Seeing two real members on the globe needs the laptop and the R620 together, which I'll check with the owner. The docs are updated in `docs/user-guide.md` and `apps/sisyphus/README.md`.
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Sisyphus/Sisyphus#595