M5: storage usage, ZIP/TAR/GZ archives with zip-slip guard, thumbnails, viewers + 26 tests
This commit is contained in:
@@ -12,6 +12,18 @@ upload needs a **higher `versionCode`** than every previous upload.
|
||||
|
||||
### Added
|
||||
|
||||
- **M5 — analysis, archives and viewers.** `domain/UsageAnalysis` rolls up recursive folder
|
||||
sizes and finds the largest files below a folder, which the new storage-usage screen
|
||||
shows as a size and a share bar per row. `domain/ArchiveEngine` creates ZIP archives and
|
||||
extracts ZIP, TAR, TAR.GZ, GZ, BZ2 and XZ using `java.util.zip` and Commons Compress —
|
||||
all pure Java, so the app still ships no native code; RAR and 7z are recognised and
|
||||
refused with a clear message rather than half-supported. Every archive entry name is
|
||||
passed through `core/ArchivePath` before it becomes a path, so a crafted `../` entry
|
||||
cannot write outside the destination. The browser gains Coil thumbnails in the list and
|
||||
grid, a built-in image viewer and text editor, and compress/extract actions. 26 new JVM
|
||||
tests (141 total), including a zip-slip archive that is refused while the same archive's
|
||||
safe entry still extracts.
|
||||
|
||||
- **M4 — the browser UI.** The app is now usable end to end. `StorageLocation` (with a
|
||||
real `StorageProvider` and a fake for tests) decides which backend is in effect;
|
||||
`BrowserViewModel` owns navigation, sorting, hidden files, list/grid, search, selection
|
||||
|
||||
Reference in New Issue
Block a user