Cloud Play fixes for fallback regions: full catalog restore + Bloodborne launch (2.11.4) - #49
Merged
Merged
Conversation
Five workflow_dispatch workflows, one per platform, each building that platform (build-only — no store deploy, no Dropbox, no signing/deploy secrets) and uploading the result as a workflow artifact. Versions come from CMakeLists.txt via the extract-version action. - build-artifact-linux.yml Pylux-Linux-<ver>.AppImage + Pylux-Linux-<ver>.zip - build-artifact-android.yml Pylux-Android-<ver>.apk (debug-signed) - build-artifact-macos.yml Pylux-macOS-<ver>.zip (ad-hoc .app, arm64) - build-artifact-ios.yml Pylux-iOS-<ver>.ipa (UNSIGNED, sideload only) - build-artifact-windows.yml Pylux-Windows-<ver>.exe + Pylux-Windows-<ver>.zip Reuses the deploy/build workflows' build + toolchain steps; drops the signing/deploy tails. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
# Conflicts: # lib/src/cloudsession_kamaji.c # test/cloudsession_kamaji.c
The public fallback paginated a single container expecting product rows, but Sony restructured APOLLOROOT into one level of category containers, so region-unsupported accounts got an empty PS Now catalog. Walking only the PS3 child (as PR #43 proposed) restores 264-330 classics but misses the ~535-title PS4 streamable catalog that lives in the genre/alphabetical children. Walk every child of the regional root once instead, deduped by product id, with per-container completeness so a failed child still blocks caching a partial list. Live-verified against an independent walk of both store families: US 853 titles (537 PS4 + 316 legacy), GB/HU 786 (536 PS4 + 250 legacy), identical id sets, zero duplicates; native-account fetch is byte-identical before/after. Adds apollo-fallback-test, a region harness that runs the anonymous walk as any account country. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
They came along with PR #43's branch but are unrelated to the cloud fixes; they can land separately if wanted. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…mpleteness) Protocol findings: - Scope the legacy->US/GB Classics remap in km_resolve_store_locale to foreign-catalog (fallback-region) sessions. Native accounts resolve every id in their server-authoritative store exactly as before this branch — a native JP/NL classic must not be re-routed to a GB container that lacks it. - Revert km_pick_streaming to the strict license_type==4 primary pass. The title-matched *GS fallback already catches reservations published with license_type=0 (Bloodborne EU); accepting untitled *GS rows in the primary pass risked acquiring a bundle sibling's sku. - Foreign-catalog safety nets so no region can regress below the old behavior: 0.5d retries the modern-title resolve once via the US/GB store when the account store 404s, and a failed /bin/zsh acquire falls through to Gaikai validation instead of surfacing a possibly-wrong PS+ error. - km_is_legacy_classic_id now examines only the title-id segment between the first '-' and '_' (structural, per the data-handling rules) instead of substring-matching the whole id including the region-varying label tail. Fallback-walk findings: - A container row the walk cannot collect (nested deeper than one level, id missing/over-long, child table full) now marks the list incomplete with a log line, so a silently truncated catalog is never cached for the TTL. - Empty-id product rows are dropped (they dodge the dedupe and the contract's uniqueness guarantee). - One global 200-page budget bounds a misbehaving server to ~5x the observed live request count instead of children x per-container cap. - stream_identifier's disc-rescue path reads product_id before storeProductId (the latter is normalized only after streamIdentifier is stamped). Docs: schema example says 8, v6 changelog no longer overclaims storeProductId, dedupe_contract_product_ids documents the plusCatalog stamp on input rows. Live re-verified: HU walk 788 titles / US 853, complete, id sets matching an independent walk; unit suite 126/126. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
forward-technologies
added a commit
that referenced
this pull request
Aug 2, 2026
…egions Cloud Play fixes for fallback regions: full catalog restore + Bloodborne launch (2.11.4)
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.
Integrates and extends @nyakaspeter's #43 (all four fixes preserved — thank you!) on top of release/beta.
What this ships
Verification
Merging deploys BETA (2.11.4). Production promotion follows after the fallback-region retest confirms.
🤖 Generated with Claude Code