Skip to content

20260923 - One Send link button for the node claim - #96

Merged
Purple10101 merged 1 commit into
mainfrom
20260923-claim-single-send-button
Sep 23, 2026
Merged

Purple10101 merged 1 commit into
mainfrom
20260923-claim-single-send-button

Conversation

@Purple10101

Copy link
Copy Markdown
Collaborator

Replaces the claim section's Save and Send again with a single Send link button. The other half of Unclaim & Reclaim Fail, with offworldlabs/retina-telemetry#22.

Why

On jonathan-node-1 the owner released the node from the dashboard, then neither button produced a link.

Save was the trap. Saving an address the node already held wrote an identical file, so retina-telemetry could not see the press and sent nothing. After a release the address never changes, so Save could never ask again. Send again reached the node but was a resend, and a release clears the address a resend mails to. retina-telemetry#22 fixes that half.

What changes

Every press of Send link stamps send_requested_at beside the address. One press is one email, whatever state the claim is in, and nothing is sent without a press. The node still decides the call, as before:

Press on retina-telemetry sends
A new or changed address PUT /nodes/claim (the stamp beside it counts as answered)
The same address, server still holds it (declined, pending) POST /nodes/claim/resend
The same address on a released node PUT /nodes/claim (needs retina-telemetry#22)
  • An empty box on Send removes the record, as an empty Save did. It never unclaims the node.
  • The button is disabled while the node reads Owned, with a hint to release from the dashboard. A resend is refused there, and a new address would be offering somebody else's node.
  • /set-up/claim loses its resend flag and the requested key in its answer. The page was their only caller.
  • save_telemetry_claim loses request_send and no longer carries an old stamp forward, since there are no plain saves left for that to protect.

Order of release

Either order is safe. With this and a retina-telemetry that lacks #22, the only case still broken is the released node, exactly as today. #22 without this fixes Send again but leaves Save as a silent no-op after a release.

Verification

  • ruff check ., pre-commit run --all-files and the full pytest suite (942) pass, run on a clean checkout of origin/main plus this change.
  • New tests: the same address sent again moves the stamp, and the button is disabled when Owned and enabled when not.
  • Not yet run on a node.

🤖 Generated with Claude Code

Reported on jonathan-node-1 (ClickUp 123zgec4mb1): after releasing the node
from the dashboard, neither Save nor Send again produced a claim link.

Save was the trap. Saving an address the node already held wrote an
identical file, so retina-telemetry could not see the press and sent
nothing. After a release that was the whole story: the address never
changed, so Save could never ask again.

The claim section now has one button, Send link, and every press stamps
send_requested_at beside the address. One press is one email, whatever
state the claim is in, and nothing is sent without one. retina-telemetry
still chooses the call: a changed address is a PUT, the same address is a
resend, and the same address on a released node is a PUT again
(offworldlabs/retina-telemetry#22).

- An empty box on Send removes the record, as an empty Save did.
- The button is disabled while the node reads Owned, where a resend is
  refused and a new address would be offering somebody else's node.
- The route loses its resend flag and the save no longer carries an old
  stamp forward, since there are no ordinary saves left for it to protect.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@Purple10101
Purple10101 merged commit 545c5f1 into main Sep 23, 2026
3 checks passed
@Purple10101
Purple10101 deleted the 20260923-claim-single-send-button branch September 23, 2026 15:24
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