Skip to content

Releases: Jason-Holt-Digital/icloud_storage_plus

2.1.2

Choose a tag to compare

@devin-ai-integration devin-ai-integration released this 23 Apr 08:41
f8c58dc

Fixed

  • iOS readInPlace / readInPlaceBytes now marshal the post-download continuation back onto the main actor before invoking readInPlaceDocument / readInPlaceBinaryDocument. The 2.1.0 async rewrite of waitForDownloadCompletion inadvertently removed the DispatchQueue.main hop that the callback-based waiter guaranteed, letting UIDocument.open(completionHandler:) be called from the Swift cooperative pool. This restores the 1.2.2 invariant that UIDocument work runs under the main queue per Apple's completion-handler contract and avoids the _os_object_retain "Resurrection of an object" crash that motivated that fix.
  • macOS uploadFile, readInPlace, readInPlaceBytes, writeInPlace, writeInPlaceBytes now run their Task bodies on the main actor. Because the macOS FlutterMethodChannel is registered without a background task queue, FlutterResult must be invoked on the main thread; the previous Task { [self] in ... } blocks resumed on the cooperative pool after await, causing result(...) to be called off-main in preflight error paths.

Closes the threading concerns raised on #27, #26, and #25.

Full Changelog: 2.1.1...2.1.2

1.2.0

Choose a tag to compare

@kingdomseed kingdomseed released this 09 Mar 11:49

Added

  • listContents() API for immediately-consistent container listings using
    FileManager.contentsOfDirectory with URL resource values
  • ContainerItem model with relativePath, downloadStatus, isDownloading,
    isUploaded, isUploading, hasUnresolvedConflicts, isDirectory, and
    isDownloaded convenience getter
  • iCloud placeholder file resolution (.originalName.icloud stubs on iOS /
    pre-Sonoma macOS; APFS dataless files on Sonoma+)
  • Hidden file filtering (.DS_Store, .Trash, etc.) via resolved-name prefix

Changed

  • ICloudFile dartdoc cross-references ContainerItem with consistency guidance
  • README expanded with gather vs listContents comparison table, placeholder
    files section, and ContainerItem model reference
  • Fixed typo in InvalidArgumentException doc comment

See CHANGELOG.md for full details.

1.1.1

Choose a tag to compare

@kingdomseed kingdomseed released this 14 Feb 10:29

1.1.1

Fixed

  • GitHub Actions automated publishing trigger for tags like 1.2.3 (no v prefix).
  • Removed example ephemeral LLDB helper files that were causing dart pub publish validation warnings.

1.1.0

Choose a tag to compare

@kingdomseed kingdomseed released this 14 Feb 08:44

Swift Package Manager support

Full Changelog: 1.0.1...1.1.0

1.0.1

Choose a tag to compare

@kingdomseed kingdomseed released this 11 Feb 20:58

Fixed

  • Avoid reading NSMetadataItem off the query thread by running NSMetadataQuery on a dedicated operation queue and disabling updates during snapshot reads.
  • Ensure relativePath generation is path-boundary-aware (avoid prefix-collision edge cases).

Changed

  • Clarify benchmark documentation around standardizedFileURL behavior.

1.0.0 - Initial Release

Choose a tag to compare

@kingdomseed kingdomseed released this 04 Feb 22:49

1.0.0 — Release notes (highlights)

  • Path-based transfers for large files: uploadFile() / downloadFile() move files by local path without sending full file bytes over platform channels.
  • Coordinated in-place reads/writes for small files: readInPlace / writeInPlace (+ *Bytes variants) for “transparent sync” of text/JSON and small binaries.
  • Progress streaming: transfer progress is exposed via an EventChannel as structured ICloudTransferProgress events (including error events).
  • Better listing/metadata: gather() returns GatherResult (files + invalidEntries), and metadata includes richer sync-state fields and directory handling.
  • Safer API surface: stronger Dart-side path validation plus clearer error codes (including initialization and timeout scenarios) across iOS/macOS.