github vinceglb/FileKit 0.13.0

10 hours ago
FileKit 0 13 release note

🚀 Better stability, reliability, and developer experience

FileKit 0.13.0 is mainly focused on improving stability and reliability across all supported platforms.

This release includes many fixes for platform-specific edge cases, better lifecycle handling, and more consistent behavior between targets. The goal was simple: make FileKit more predictable and safer to use in production.

We also improved the developer experience with better KDoc coverage, clearer documentation, and a new Cookbook section. On top of that, we introduced more automated tests, new CI workflows, a new sample project, and linting enforcement.

✨ What's new

  • Introduce FileKit.saveVideoToGallery for saving videos to the gallery by @ujizin in #491
  • Add a typed desktop user-directory API for safer path access by @vinceglb in #499
  • Bring FileKit to watchOS by @vinceglb in #498
  • Bring FileKit Dialogs support to macOS targets by @vinceglb in #517

✅ Improvements

  • Align iOS file picker behavior with Apple PhotoKit guidance by @Juxtlie in #433
  • Improve projectDir resolution for more reliable iOS path handling by @vinceglb in #447
  • Refactor FileKitFileProvider and authority handling for safer Android file sharing by @vinceglb in #448
  • Remove deprecated Coil and Dialogs APIs to clean up the public surface by @vinceglb in #454
  • Refine camera-facing behavior and defaults across platforms by @vinceglb in #479
  • Harden copy/write operations for unknown-size and provider-backed files by @vinceglb in #494
  • Standardize file-saver extension handling across platforms by @vinceglb in #497
  • Improve Android Photo Picker display name and filename resolution by @vinceglb in #500
  • Improve Android Compose picker resilience across activity recreation by @vinceglb in #507
  • Enable cross-platform media saving to the gallery by @vinceglb in #512
  • Improve Android camera picker permission handling for more reliable launches by @vinceglb in #514
  • Standardize atomicMove destination-directory behavior across platforms by @vinceglb in #515

🐛 Bug fixes

  • Run AWT FileDialog on the EDT when called from suspending APIs by @edneyosf in #422
  • Restore picker result delivery when the activity is stopped in background by @vinceglb in #445
  • Fix URITest file-path assertions for Windows compatibility by @vinceglb in #452
  • Fix inverted file-existence check in README by @robertlinsener in #463
  • [Android] Fix stale trailing bytes when overwriting smaller files by @HTossy in #470
  • Fix Compose Preview crash with rememberShareFileLauncher by @vinceglb in #473
  • Fix Android directory picker tree-URI handling by @vinceglb in #474
  • Fix non-web PlatformFile child resolution by @vinceglb in #475
  • Fix tree-URI detection compatibility on Android API 23 by @vinceglb in #478
  • Enforce maxItems output contract consistently across platforms by @vinceglb in #492
  • Fix signal-handler cleanup in the XDG portal picker by @vinceglb in #495
  • Fix FileKit dialog registry leak handling to avoid retained references by @vinceglb in #496
  • Fix Android bookmark existence checks by @vinceglb in #505
  • Prevent Android picker crashes when no app can handle picker intents by @vinceglb in #516

📚 New Cookbook guides

  • DataStore: shows how to configure DataStore from commonMain using FileKit.databasesDir, avoiding platform-specific expect/actual setup for storage paths.
  • Test Resources: explains how to reliably access test files in KMP with FileKit.projectDir, with practical examples and platform support notes.

🧑‍💻 Developer Experience

  • Add a shared .editorconfig for consistent ktlint rules by @vinceglb in #444
  • Modernize and simplify Gradle configuration across modules by @vinceglb in #446
  • Add multi-platform CI workflows for build and test coverage by @vinceglb in #449
  • Add a dedicated ktlint CI job for automated style enforcement by @vinceglb in #451
  • Improve CI with artifact upload/download between workflow jobs by @vinceglb in #453
  • Launch a new sample project showcasing FileKit workflows by @vinceglb in #465
  • Add a bookmark screen to the sample project by @vinceglb in #477
  • Add watchOS test coverage to CI by @vinceglb in #504

📝 Documentation updates

  • Add KDoc coverage across all modules by @vinceglb in #456
  • Refresh integration docs for clearer setup guidance by @vinceglb in #457
  • Add cookbook-style documentation with practical recipes by @vinceglb in #458

⬆️ Dependencies updates

  • Upgrade Kotlin to 2.3.10
  • Upgrade kotlinx-io to 0.9.0
  • Upgrade Compose Multiplatform to 1.10.1
  • Keep JNA at 5.18.1
  • Upgrade Coil to 3.4.0
  • Upgrade AGP to 9.0.1

🙏 New Contributors

Thanks a lot to all the contributors ❤️

🤩 Bonus

Here are the screenshots of the new sample app!


Full Changelog: 0.12.0...0.13.0

Don't miss a new FileKit release

NewReleases is sending notifications on new releases.