Fix user-reported issues + dependency bumps (3.3.23)#157
Open
phantomptr wants to merge 5 commits into
Open
Conversation
…stall it On FW 11/12 the in-process InstallByPackage rejects a PS4 update with 0x80b21106 (an authid gate) — the EXPECTED first step before the client retries through the standalone DPI daemon, which lands patches the in-process path can't. But the engine's 2.2.55 register-reject staging cleanup deleted the staged .pkg the instant that first register was rejected, so the DPI fallback had nothing left to install (HW bug bundle, FW 12.70: register-reject staging cleaned fired right after 0x80b21106, register_path=none, update failed). Add the pure predicate preserve_staging_on_reject(package_type) (ends_with DP) and skip the auto-clean for a guarded patch, logging staging PRESERVED for DPI fallback. The client owns cleanup of its transient copy after the FULL cascade (USB path fs_deletes unconditionally; the queue keeps-for-retry on fail / deletes on success), so no leak. Base/DLC keep the existing idempotent cleanup.
… (FW 12.20) handleStop did `ack = appKill(...)` then `if (!ack.ok) processKill(...)`, but appKill never resolves ok=false — the engine bails when the payload returns ok=false, so the invoke promise REJECTS. On FW 12.20 sceApplicationKill rejects the app id, appKill throws, and we jumped straight to the outer catch — the SIGKILL fallback (which runs with the payload's elevated ucred and does work) never ran, so the button "did nothing". Wrap each kill in its own try/catch so a throw falls THROUGH to the pid SIGKILL instead of aborting. Detection is fine (the badge+button appear, so app_id is valid) — only the kill API fails on 12.20.
…ole runs InstalledApps (every 3s) and Library's RunningAppsPanel (every 5s) poll the PS5 mgmt port for what's running. A folder reconcile (a many-chunk exfat.ffpfsc dump) already bursts that same mgmt port with per-file finalize round-trips; the extra poll contends and can collapse a many-file upload's effective throughput (a single .pkg is one finalize, so it's immune) — the likeliest cause of the reported 120→10 MB/s exfat regression. Both pollers now skip a tick when transferScreenBusy(host) and resume the moment the upload ends. Safe regardless of whether it's THE cause; needs a HW repro (slow upload with only the Upload screen open) to confirm.
Folds in the four open dependabot PRs (#146–#149), reapplied on current main so the lockfiles regenerate cleanly: - engine: tower-http 0.6 -> 0.7 (cors feature; CorsLayer unchanged, builds clean) - desktop: tauri 2.11.3 / tauri-build 2.6.3 / tauri-utils 2.9.3 / tray-icon 0.24.1 - client: @tauri-apps/api 2.11.1, lucide-react 1.21.0, react-router-dom 7.18.0, @vitest/coverage-v8 4.1.9, typescript-eslint 8.61.1 - CI: actions/checkout v7, docker/setup-buildx v4, build-push v7, login v4, metadata v6 Verified: engine clippy+tests, desktop cargo check, client typecheck/lint/743 tests/vite build, i18n gate — all green.
- Fixed FW11/12 update installs (preserve the staged patch for the DPI fallback) - Fixed Close game on FW 12.20 (reach the SIGKILL fallback) - Pause running-game pollers during an upload (exfat speed regression) - Dependency + CI bumps
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Batch of fixes for issues reported in Discord/bug bundles, plus the four open dependabot PRs folded in. No PS5 hardware was available, so the HW-dependent parts are flagged for confirmation.
Fixes
Updates won't install on FW 11/12 (most-reported)
runPkgInstallalready falls through to the DPI daemon for a rejected patch (ee0832e), but the engine's2.2.55register-reject cleanup deleted the staged .pkg the instant the in-process register was rejected — so the DPI fallback had nothing to install. HW bug bundle (FW 12.70, v3.3.22) confirms it:register-reject staging cleanedfired right after0x80b21106,register_path=none, update failed.New pure predicate
preserve_staging_on_reject(package_type)(…DP); the handler skips the auto-clean for a guarded patch. The client owns cleanup after the full cascade (USBfsDeletes unconditionally; queue keeps-for-retry / deletes on success), so no leak. Base/DLC keep the existing idempotent cleanup. (Still open, needs FW-12 HW: in the same bundle the payload went unreachable right after0x80b21106— a separate crash/wedge; and both in-process appinst and the DPI daemon now callInstallByPackage, so FW 12.70 may hit the same gate either way.)"Close game" did nothing on FW 12.20
handleStopdidappKillthenif (!ack.ok) processKill, butappKillnever resolvesok:false— the engine bails so the promise throws, skipping the SIGKILL fallback. On FW 12.20 Sony'ssceApplicationKillis rejected → throw → fallback never ran. Wrapped each kill so a throw falls through to the (elevated-ucred) SIGKILL. (PayloadsceSystemServiceKillApphardening left for HW follow-up.)Upload speed 120→10 MB/s on exfat.ffpfsc dumps
Transfer code is byte-identical since v3.3.5. The one new mgmt-port load is the running-game pollers (InstalledApps 3s, Library 5s) contending with a many-file reconcile's per-file finalize round-trips. Both pollers now pause while
transferScreenBusy(host). (Likeliest cause; needs a HW repro — slow upload with only the Upload screen open — to confirm.)Dependency bumps (dependabot #146–#149)
Verification (no HW)
engine clippy + full workspace tests, desktop
cargo check(tauri 2.11.3), client typecheck + lint + 743 tests + vite build, i18n coverage gate — all green. New unit testpreserve_staging_on_reject_only_for_patches.