Each file is a details whose summary is the row: name, folder when it is not the bare name, status chip. The short hash sits on one copy button beside it, since a summary is itself a control. Opened, the evidence runs across the list. A list with no folder drops the column. Code spans in the evidence are plain text.
The lists split by the share of a page they render to (elements against 10,000, bytes against 600,000) instead of Markdown length. With its parts, Batocera goes from 12 pages, 18,854 elements and 1.21 MB to 10 pages, 13,671 and 1.11 MB. A part that folds back into its platform page redirects there, from the record in website/src/data/platform-parts.json.
MAME's card pages, GroovyMAME and yaps2 read 13,000 to 16,700 words of
cards. Each entry is now a table row (name, members, status, short
hash) that opens to its card in a details block, with the site's filter
box and row counter. Pages from 150 entries and every split part use it.
Visible words: mame-files-1 16,680 to 1,612, groovymame 14,396 to 1,876.
A row costs about five elements, so a part holds 180 cards: MAME goes
from 8 parts to 9, the largest at 567 KB and 8,989 elements.
Each wanted list (TOSEC, No-Intro, Redump) opens on its counts, then one
table folded under a filter box that opens it, in place of a block per
DAT. Only the names are searched: indexed descriptions and hashes put
the PlayStation page ahead of the PlayStation 2 one.
A filtered row stayed visible on a phone: a stacked row's display:block
outweighed the hidden attribute on every stacked table.
The install box's select had a rule of its own that dropped the arrow
and read as a text field. It now takes the shared select rule and
--rb-select-arrow in both themes.
System and emulator file cards show the name, size, download, a short
SHA1 with a copy button, the setups and the emulators. The full hashes
and the other facts sit in one closed fold, each hash with a copy button.
A system's install box shows one command under the OS tabs for the
setup picked in a list, remembered across pages. Without the script the
list of every command shows, open. The Markdown the page budgets are
measured on is unchanged, so no card moves.
Each file of a platform list is one row: name, folder, status chip, a short hash on a button that copies it whole, and a details cell. The details hold every declared hash, the size, the served copy and the readers. A reference's role is one word (glue, port, upstream, build) defined once in a legend instead of a phrase after every reference.
Visible words: Batocera 2,433 to 2,332, AmberELEC 1,301 to 1,299, RomM 1,607 to 1,596, RetroArch 2,207 to 2,088, RetroDECK arcade part 2 19,127 to 2,104. Rows weigh more Markdown, so 38 more systems move to pages of their own under the existing budgets.
Each line of measurements/<emulator>.jsonl now holds the whole run:
every repetition, core logs, per-frame hashes and raw timings. The gzip
data files, the data schema and the split and join code are gone, and
core_probe --record appends one line. record_version moves to 3.
The seven records are rewritten once: each new line equals its old line
joined with its data file, and rebuilds the first-layout file its id
hashes.
The site compiles the index and the SQLite files from measurements/
instead of a pinned clone. The pin, the sync script, the CI clone steps,
the freshness area and its refresh handler are gone. core_probe --record
writes into measurements/ of the checkout by default, and a test fails
when a line or data file HEAD holds changed or vanished.
Each emulator with records gets a Tested block: claim, result, method, computer, core build and the permalink of its record at the pin. A Measurements page filters every test in the browser from the compact index, and the Data page lists measurements.sqlite with its tables. One SQLite file per emulator is linked from its page. wiki/measurements.md says how a test runs, held to the Start here budgets.
Both workflows fetch the pinned commit alone with git before the build, and the deploy fails without it.
The PlayStation 2 page holds every word of "playstation bios" and pagefind ignores the words a page has that the query lacks, so its own body matches put it first. A console whose every word another system page's consoles also hold is now written again in an `exact` field (weight 20). File names reach the `files` field as their parts: whole names let "ds" reach twelve dsi_* names on the DSi page. `consoles` weighs 100 so an emulator named after its console (Saturn.emu) comes second, and `aliases` 10 so the Nintendo page keeps "gba bios". The gate runs both directions of the PlayStation, Game Boy, DS and Wii pairs and Saturn.
AssetConverter dropped its table of known levels: an episode now owns
the levels its first level's exits reach, plus trainer (prince) and
psych3 (rescue), and a level is stored under its own name, so share1
becomes share/share1. Levels and tile sets convert on several threads.
Same Source/ and Content/ files, same lookup order.
Upstream now reads a Virtual ][ Contents/Resources folder as it is:
each take is also tried under its bare name and a .wav slot as the
headerless .raw (VirtualIISoundCatalog.h:47-66), macOS searches the
app bundle in /Applications and ~/Applications, a truncated AIFF is
rejected and AudioToolbox decodes .aiff on macOS
(VirtualIISoundLoader.h). Same nine takes, same paths.
get/ pages join the tab of the setup pages of the same name, so no page is excluded from every tab and the tabs keep their names. Groups filing emulators by first letter are no crumb. A console page carries "<name> BIOS" in its terms field. The search gate runs the console, checker, schema, license and iOS queries.
Standalone pin d881a29 to 7180422, the latest release, now named in
core_version. Upstream identifies xbox.xex by its bounding path instead
of its PE name and answers the disc authentication IOCTL: the XeFu
files, paths and required flags are unchanged. Four lines added in
emulator.cc move the citations past IsXeFuDispatcher by four. The
libretro pin f23c14c is the head of its libretro branch.
Standalone pin d55da28 to cc30b45. The five commits touch the window
server and fbs bitmap code only: no file read, path or hash changes.
screen.cpp lost eight lines above the upscale shader call, so its
citation moves from 636-638 to 628-630. The libretro pin e39ccac is the
head of the libretro branch and 11f5b6c is still its merge base.
Pin 704f603 to 63770cd. The three new hashes in platforms/config.sh are
dependency revisions the build fetches: the bgfx patch, libaltsound and
libdof. libdof moved to 5c54ef7 with GetGlobalConfigPath unchanged at
src/DOF.cpp:36-45, and libaltsound still appends altsound/<rom> to the
base folder, so only the libdof revision in the notes changes.
prose_written_at records that the notes were read at the new pin.
load_emulator_profiles caches by directory, and the run had loaded the
profiles before writing them, so the record rebuilt after a write kept the
pins just replaced: linapple, then ten profiles in one advance. The cache
is cleared first. The record is rebuilt for those ten.
RetroBat, the only platform that runs RAINE, installs raine.7z whose
raine.exe reports 0.97.5 and was built on 16 March 2025, the bump its
CHANGELOG.md records at line 176. Upstream tagged 0.97.6b since. The
mass pin advance had moved the profile to master. It goes back to
8e25d5d, the last commit before that build, with the refs written for it.
The peripheral option is option(${opt_name} ... ON) at CMakeLists.txt:541;
the notes and the mouse card cited 538, a blank line one above it already
at the old pin.
The Vulkan renderer merge (75 commits): no ROM loading change. The CMakeLists.txt organization and app name definitions moved down six lines (647-648).
183 upstream commits. Ultima's data_archive.cpp was folded into Common::load_engine_data, which opens ultima.dat and checks its version.txt the same way (common/engine_data.cpp:273-279). No dists/ or gui/ file changed, so the bundled hashes hold. Adds japanesemacfonts.dat, which the Mac GUI reads for Japanese fonts and ScummVM does not ship.
The fork rebased on trzy 1481545 (Src/Version.h:32 now 0.3a-1481545-mm); the two commits touch tilegen timings, the PowerPC core and the GUI only. upstream_commit follows to 1481545. The 11726c4 release archives carry the same Games.xml, Music.xml and crosshair bitmaps. RetroPie builds the main branch tip on x86, so the pin follows HEAD; the ROCKNIX arm build stays a note, with the version it prints.
101 upstream commits. Japanese glyphs now come from M PLUS 1p embedded with the Inter font (imgui_drawer.cc:481-498), so msgothic.ttc and the fontconfig CJK match are no longer read; XConfig gained a per-title random MAC address. Still no system file read. The libretro core is still at f23c14c.
Three upstream commits on tilegen write timings and the VF3 start-up: no cited file changed and every ref anchors at 1481545. Version.h still reads 0.3a-WIP. Libretro-Supermodel is still at 84bc106.
47 upstream commits. The ECam patch gained a Symbian 8.1a build (ecam_v81a.dll, [epoc81a] in ecam.dll.map) and per-version map sections; the mediaclientaudio and mediaclientvideo patch DLLs were rebuilt. Sizes and SHA-1 read from src/patch at d55da28. Firmware and ROM loading unchanged; the libretro branch is still at e39ccac.
The Apple II page named its start files with no visible way to get one: the download sat after the collection path, fourth of a card's facts. Each card now carries a Download button in its title, each start-line name links to its card, and a card held on another part page is reached by its permanent link.
Search box, column and table of contents are placed from one grid
width on every page. Long code in table cells breaks to fit, stacked
rows drop to one line per cell, and the button, search marker, choice
list and crumb spacing are aligned with the rest.
A profile pinned to one platform's build (pin_frozen) answers after the emulator, as a frozen_snapshot does: Flycast now answers dc bios missing ahead of Reicast and Flycast 2021 LE. terms weighs 30, so the version table answers which mame version first, and the gate now asks for rank 1 there. The search field test names the five fields, since round 4 item 2.4 put the title meta on the h1.