FrameOS Cloud 3/4: scene and frame config backups - #265
Merged
Conversation
This was referenced Jul 18, 2026
mariusandra
force-pushed
the
cloud-config-backups
branch
from
August 1, 2026 21:10
ca5c1b8 to
79c5817
Compare
mariusandra
force-pushed
the
cloud-config-backups
branch
from
August 1, 2026 21:11
79c5817 to
6e7dc37
Compare
Phase 3 of CLOUD-TODO.md, on top of the link and cloud login: - Push scenes (as the template interchange zip) and sanitized frame configs to the linked provider; restore either from the settings page. Local machine credentials (SSH, TLS, admin auth, wifi/agent secrets) are stripped; app API keys are intentionally retained so restored scenes keep working - The backup scopes come with every cloud account, but nothing is uploaded until the matching local switch is turned on (backup_scenes_enabled / backup_frames_enabled + migration) - Automatic frame backup after every successful deploy, driven by the update_frame broadcast in the cloud sync worker; durable last_cloud_backup_deploy_at tracking (+ migration) so a worker restart neither re-uploads everything nor loses failed uploads - Local tarball export of all templates stays available without a link - templates.py: template zip build/parse refactor shared with the backup payloads, and exports now record the FrameOS version they were made with Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Review follow-ups for the cloud config backups: - Seal every backup payload with an account X25519 key before upload (backup_crypto.py): the provider stores ciphertext plus a curated plaintext manifest. Key auto-generates on first backup; FRBK1- recovery code shown in settings and importable after a reinstall. Legacy plaintext backups still restore. - Sanitizer rework: keep user-level secrets (wifi/mountpoint passwords, app API keys, upload headers) inside the sealed payload so restores work; strip only per-install machine credentials. Scenes pass through untouched — the old recursive scrub deleted `secret: true` field flags. - One "Cloud backups" switch instead of the confusing frames/scenes split; restore confirms and reports; per-backup delete; spinner failure resets; NaN-KB guard; local tar.gz export link. - Sync worker: substring guard before parsing broadcast messages. - Browser tests: first on-frame admin Playwright suite (served compiled frame_web bundle, no Nim server), cloud backups visual cases + interaction tests, CI builds the frame bundle for them. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
mariusandra
force-pushed
the
cloud-config-backups
branch
from
August 1, 2026 23:34
6e7dc37 to
82b514d
Compare
mariusandra
added a commit
that referenced
this pull request
Aug 1, 2026
Rebased onto main after #265 merged: the phase-2 delta (store publishing, install by URL, private cloud scenes, save-modal polish, review fixes and the visual-cloud-store snapshots) squashed into one commit on top of the squash-merged stack. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
mariusandra
added a commit
that referenced
this pull request
Aug 2, 2026
* FrameOS Cloud 4/4: cloud store and private cloud scenes Rebased onto main after #265 merged: the phase-2 delta (store publishing, install by URL, private cloud scenes, save-modal polish, review fixes and the visual-cloud-store snapshots) squashed into one commit on top of the squash-merged stack. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Update frontend visual snapshots --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com> Co-authored-by: FrameOS Bot <git@frameos.net>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Part 3 of the FrameOS Cloud stack (on top of the linking and login PRs; #257 with the store + cloud drive sits on top of this).
backup_scenes_enabled/backup_frames_enabled, + migration)update_framebroadcast in the cloud sync worker; durablelast_cloud_backup_deploy_attracking (+ migration) so a worker restart neither re-uploads every frame nor loses a failed uploadtemplates.py: the template zip build/parse refactor shared with the backup payloads; exports now record the FrameOS version they were made withTest plan
pytest test_cloud_backups.py app/cloud/tests/test_sync.py test_templates.py+ the earlier cloud suites — 60 passed (full backend suite: 780 passed)🤖 Generated with Claude Code