Skip to content

Releases: vaazh-studios/backupkit

BackupKit 0.3.0

Choose a tag to compare

@nirmaljeffrey nirmaljeffrey released this 11 Sep 08:52
  • SyncPolicy.shrinkGuard (on by default: more than half of at least four remote entries) refuses a run that would delete most of the backup and answers the new UnavailableReason.ShrinkSuspected; SyncSnapshot.allowShrink = true lifts it for a confirmed run. Source-breaking for exhaustive when over UnavailableReason; SyncPolicy and SyncSnapshot gained constructor parameters, so recompile against 0.3.0.
  • Google Drive: files above 5 MB upload through Drive's resumable protocol in 8 MiB chunks, streamed from disk for local files, continuing from what Drive holds after a dropped connection. The 5 MB Transport error is gone.
  • backupkit-test: FakeCloudStorage gains reportUnknownSizes, failFetchesContaining and put gating (gatePutsContaining, putStarted, releasePuts()).

BackupKit 0.2.0

Choose a tag to compare

@nirmaljeffrey nirmaljeffrey released this 09 Sep 20:01
  • New artifact com.vocabloot:backupkit-test: FakeCloudStorage, MemorySyncStateStore, MemoryRestoreRecordStore, the fakes the library's own tests run on, so an app can unit-test its sync and restore code without a cloud.
  • Library code unchanged from 0.1.0; the public API of backupkit is identical.
  • README rewritten as a landing page; long-form guides moved to the docs site.

BackupKit 0.1.0

Choose a tag to compare

@nirmaljeffrey nirmaljeffrey released this 07 Sep 15:51

Changelog

0.1.0 (2026-09-06)

  • CloudStorage: filesystem-style transport with ICloudStorage (iOS) and GoogleDriveStorage (Android, app-data folder, silent Play Services token, DriveConsent helper).
  • SyncEngine: complete-or-absent reconciliation with resume, identity reset, the empty-over-existing guard, and inspect() for restore offers.
  • FileSyncStateStore: atomic JSON state file over kotlinx-io.
  • Typed errors: CloudStorageException(CloudError).
  • SyncEngine.probe() (typed inspection with a pinned SourceRef), WriteHold, CloudStorage.prefetch.
  • CloudKitStorage (iOS): custom-zone CloudKit transport with long-lived media saves, with a change-token checkpoint, cached batch reads and typed error mapping. Pick it over ICloudStorage for app data the user never opens as files.
  • RestoreEngine: resumable restore with a required-first commit boundary, three-strike optional files, durable RestoreRecord and source revalidation. Files carry an opaque group; a RestorePlacement receives each group once its files are local and answers Placed or Rejected; RestoreProgress counts files and groups; resume(resetAttempts = true) is the explicit retry. Marked @ExperimentalRestoreApi until Vocabloot's device pass on it lands.