Commit Graph
41 Commits
Author SHA1 Message Date
Abdessamad Derraz 295bb4e275 chore: merge origin/main 2026-11-09 15:52:58 +01:00
Abdessamad Derraz 4542bcffa8 chore: bump uv to 0.13.4 in every pin
Dependabot moved uv in pyproject.toml alone, while validate.yml and
CONTRIBUTING kept 0.12.9. Both pins move together, and a test now
fails when a package pinned in both carries two versions.
2026-11-09 14:20:12 +01:00
Abdessamad Derraz 025fd08a72 chore: merge origin/main 2026-11-09 14:02:45 +01:00
Abdessamad Derraz 0bceb6ca2c chore: regenerate after the gate fixes 2026-11-09 12:58:17 +01:00
Abdessamad Derraz b9a35589a8 feat: build the PyPI package with flit_core
build_pypi.py stages install.py, the launcher, __main__.py, README and
LICENSE, then runs uv build with flit_core 3.12.0 pinned and
SOURCE_DATE_EPOCH set from install.py's commit. Adds python -m retrobios,
the PyPA classifiers, keywords and project URLs. CI installs uv.
2026-11-09 11:45:49 +01:00
Abdessamad Derraz 16ec5fa2d2 docs: turn the readme into a front page
The README ran 211 lines and 2,000 words: five commands with options,
an 18-row download table, coverage figures and the build commands, all
before the help. It now says what the project does, gives the line that
installs for Windows and for the rest, shows it, lists the six ZIPs and
the setups that install by command, and leads to the site, where the
figures and every option live. The build commands sit in a closed block.
No personal pronoun is left in its text.
2026-11-09 07:28:32 +01:00
Abdessamad Derraz 0c074f8458 fix: run mypy and shellcheck in pr_checks
validate.yml runs mypy against its baseline and checks that shellcheck
is installed, and pr_checks ran neither. The guard test only knew the
python, vermin and npm commands, so it missed both. A step can now pipe
its output into a second command, as mypy into mypy-baseline filter.
2026-11-06 17:58:44 +01:00
Abdessamad Derraz f4b45c641d feat: run the PR checks with one command 2026-11-06 14:55:03 +01:00
Abdessamad Derraz af6936055b docs: quote the pip lines CI pins for PR checks 2026-11-06 14:51:00 +01:00
Abdessamad Derraz bd50b08133 docs: fetch platform files before the PR tests 2026-11-06 14:49:06 +01:00
Abdessamad Derraz 01ce92232d docs: say how an uploaded ZIP is read
CONTRIBUTING and the site's contributing page now say that a ZIP no
list declares as a whole is read file by file, and that the files go in
unzipped.
2026-11-06 08:58:40 +01:00
Abdessamad Derraz 19898cb6ea chore: merge site and docs fixes, third pass 2026-11-06 06:38:47 +01:00
Abdessamad Derraz cb17145665 fix: install setuptools for the packaging guard 2026-11-06 03:32:26 +01:00
Abdessamad Derraz f1f2254be8 docs: drop the upstream remote from CONTRIBUTING
profile_sync.py finds and fetches the project's main by itself. The
documented --base upstream/main failed in any clone without that remote,
where the same command without --base passes.
2026-11-06 03:28:36 +01:00
Abdessamad Derraz f24b34c1ef feat: place recognised files with validate_pr
The report named the folder of each file and left the copy to the contributor, one file and one .variants/ name at a time. --place copies each recognised file from outside bios/ to its folder under the name the lists declare, or to the .variants/ slot of a name already held, never over a file. A hash with two names or two folders is not placed.
2026-11-05 19:25:47 +01:00
Abdessamad Derraz a06f5ad2ba fix: fetch the project main an upstream lacks
A remote named upstream added as CONTRIBUTING said and never fetched made validate_pr --changed compare with the fork's main and exit 0 on nothing. It now fetches the project's main when the remote does not hold it. profile_sync names the fetch when --base is absent, and CONTRIBUTING adds git fetch upstream.
2026-11-05 19:20:50 +01:00
Abdessamad Derraz 9e04bf887d docs: give files over 100 MB their route
CONTRIBUTING sent any file over the browser's 25 MB through a clone, which GitHub refuses past 100 MB, and named a release only a maintainer can write to. It now gives the route validate_pr.py prints: an issue with the hashes.
2026-11-05 19:18:38 +01:00
Abdessamad Derraz 46a6ac2675 docs: list the site build among the PR checks
CONTRIBUTING named the checks CI runs on a pull request and left out the npm build, validate_site.py, vermin and the pip packages the test job installs. A wiki-only change passed every listed check and failed CI.
2026-11-05 19:17:52 +01:00
Abdessamad Derraz b90f8bb0b9 chore: merge tooling batch 2026-11-05 15:57:19 +01:00
Abdessamad Derraz f285c32d67 feat: validate every file of a folder 2026-11-05 11:48:31 +01:00
Abdessamad Derraz 6876fe7ec3 docs: show the profile check CI runs 2026-11-05 11:47:48 +01:00
Abdessamad Derraz 50f9dd7f5f fix: pr checklist generates the site first
validate.yml generates the pages before the suite, and the site tests fail on a clone without them.
2026-11-03 10:17:09 +01:00
Abdessamad Derraz 4b7cf6501f docs: open contributing on the upload 2026-10-23 02:34:09 +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 c9780c8822 docs: add one BIOS from the browser
A browser upload into bios/ lands on a fork and opens the pull request, and CI already hashes the file and names its folder. CONTRIBUTING asked for a fork, a clone, five packages and the whole suite, and promised a PR comment that a fork's read-only token cannot post. The issue chooser links the upload page.
2026-10-21 10:06:57 +02:00
Abdessamad Derraz 66937d21d7 docs: install the site packages for contributors
The contributor install line left out mkdocs-material and
pymdown-extensions, so pipeline step 8b (render site) was skipped.
The ranges are the ones deploy-site.yml installs, and a test reads
them from the workflow.
2026-10-21 06:09:55 +02:00
Abdessamad Derraz 57ac252482 feat: check the profiles a branch adds or edits
profile_sync gains --changed (added or edited profiles, uncommitted
ones included) and --added, both against the merge base of --base
(origin/main by default). CONTRIBUTING runs --changed --strict instead
of one --emulator call per new profile, and the CI job runs --added
in place of its own diff loop.
2026-10-21 06:09:55 +02:00
Abdessamad Derraz 6ee138a819 docs: point users to --check and exact pack files
Troubleshooting, the FAQ and the download page sent people who only ran
the installer to verify.py, which reads the repository, not their BIOS
folder. Download links now name the exact asset of the recorded release,
the --dest example names the BIOS folder on the card, the slice layout
left with the last release that used it, and the shown verify output is
what the tool prints.
2026-10-21 04:34:04 +02:00
Abdessamad Derraz 71b59eb2a3 docs: rewrite half-dash asides in comments
Dropping the double-dash asides left 72 comments and docstrings with
half a dash glued to the next word ("shape -a size or a size range -is
all"). They now read as a colon, a comma or parentheses, and a prose
style test names any that comes back.
2026-10-20 09:17:10 +02:00
Abdessamad Derraz 18e093182d docs: name the registries behind assets and dedup
The guides said files over 50 MB become release assets and that RPG Maker and ScummVM were the trees kept out of dedup. .gitignore decides the first, four committed files are over 50 MB, and NODEDUP_DIRS holds eleven trees.
2026-10-20 04:35:02 +02:00
Abdessamad Derraz b402a8b917 docs: install markdown with the test dependencies
CONTRIBUTING and the testing guide installed pyyaml and jsonschema only, while the CI test job also installs markdown. On a contributor's machine the wiki heading test skipped and the run read OK. Both name it now, and a test compares them to the packages the tests import.
2026-10-20 02:24:36 +02:00
Abdessamad Derraz 4231902a6c docs: write prose without dashes or semicolons
Profiles, the wiki, comments, docstrings, command output and schema descriptions carried em-dashes, clause-joining semicolons, unicode arrows, box-drawing banners and check-mark glyphs. Each sentence was rewritten rather than having its character swapped. Hashes, paths, source_ref values and every cited file:line are unchanged, which a comparison of each parsed profile against the previous revision confirms.

validate_pr comments now say PASS and FAIL in words, and source_ref values in a profile's structured blocks render as code. test_prose_style fails if any of these comes back, in tracked files or in the generated site.
2026-10-19 06:47:31 +02:00
Abdessamad Derraz 7895657747 docs: name the new-profile check CI runs 2026-10-19 04:14:44 +02:00
Abdessamad Derraz a06a742773 docs: ask contributors for the checks CI runs 2026-10-18 09:45:55 +02:00
Abdessamad Derraz 648784d875 fix: run the suite so its package setup applies
The documented command, discover tests, makes tests/ the top level,
so tests/__init__.py never ran and the variable it sets to keep tests
offline was missing from every local run. Every documented and CI
run now passes -s tests -t ., and a test requires it.
2026-10-18 05:05:09 +02:00
Abdessamad Derraz 5f60138dce docs: correct and complete the documentation set 2026-08-08 04:24:08 +02:00
Abdessamad Derraz 812775f6b4 Add platform contribution steps and nav
Add an "Add a new platform" section to CONTRIBUTING.md (instructions to write a scraper in scripts/scraper/, create platform YAML in platforms/, register in platforms/_registry.yml, and submit a PR) and note contributor crediting. Update README: bump verified files from 7,296 to 7,302, add RomM and RetroDECK contributor credits with PR links, and refresh the auto-generated timestamp. Add sdlpal to the mkdocs.yml navigation.
2026-04-02 15:36:27 +02:00
Abdessamad Derraz b56f8dd05f feat: add archive_prefix for core-specific BIOS subdirectories
Closes #43

FBNeo and Kronos expect BIOS archives in core-specific subdirectories
(system/fbneo/, system/kronos/). RetroArch firmware check uses .info
paths which include these prefixes, so files at root show as Missing.

Add archive_prefix field to emulator profiles. The pack code now places
archive copies in the prefixed subdirectory while keeping root copies
for cores that expect them there (e.g. Geolith for neogeo.zip).
2026-03-31 09:17:54 +02:00
Abdessamad Derraz d0dd05ddf6 docs: add wiki pages for all audiences, fix .old.yml leak
9 new wiki pages: getting-started, faq, troubleshooting,
advanced-usage, verification-modes, adding-a-platform,
adding-a-scraper, testing-guide, release-process.

Updated architecture.md with mermaid diagrams, tools.md with
full pipeline and target/exporter sections, profiling.md with
missing fields, index.md with glossary and nav links.

Expanded CONTRIBUTING.md from stub to full contributor guide.

Filter .old.yml from load_emulator_profiles, generate_db alias
collection, and generate_readme counts. Fix BizHawk sha1 mode
in tools.md, fix RetroPie path, fix export_truth.py typos.
2026-03-30 23:58:12 +02:00
Abdessamad Derraz 21a50c992f feat: slim readme + ci site deployment
README: 11141 -> 43 lines. Details on the MkDocs site.
generate_readme.py: 444 -> 164 lines. Slim coverage table only.
build.yml: adds mkdocs-material install, generate_site.py, gh-deploy.
Adds pages: write permission for GitHub Pages deployment.
2026-03-18 10:44:13 +01:00
Abdessamad Derraz 13c561888d v2: automated BIOS platform with full pipeline
Reorganized 6 branches into bios/Manufacturer/Console/.
Scrapers for RetroArch, Batocera, Recalbox, and libretro core-info.
Platform-aware verification replicating native logic per platform.
Pack generation with dedup, alias resolution, variant support.
CI/CD: weekly auto-scrape, auto-release, PR validation.
Large files (>50MB) stored as GitHub Release assets, auto-fetched at build time.
2026-03-17 10:54:39 +01:00