tui: cloud sync — WebDAV manifest tracking for sharing #142
Labels
No labels
area:agents
area:ai
area:config
area:dashboard
area:design
area:design-review
area:devtools
area:entities
area:gallery
area:generate
area:image
area:infra
area:meta
area:model-browser
area:navigation
area:presets
area:security
area:sessions
area:settings
area:sharing
area:test
area:ux
area:webhook
area:workdir
type:bug
type:chore
type:meta
type:user-story
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
charles/loom#142
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
User story
As a user pushing my gallery to a WebDAV destination (e.g. Nextcloud, CivitAI mirror), I want a sync manifest that tracks which files have been uploaded so re-runs only push deltas, so that I don't waste bandwidth re-uploading everything.
Background
GTK has a complete
cloud_sync.rsmodule (crates/loom-gtk/src/cloud_sync.rs) with manifest load/save,file_needs_upload,record_sync, and WebDAV helpers. The TUI has none of this. The sync manifest format and WebDAV helpers can be ported as-is and exposed via a TUI overlay.Acceptance criteria
Port
cloud_syncto loom-coreloom-gtk/src/cloud_sync.rstoloom-core/src/services/cloud_sync.rs(drop GTK deps if any)load_manifest(path),save_manifest(path, &manifest),file_needs_upload(manifest, path, mtime),record_sync(manifest, path, remote_url)Sync overlay
OverlayKind::CloudSync { destination_id }opens from the Sharing overlayEnterstarts the sync; progress per file shown with throbberSharing overlay integration
Settings
Tests
file_needs_uploadis true for missing entries and stale mtimes; false for fresh onesOut of scope
References
crates/loom-gtk/src/cloud_sync.rs(port source)crates/loom-tui/src/components/sharing.rs(overlay to extend)