40 lines
2.2 KiB
Markdown
40 lines
2.2 KiB
Markdown
# Changelog
|
|
|
|
All notable changes to File Manager are documented in this file.
|
|
|
|
The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and the
|
|
project uses [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
|
|
`versionCode` and `versionName` are defined in `app/build.gradle.kts`. Each Play
|
|
upload needs a **higher `versionCode`** than every previous upload.
|
|
|
|
## [Unreleased]
|
|
|
|
### Added
|
|
|
|
- **M2 — storage layer.** The two storage backends behind one interface. `AllFilesSource`
|
|
is `java.io.File` over every mounted volume (the "All files access" path);
|
|
`SafSource` is the Storage Access Framework fallback, reading a persisted tree URI
|
|
through `DocumentsContract` with `SafDocumentIds` doing the tree↔path mapping and
|
|
`SafGrant` owning the folder picker and its persistence. `VolumeRepository` enumerates
|
|
volumes via `StorageManager`/`StorageVolume` and reports free/total space through
|
|
`StatFs`; `StorageAccess` and `StorageAccessPolicy` decide between the two backends.
|
|
Both sources confine their blocking I/O to `Dispatchers.IO` and expose a `suspend`
|
|
contract. 32 new JVM tests (76 total), including a Robolectric run of `SafSource`
|
|
against a stand-in `DocumentsProvider`.
|
|
|
|
- **M1 — pure-Kotlin core engine.** An Android-free `core/` package holding the logic
|
|
every other layer builds on: `StoragePath` (normalised absolute paths that can never
|
|
escape the root), `FileEntry` with extension-based `FileKind` classification and a
|
|
`MimeTypes` lookup for "open with", natural-order `SortSpec` (directories always
|
|
first, `file2` before `file10`), human-readable `FileSize`, `NameMatcher`
|
|
(case-insensitive substring plus `*`/`?` globs), `NameAllocator` ("name (1)") and
|
|
`TransferPlanner` (conflict policies and move-into-self detection). Covered by
|
|
**44 JVM unit tests** across 10 classes.
|
|
|
|
- **M0 — project scaffold.** Gradle 9.3.1 / AGP 9.1.0 build with a version catalog,
|
|
`de.softwareapp_hb.filemanager` app module, a Compose Material 3 shell with the
|
|
branded blue theme (dynamic colour on Android 12+), an adaptive launcher icon, and
|
|
the storage-access permission set (all files access + SAF fallback). Debug APK
|
|
builds, installs and runs on an AOSP Android 12 AVD.
|