Skip to content

feat: retire relay fleet reports and browser offline notices - #28

Merged
frahlg merged 2 commits into
mainfrom
feat/relay-retirement
Oct 17, 2026
Merged

frahlg merged 2 commits into
mainfrom
feat/relay-retirement

Conversation

@frahlg

@frahlg frahlg commented Oct 17, 2026

Copy link
Copy Markdown
Member

This removes the last runtime services that still need the Frankfurt relay: anonymous daily fleet totals and the browser's encrypted box.unreachable notices. Remote app sessions already use /v1/box and /v1/app.

POST /v1/fleet accepts only the existing seven-field report. It reduces reports to bounded daily counts, keeps 90 days and stores no raw report, home id or source address. Public requests cannot read totals. Operators read /fleet/stats on the loopback listener with ftwcloudd fleet.

Browser notices arrive as optional rows in the box-signed, service-only roster. The box keeps all encryption and signing keys. Delivery uses the existing APNs outage timer, update grace, retry queue and deploy drain. It checks the current roster device, epoch, events scope and suspension on every try, without requiring the separate readable-copy grant. Per-outage sent markers survive a restart and disappear on home purge. HTTPS delivery refuses redirects, proxies and local resolved destinations. No old relay path, deadman HTTP API or fallback is added.

Paired protocol source: srcfl/ftw#1687. Merge that first, deploy this service next, then publish the Core retirement beta. The pin names that PR's protocol source; it will remain an ancestor of Core master. Native client retirement: srcfl/ftw-app#83; web client shipped in srcfl/ftw-webapp#95. Cloud #14 and Core #1633 contain the paused relay-port proposal; this change does not use it.

Validation: go vet ./..., go test -race ./..., go test -tags ftwclouddev ./..., import boundary check; concurrency and 90-day fleet retention, restart persistence, invalid fields and HTTP bounds; encrypted bytes unchanged, browser-only delivery, retry without duplicate APNs, update grace/reconnect, grant/epoch/revoke/suspension/unsubscribe, VAPID expiry, private IP/DNS refusal. The full race suite is also run against the pinned public module with GOWORK=off. No real browser push vendor delivery is claimed.

Non-test Go growth: fleet service +93 lines, browser delivery +193, registry +144, command wiring about +26, push about +16 and HTTP/uplink about +15. Browser delivery reuses the existing timer and queue. This adds no second session service.

Signed-off-by: Fredrik Ahlgren <fredrik@sourceful-labs.com>
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 17, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-17T07:07:29.432693Z 41bb22a PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 41bb22a3e3

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread cmd/ftwcloudd/main.go
Comment thread internal/push/push.go Outdated
Comment thread internal/registry/fleet.go Outdated
Signed-off-by: Fredrik Ahlgren <fredrik@sourceful-labs.com>
@frahlg
frahlg merged commit 3aeb980 into main Oct 17, 2026
2 of 3 checks passed
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