Skip to content

Add encrypted-at-rest sync service with remote manifest and reconciliation - #64

Merged
ultraelectronica merged 8 commits into
mainfrom
versionF
Jul 30, 2026
Merged

Add encrypted-at-rest sync service with remote manifest and reconciliation#64
ultraelectronica merged 8 commits into
mainfrom
versionF

Conversation

@ultraelectronica

Copy link
Copy Markdown
Member

Summary

Adds a sync service with encrypted-at-rest blob transport, remote manifest model, reconciliation logic, and bookkeeping fields on vault entries for conflict-free synchronization.

Changes

Sync Infrastructure

  • Add SyncProfile model with SyncDirection enum and JSON serialization
  • Add remote manifest model classes
  • Add sync bookkeeping fields to VaultedFile (modifiedAt LWW timestamp, remoteHash sha256, syncedDeleted)
  • Add sync fields to VaultSettings (syncEnabled, syncProfileId)
  • Add RemoteStore abstract interface for blob transport

Sync Service

  • Add SyncService with reconciliation and manifest encryption

Testing

  • Add comprehensive tests for SyncService reconcile, crypto, and model serialization

Documentation

  • Add local server sync plan document

Adds `syncEnabled` and `syncProfileId` to `VaultSettings` with support
in the constructor, `copyWith`, `toJson`, and `fromJson`.
Adds `modifiedAt` (LWW timestamp), `remoteHash` (sha256 of ciphertext),
and `syncedDeleted` to support encrypted-at-rest sync without clobbering
existing mutation semantics.
@ultraelectronica ultraelectronica self-assigned this Jul 30, 2026
@ultraelectronica
ultraelectronica merged commit 7c67ac5 into main Jul 30, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant