Skip to content

feat(media): preserve Android Motion Photos and Apple Live Photos #182

Description

@veryCrunchy

Goal

Treat motion-enabled photos as one media item across discovery, backup, browsing, playback, sharing, download, and restore. The still image, motion video, and pairing metadata must survive a round trip through Nextcloud without being flattened or silently separated.

Scope

  • recognize common Android Motion Photo representations, including paired and embedded video variants
  • recognize Apple Live Photo still/video pairs and their asset linkage metadata
  • model the still image and motion video as one logical media asset while preserving both original files or container data
  • upload related parts safely so interruption cannot leave a falsely completed item
  • retain original filenames, timestamps, metadata, orientation, content types, and pairing identifiers
  • show one gallery item with a motion indicator, still fallback, and native motion playback
  • support download, offline caching, sharing, export, move, copy, delete, album membership, and restore without losing the relationship
  • interoperate with Nextcloud Photos and Memories without inventing server capabilities
  • define safe behavior when a server or external client only understands the still image

Protocol and storage decisions

Document and test the storage representation before enabling writes. The design must account for embedded Android containers, sidecar pairs, Apple asset identifiers, DAV moves/renames, conflict handling, deduplication, and compatibility with existing Nextcloud clients.

Acceptance criteria

  • fixture-backed detection covers representative Android and iOS formats without personal media
  • backup status becomes complete only after every required component and its linkage are verified remotely
  • interrupted or retried uploads are idempotent and recoverable
  • upload then download restores a pair that remains playable by a compatible native client
  • gallery, detail, share, move, delete, album, offline, and cache flows operate on the logical asset consistently
  • deleting or moving one logical item cannot orphan an undisclosed companion file
  • unsupported formats remain accessible as ordinary media without destructive conversion
  • automated tests cover rename, duplicate filename, conflict, partial upload, retry, and cross-account isolation
  • Android behavior is validated on a physical device; future iOS support uses the same platform-neutral media model

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:mediaMedia backup, MediaStore, storage reclaim, and sharingarea:photosPhotos, Memories, RAW, people, albums, tags, and editingenhancementNew feature or requestin-progressImplementation is currently activeneeds-protocol-reviewRequires protocol or upstream source verificationplatform:androidAndroid-specific implementation or validationplatform:desktopDesktop-specific implementation or validationpriority:P1Required for the pre-release product experiencetype:featureNew product capability

Type

No type

Projects

Relationships

None yet

Development

No branches or pull requests

Issue actions