Commit Graph
102 Commits
Author SHA1 Message Date
Adrià 92e50418f3 Merge pull request #5725 from GalaxyGamingFR/fix/stale-label-after-rebase
fix(ci): clear the stale label once a PR is rebased
2026-10-15 17:04:38 +02:00
Adrià 4c6fcdbadf Merge pull request #5764 from GalaxyGamingFR/fix/area-labels-all-open-prs
fix(ci): label all open PRs, not only the newest 200
2026-10-15 15:58:39 +02:00
Adrià FranchandClaude e0b9572e3b ci(windows): find the CA bundle of Git for Windows under ucrt64 too
Git for Windows 2.56 (runner image 20261002) moved from mingw64 to ucrt64,
so the fixed SSL_CERT_FILE path no longer exists and the WinLibs CMake
fails the FFmpeg download with status 60 on every Windows build. Take the
bundle from whichever of ucrt64 and mingw64 exists.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-15 15:20:44 +02:00
Adrià 4224d240aa Merge pull request #5724 from GalaxyGamingFR/fix/pr-intake-concurrent-opens
fix(ci): count only earlier open PRs in the intake limit
2026-10-15 15:02:13 +02:00
Adrià FranchandClaude b139ac9b9f ci(build): build up to 40 pull requests together
Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-15 14:59:51 +02:00
NikoandClaude Opus 5.5 b9c91c89ba ci(build): accept merged pull requests in the relinker author check
The eligibility job enabled the relinker matrix for a pull request only
when repos.listCommits on main with the author's login returned a
commit. That filter misses authors whose commits in main are not
matched to their login. On 2026-10-13 it found no commit for 26 authors
of open pull requests who have 1 to 44 pull requests merged into main,
so their pull requests skip the relinker, against CONTRIBUTING.md ("if
its author already has a commit in main").

When listCommits finds nothing, the job now also searches for the
author's merged pull requests into main, with the query pr-intake.yml
uses. Incomplete search results count as none. A failed search, such as
the search API's own rate limit, skips the relinker with a warning
instead of failing the job. Both requests now run only when the pull
request changes a relinker file, so other pull requests make neither.

test_build_eligibility.py runs the step's script in node with a mocked
github object and skips when node is missing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 13:18:25 +02:00
Dean Galvin a0d71c8917 ci(build): let a pull request's ref be replaced after it is force-pushed 2026-10-15 14:37:21 +13:00
Adrià 8cd937e291 Merge pull request #5136 from nikowolf123/fix/ci-pr-overlap-main-commit
fix(ci): ignore the main commit in pr-overlap change checks
2026-10-15 02:43:30 +02:00
Adrià 92b892f15a Merge pull request #5247 from devavijitsingh/feat/web-conversion-recovery
fix(web): remove incomplete folder output on failure
2026-10-14 22:55:41 +02:00
Adrià FranchandClaude abfdd4b834 ci(build): add a dispatch input that runs only the relinker matrix
Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-14 21:57:22 +02:00
NikoandClaude Opus 5.5 42a78c27bc fix(ci): ignore the main commit in pr-overlap change checks
pr_overlap.py links each conflicting range to main at the commit it ran
on, so every push to main changes every non-empty report. The workflow
keeps a hash of each report to read the comments of changed reports
only, but with the commit in the hash every report counts as changed:
each run reads the comments of every pull request with an overlap and
rewrites its comment although only the commit differs. In one hour on
2026-10-13 it rewrote 107 existing overlap comments, against the 1000
requests per hour GITHUB_TOKEN has for the repository.

The hash and the comparison with the posted comment now replace the
commit in blob links with a fixed ref, so a report whose ranges, exports
and files are unchanged makes no request. Posted comments keep their
links pinned to the commit they were written at.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 21:31:49 +02:00
Avijit Singh da1a2e02a7 ci(web): test folder recovery on pull requests 2026-10-14 20:53:49 +02:00
LeandroLP23andClaude Opus 5.5 c692334e00 ci(build): keep the Linux relinker tests when a manual build skips Linux
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 20:07:18 +02:00
LeandroLP23andClaude Opus 5.5 8087908232 ci(build): skip test jobs a push to main does not touch, and duplicate relinker hosts
A push to main ran every job: relinker on three hosts, register context
on four and write watch on two, next to the full Linux and Windows
builds. The eligibility gate now reads the files of the push (compare
before...after) and applies the same path rules as pull requests; when
it cannot (a first push, 300 or more files, an API error) every job runs
as before.

Whenever the full builds run (push and manual builds), the Linux and
Windows relinker jobs repeat tests the full builds already run: the
relinker-only ctest lists (150 and 145 tests) are subsets of the full
Linux and Windows ones (1052 and 1069) in run 38397922579. The relinker
matrix now keeps only macOS then; automatic pull request builds, which
have no full build, still run all three.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 20:07:06 +02:00
boykopovar f74b8e2d87 ci(linux): limit build and test parallelism to one 2026-10-14 16:18:17 +03:00
boykopovar 069537d1c5 ci(linux): move builds to self-hosted runner with persistent caches 2026-10-14 15:31:22 +03:00
Adrià FranchandClaude e53b574782 ci(build): skip the pull request build of a pull request already closed
Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-14 13:50:34 +02:00
Adrià FranchandClaude 15503d11fe ci(build): build several pull requests together
Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-14 13:41:55 +02:00
Adrià FranchandClaude fe4831f350 ci(build): check out nested submodules
3rdparty/mbedtls (#3897) has its own framework submodule. The PR build
fetched it in its merge step, but push builds on main skipped that step
and failed at configure.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-14 13:13:22 +02:00
Dean Galvin 6f830952fb ci(release): check out nested submodules
build.yml runs git submodule update --init --recursive, but release.yml checked out only the top-level submodules. A submodule with its own submodules, such as Mbed TLS's framework in #3897, would leave the release configure step without them.
2026-10-14 22:37:06 +13:00
Dean 0b97f8b9f5 Merge pull request #3664 from alfalfa-star/feat/linux-wayland
feat(videoout): use native Wayland on Linux
2026-10-14 22:32:26 +13:00
GalaxyGamingFRandClaude Opus 5.5 84d2bb93e3 fix(ci): label all open PRs, not only the newest 200
The area-labels workflow listed open PRs with -L 200, so with more than 200
open PRs the older ones never entered the todo list and never got their area
labels (#3295 changes libkernel and has no libkernel label). List up to 1000;
the head -n 40 cap still bounds labeler work per run.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012zyXkUzTZGh3nBwNMtrLaW
2026-10-14 02:23:19 -07:00
GalaxyGamingFRandClaude Opus 5.5 8e498e3f76 fix(ci): clear the stale label once a PR is rebased
Stale conflicts runs actions/stale with only-pr-labels: needs rebase.
actions/stale skips any PR without all only-labels before it looks at
remove-pr-stale-when-updated, so after a rebase removes needs rebase the
PR is never processed again and keeps its stale label for good. A step
before actions/stale now removes stale from open PRs that no longer
carry needs rebase.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012zyXkUzTZGh3nBwNMtrLaW
2026-10-14 00:55:49 -07:00
GalaxyGamingFRandClaude Opus 5.5 62b2c30baa fix(ci): count only earlier open PRs in the intake limit
pr-intake runs once per opened PR, and each run lists every open PR by
the author. When an author opens several PRs within seconds, every run
sees all of them and closes its own, so a newcomer opening two PRs at
once loses both, and an author with one merge opening 21 loses all 21.
On opened events the limit now counts only lower-numbered PRs, so the
earliest ones stay open and only the PRs over the limit are closed.
Reopened events still count every open PR, as before.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012zyXkUzTZGh3nBwNMtrLaW
2026-10-14 00:54:37 -07:00
boykopovar 6d35b92ba6 feat(ci): truncate long release commits list 2026-10-14 10:48:45 +03:00
alfalfa-starandClaude Opus 5.5 040873f9dc feat(videoout): use native Wayland on Linux
Build SDL's Wayland backend next to X11 and ask SDL for "wayland,x11"
on Linux, so the window runs natively under a Wayland compositor instead
of through XWayland. SDL loads libwayland, xkbcommon and libdecor at run
time, so systems without them, or sessions without WAYLAND_DISPLAY, keep
using X11. SDL_VIDEODRIVER still overrides the choice.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 07:24:34 +02:00
Dean Galvin 8702de1e6f ci(build): key the Mesa shader cache by the runner's CPU model too
Since #5263 the Linux job restores a lavapipe shader cache keyed by the
runner's /proc/cpuinfo flags. llvmpipe compiles shaders with LLVM's host
CPU *name* (from vendor, family and model) plus the detected feature bits,
and keys its cache only by the feature bits, so two runners with the same
flags but different models share cached code. A hull shader JIT-compiled
on a znver4/znver5 or Ice Lake class host uses GFNI (vgf2p8affineqb);
loaded on a Zen 3 host with the same flags it raises SIGILL, which is what
agc_driver_tessellation has been hitting on main and on dispatched builds
since the first main build after #5234 saved that hull variant.

Hash vendor_id, cpu family, model and flags into the key, so a runner only
restores code compiled for its own CPU model, and print the model name so a
future mismatch can be read off the log.
2026-10-14 17:11:46 +13:00
Adrià FranchandClaude 32accfa938 ci(build): key the Mesa shader cache by the runner's CPU flags
The cache from #5107 was keyed by Mesa version only, so a runner restored
llvmpipe code compiled on another runner's CPU and about 85 agc tests died
with SIGILL (Illegal instruction) on main.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-13 17:57:49 +02:00
Adrià FranchandClaude 71f98dd746 ci(build): let a dispatched build skip the Linux job
Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-13 17:03:50 +02:00
boykopovar 0f2683cb7d Merge pull request #5135 from boykopovar/feat/web-relinker-ui
feat(ci): add relinker wasm build ci
2026-10-13 15:31:28 +03:00
boykopovar 693578f116 ci(pages): rename deployment workflow file 2026-10-13 15:27:02 +03:00
boykopovar dece64c6e8 ci(pages): build and deploy wasm converter 2026-10-13 15:26:04 +03:00
Adrià FranchandClaude 5181b30d79 ci(windows): build the f16 unpack execution test, it runs without a device
Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-13 14:18:28 +02:00
Adrià FranchandClaude aef5972ff5 ci(linux): keep lavapipe's shader cache between builds
Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-13 13:51:10 +02:00
Adrià FranchandClaude 1137c57572 ci(windows): build only the execution tests that run without a Vulkan device
Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-13 13:44:08 +02:00
Adrià FranchandClaude 3c273e7081 ci(build): run relinker and context matrices on dispatch only when touched
Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-13 13:39:04 +02:00
Adrià Franch 4d15207553 ci: cache the API state of the hourly workflows
pr-overlap and area-labels walked every open PR on each run, spending the
1000 requests/hour that GITHUB_TOKEN gets per repository and starving the
other workflows (HTTP 403 'rate limit exceeded for installation').

pr-overlap keeps a hash of each report in actions/cache and only reads the
comments of PRs whose report changed. area-labels keeps head SHA plus the
labeler.yml blob per PR and labels only the changed ones, at most 40 per
run. conflict-label gets a concurrency group so pushes in a row don't stack
full passes.
2026-10-12 23:49:09 +02:00
Adrià 44ab0c39ee Merge pull request #3886 from PrintOrb/fix/videoout-high-frame-rate
fix(videoout): support permitted high-frame-rate output for Quake II
2026-10-12 22:23:31 +02:00
Adrià FranchandClaude 63e60db1a7 feat(progress): publish a progress history chart
tools/progress_history.py measures the first-parent history of main with
the rules of tools/progress.py, one point per day, and writes history.json,
history.svg and history.html. The Progress workflow runs it after
progress.py; the README shows the chart under the map and links the page.
Labels and points compact as days accumulate.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-12 21:31:09 +02:00
PrintOrb 8024471225 Merge branch 'main' into fix/videoout-high-frame-rate 2026-10-12 14:27:28 -05:00
PrintOrb 9c007805d6 Merge branch 'main' into fix/videoout-high-frame-rate 2026-10-12 11:15:48 -05:00
Adrià FranchandClaude 8ccf9ee752 ci: remind stale conflicting pull requests to rebase
Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-12 11:54:58 +02:00
Adrià FranchandClaude d9d00f0e34 ci(build): run pull request jobs only when their files change
Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-12 11:35:11 +02:00
PrintOrb 5c19601a12 fix(videoout): require bundled SDL XRandR support on Linux 2026-10-11 17:36:12 -05:00
marshmll 3d83999350 fix(build): require an SDL audio backend on Linux
The bundled SDL builds its PipeWire, PulseAudio and ALSA drivers only
when their development files are found, and otherwise keeps just the
silent dummy and disk drivers without an error. The Linux CI and
release jobs install none of them, so the v0.1.1 Linux libraries
(libSceAudioOut, libSceAgcDriver, libfmod) contain no audible driver.

Fail configuration on Linux when SDL found none of the three, install
the Debian development packages in the Linux build and release jobs,
and list the packages in the build instructions.
2026-10-11 10:34:29 -03:00
Adrià FranchandClaude 14f585a439 ci(pr): limit open pull requests by the author's merged count
Authors with no merged pull requests can have 1 open, with at least 1
merged 20, and from 20 merged there is no limit. Reopening a pull
request runs the check again.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-11 11:28:43 +02:00
boykopovar f4b6e1011d ci(pr): set min intake pr count to 10 2026-10-10 18:37:56 +03:00
Adrià 00d4e3a540 Merge pull request #976 from Saibamen/ci/release-parity
ci(release): match PR CI Vulkan and Windows SSL setup
2026-10-10 11:29:15 +02:00
Adrià e0526f57cd Merge pull request #1686 from Cloud-Multiplayer/feat/macos-write-watch
feat(libc): write watch on macOS hosts
2026-10-10 08:03:40 +02:00
Dean Galvin 079f3b759d ci(build): save the compiler cache from main builds
No job saved its ccache, so every build restored a day-old cache and
recompiled about half the tree (971/2038 hits). Main push builds now
save it, and they no longer cancel each other, so one finishes and
refreshes it. Pull request builds still only restore, so PR code never
writes the shared cache.
2026-10-10 16:50:01 +13:00