github deox1111/ps5-library v0.7.31
PS5 Library 0.7.31

3 hours ago

Note

Rest Mode still works only on internal storage; USB support is in progress (unchanged from 0.7.29).

Changes

  • The Store no longer stays empty while the catalogs are large (#17). With several big catalogs (about 3,400 items, 8 MB), the console took 30 to 128 seconds to prepare the Store's list, and the browser showed "The catalog is empty" in the meantime. Most of that time went to checking every download link for Link-Vault pages, and the rest to copying the whole catalog for each answer. On the same console the list now takes 0.3–0.4 seconds, and about 5 seconds right after the library starts. It is prepared in the background when a catalog changes. A browser that asks while a new list is being prepared gets the previous one, and the newer one arrives with the next refresh within 30 seconds.
  • Catalogs on one server are read one after another (#17). The console's DNS gave up when it had to look up the same name several times at once. Four catalogs from pegasus-catalog.fly.dev read together all failed after 5 seconds, two took 9 seconds each, one alone took under a second. Catalogs on different servers are still read side by side. When the console can't look up a catalog server, the library asks Cloudflare's DNS over HTTPS (1.1.1.1) once and keeps using it for that server for an hour. Its messages say what went wrong: "the console could not look up pegasus-catalog.fly.dev within 5 seconds" or "the console's DNS took 4.6 seconds to look up …". A lookup that hangs in the console's resolver no longer holds the catalog's reader after the request gives up. That is the most likely reason catalogs stayed at "checking for changes…" for 45 minutes.
  • An unchanged catalog isn't processed again after a restart. The library remembers what each catalog contained. After a start, catalogs whose content hasn't changed are skipped instead of being parsed and merged into the Store again, which made the console busy for up to half a minute.
  • An empty Store says why. "Reading your catalogs…" while catalogs are being read for the first time, "The catalog didn't load" with the reason when the console didn't send the list (it tries again every 30 seconds), "No catalog answered" when every catalog failed, and "The catalog is empty" only when the catalogs really have no games.
  • Region folders beside a game no longer replace it. Some releases hold the game folder and, next to it, smaller folders with the same title ID: region or patch files meant to be copied over the game. Gran Turismo 7 comes as PPSA01317-app with the game, plus EUR and USA with an eboot.bin and a param.json each. The library installed all three as games, ShadowMountPlus registered one of the small region folders, and the download waited for registration forever ("ShadowMount scan requested; waiting for registration"), even after Restart ShadowMount. Now only the largest folder of a title is installed and awaited. The others stay in the unpacked folder (ps5-library/library/<download>), and the download says which ones they are and that they should be copied over the game folder only if the release says so.

Validation and limitations

Host build, integration tests and UI checks passed. The integration tests cover a release with PPSA12345-app, EUR and USA sharing a title ID: only the game folder was placed and registered, the region folders stayed in the unpacked folder with their files, and the download said so. The UI checks cover each empty-Store message, and the host checks cover reading Link-Vault addresses without the old pattern matching.

On a PS5 (firmware 13.60) with the six catalogs from #17 (3,446 items, 8 MB list):

  • The Store's list took 0.33–0.5 seconds over 90 seconds of polling every 5 seconds, against 30–128 seconds before.
  • The first list after a restart came in 4.5 seconds, and the jobs list answered in under 0.1 seconds from the start.
  • After that restart all six catalogs were read again within 5 seconds without an error, and none was processed again because none had changed.

The DNS-over-HTTPS fallback was built against the failures measured on that console. That console's DNS answered normally during the last tests, so the fallback didn't have to step in there.

After publishing, Settings → Updates on that console installed this release from GitHub and started it in 9.2 seconds. Both copies of the ELF on the console matched the release, and the Store's list answered in 0.6–1.9 seconds right after the update.

The Gran Turismo 7 fix wasn't tried on a console: the test would add a fake game to the console's library. A Gran Turismo 7 that an earlier version already installed this way stays as it is: its region folder is the registered one. To fix it, move the EUR and USA folders out of the drive's root and let ShadowMountPlus register the game folder again.

Load the new ELF; it replaces the running version and keeps your catalogs and settings. A download in progress pauses; Resume continues it.

Thanks to @Dantesinferno11 for the report and the photos (#17).

Don't miss a new ps5-library release

NewReleases is sending notifications on new releases.