Commit Graph
375 Commits
Author SHA1 Message Date
Abdessamad Derraz 8b97789dbd docs: dreamcast is better with its bios 2026-10-23 10:34:48 +02:00
Abdessamad Derraz f6ab47a330 docs: answer arcade, offline and keys in the faq 2026-10-23 10:34:48 +02:00
Abdessamad Derraz bfbee1ae26 docs: add arcade and next checks to the fix page 2026-10-23 10:34:48 +02:00
Abdessamad Derraz 94991f5a7b docs: open the legal page in plain words 2026-10-23 10:34:43 +02:00
Abdessamad Derraz 42c235abb9 chore: one folder per console 2026-10-23 10:16:51 +02:00
Abdessamad Derraz 3de2d52629 chore: one folder per console
DS and DSi split into Nintendo DS and Nintendo DSi. 64DD, Mega-CD,
ZXSpectrum, VSmile, BBC and Game Engines/DOOM merge into the folder
of the same console. Same-named dumps with other bytes are kept:
BBC Micro's earlier zips in .variants/, the vsmilem set in vsmilem/,
the Doom II 1.666 IWAD in v1.666/, BizHawk's DSi firmware in bizhawk/.
Galaksija and Vircon get a console folder, sdlpal's desc.dat joins
its tree, VICE's PET and CBM-II ROMs leave C128 with their vice/ tail.

Database and manifests regenerated together. Verify and cross
reference give the same result once moved paths are mapped.
2026-10-23 10:15:49 +02:00
Abdessamad Derraz 820b9013b3 feat: link system ids to their section 2026-10-23 09:07:26 +02:00
Abdessamad Derraz fad947e9d0 feat: link system ids to their files' section
A reviewed SYSTEM_PARENTS table leads variants (WonderSwan Color, Neo Geo MVS, MSX2) to the section holding their files, an Arcade heading that reads the name exactly is accepted, and system_search_aliases() gives the platforms' native ids for search. 260 of 636 ids linked before, 338 after.
2026-10-23 09:06:55 +02:00
Abdessamad Derraz 6676bda128 docs: keep the troubleshooting page under budget 2026-10-23 09:03:17 +02:00
Abdessamad Derraz b657cff327 feat: export md5 lists the checker reads 2026-10-23 08:27:27 +02:00
Abdessamad Derraz 5b083c45b5 feat: export md5 lists the pinned checker reads
The script exporters (Batocera, ROCKNIX, KNULLI, AmberELEC, EmuELEC)
read the checker of the pinned original: when checkBios hands an
item's md5 to a function that tests it with isinstance(..., list),
as md5Matches does since batocera.linux 6b08b873, an entry whose
emulator code accepts several dumps is written with all of them, and
an addition that needed several becomes writable. Items with altmd5
keep a string, since checkBios wraps them in a list of its own.

No cached original reads lists today, so every export is unchanged.
The report records a list as a list, counts the lists written, and
records a list the truth extends without contradicting it.
2026-10-23 08:06:58 +02:00
Abdessamad Derraz 34f9195860 feat: settle site integration items 2026-10-23 07:45:02 +02:00
Abdessamad Derraz 651813f10a feat: guard split packs and install offline 2026-10-23 07:42:32 +02:00
Abdessamad Derraz 0b4504992b feat: read batocera md5 written as a list
batocera.linux 6b08b873 lets a biosFiles item declare its md5 as a
list of strings, and checkBios accepts a file matching any of them.
The scrapers join the values with commas, as for Recalbox, and record
md5_list so the export writes the list back as a list, byte for byte.
2026-10-23 07:39:25 +02:00
Abdessamad Derraz a3597cc8af chore: gate the second site round
Reads website/dist: page weight and element budgets, sidebar labels,
tips, crumbs, stacked phone tables on reader pages, dates in words, and
the integration items of the round (logo, emulator letters, system
links, the getting-started redirect, Served by in existence mode).
2026-10-23 07:33:37 +02:00
Abdessamad Derraz 08f174bf32 docs: name the part marker in the release steps 2026-10-23 07:22:46 +02:00
Abdessamad Derraz 167195863c docs: point to check reasons and missing parts 2026-10-23 07:22:36 +02:00
Abdessamad Derraz aaabea8bd5 feat: explain check refusals, install offline
--check names why each flagged file is refused and where each core
opens it, and names a pack part missing from the folder from the
markers split_pack writes. --from-pack installs from a downloaded
pack or its parts with no network request, --manifest reads a saved
file list, both checking every hash. The end of a run names the
system or core that pulls most of the download when narrowing saves
over half.
2026-10-23 07:21:46 +02:00
Abdessamad Derraz 51b2976515 feat: cite sources and files on reference pages
# Conflicts:
#	wiki/testing-guide.md
2026-10-23 02:59:34 +02:00
Abdessamad Derraz 8b26a8fcac feat: cite sources and files on reference pages
Platform pages link each reader's source line at its pinned revision, name the collection file that serves each entry, show launcher records with their lines, name systems with the id beside them and the list they were read from in words. The largest system lists move to pages of their own so a platform page stays under 500 KB.

Gaps: plain numbers with a bar, a badge only for missing required firmware, Files to source as a heading. Cross-reference: counts per platform, one page per platform, one row per upstream project. Exports: gaps listed once, status, category and the serving file in the CSVs and SQLite, the commit in each API envelope, the provenance Wanted list as CSV. Catalog dates in words on the provenance page.
2026-10-23 02:58:51 +02:00
Abdessamad Derraz 733de5f6af feat: order system cards and show their facts
# Conflicts:
#	wiki/testing-guide.md
2026-10-23 02:44:01 +02:00
Abdessamad Derraz 2ae98daecf docs: list the system pages tests 2026-10-23 02:43:24 +02:00
Abdessamad Derraz d1dd7ef0f5 docs: rework wiki copy
# Conflicts:
#	tests/test_site_funnel.py
#	wiki/testing-guide.md
2026-10-23 02:42:58 +02:00
Abdessamad Derraz 2927c49734 docs: split project reports, pin checker links
Reading this project's own reports gets its own page. Checker code is linked at the revision each platform list was read from. Installer moves to Your setup, legal to Start here, build internals to Contribute, and Reference pages carry a group.
2026-10-23 02:42:19 +02:00
Abdessamad Derraz 8361575be8 docs: start pages say what the installer does
The safety list names the save folder, every install command shows its Windows form, first install reads the last line of a run, the FAQ answers zip or unzip and the arcade version rule, and each page keeps one name.
2026-10-23 02:42:19 +02:00
Abdessamad Derraz 5167361473 feat: readable diagrams and wiki command tabs
Diagram text reads at 14 px in the column, boxes take the height of their lines, paths are mono on a line of their own. One setup count for every page. Wiki pages expand install commands into system tabs, an options table read from install.py, and keep example hashes out of search.
2026-10-23 02:42:11 +02:00
Abdessamad Derraz 38983a2a4a feat: rework entry pages and setup guides
# Conflicts:
#	wiki/testing-guide.md
2026-10-23 02:34:44 +02:00
Abdessamad Derraz 5cbdceef62 feat: rework entry pages and setup guides 2026-10-23 02:34:13 +02:00
Abdessamad Derraz e5871a6f21 feat: stack tables and add section tabs
# Conflicts:
#	wiki/testing-guide.md
2026-10-23 02:27:45 +02:00
Abdessamad Derraz 00c0b0f106 chore: add site component tests 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 eb6ca6d38a feat: emulator pages lead with what is needed
# Conflicts:
#	wiki/testing-guide.md
2026-10-23 02:24: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 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 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 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 2aaf0e50d1 feat: place files cores read below the save dir 2026-10-22 20:26:12 +02:00
Abdessamad Derraz 3d13b948c7 docs: document files read from the save dir 2026-10-22 19:58:35 +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 bcade3dc9b chore: merge main into the Starlight branch 2026-10-22 16:49:38 +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 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 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
Abdessamad Derraz f18cfa1f5c chore: merge the archive recipe follow-ups 2026-10-22 15:10:14 +02:00
Abdessamad Derraz 06e37b36f7 feat: collect the tyrian files emuelec declares
EmuELEC declares 19 files of the Tyrian 2.1 distribution (setup.ini,
netterm.int, the net*.pcx screens...) that bios/ did not hold. They
resolved only at the data directory step, against data/opentyrian, the
cache refresh_data_dirs.py fills from the opentyrian-data.zip asset. verify
gave 544/572 in a checkout holding that cache and 525/572 in one without
it, for the same commit.

The 19 files are taken from the freeware tyrian21.zip (camanis.net, sha1
29827de9), each equal to the cached copy. netset.pcx and tyrset.pcx are
the same bytes under two names, so the folder joins NODEDUP_DIRS. A test
resolves every platform entry with the data directory caches present and
fails on any that only a cache answers.
2026-10-22 15:08:15 +02:00
Abdessamad Derraz be3324f869 feat: read guides and wiki nav from data
Platform guides, device groups, terminal tabs, pack README manuals and
logo credits move from Python tables to platforms/_guides.yml, checked
against the registry on load. A folder row without a path is the
registry's extract_to, written once.

Wiki pages place themselves in the navigation with order and nav_title
in their front matter. Generated docs/ and mkdocs.yml are unchanged.
2026-10-22 15:06:52 +02:00
Abdessamad Derraz dc3bf41d26 chore: merge the copy rewrite 2026-10-22 14:36:32 +02:00
Abdessamad Derraz c8133ab379 docs: put the first command on the first screen 2026-10-22 14:35:39 +02:00