|
1 | 1 | # Changelog |
2 | 2 |
|
3 | | -## Changes 1/11/2025 (V3.0.0) |
| 3 | +## Changes 01/14/2026 (v3.0.1 Archive update + login focus) |
| 4 | + |
| 5 | +`release(v3.0.1): archive create/extract upgrades (7z + RAR via unar) + login focus fix (closes #82)` |
| 6 | + |
| 7 | +**Commit message** |
| 8 | + |
| 9 | +```text |
| 10 | +release(v3.0.1): archive create/extract upgrades (7z + RAR via unar) + login focus fix (closes #82) |
| 11 | +
|
| 12 | +- add 7z archive format option for multi-file downloads (worker + download streaming) |
| 13 | +- expand extraction to support ZIP + 7z formats via 7z, with RAR preferring unar when available |
| 14 | +- harden archive extraction against traversal, symlinks, zip-bombs, and empty/escaped outputs |
| 15 | +- improve archive job robustness (stale job cleanup, clearer queued/worker errors, correct MIME/filenames) |
| 16 | +- UI: archive format selector + name normalization, better “Extract Archive” handling, i18n updates |
| 17 | +- fix login screen focus (auto-focus username when login prompt shows) |
| 18 | +
|
| 19 | +Closes #82 |
| 20 | +``` |
| 21 | + |
| 22 | +**Added** |
| 23 | + |
| 24 | +- **Archive download format selector (ZIP / 7z)** in the “Download Selected Files as Archive” modal. |
| 25 | +- **7z archive creation** support in the background worker (`zip_worker.php`) using `7zz/7z`. |
| 26 | +- **RAR extraction prefers `unar`** when available (FOSS-friendly); falls back to `7z` when needed. |
| 27 | +- **Archive detection helper** `isArchiveFileName()` supporting: |
| 28 | + - `.zip`, `.7z`, `.tar.*`, `.gz`, `.bz2`, `.xz`, `.rar` |
| 29 | + - RAR split parts like `.r01`, `.r02`, etc. |
| 30 | + |
| 31 | +**Changed** |
| 32 | + |
| 33 | +- **“ZIP” language → “Archive” language** across UI, admin notes, and translations. |
| 34 | +- **Archive job enqueue + download endpoint** now supports a `format` field (`zip` or `7z`): |
| 35 | + - download streaming sets correct extension + MIME type (`application/zip` or `application/x-7z-compressed`) |
| 36 | + - filename normalization strips any existing `.zip/.7z` and applies the chosen extension |
| 37 | +- **Archive extraction** is no longer ZIP-only: |
| 38 | + - ZIP still uses `ZipArchive` |
| 39 | + - non-ZIP formats use `7z` listing (`7z l -slt`) + extraction of an allow-listed set |
| 40 | + - RAR parts like `.r01` map to their base `.rar` / `.part1.rar` automatically |
| 41 | +- **Archive queue robustness** |
| 42 | + - stale queued/working jobs are cleaned up (PID checks + cmdline sanity where available) |
| 43 | + - queued jobs that never start can surface a clearer error message (“worker did not start…”) |
| 44 | + |
| 45 | +**Fixed** |
| 46 | + |
| 47 | +- **Login UX:** auto-focus username field when the login prompt appears (reduces “why can’t I type?” friction). |
| 48 | +- **Extract action visibility:** Extract button/menu now appears for supported archive formats (not just `.zip`). |
| 49 | +- **Better extraction feedback:** extraction API returns optional `warning` text; UI shows success + warning separately when partial issues occur. |
| 50 | + |
| 51 | +**Security / Hardening** |
| 52 | + |
| 53 | +- **Archive extraction safety controls**: |
| 54 | + - blocks absolute paths / traversal (`../`) and unsupported folder names |
| 55 | + - skips dotfiles (configurable) instead of extracting hidden entries by default |
| 56 | + - detects and skips symlinks and removes any symlinks created during extraction |
| 57 | + - zip-bomb limits: max uncompressed bytes + max files (configurable) |
| 58 | + - prunes empty outputs that indicate partial/broken extraction and removes any files that escape the extraction root |
| 59 | + |
| 60 | +**Docker** |
| 61 | + |
| 62 | +- Image now installs **7zip + unar** so archive create/extract works out-of-the-box with FOSS tooling. |
| 63 | +- Ubuntu repo components are restricted to **`main universe`** (avoids non-free repos by default). |
| 64 | + |
| 65 | +--- |
| 66 | + |
| 67 | +## Changes 1/11/2026 (V3.0.0) |
4 | 68 |
|
5 | 69 | `release(v3.0.0): storage adapter seam + source-aware core (Sources-ready)` |
6 | 70 |
|
@@ -131,7 +195,7 @@ FileRise v3.0.0 is a major internal milestone: a new storage adapter seam + sour |
131 | 195 |
|
132 | 196 | --- |
133 | 197 |
|
134 | | -## Changes 1/2/2025 (v2.13.1) |
| 198 | +## Changes 1/2/2026 (v2.13.1) |
135 | 199 |
|
136 | 200 | `release(v2.13.1): harden Docker startup perms + explicit inline MIME mapping (see #79)` |
137 | 201 |
|
|
0 commit comments