Commit Graph
3005 Commits
Author SHA1 Message Date
Abdessamad Derraz 00c0b0f106 chore: add site component tests 2026-10-23 02:27:09 +02:00
Abdessamad Derraz 9e274f0469 feat: tidy title, footer and file picker 2026-10-23 02:27:09 +02:00
Abdessamad Derraz 60de1284d1 feat: give a hash lookup a verdict 2026-10-23 02:27:09 +02:00
Abdessamad Derraz 2c71f0d3da feat: stack tables at build, add section tabs 2026-10-23 02:27:09 +02:00
Abdessamad Derraz 4edebc56bc feat: quiet the site theme
# Conflicts:
#	wiki/testing-guide.md
2026-10-23 02:26:08 +02:00
Abdessamad Derraz 77e589800a chore: test the round 2 theme stylesheet 2026-10-23 02:25:33 +02:00
Abdessamad Derraz d94347ba18 fix: quiet theme chrome, link-coloured focus 2026-10-23 02:25:30 +02:00
Abdessamad Derraz eb6ca6d38a feat: emulator pages lead with what is needed
# Conflicts:
#	wiki/testing-guide.md
2026-10-23 02:24:38 +02:00
Abdessamad Derraz 0be19e4351 feat: rework site navigation 2026-10-23 02:22:38 +02:00
Abdessamad Derraz 3841012c04 feat: emulator pages lead with what is needed
The intro names systems and, when required files are one per region, says to pick the one for the game's region. Cards go under Required, Optional and Game data with a summary table above, split pages in the same order. Header and index read singular classes, system names, one spelling per core and plain counts.
2026-10-23 02:22:09 +02:00
Abdessamad Derraz 47b0169c71 docs: name duckstation's pinned build and string
core_version is v0.1-12070: git describe at 4122fed9 counts 12,070 commits past tag 0.1, as gen_scmversion.sh does. The NTSC-U licence string is quoted as system.cpp:959 spells it, with its two spaces.
2026-10-23 02:22:05 +02:00
Abdessamad Derraz 8b6a5d8a8e chore: drop a fixed count from the emulator nav 2026-10-23 02:18:47 +02:00
Abdessamad Derraz 8aa1e1cea1 feat: name each sidebar group by its overview
The 404 page opens on Start here instead of tabs numbered 0 to 4. A group label is a group, or in Explore one link to its overview, never a link to its first page, and a crumb names the section that introduces the page. Emulators sit one level deep by initial. Previous and next run within a tab (Start here into Your setup) and skip system, emulator and platform pages, and follow a page's Next steps list. Reference pages group under Checking files and Data, a wiki page joining by its group: front matter. redirects.json maps alternative core names to their profile.
2026-10-23 02:18:27 +02:00
Abdessamad Derraz 997bc069b2 feat: draw a sharing card per platform page
Each platform page shares a card titled with the platform's name, rendered by make_og_cards.py --only platforms.
2026-10-23 02:18:22 +02:00
Abdessamad Derraz 72e7507ff9 feat: name each system once, from its own section
siterender.system_name reads the heading of the console section the id spells, then SYSTEM_NAMES, and raises for an id in neither. The emulator intro and the picker titles read it instead of the folder a system's files were voted onto.
2026-10-23 02:04:06 +02:00
Abdessamad Derraz 2a50bc21f7 fix: stop on a digest an unmoved file contradicts 2026-10-23 00:35:47 +02:00
Abdessamad Derraz d4f02de3fd fix: give shared files every reading system 2026-10-23 00:35:47 +02:00
Abdessamad Derraz 7a5bc1d2e3 feat: run retrodeck dual-mode cores as libretro 2026-10-22 23:21:44 +02:00
Abdessamad Derraz 00d6815c90 chore: regenerate retrodeck manifest and readme 2026-10-22 22:59:50 +02:00
Abdessamad Derraz be09d517d9 feat: read retrodeck dual-mode cores from es-de
RetroDECK listed every component standalone only. Azahar, Cemu, Dolphin,
MAME, melonDS, PCSX2 and PPSSPP also run through RetroArch: RetroDECK/ES-DE
es_systems.xml at 15e1b236 loads <name>_libretro.so beside each standalone
command, and the cores ship whole from the buildbot nightly
RetroArch_cores.7z (retroarch/component_recipe.json:250-262). Their
libretro layouts, Azahar's save-dir files among them, now reach the pack.
2026-10-22 22:59:47 +02:00
Abdessamad Derraz 8d0cd27103 feat: place save files in each system folder 2026-10-22 22:23:02 +02:00
Abdessamad Derraz 7f05133a02 chore: regenerate manifests for save folders 2026-10-22 21:44:15 +02:00
Abdessamad Derraz bf22f1da47 fix: keep Batocera's save files apart from bios/
batocera-systems lists bios/saves/dolphin-emu/Triforce/segaboot.gcm, so the pack folder for the save directory is userdata-saves/. validate_schemas refuses a pack folder the BIOS tree already uses.
2026-10-22 21:44:14 +02:00
Abdessamad Derraz 8db393f415 docs: document per-system save folders 2026-10-22 21:17:01 +02:00
Abdessamad Derraz 0becfce2b5 feat: install save-dir files per system folder 2026-10-22 21:17:01 +02:00
Abdessamad Derraz 2d26385efe feat: place save-dir files in each system folder
Batocera, KNULLI, Recalbox, RetroBat and RetroDECK hand a libretro core <saves>/<system> at each launch. Each copy lands below every system that runs the core. EmuDeck keeps one unsorted saves/retroarch/saves. The unsupported platforms record why.
2026-10-22 21:16:59 +02:00
Abdessamad Derraz 9a1bf4baa6 feat: record the systems each libretro core runs 2026-10-22 21:16:47 +02:00
Abdessamad Derraz 2aaf0e50d1 feat: place files cores read below the save dir 2026-10-22 20:26:12 +02:00
Abdessamad Derraz 653e9cd767 chore: regenerate manifests for save-dir files 2026-10-22 19:58:36 +02:00
Abdessamad Derraz 3d13b948c7 docs: document files read from the save dir 2026-10-22 19:58:35 +02:00
Abdessamad Derraz 811ccdfea0 fix: profile files cores read below the save dir
Read at each pinned commit: Azahar, Citra, Citra 2018, Panda3DS, Trident,
FS-UAE and Stella read these below the frontend save directory, Dolphin
and Ishiiruka below <save>/User, Cemu its MLC below <save>/Cemu. Each
profile names its library_name. Citra Canary reads sysdata from the
host data directory: its pin moves to the canary branch it is built from.
2026-10-22 19:58:35 +02:00
Abdessamad Derraz 7e32db1013 feat: install save-dir files below the save dir
The installer reads savefile_directory and sort_savefiles_enable from
the retroarch.cfg it found, falls back to saves/ beside a default
system/ folder, and takes --save-dir. Entries it cannot place are said
and left out. The installer hash is re-pinned.
2026-10-22 19:58:29 +02:00
Abdessamad Derraz 1cd6c9ee4d feat: place save-dir files in packs and lists
load_from: save_dir entries of a libretro build were left out of every
pack. They now go below the platform's save folder (registry
save_directory: RetroArch saves/, Lakka savefiles/, by core), the
manifest marks them root: save, and verify replays the same placement.
Platforms keeping saves per system or per game list them as omitted.
2026-10-22 19:58:26 +02:00
Abdessamad Derraz de5b517579 fix: name systems and keep the picker filter 2026-10-22 19:16:36 +02:00
Abdessamad Derraz 1c898ba389 feat: build the site with Astro Starlight 2026-10-22 19:16:36 +02:00
Abdessamad Derraz 123d698e43 feat: build the site with Astro Starlight
generate_site.py writes the Starlight project in website/ and nothing
else: mkdocs.yml, the MkDocs hooks, theme overrides and stylesheet go,
and the wiki is written in Starlight's syntax. Both workflows set up
Node with the official actions/setup-node pinned by commit, run npm ci
from the committed lockfile, build with the strict link validator and
check the result with validate_site.py.

The search weighs a page by what it answers: Start here pages first,
a system page's cards and file names before a guide citing them, deep
guides, launchers, aliases and frozen copies after. Status badges,
hash blocks and the export change lists leave the index. The ranking
sits at the centre of a range where the 13 queries of search_gate.py
all answer, in the search box itself.

839 pages, every URL and 45,611 ids match the MkDocs build. The tests
read the Starlight content and syntax.
2026-10-22 18:47:22 +02:00
Abdessamad Derraz 8f84fee2af chore: regenerate manifests for azahar 2026-10-22 18:06:20 +02:00
Abdessamad Derraz e7ccd1b2b2 feat: profile azahar from its in-tree core 2026-10-22 17:43:09 +02:00
Abdessamad Derraz 600ab809a9 docs: list the new contributor 2026-10-22 17:42:14 +02:00
Abdessamad Derraz abe240073c feat: pass the Starlight gate on dense pages
Pages of cards under one or two headings drop the table of contents,
whose script watched every block of a 400-card page: 2 x 430 ms of
main thread on a throttled phone. Tables are measured once the page is
idle, skipping those in closed blocks, so a scrolling table is a tab
stop anywhere on the page. The 12 heaviest pages score 97 to 100 in
Lighthouse mobile, axe reports nothing on 16 pages in both themes, and
the search answers the ten gate queries.
2026-10-22 17:21:14 +02:00
Abdessamad Derraz 2f835af75b feat: profile azahar from its in-tree core
The buildbot's azahar_libretro is built from azahar-emu/azahar: the
2026-10-22 nightly carries g_scm_rev f570b53f (master, 2026-10-16) and
the key blob of src/core/hw/default_keys.h byte for byte. The profile
now reads that repository at tag 2126.2, whose file-loading code matches
f570b53f apart from licence headers.

The libretro core keeps its user directory under <save_dir>/Azahar/,
falling back to <system_dir>/Azahar/, so path: carries the Azahar/
prefix and standalone_path: the user directory layout. The embedded
keys.txt is the 2126.2 blob (sha1 5288772b). azahar-sa is ROCKNIX's
name for the same standalone.

KNULLI builds the SDL2 frontend of johndoe6345789/azahar_libretro at
c8d39853 as its azahar binary, so that fork moves to azahar-sdl.yml
with built_by: [knulli].
2026-10-22 16:51:14 +02:00
Abdessamad Derraz bcade3dc9b chore: merge main into the Starlight branch 2026-10-22 16:49:38 +02:00
Abdessamad Derraz 5f3534bdf2 feat: tune search weights and heavy page loads
Status badges and hash-listing blocks leave the search index, card titles
weigh as page titles, and Pagefind ranking is set inside a range where
the ten gate queries all answer (search_gate.py: 10/10). Tables are set
up and measured when they near the screen, which relaid out a 3,800-row
page after its first paint, and console icons hold their box.
2026-10-22 16:49:27 +02:00
Abdessamad Derraz bc3577ea57 fix: skip the mame ref audit on a partial cache
The audit reads driver sources from the upstream cache offline. An empty cache skipped, but one holding some drivers raised NotCachedError and failed the suite. It now skips naming the file. The testing guide lists the semantic gate test.
2026-10-22 16:49:10 +02:00
Abdessamad Derraz 76af36d903 fix: read the retrobat pack guide where it lives
The pack guide text moved to platforms/_guides.yml, so the check reads what the pack README prints instead of the source of packreadme.py.
2026-10-22 15:57:00 +02:00
dajiaohuang 4bf53a0561 Guard semantic checks for invalid manifests 2026-10-22 15:53:57 +02:00
Abdessamad Derraz 294942afd0 feat: port the site ports and picker checks
Tables with a download link stack on phones, the browser check covers
the lookup, a hash typed in the search, breadcrumbs, previous and next
across tabs, glossary terms and the 404 hint. validate_site budgets the
Pagefind index pieces and takes the base path without mkdocs.yml. A
test holds the picker to install.narrow() on 180 selections.
2026-10-22 15:46:36 +02:00
Abdessamad Derraz 342d0f7271 feat: write the site for Starlight behind a flag
generate_site.py --engine starlight writes the pages, navigation and
data files of an Astro Starlight project in website/. Links resolve to
site addresses, every heading keeps its MkDocs id, and pages split by
size are measured in the MkDocs Markdown so both builds cut the same
files. The 839 pages and their 45,613 ids match the MkDocs build.
2026-10-22 15:41:39 +02:00
Abdessamad Derraz 3b1ea6b5d2 chore: regenerate database and manifests 2026-10-22 15:27:59 +02:00
Abdessamad Derraz b7a54b9d9b fix: collapse clone chains in the dedup map
The clone map is cumulative. A run that removed sys68k_cpu21.zip and sys68k_cpu30x.zip as copies of other sets left the entries naming them canonical: their eight clones pointed at files that no longer existed and fell out of the manifests. Each clone now follows to the final canonical, and a loop is refused.
2026-10-22 15:27:58 +02:00