Skip to content

feat(sync): add include and metadata-based sync rules #365

Description

@veryCrunchy

User problem

Sync pairs expose ignored patterns, but users also need positive inclusion rules and filtering based on file metadata. Examples include syncing only documents, excluding videos above a chosen size, or including only selected extensions.

Acceptance criteria

  • Support explicit include and exclude rules without ambiguous implicit behavior.
  • Match paths or glob-like patterns, hidden-file and hidden-folder state, extension, authoritative MIME or media type, minimum and maximum file size, and file versus directory.
  • Define deterministic precedence when include and exclude rules overlap.
  • Make the behavior of unmatched files explicit for every rule mode.
  • Preview which files will sync, which will not, and which rule made each decision.
  • Use consistent, documented case-sensitivity behavior across supported platforms.
  • Never interpret a newly out-of-scope file as a deletion to propagate to the other side.
  • Re-evaluate safely when metadata changes, including size growth and extension-changing renames.
  • Persist rules in a versioned, migration-safe sync configuration.
  • Existing sync pairs can adopt rules without deletion and recreation.
  • Add bounded tests for overlapping rules, hidden paths, unknown MIME types, missing sizes, renames, and configuration migration.

Relationships

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 synchronizationarea:uxNavigation, accessibility, responsive design, and interactionin-progressImplementation is currently activeneeds-designRequires interaction or visual design before completionpriority: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