* feat!: release icloud_storage_plus 4.0.0
Harden coordinated Darwin writes and passive document observation, replace legacy APIs with the typed 4.0.0 contract, fix stream lifecycle ownership, and package privacy manifests.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* fix(example): restore iOS minimum version
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* docs: update package homepage
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* fix: preserve native exception categories and close mapped streams on malformed payloads
Preserve the native-supplied category (e.g. cancelled, initialization)
in decodePlatformException instead of collapsing every unmodeled
category into ICloudUnknownNativeException, so callers can distinguish
intentional cancellation from unknown native failures.
Close the transformed event stream after a malformed gather or
document-change payload, matching the transfer-progress stream and the
contract that malformed update payloads fail the stream.
Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
* fix: close mapped streams on channel errors and report transfers once
- close the transformed event stream after a channel error in
_receiveMappedEventStream, matching the transfer-progress stream and
the fail-fast contract (releases the native subscription)
- report transfer failures through the progress stream only when a
listener is attached, so uploadFile/downloadFile no longer surface the
same failure on both the stream and the returned Future
- rename nativeSecondsNumberToInt to nativeNumToInt (size cast, not seconds)
- add blank lines after 4.0.0 CHANGELOG headings for markdownlint MD022
Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
* fix: harden macOS/iOS channel unregister, document change, and download cancel
- claim event-channel unregistration atomically with the lifecycle check
so a concurrent listen can no longer have its channel torn down (iOS
and macOS)
- emit a conservative .invalidation on macOS when coordinated
presentedItemDidChange inspection fails, so a transient coordination
error no longer silently drops the document-change signal
- treat progress-stream cancellation during downloadFile as
progress-monitoring cancellation only; the copy-out is not cancellable,
so let readDocumentAt drive the final result instead of reporting
E_CANCEL while the file is still being written (iOS and macOS), matching
the upload cancel path; remove the now-unused cancellationError helper
Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
* fix: propagate transfer failures after progress subscription cancel
Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
* fix: separate cancelOnError from explicit cancel and unblock macOS watcher startup
Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
* fix(macos): coordinate watched writes and document changes off presenter queue
Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
* fix: always propagate pluginContract failures from progress-enabled transfers
Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
* fix(spm): remove nonexistent FlutterFramework package dependency
Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
* fix: finalize 4.0.0 stream contracts
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* fix(example): restore iOS App.framework MinimumOSVersion
Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
* fix: preserve transfer failures after progress cancellation
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* chore(example): keep generated iOS framework plist
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* fix: wrap unsupported document-change kinds in typed stream error
Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
* fix: skip native document watcher start after setup-time cancel
Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
* style: wrap watcher cancellation assertion
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* fix: widen document-change mapping catch to Object
Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
---------
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>