Repository navigation
Give an owner a page to move or remove their polled radar - #624
Conversation
Moving an owner's radar to a new address is the same two steps as registering one: probe the address, show what the radar declares there, then send the fingerprint of what the owner saw, handling a config_changed refusal by showing the new declaration to confirm. The registration page held that state machine and its cards inline. useRadarCheck now holds the state and the refusal handling, and components/PolledRadar.tsx the address card, the declaration card and the unprotected notice, so the owner's radar page can use them without a second copy. The registration page behaves as before; its tests pass unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This comment has been minimized.
This comment has been minimized.
The backend has let an owner move a polled radar to a new address and remove it since #616, and shows them its address and liveness since #619, but nothing in the console reached any of it. Registration stays switched off until the owner can see, move and remove what they registered. /radars/:ref is that page: the address the server polls, liveness in words (waiting for its first answer, streaming, answering with no new frames, not answering), whether a password protects it, and whether an administrator has reviewed it, refreshed every 10 s. Changing the address is registration's check-and-confirm, addressed by node_id, and is offered only where the server takes registrations, since it answers 404 elsewhere. Removing asks first, then returns to My nodes. It is its own page rather than a card on the node detail page because that page reads per-node analytics and says "Node not found" until a node's first frame, which a radar at a wrong address never sends. The detail page's ownership card now sends a polled radar's owner there instead of offering Release, whose wording (whoever claims it next) is untrue of a radar that removal retires. My nodes links every node by its ref, a polled radar to its radar page and any other node to its detail page; until now the list linked nowhere, so a newly registered radar could not be reached. Ref: 123zgec4bb2 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
d2c1de5 to
483a8f0
Compare
|
Claude finished @Babissimo's task in 1m 39s —— View job Review: PR #624 — Give an owner a page to move or remove their polled radar
Note on tooling: This sandbox has no network access ( FindingsNo correctness, security, or contract issues found. This is a clean extraction + addition, and matches the PR description closely:
Nothing to flag. The one caveat, as above, is that I could not execute the test suite, |
PR 3 of 6 for subtask 8, Owner and admin views for polled nodes: the owner's side in the console. Dashboard only; the endpoints it calls came in #616 and #619.
What the owner gets
/radars/:ref, a page per polled radar. It shows:The page refreshes every 10 s. From it the owner can:
My nodes links every node by its ref. A polled radar goes to its radar page and any other node to its detail page. Until now the list linked nowhere, so a newly registered radar could not be reached.
The detail page's ownership card sends a polled radar's owner to the radar page instead of offering Release. Release's wording ("whoever claims it next") is untrue of a radar that removal retires.
Why a page of its own
The node detail page reads per-node analytics and says "Node not found" until a node's first frame. A radar at a wrong address never sends one, and that is the radar whose owner most needs to change its address.
Commits
useRadarCheckandcomponents/PolledRadar.tsxcome out of the registration page unchanged in behaviour, and its 10 tests pass untouched.Testing
vitest: new tests cover each flow:
config_changedshows the new declaration beside the pins;endpoint_registeredshows the refusal beside the button;26 of 26 mutations of the new behaviour are caught. tsc is clean, and eslint adds no new warnings.
In a browser, against the console stub (Vite plus a stub backend):
There were no console errors.
Not tested
🤖 Generated with Claude Code