Archives (.zip, .7z, .rar; multi-part sets) are a source on every target, the PS5 included:
- New crate ps5-dump-forge-archive: own zip reader, 7z over sevenz-rust2 (decode only), RAR
through our wrapper over unrar_sys's UnRAR, with memory, header and link limits.
- Conversions read the game straight from the archive (stream::Reader), file by file in the
writer's order, with nothing unpacked to disk; solid archives re-decode on a backward read.
- Release-site passwords are tried first when an archive needs one; a password counts only
when it reads the game's param.json (and an encrypted file when param.json is in the clear).
- Truncated RARs, swapped parts and unsafe names are refused; every part is guarded from
delete while its job runs.
AMPR: the game's ampr_emu version is read from its runtime. Update AMPR (now in the Full
verification box) shows only for an older one; Pack keeps a runtime that is not older and
reads packs. The LZ4 tab blocks a game without ampr_emu and hides its LZ4 tile.
UI: animated dots on waiting texts, shorter LZ4 texts in all 11 languages, new target orders
and defaults (Convert: fpkg; LZ4: exfat), "Папка с игрой", no "No preflight findings" line.
Server: a source read waits up to 30 s for one of its 2 slots (at most 4 waiting; 409 while
stopping). Release zips hold only the app and the CLI; the UnRAR licences live in vendor/.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Folder output: plain fsync per file, one full flush before the rename (macOS 44 -> 11 s)
- .fpkg build 60.6 -> 40.5 s: Kraken skips hopeless blocks (0024), CRC32C slicing-by-8 (0025),
per-file SHA3 on its own thread (0026), the source .pkg decoded 4 MiB ahead
- LZ4 profile rules compiled once with an exact-path index (preflight 8 s -> 0.03 s)
- Library: liquid-glass LZ4 label on packed games; PS5 shows free space of /data
- PS5 payload renamed "Dump Forge", home /data/dumpforge (one-time migration with a link,
old tile owner records accepted)
- Windows CI: the library test names the system drive root
- Docs: README benchmarks (PC + PS5 column), docs/LZ4.md, AGENTS.md and DESIGN.md trimmed,
TODO.md removed; release archives ship docs/LZ4.md
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Release archives: macos-universal, windows-x86-64 (+ -webview2, the only one with a bundled
WebView2), windows-arm64, linux-x86-64, linux-arm64, source, SHA256SUMS. The arm64-only macOS
zip is gone (the universal zip carries the same slice).
- release-windows.sh builds for the host triple from `rustc -vV`, checks the PE machine per arch,
links the C runtime statically for the app too (tauri-build's own trick is x86/x86-64 only), and
skips the WebView2 download on arm64.
- release-linux.sh labels by `uname -m`; forge.sh's Wayland preload matches the host's ldconfig tag.
- main.rs: missing/broken WebView2 messages name the x86-64 zips, and only the Evergreen installer
on arm64.
- release.yml: Windows and Linux matrices over x86-64 and arm64 runners; publish requires exactly the
seven archives. ci.yml: test legs on windows-11-arm and ubuntu-22.04-arm.
- README, AGENTS.md, TODO.md follow.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The CI runner extracts the tarball as a normal user, where GNU tar applies the umask and drops
setuid/setgid bits, so group-writable AppDir entries came back with other modes and the round-trip
check failed (it passed as root in Docker). Clear go-w and ug-s before packing, and print the
differing entries if the check ever fails again.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Convert: the job queue sits under the cards, full width, and scrolls inside itself.
- macOS: a universal zip next to the arm64 one; both CLI slices run in the release check.
- Windows x64: file identity, hard links, free space/FAT32 preflight and CLI Ctrl-C in core;
WebView2 handling (bundled Fixed Version runtime, Windows 10 ACL grant, message boxes);
two portable zips (system WebView2 / bundled runtime).
- Linux x64: AppDir .tar.gz with a forge.sh launcher; xdg-open gets the host environment.
- Release: windows and linux jobs, scripts/check-versions.sh, one SHA256SUMS over all
archives. CI lints and tests the GUI on all three OSes.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>