Skip to content

[SYNC-009] Conflict review center #115

Description

@veryCrunchy

Roadmap

  • Task ID: SYNC-009
  • Priority: P0

Problem

A conflict cannot be reviewed safely from filenames or raw metadata alone. Users need enough visual and contextual evidence to distinguish the local and remote versions, understand what changed, and choose a non-destructive resolution.

Acceptance criteria

  • Conflict rows show bounded local and remote previews when available, with clear placeholders for unsupported, missing, permission-limited, cloud-only, RAW, and video content.
  • The detail view presents local and remote size, modified time, content type, checksum or ETag evidence when available, account/destination context, and the operation that produced the conflict.
  • Users can choose local, remote, keep both, propagate deletion, restore, or skip only when the operation is valid for that conflict type.
  • Keep both produces a deterministic non-colliding name and preserves both originals.
  • Replace and deletion choices use verified preconditions and never silently overwrite a version that changed during review.
  • Preview decoding and fetching are bounded, cancellable, cached by version identity, and never block the paged conflict list.
  • Transfer Center, Sync status, notifications, and file detail surfaces deep-link to the same authoritative conflict record.
  • Resolutions survive process death, expose progress and failure recovery, and re-read authoritative state before marking the conflict complete.
  • Tests cover identical-looking files, same-name different-content files, RAW/JPEG and Live Photo pairs, videos, cloud-only media, permission loss, stale ETags, deletion conflicts, and ambiguous network results.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:files-syncFiles, offline storage, transfer, and synchronizationneeds-designRequires interaction or visual design before completionpriority:P0Required for a trustworthy mobile replacement or prevents data losstype:featureNew product capability

    Type

    No type

    Projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions