Skip to content

FrameOS Cloud 2/4: cloud login on backends and frames#264

Open
mariusandra wants to merge 2 commits into
cloud-linkfrom
cloud-login
Open

FrameOS Cloud 2/4: cloud login on backends and frames#264
mariusandra wants to merge 2 commits into
cloud-linkfrom
cloud-login

Conversation

@mariusandra

Copy link
Copy Markdown
Collaborator

Summary

Part 2 of the FrameOS Cloud stack (on top of #263; followed by the backups PR and #257).

Cloud sign-in for every FrameOS surface, built on the device-flow link:

  • "Continue with FrameOS Cloud" on /login and the first-run /signup (which can create the first user from a cloud principal), plus the frame's on-device /admin login
  • Explicit identity linking — an email match is not proof of ownership; the cloud account that approved the link is auto-linked at connect time, and an existing identity is never stolen
  • Local-fallback toggle with lockout prevention: losing the cloud link, a cloud-side revocation, or dropping the auth:login scope always re-enables local passwords
  • No cloud-login option under Home Assistant ingress (HA authenticates the user)
  • In-place feature (scope) changes with cloud-side approval for additions — the auth:login toggle in settings is the first consumer
  • Grants/inventory sync loop in the ARQ worker
  • Logging out hands the browser to the cloud's logout so the login screen's cloud button does not sign the user straight back in

Test plan

  • pytest test_cloud.py test_cloud_features.py test_cloud_login.py app/cloud/tests/test_sync.py — 40 passed (full backend suite: 765 passed)
  • nim c -r src/frameos/server/tests/test_auth.nim — green; full frameos compile check passes
  • Both frontend builds pass

🤖 Generated with Claude Code

Phase 1 of CLOUD-TODO.md, on top of the device-flow link:

- "Continue with FrameOS Cloud" on /login and the first-run /signup (which
  can create the first user from a cloud principal), plus the frame's
  on-device /admin login
- Explicit identity linking — an email match is not proof of ownership; the
  account that approved the link is auto-linked at connect time
- Local-fallback toggle with lockout prevention: losing the cloud link (or
  dropping the auth:login scope) always re-enables local passwords
- No cloud-login option under Home Assistant ingress
- In-place feature (scope) changes with cloud-side approval for additions;
  the auth:login toggle is the first consumer
- Grants/inventory sync loop in the ARQ worker; a cloud-side revocation
  resets the link and re-enables local login
- Logging out hands the browser to the cloud's logout so it does not sign
  straight back in

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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