FileKit 0.16 expands native Linux dialog support, adds recursive directory deletion, and improves iOS picker reliability.
This release brings file, directory, and save dialogs to Kotlin/Native Linux through the XDG Desktop Portal, fixes camera presentation and photo-picker filename collisions on iOS, and updates FileKit for Compose Multiplatform 1.12.
✨ What's New
- Add file picker, directory picker, file saver, and default-application opening support for Kotlin/Native Linux (
linuxX64,linuxArm64) by @Enaium in #636 - Add opt-in recursive deletion of non-empty directories with
PlatformFile.delete(recursively = true)by @anggrayudi in #641
✅ Improvements
- Handle Linux portal cancellation and service disappearance, and clean up default-application opener processes by @Enaium in #636
🐛 Bug Fixes
- Present the iOS camera from a dedicated window in the active scene by default, fixing camera presentation beneath Compose dialogs and broken touch handling after dismissal by @PierreVieira in #639
- Prevent iOS PHPicker multi-select copy collisions when selected assets share a filename, while preserving their original filenames by @cgpllx in #646
- Fix Compose Desktop release shrinker failures and potential runtime linkage errors caused by the updated Skiko
Image.encodeToDatasignature in Compose 1.12 by @vinceglb in #654 - Safely remove dangling symbolic links and Windows directory junctions without deleting their targets by @anggrayudi in #641
📝 Documentation
- Document Kotlin/Native Linux dialog support, D-Bus dependencies, and consumer linker setup by @Enaium in #636
- Document recursive directory deletion and symbolic-link behavior by @anggrayudi in #641
⬆️ Dependency Updates
- Gradle
9.6.1→9.7.1 - Kotlin
2.4.10→2.4.20 - Android Gradle Plugin
9.3.1→9.4.0 - Android compile SDK
36→37 - Compose Multiplatform
1.11.1→1.12.0 - Compose Material 3
1.11.0-alpha07→1.12.0-alpha03 - AndroidX Lifecycle
2.10.0→2.11.0 - Coil
3.5.0→3.6.2 - Nucleus
2.3.2→2.5.15
⚠️ Migration Notes
- Android compile SDK is now
37; target SDK remains36. Update your Android build configuration accordingly. - Recursive deletion is opt-in: use
delete(recursively = true)to remove non-empty filesystem directories. The default remainsrecursively = false; Android document URIs continue to delegate deletion to their document provider. - Kotlin/Native Linux dialogs require a running XDG Desktop Portal with a file chooser backend and the
libdbus-1runtime library. Building a consuming application requires the target architecture's D-Bus development libraries and may require an explicit linker search path; see the Linux setup documentation. - iOS camera calls without an explicit presenter now use a FileKit-managed window. Apps supplying
FileKitOpenCameraSettings(presenter = ...)retain their existing presentation behavior.
🙏 Contributors
Thanks a lot to @Enaium, @anggrayudi, @PierreVieira, and @cgpllx for their contributions to this release ❤️
- @cgpllx made their first contribution in #646
- @anggrayudi made their first contribution in #641
- @Enaium made their first contribution in #636
Full Changelog: 0.15.0...0.16.0