PS4 Store › Tools › Remote Package Installer NextGen

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 publishing s_running/s_listen_fd. On the console's 8 cores the new thread could be scheduled first, observe s_running == false and 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_create is 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. a packages[] entry longer than 2047 chars) without zeroing the result struct, so POST /api/install could answer with a nondeterministic garbage error_code. The result is now zeroed at both public entry points; every failure path returns deterministic fields.

Process

  • Releases are now self-contained: the release workflow 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_init error 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

  1. Download the .pkg attached below.
  2. Install it on your PS4 with HEN active (USB package install).
  3. Launch it — the dashboard shows the console's IP.
  4. Send installs from any device on the same network (see the README).

Notes

  • Title ID RPIN00001 · App version 0.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_progress and is_exists, unquoted error_code) and the GET / alias of /api/v2/system is 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

  1. Download the .pkg attached below.
  2. Install it on your PS4 with HEN active (USB package install).
  3. Launch it — the dashboard shows the console's IP.
  4. Send installs from any device on the same network (see the README).

Notes

  • Title ID RPIN00001 · App version 0.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

  1. Download the .pkg attached below.
  2. Install it on your PS4 with HEN active (USB package install).
  3. Launch it — the dashboard shows the console's IP.
  4. Send installs from any device on the same network (see the README).

Notes

  • Title ID RPIN00001 · App version 0.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

  1. Download the .pkg attached below.
  2. Install it on your PS4 with HEN active (USB package install).
  3. Launch it — the dashboard shows the console's IP.
  4. Send installs from any device on the same network (see the README).

Notes

  • Title ID RPIN00001 · App version 0.0.1
  • Host unit tests pass; the PS4 package is built by CI from the same tree as this tag.