Remote Package Installer NextGen changelog
v0.0.6 · Nov 1, 2026
Remote PKG Installer NextGen v0.0.6 — fifth audit pass: 3 targeted fixes, no feature changes.
What changed since v0.0.5
- Fixed a startup race that could leave the server silently dead —
server_start()spawned the accept thread before publishings_running/s_listen_fd. On the console's 8 cores the new thread could be scheduled first, observes_running == falseand exit immediately: the dashboard showed ONLINE but every API call failed until the next network bounce. The listener state is now published before the thread is spawned (pthread_createis the happens-before edge), so the accept loop always starts with a valid socket. - Fixed undefined behaviour on the prefetch OOM path — if the 64 MiB ring or chunk-state allocation failed,
prefetch_start()jumped to an error path that locked a mutex that had not been initialized yet (the inits ran after the allocation check). The sync primitives are now created before any fallible allocation, making the whole error path well-defined. - Fixed an uninitialized read in the legacy install API —
installer_install_direct()returned early on URL-validation failures (e.g. apackages[]entry longer than 2047 chars) without zeroing the result struct, soPOST /api/installcould answer with a nondeterministic garbageerror_code. The result is now zeroed at both public entry points; every failure path returns deterministic fields.
Process
- Releases are now self-contained: the
releaseworkflow builds the pkg from the release tag and attaches it automatically (no more manual artifact upload — v0.0.5 shipped without its pkg because of that manual step).
Install
Install RemotePkgInstallerNextGen-0.0.6.pkg on a PS4 with HEN active, then drive it from any device on the same network — see the README for the API examples.
v0.0.5 · Oct 30, 2026
Remote PKG Installer NextGen v0.0.5 — fourth audit pass: 3 targeted fixes, no feature changes.
What's new since v0.0.4
- Fixed the dashboard icon cache never hitting — freshly used cache slots were never keyed for their job, so the same icon was re-decoded every frame and up to 15 orphaned textures (~1 MB each) lingered until eviction. Slots are now re-keyed on selection: one decode per icon, cache hits from the second frame.
- Fixed an uninitialized-stack read in
POST /api/v2/install— a request like{"urls":[""]}hit a failure path that left the error buffer unwritten; the handler then leaked uninitialized stack bytes into the HTTP response. The buffer is initialized and every installer failure path now guarantees an error message. - Fixed a renderer leak on startup failure — the
ui_initerror path destroyed the window but leaked the SDL renderer.
Notes
- Full codebase re-audit (logic, races, bounds, leaks) — everything else came back clean; areas noted but deliberately left alone to avoid over-engineering are documented in the release PR (#28).
- No API changes; drop-in replacement for v0.0.4.
v0.0.4 · Oct 30, 2026
Remote PKG Installer NextGen v0.0.4 — memory-safety & stability release.
What's new since v0.0.3
- Fixed small pieces (< 2 MiB) hanging the transfer forever — the prefetch ring for small files was rounded to a 1 MiB multiple, which left the worker window empty for pieces smaller than one 2 MiB chunk: nothing was claimable, the worker slept, and the BGFT download wedged permanently, leaking one of the 16 server connection slots each time (16 hung pieces = server fully dead). The ring is now rounded to a whole number of chunks.
- Fixed an uninitialized stack read in the prefetch worker's failure log path (printed when the HTTP session could not be opened at all, e.g. network died mid-transfer).
- Fixed a
server_stop()race — stop runs from both the network monitor (link down) and the exit path (OPTIONS); the unsynchronized check could double-join the accept thread (undefined behavior, crash class) or bind a new listener over one still unwinding. Start/stop are now serialized; stop is idempotent. - Full third memory-safety audit of the whole codebase (buffer bounds, use-after-free, double-free, uninitialized reads, thread races, leaks) — all other sites verified clean.
Highlights (unchanged)
- Legacy API 100% compatible — drop-in replacement for the original remote-installer protocol (verified byte-for-byte against flatz's implementation).
- New v2 REST API — structured job management with pause / resume / stop (see
docs/API.md). - On-screen dashboard — live transfer cards with icon, version and expandable details, controls, activity log.
- No network? No crash. — tolerates network drops mid-transfer and recovers when the link returns.
- Accelerated parallel transfers — adaptive segmented downloads with keep-alive session reuse.
Install
- Download the
.pkgattached below. - Install it on your PS4 with HEN active (USB package install).
- Launch it — the dashboard shows the console's IP.
- Send installs from any device on the same network (see the README).
Notes
- Title ID
RPIN00001· App version0.0.4 - Host unit tests pass; the PS4 package is built by CI from the same tree as this tag.
v0.0.3 · Oct 28, 2026
Remote PKG Installer NextGen v0.0.3 — API correctness release.
What's new since v0.0.2
- Fixed
POST /api/v2/jobs/<id>/pause/resume/stop— these were documented as POST but the server only routed GET, so POST returned 404 and clients had to fall back to GET. POST is now the primary method; GET on the same paths still works for backward compatibility with <= 0.0.2 clients. - Docs: full API audit against the original — every route and response shape was verified format-string by format-string against flatz's original implementation. The wire format is byte-compatible; the docs examples were corrected to match (unquoted hex/decimal numbers in
get_task_progressandis_exists, unquotederror_code) and theGET /alias of/api/v2/systemis now documented.
Highlights (unchanged)
- Legacy API 100% compatible — drop-in replacement for the original remote-installer protocol (verified byte-for-byte against flatz's implementation).
- New v2 REST API — structured job management with pause / resume / stop (see
docs/API.md). - On-screen dashboard — live transfer cards with icon, version and expandable details, controls, activity log.
- No network? No crash. — tolerates network drops mid-transfer and recovers when the link returns.
- Accelerated parallel transfers — adaptive segmented downloads with keep-alive session reuse.
Install
- Download the
.pkgattached below. - Install it on your PS4 with HEN active (USB package install).
- Launch it — the dashboard shows the console's IP.
- Send installs from any device on the same network (see the README).
Notes
- Title ID
RPIN00001· App version0.0.3 - Host unit tests pass; the PS4 package is built by CI from the same tree as this tag.
v0.0.2 · Oct 28, 2026
Remote PKG Installer NextGen v0.0.2 — stability and polish release.
What's new since v0.0.1
- Full pkg info on the dashboard — every transfer card now shows the game icon and version; press TRI on a card for the full details panel (title id, content id, type, pieces, source url, error).
- Fixed a critical memory bug in the transfer accelerator — multi-piece proxied downloads corrupted the heap (use-after-free when BGFT moved to the next piece, double-free when a job finished). The proxy stream now has a single, well-defined owner.
- Pause now actually shows as paused — the dashboard and API previously flipped a paused download back to "running" within a second.
- No more stuck job slots — downloads removed from the console's download list while paused or queued now terminate cleanly instead of occupying the registry forever.
- Long signed URLs supported — presigned S3/Azure piece URLs (up to 2048 chars) were silently truncated before and broke proxied installs.
- Faster cleanup, less waste — a stopped or aborted download stops pulling data from the origin server immediately.
Highlights (unchanged from v0.0.1)
- Legacy API 100% compatible — drop-in replacement for the original remote-installer protocol (verified byte-for-byte against flatz's implementation).
- New v2 REST API — structured job management with pause / resume / stop (see
docs/API.md). - On-screen dashboard — live transfer cards, controls, activity log.
- No network? No crash. — tolerates network drops mid-transfer and recovers when the link returns.
- Accelerated parallel transfers — adaptive segmented downloads with keep-alive session reuse.
Install
- Download the
.pkgattached below. - Install it on your PS4 with HEN active (USB package install).
- Launch it — the dashboard shows the console's IP.
- Send installs from any device on the same network (see the README).
Notes
- Title ID
RPIN00001· App version0.0.2 - Host unit tests pass; the PS4 package is built by CI from the same tree as this tag.
v0.0.1 · Oct 28, 2026
First tagged release of Remote PKG Installer NextGen — a modern rewrite of flatz's Remote Package Installer for PS4.
Highlights
- Legacy API 100% compatible — drop-in replacement for the original remote-installer protocol, verified byte-for-byte against flatz's implementation (
is_exists, progress, task ops,find_task, error_code responses). - New v2 REST API — structured job management with pause / resume / stop endpoints (see
docs/API.md). - On-screen dashboard — live transfer cards, controls, and an activity log; shows the console IP and storage at a glance.
- No network? No crash. — tolerates network drops mid-transfer and recovers when the link returns (the original crashes).
- Accelerated parallel transfers — adaptive segmented downloads with keep-alive session reuse; noticeably faster on high-latency hosts.
Install
- Download the
.pkgattached below. - Install it on your PS4 with HEN active (USB package install).
- Launch it — the dashboard shows the console's IP.
- Send installs from any device on the same network (see the README).
Notes
- Title ID
RPIN00001· App version0.0.1 - Host unit tests pass; the PS4 package is built by CI from the same tree as this tag.
