Repository navigation
Releases
Pocket Shelf 0.6.1-beta.1
Pocket Shelf 0.6.1 adds two views, Split and Spotlight, draws the shelf at a steady 60 frames a second, and opens on the tab you left again.
Install pocket-shelf.vpk with VitaShell, or update from SELECT ▸ System ▸ Updates on the Beta channel. Your settings, categories, title changes, artwork and game data carry over; no setting changes value.
New
- Split (SELECT ▸ Appearance ▸ View): the list of titles on the left; on the right the selected title's box art, name, console and category, and its details (year, genre, developer, publisher, players). Up and down move through the list.
- Spotlight (SELECT ▸ Appearance ▸ View): one title at a time over its full backdrop, with its box art at the lower left and its name, details and a Launch button beside it. Left and right slide to the next title. At the Basic detail level only the box art shows.
- Both views have the three detail levels and work with touch: drag to move, tap the box art to start the game.
Changed
- Smoother shelf: the shelf is drawn in far fewer steps (about 50 a frame instead of up to 700), and the next frame is prepared while the last one is on screen. On hardware, browsing now holds 60 frames a second, where 0.6.0 often dropped to 40.
- Faster backdrops for Vita titles: a 960x544 picture is reduced to the screen texture in a quicker way, cutting the wait after you stop on a title.
- The log (
log.txt) records memory every 30 seconds and any icon or box art that takes over a quarter second to load, for reports.
Fixed
- With a folder category, Pocket Shelf opened on that folder's tab at every start instead of the tab and title you left.
No new files in ux0:/data/PocketShelf/. settings.json saves the new views as split and spotlight; an older release reading it shows Home.
Confirmed on hardware: the smoother frame rate, steady memory over several minutes of browsing, and both new views. Not yet confirmed on hardware: the faster backdrop for Vita titles (the tests cover it), the start-up tab fix (checked in tests), and the update from 0.6.0-beta.1. Please report problems with ux0:/data/PocketShelf/log.txt.
Verify
This release's VPK carries a signed build provenance: gh attestation verify pocket-shelf.vpk -R fthdgn-gh/pocket-shelf.
Pocket Shelf 0.6.0-beta.1
Pocket Shelf can now list the games in your own folders and start them in standalone emulators (DaedalusX64, DSVita, NooDS, Flycast, ScummVM and PCSX AwO) as well as RetroArch and Emu4Vita++, choose a game's core, and take box art and backdrops from any folder.
Install pocket-shelf.vpk with VitaShell, or update from SELECT ▸ System ▸ Updates on the Beta channel. Your settings, categories, title changes, artwork and game data carry over; no setting changes value.
New
- Folder categories (SELECT ▸ Games ▸ Categories ▸ New folder category): pick a folder with Use this folder and name the tab. The tab lists the games in the folder and its subfolders that no RetroArch playlist lists. Each file's console is found from its extension, the files in a
.zip, a disc image's header (PlayStation, Saturn, Mega-CD, a Mega Drive.bin, a PS1EBOOT.PBP, through a.cueor.m3u) or its folders' names (snes,psx,Mega Drive…). The tracks a.cue,.gdior.m3unames are not listed on their own, and adisc.gdiorEBOOT.PBPtakes its folder's name. ○ on a folder category edits its folder and name; the manager shows each one's folder and number of games. - Rescan this tab (SELECT, above Language): reads again only what fills the open tab — the installed apps for Games, Homebrew and System, the PSM titles, Adrenaline's games and the playlists for PSP and PSX, the playlists and emulator folders for a console's tab, a folder category's folder — and keeps the rest of the list. On Last Played, Favorites and your own categories it is a full rescan.
- Standalone emulators: games start in these when installed, straight into the game:
- DaedalusX64 (Nintendo 64), DSVita (Nintendo DS), NooDS (Nintendo DS, Game Boy Advance), Flycast (Dreamcast), PCSX AwO (PlayStation).
- Their own game folders are read at each scan and their games join the console tabs: DaedalusX64's
Romsfolders and the folder set in its menu, DSVita'sux0:data/dsvita, Flycast's content folders, PCSX AwO'sux0:data/pcsx-awo/romsand itsrom_folders.txt. NooDS keeps no folder: use a folder category. - ScummVM: the games you added in ScummVM get a ScummVM tab, under ScummVM's names, and start with your ScummVM settings for them.
- A game several apps open offers them all in its editor's Open with (Triangle on a title); RetroArch's PlayStation playlist games offer PCSX AwO there too.
- Core (Triangle on a RetroArch or Emu4Vita++ game ▸ Core): the core it starts with in that app — Default, then Recommended (the core recommended for that console on the Vita, such as
snes9x2005_plusfor SNES orgpspfor GBA), then every installed core for its console. - Box art and backdrops from any folder (Triangle on a title ▸ Box art or Backdrop ▸ Browse...): pick a PNG anywhere on the memory card. The title uses the file where it is, nothing is copied, and Browse opens next time on the folder you last used.
Changed
- The category manager shows as many rows as fit (five), and its button hints wrap instead of running off the drawer (German at the larger text size).
Fixed
- Saved files are written whole before they replace the old one, and a file with a leftover tail from an older write reads again; a write cut short no longer resets your settings.
- A line break in a note showed as a box in Browse.
New files in ux0:/data/PocketShelf/: rom-folders.json (your folder categories), folders.json (the folders Browse last used) and cores.json (the cores you chose). titles.tsv keeps folder and emulator games as new kinds of lines; an older release scans over such a list.
Confirmed on hardware: a Dreamcast game from a folder category starting in Flycast. Not yet confirmed on hardware: the other standalone emulators' launches, folder reading times on the memory card, per-game cores at launch, and the update from 0.5.2-beta.1; the rest was checked in tests, desktop renders and Vita3K (folder reading, tabs, Browse, the editor). Please report problems with ux0:/data/PocketShelf/log.txt; SELECT ▸ System ▸ Diagnostics shows what each folder reading found and left out.
Verify
This release's VPK carries a signed build provenance: gh attestation verify pocket-shelf.vpk -R fthdgn-gh/pocket-shelf.
Pocket Shelf 0.5.2-beta.1
Pocket Shelf can now open by itself when the console starts and come back when a game it started closes, and the SELECT menu is regrouped so no page scrolls.
Install pocket-shelf.vpk with VitaShell, or update from SELECT ▸ System ▸ Updates on the Beta channel. Your settings, categories, title changes, artwork and game data carry over; no setting changes value.
New
-
Console start (SELECT ▸ System ▸ Console start), with two settings:
- Open at console start: Pocket Shelf opens about 12 seconds after the console starts, once the home screen is up and when no other application is open.
- Return after a game: when a game started from Pocket Shelf closes, Pocket Shelf opens again about a second later. Closing Pocket Shelf itself, or a game started from the home screen, leaves you on the home screen.
Both run through a taiHEN plugin in the home screen. If you use AutoBoot, Open at console start sets the title AutoBoot starts to Pocket Shelf, and turning it off puts back the title it had. Otherwise turning either setting on offers Pocket Shelf's own plugin, installed only when you press a second time: it is copied to
ur0:tai/pocketshelf_boot.suprxand one line is added under*mainin your tai config (ux0:tai/config.txt, elseur0:tai/config.txt), with the old file kept asconfig.txt.pocketshelf.bak. The Plugin row removes it again. Return after a game needs Pocket Shelf's plugin. Changes take effect at the next console start. If the console ever stops before the home screen, hold L while turning it on: taiHEN then loads no plugins, and the line can be removed with VitaShell.
Changed
- The SELECT menu is regrouped; no row was removed and none scrolls:
- SELECT: Sort, Appearance, Games, System, Language (Language stays last, one press up from the top).
- Appearance: Theme, View, Text size, Title line, Backdrop, Icon box, Status bar.
- Games: Categories, Open games with, Rescan titles, Game database, Game names, Game details, Artwork (Fetch artwork, Clean up artwork).
- System: Confirm, Keyboard, Console start, Updates (the channel), Check for updates, Diagnostics.
- "Details" is now called "Title line" (SELECT ▸ Appearance), to tell it apart from Game details: it sets the line under a title's name.
Fixed
- About 0.45 seconds after start, the screen paused for one frame while the saved Wikidata details were taken in; they are now set on each title in place.
New files in ux0:/data/PocketShelf/: autostart.txt (the two Console start settings, which the plugin reads), return.txt (left by a launch for Return after a game, deleted by the plugin) and boot-plugin.log (what the plugin did at the last console start). The other files keep their format.
Confirmed on hardware: the update from 0.5.1-beta.1 to this release, installing the plugin from the drawer, Pocket Shelf opening at console start, and returning after a game. Not yet tested: the AutoBoot path. Please report problems with ux0:/data/PocketShelf/log.txt and boot-plugin.log.
Verify
This release's VPK carries a signed build provenance: gh attestation verify pocket-shelf.vpk -R fthdgn-gh/pocket-shelf.
Pocket Shelf 0.5.1-beta.1
Game details from Wikidata: the year, genre, developer, publisher and players of games libretro's databases leave blank, and of Vita games, which they do not list. This release also fixes the Game names and Game details settings, which 0.5.0-beta.1 did not save.
Install pocket-shelf.vpk with VitaShell, or update from SELECT ▸ Updates on the Beta channel. Your settings, categories, title changes, artwork and the game databases already downloaded carry over. Run SELECT ▸ Library ▸ Game database once to get the Wikidata details.
New
- Wikidata's game details (SELECT ▸ Library ▸ Game database): the run now goes console by console: libretro's database identifies the games, then the console's Wikidata table (one per console, rebuilt every week from Wikidata and published by Pocket Shelf on the
gamedb-datarelease) is matched to them by the name libretro gave each game, or by its own name. A table is downloaded only when a newer one is published. Your Vita games get their details this way too; homebrew and system apps are left out. Games added later are matched at the next start, without the network. - Game details (SELECT ▸ Appearance ▸ Game details) take each item from libretro's database first and from Wikidata when libretro's is blank: release year, the genre in the app's language, developer, publisher, and players from the game's modes (Multiplayer, or 1 player). Region still comes from libretro alone. Sort by release (SELECT ▸ Sort) uses Wikidata's year for games libretro has none for.
Changed
- Game database drawer: Consoles counts the Vita when you have Vita games, and the help text and credits name Wikidata (its data is CC0).
Fixed
- Game names and Game details were not saved on the Vita: both reset to their defaults at every start in 0.5.0-beta.1.
- The Game database drawer slowed every frame while it was open (about 36 ms instead of 16 with 6,000 titles).
New files in ux0:/data/PocketShelf/: wikidata/ (each console's Wikidata table, labels.tsv with the genre and mode names in the app's five languages, and what each title was matched to in found.tsv). The other files keep their format.
On one console with about 6,000 titles, a run over 13 consoles took 76 seconds and matched 703 of 777 SNES games, 726 of 947 Mega Drive, 137 of 150 GBA, 43 of 53 Vita and 42 of 53 PSP games; NES sets with many hacks and translations match fewer (1,745 of 3,489). Confirmed on hardware: the update from 0.5.0-beta.1 to this release, and the start-up time. The title list appears as fast as in 0.5.0-beta.1 (0.78 seconds for 6,011 titles); the saved Wikidata details are read after it and taken in about a second later, in one pause of about 0.45 seconds. Please report slowdowns with ux0:/data/PocketShelf/log.txt.
Verify
This release's VPK carries a signed build provenance: gh attestation verify pocket-shelf.vpk -R fthdgn-gh/pocket-shelf.
Pocket Shelf 0.5.0-beta.1
Game identification from libretro's game databases: your RetroArch, PSP and PS1 games named as the databases name them, their details next to the selected game, and a sort by release year.
Install pocket-shelf.vpk with VitaShell, or update from SELECT ▸ Updates on the Beta channel. Your settings, categories, title changes and artwork carry over. RetroArch does not need to be installed for the game databases: Pocket Shelf downloads them itself.
New
- Game database (SELECT ▸ Library ▸ Game database): downloads libretro's game database for each console your games are on and identifies them. A RetroArch game is found by its playlist label when that is already a database name, an arcade game by its zip's name, and otherwise by its file's checksum: a zip's is read from the zip itself, a loose ROM is read once (the first run reads each
.nes,.binand similar file once, so large libraries take a while; later runs read only new files). PSP and PS1 games are found by their title id, with no file read. The drawer shows each console's progress, games checked and found, and Stop keeps what was read. Games added later are identified at the next start, for consoles whose database is already downloaded. - Game names (SELECT ▸ Appearance ▸ Game names): Own (as before), Database (
Frogger (Japan)), or Short (Frogger;Legend of Zelda, The - A Link to the PastbecomesThe Legend of Zelda - A Link to the Past). A title you renamed in the title editor keeps your name, and A–Z order follows the names shown. - Game details (SELECT ▸ Appearance ▸ Game details): the release year, genre, developer, publisher, number of players and region of the selected game, each with its symbol: a column right of the title in Home and Cascade, one row under it in Carousel and Grid. Only what the database knows is shown. Turn it off and the line under the title shows the year and genre instead.
- Sort by release (SELECT ▸ Sort): Newest release and Oldest release. Games with no known year go last.
Changed
- Fetch artwork and Find artwork match libretro's box art by a game's database name before its playlist label, so a game with an old-style label (
Battleship (U)) or a region the label does not give gets the right picture. - Credits: the Game database drawer and the README name libretro-database (CC BY-SA 4.0), whose data the identification uses.
Fixed
- A playlist label or name ending in non-Latin text (Japanese, for example) could crash the libretro name matching.
New files in ux0:/data/PocketShelf/: gamedb/ (each console's database as a table, the games' checksums in crcs.tsv, and what each title was identified as in known.tsv) and game-info.json (the Game names and Game details settings). The other files keep their format.
How much a database tells varies by console: genre, developer and players are filled in for about 13% of NES games, 29% of Mega Drive, 47% of SNES and over 80% of GBA and PS1 games; names, regions and mostly years are there for nearly all. GoodTools NES dumps whose header differs from No-Intro's are not found by checksum and keep their label. Identification and the details panel have been used on one console; the time a large first run takes and the frame that takes a console's results have not been measured on hardware yet. Please report slowdowns with ux0:/data/PocketShelf/log.txt.
Verify
This release's VPK carries a signed build provenance: gh attestation verify pocket-shelf.vpk -R fthdgn-gh/pocket-shelf.
Game data
Game details tables for Pocket Shelf, rebuilt weekly from Wikidata (data under CC0). Not an app release: Pocket Shelf downloads these files itself.
Pocket Shelf 0.4.0-beta.1
Experimental support for Emu4Vita++: its games and favourites on the shelf, and a choice between RetroArch and Emu4Vita++ for the games both can open.
Install pocket-shelf.vpk with VitaShell, or update from SELECT ▸ Updates on the Beta channel. Your settings, categories, title changes and artwork carry over. The first start after the update scans your titles again, once. See the README for Emu4Vita++, Adrenaline and SteamGridDB setup.
New
- Emu4Vita++ games (experimental). With Emu4Vita++ 0.81 or later installed (the VPK with every core), Pocket Shelf lists the games in the playlists Emu4Vita++ reads: RetroArch's on
ux0:, Emu4Vita++'s ownux0:/data/EMU4VITAPLUS/playlists, and RetroArch's onuma0:. A game starts straight in Emu4Vita++, with the core of the same name as RetroArch's when Emu4Vita++ has it, otherwise with Emu4Vita++'s preferred core for the console. RetroArch no longer needs to be installed for playlist games to show. - Emu4Vita++ favourites in the Favorites tab. Games you mark as favourites in Emu4Vita++ appear in Pocket Shelf's Favorites tab, and in their console's tab when no playlist lists them. They are read at every start, so a new favourite shows the next time Pocket Shelf opens. Pocket Shelf never changes Emu4Vita++'s files: remove a favourite in Emu4Vita++. The title editor (△) shows "In Emu4Vita++" for such a game; Pocket Shelf's own Favorite mark works as before.
- Open games with (SELECT ▸ Library ▸ Open games with): RetroArch or Emu4Vita++ for every game both can open. RetroArch is the default, so nothing changes until you pick Emu4Vita++.
- Open with in the title editor (△): RetroArch, Emu4Vita++, or the menu's choice, for one game. It shows for games both apps can open; Reset to defaults clears it. A game only one app can open always starts in that app.
Changed
- The detail line names the app a RetroArch or Emu4Vita++ game will start in.
- Games whose file path holds
&are listed and start in Emu4Vita++. RetroArch still cannot start them. - Pictures: a favourite with no RetroArch thumbnail uses the box art Emu4Vita++ downloaded for it, and a game's backdrop falls back to a PNG in the
.previewsfolder next to its file, the picture Emu4Vita++ shows as its preview. - The title editor scrolls when it has more rows than fit.
- Diagnostics reports what the scan found for Emu4Vita++ and how many favourites it read.
New file in ux0:/data/PocketShelf/: emulators.json (which app opens games, for all games and per game). titles.tsv, the scanned title list, has a new column, which is why the first start scans again; the other files keep their format.
Emu4Vita++ support is experimental: launching, favourites and Emu4Vita++'s box art have been tried on one console only. Please report a game that opens Emu4Vita++ without loading, with ux0:/data/PocketShelf/log.txt.
Verify
This release's VPK carries a signed build provenance: gh attestation verify pocket-shelf.vpk -R fthdgn-gh/pocket-shelf.
Pocket Shelf 0.3.0-beta.1
Touch screen support, sorting for each tab, a text size setting and a rebuilt keyboard, plus faster backdrops and box art that keeps its shape.
Install pocket-shelf.vpk with VitaShell, or update from SELECT ▸ Updates on the Beta channel. Your settings, categories, title changes and artwork carry over. See the README for Adrenaline and SteamGridDB setup.
New
- Touch screen. Everything the buttons do also works on the front screen: tap a title to select it and tap it again to start it; drag or flick along the titles; tap or drag along the tab names; tap the button hints, menu rows and their ◀ ▶ arrows; tap outside a menu to go back. In the box art and backdrop lists, the first tap shows the picture and the second uses it.
- Sort each tab (SELECT ▸ Sort): Name (A–Z) or (Z–A), Recently played or Least recently played, Most played or Least played, Newest installed or Oldest installed. Each tab keeps its own order. "Recently played" uses the Vita's own record of when each title was last started; the Vita keeps no play count, so "Most played" counts the launches made from Pocket Shelf, starting with this version.
- Text size (SELECT ▸ Appearance ▸ Text size): five steps from Smaller to Larger.
- A new keyboard, laid out like the Vita's: a cursor you move with L and R, □ to delete, △ for a space, START to finish, Shift for one capital or (pressed twice) all capitals, a 123 page for digits and punctuation, and a letter's accents when you hold ○ or a finger on it.
- The Vita's own keyboard as an option (SELECT ▸ Keyboard ▸ System), with its languages and word suggestions. Pocket Shelf's keyboard is the default.
Changed
- Box art keeps its shape. Pictures in
art/(your own and the ones Find artwork saves) are fitted whole instead of cropped to a square, and the selection ring follows the picture's edges, as it now does for PSP icons too. - Backdrops of the titles beside the selected one load ahead, so one step left or right shows its backdrop at once.
- Icons and box art use at most 6 MB of video memory; pictures far from the selection are freed and load again when you come back to them.
- The screen is laid out in the Vita's own 960×544 pixels. The look is unchanged.
- The SELECT menu starts with Sort and has a Keyboard row above Language.
- The README has a guide to placing your own box art and backdrops.
New files in ux0:/data/PocketShelf/: sort.json, plays.json, text-size.json and keyboard.json. The existing files keep their format.
Verify
This release's VPK carries a signed build provenance: gh attestation verify pocket-shelf.vpk -R fthdgn-gh/pocket-shelf.
Pocket Shelf 0.2.0-beta.3
The VPK now carries the licenses of the software built into Pocket Shelf. No change to how the app works since 0.2.0-beta.2.
Install pocket-shelf.vpk with VitaShell, or update from SELECT ▸ Updates on the Beta channel. Coming from 0.1, the update runs 0.1's updater, which can stop on its last screen ("Starting it..."); the update is installed by then, so restart the Vita and open Pocket Shelf. See the README for Adrenaline and SteamGridDB setup.
Changed
THIRD_PARTY_NOTICES.txtat the root of the VPK (and inux0:app/POCKTSHLF/once installed): the licenses of the 103 Rust crates linked into the executable, the Rust standard library, vita2d and the Figtree font.updater/LICENSE.txt: the GPL-3.0 text of the updater app, which installs Pocket Shelf's updates.
Verify
This release's VPK carries a signed build provenance: gh attestation verify pocket-shelf.vpk -R fthdgn-gh/pocket-shelf.
Since 0.2.0-beta.1
0.2.0-beta.2 restored the Wi-Fi symbol and Diagnostics' scan report and Adrenaline boot log, made a rescan that cannot start say so, and moved the log to ux0:/data/PocketShelf/log.txt with a 256 KB limit.
Pocket Shelf 0.2.0-beta.2
Fixes from the first days of 0.2, and Diagnostics back to what 0.1 showed.
Install pocket-shelf.vpk with VitaShell, or update from SELECT ▸ Updates on the Beta channel. Coming from 0.1, the update runs 0.1's updater, which can stop on its last screen ("Starting it..."); the update is installed by then, so restart the Vita and open Pocket Shelf. See the README for Adrenaline and SteamGridDB setup.
Fixed
- The Wi-Fi symbol shows again in the top bar while the Vita is connected, in four strength levels. 0.2.0-beta.1 never read the connection state.
- Diagnostics lists what the last title scan found after the timing: PSM titles, the PSP memory stick location, PSP and PS1 folders and disc images with the reason any were skipped, and RetroArch playlists and skipped games. Run Rescan titles first; the lines come from a scan in the same run.
- Diagnostics ends with the last Adrenaline launches, with the boot trigger and the ISO driver, as in 0.1.
- A rescan that cannot start says so ("The scan could not start.") instead of reloading the old list.
- Diagnostics' Build line shows the version, channel and commit.
Changed
- The log is
ux0:/data/PocketShelf/log.txtand stays under 256 KB: when it reaches that, it becomeslog.old.txtand a new one starts. The scanned title list is kept in the same folder, as 0.1 kept it. Theux0:/data/PocketShelfNext/folder of the test builds is no longer used and can be deleted.
For developers
PocketJS, Bun and TypeScript are gone from the repository: it is a Rust project at the root, built with make test, make shots and make build. See the README's Building section.