Commit graph

702 commits

Author SHA1 Message Date
Jelle Raaijmakers
168ecb2e7d Everywhere: Update contribution guidelines
We've closed down the public PR route:

  https://ladybird.org/posts/changing-how-we-develop-ladybird/

Update our guidelines and documentation to reflect this.
2026-06-05 10:20:15 +02:00
dependabot[bot]
50892d7370 CI: Bump actions/checkout from 6.0.2 to 6.0.3
Bumps [actions/checkout](https://github.com/actions/checkout) from 6.0.2 to 6.0.3.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v6.0.2...v6.0.3)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 6.0.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-05 09:21:33 +02:00
Timothy Flynn
475d8f3c4b CI: Update the docker image version used in CI 2026-06-03 01:15:32 +01:00
Timothy Flynn
c5bb98bcf0 Meta: Revert to a stable rust compiler
Let's not depend on a nightly pre-release, especially not just for a
linting option. We can enable the linter option once it lands in the
stable release.
2026-06-02 20:12:41 +02:00
sideshowbarker
d089def7e4 CI: Add “master” branch-name check to “push” triggers 2026-05-29 16:13:41 +02:00
sideshowbarker
c440b8667b CI: Avoid in-place nightly toolchain update in lint setup
Problem: A new upstream nightly Rust release made all CI lint code
checks fail in the Set Up Environment step

Cause: CI runs “rustup toolchain install nightly --component rustfmt”.
The runner container ships nightly with rustfmt and clippy preinstalled.
But “rustup toolchain install” treats an existing channel as an upgrade
target, and tries to refresh it whenever a newer nightly is available.
The refresh removes the old clippy component first, renaming
/opt/rustup/toolchains/.../share/doc/clippy into /opt/rustup/tmp/, and
those two directories live on different overlayfs mounts in the
container — so the rename fails with EXDEV.

Fix: Replace “rustup toolchain install nightly --component rustfmt” with
“rustup component add rustfmt --toolchain nightly”. That adds the
component to the existing toolchain without checking for or applying a
channel update — so the cross-mount-rename path is never reached.
Because the container already provisions rustfmt + clippy at build time,
the new command is effectively a no-op on healthy containers, and fails
loudly only if a future container loses the nightly toolchain.
2026-05-29 07:39:30 -04:00
Shannon Booth
f985ed83d4 CI: Use latest Linux build image
The Linux CI workflows were still pinned to ladybird-ci:2026.05.4, even
though the CI image had since been rebuilt as 2026.05.25 after the Rust
toolchain switched to nightly.

This left CI running in an older container where cargo was not installed
for the nightly toolchain selected by the checked-out tree, causing Rust
crate builds to fail during the fuzzer host-tools build.

Update the workflow image references to the current published CI image.
2026-05-28 09:27:41 +02:00
Vanand Gasparyan
f3a3488cda Rust: Set import granularity to Item
By default, `rustfmt` persists the import granularity. In practice, most
Rust code has import granularity "Module" due to LSP's actions.

"Item" gets rid of import groupings and achieves cleaner diffs and
better conflict resolution. Better greppability is a positive side
effect.

Note: it's an unstable rustfmt feature. `cargo +nightly fmt` must be
used instead of `cargo fmt`.
2026-05-28 06:52:18 +02:00
Andreas Kling
0d9f7b3ed8 CI: Switch GNU build from sanitizer to release
Keep GCC compiler warning coverage on pull requests without running the
GCC sanitizer configuration that has been timing out in CI. Leave the
Clang sanitizer jobs in place for sanitizer coverage.
2026-05-24 10:13:23 +02:00
Luke Wilde
4a34a60d93 CI: Pass CMake options in the Fuzzers build
We were forgetting to pass CMake options in the Fuzzers build.
These CMake options contain -DENABLE_CI_BASELINE_CPU=ON, which sets
a baseline architecture to properly allow ccache sharing between
different runners. Without it, it defaults to the native architecture,
which is then cached and can be used on a runner that doesn't have the
same instruction set.

This is targetted at fixing the "Illegal instruction" crash we've been
seeing with the bindings generator.
2026-05-22 19:15:58 +01:00
dependabot[bot]
8b7629d20e CI: Bump actions/stale from 10.2.0 to 10.3.0
Bumps [actions/stale](https://github.com/actions/stale) from 10.2.0 to 10.3.0.
- [Release notes](https://github.com/actions/stale/releases)
- [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md)
- [Commits](b5d41d4e1d...eb5cf3af3a)

---
updated-dependencies:
- dependency-name: actions/stale
  dependency-version: 10.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-22 10:39:56 -04:00
Zaggy1024
5aa0d13a99 Meta+CI: Add pyright type checking to lint_python.sh 2026-05-13 08:13:51 -05:00
Andreas Kling
6961b48af2 CI: Preserve sanitizer logs from test subdirectories
CTest may run tests from build subdirectories. That means sanitizer logs
can be written below Build instead of the workspace root.

Search Build recursively when printing sanitizer output, and include
matching logs in the LibWeb test artifact.

Keep sanitizer log_path values relative so they work on Windows.
Absolute paths with drive letters contain colons there. That conflicts
with the ASAN_OPTIONS separator.
2026-05-13 13:32:49 +02:00
dependabot[bot]
c406e61e20 CI: Bump docker/setup-buildx-action from 3 to 4
Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 3 to 4.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](https://github.com/docker/setup-buildx-action/compare/v3...v4)

---
updated-dependencies:
- dependency-name: docker/setup-buildx-action
  dependency-version: '4'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-08 18:01:28 -04:00
dependabot[bot]
73277e23f8 CI: Bump docker/build-push-action from 6 to 7
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6 to 7.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v6...v7)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-08 18:01:19 -04:00
Undefine
60edabad0b CI: Use the Host_Tools preset when building tools for the fuzzers build 2026-05-05 22:08:24 +02:00
Jelle Raaijmakers
246a6a1194 CI: Switch to build image 2026.05.4 2026-05-05 11:29:07 +02:00
Jelle Raaijmakers
2134ff7812 CI: Use CI build image for Linux jobs
This means running the build inside a Docker container based on a (more)
stable build image.

  * The setup action is now largely simplified for Linux.

  * We hardcode llvm@21 for macOS since it allows us to get rid of
    specifying llvm_version as an input variable. Since we no longer
    support switching the LLVM version on Linux via that variable, this
    seems like the best course of action.

We use a trick to optionally introduce a container image: `fromJSON()`
allows `null` as a return value, which causes the job to execute on the
runner directly. We need this for macOS and Windows jobs.
2026-05-04 14:16:41 +02:00
Jelle Raaijmakers
9c6e814058 CI: Introduce build of new CI Docker image
The goal is to have a stable, reproducible build environment for Linux
amd64 and arm64 that we can simply pull in for CI build jobs. We've seen
that apt repositories can be temporarily unreachable or build dependency
versions are silently updated causing builds to fail. A nice benefit of
this is that we can skip most of the environment setup, which takes a
couple of minutes each run.
2026-05-02 15:52:44 +02:00
dependabot[bot]
e7fe3fc5a3 CI: Bump dawidd6/action-download-artifact from 20 to 21
Bumps [dawidd6/action-download-artifact](https://github.com/dawidd6/action-download-artifact) from 20 to 21.
- [Release notes](https://github.com/dawidd6/action-download-artifact/releases)
- [Commits](https://github.com/dawidd6/action-download-artifact/compare/v20...v21)

---
updated-dependencies:
- dependency-name: dawidd6/action-download-artifact
  dependency-version: '21'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-01 17:42:24 +02:00
Andrew Kaster
946f39df88 CI: Build Gtk UI in Linux Sanitizer presets
Ensure that we run tests with the Qt UI still
2026-04-23 20:07:40 -06:00
Andrew Kaster
a942da16ce CI+Devcontainer: Add Gtk UI dependencies to the CI and Devcontainer 2026-04-23 20:07:40 -06:00
Timothy Flynn
ce7b69ff31 Meta: Move utility scripts to a subfolder
The idea is that scripts directly under Meta are meant to be run by
people. Scripts that are only imported or run by other scripts are
moved to a subdirectory.
2026-04-23 12:36:08 -04:00
Timothy Flynn
b483445072 Meta: Replace IPCMagicLinter with a python linter
Note that the IPC lint step can be removed from the CI workflow because
we no longer need a build in order to perform the lint, and IPC linting
is now covered by lint-ci.sh.
2026-04-23 07:31:19 -04:00
Timothy Flynn
b1d708dd16 Meta: Move BuildVcpkg script to the Meta directory
It was the only thing left in the Toolchain directory.
2026-04-20 13:17:06 -04:00
Timothy Flynn
5d461d3fb0 CI: Point lld at the explicitly installed version
It appears CI is currently not using lld as a linker.
2026-04-20 12:22:16 -04:00
Tim Ledbetter
f168423c18 CI: Allow dependabot to update the Rust toolchain 2026-04-16 23:42:22 +02:00
dependabot[bot]
fadea53343 CI: Bump actions/github-script from 8 to 9
Bumps [actions/github-script](https://github.com/actions/github-script) from 8 to 9.
- [Release notes](https://github.com/actions/github-script/releases)
- [Commits](https://github.com/actions/github-script/compare/v8...v9)

---
updated-dependencies:
- dependency-name: actions/github-script
  dependency-version: '9'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-15 08:18:23 -04:00
Jelle Raaijmakers
aca463883f CI: Install libtool in setup action
This was missing in some build environments. Installation of libtool is
in our build instructions, so let's include it here as well.
2026-04-14 18:31:26 +02:00
Jelle Raaijmakers
908219afd4 CI: Use dearmored key for LLVM repo in setup action 2026-04-14 18:31:26 +02:00
Jelle Raaijmakers
6904389746 CI: Remove stray comma from webhook payload in web-benchmarks.yml 2026-04-14 16:55:45 +02:00
Tim Ledbetter
f498cfcfd0 CI: Trigger web-benchmarks workflow on push to master
Previously, the web benchmarks job would only trigger after a
successful CI run.
2026-04-14 15:34:29 +02:00
Tim Ledbetter
236c0b41a5 CI: Use the correct MacOS path in web-benchmarks job 2026-04-14 13:00:48 +02:00
Timothy Flynn
f79401bf9c CI: Change vcpkg cache key to depend on vcpkg.json
The vcpkg cache should rarely change - only when new dependencies are
added or a version changes. Both of these events involve modifying the
vcpkg.json file. So instead of uploading duplicated vcpkg caches in each
workflow, let's only upload changed caches.
2026-04-10 07:26:05 -04:00
Timothy Flynn
9524d92a9f CI: Remove quotes from cache keys
These get tricky with nested quotes when adding a hashFiles invocation.
Let's remove quotes from all keys to keep them consistent.
2026-04-10 07:26:05 -04:00
Timothy Flynn
a2fc4c1e10 CI: Remove always-true conditions from cache actions
After 80517124a4, we must always provide
these paths now.
2026-04-10 07:26:05 -04:00
dependabot[bot]
94eed3d708 CI: Bump dawidd6/action-download-artifact from 19 to 20
Bumps [dawidd6/action-download-artifact](https://github.com/dawidd6/action-download-artifact) from 19 to 20.
- [Release notes](https://github.com/dawidd6/action-download-artifact/releases)
- [Commits](https://github.com/dawidd6/action-download-artifact/compare/v19...v20)

---
updated-dependencies:
- dependency-name: dawidd6/action-download-artifact
  dependency-version: '20'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-08 11:22:44 -04:00
Jelle Raaijmakers
80517124a4 CI: Make input variables to cache actions mandatory
Cache variables should always be explicit, and we already pass them in
everywhere. This makes it easier to spot errors in our cache setup.
2026-04-08 09:24:39 -04:00
Jelle Raaijmakers
b2e169efc6 CI: Remove non-existent download_cache_path from web benchmarks job 2026-04-08 09:24:39 -04:00
Jelle Raaijmakers
27c4a2e439 CI: Always pass in toolchain to cache actions
It doesn't make a whole lot of sense leaving out this variable. We use
the toolchain to construct the main cache key for our ccache and vcpkg
caches, and the JS+WASM artifacts build defaulted to 'GNU' for their
toolchain which got really confusing.
2026-04-08 09:24:39 -04:00
Jelle Raaijmakers
3003930c8d CI: Remove runner_labels from custom cache actions
These were originally introduced to make it possible to discern between
GitHub's and Blacksmith's caches. This is no longer necessary since
Blacksmith resolved some issues _and_ switched to transparently
proxying GitHub cache actions to their own caches.
2026-04-08 09:24:39 -04:00
Jelle Raaijmakers
84a977d5f0 CI: Remove ccache_version input from cache-restore action
This went unused. Its intention is to bust our caches, but we can simply
restore this whenever we need that. No need to keep it around for now.
2026-04-08 09:24:39 -04:00
dependabot[bot]
7b0121e206 CI: Bump actions/upload-artifact from 6 to 7
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 6 to 7.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v6...v7)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-31 22:21:19 +02:00
Zaggy1024
5063507fbb CI: Start PulseAudio for Linux tests 2026-03-30 20:57:04 -05:00
Sam Atkins
1438efa3e2 CI: Update "Upload LibWeb Test Artifact" test-dumps path
Regressed in 829d112327
2026-03-30 21:04:34 +02:00
Undefine
829d112327 Meta: Move Lagom CMakeLists stuff to the top level CMakeLists
This allows us to get rid of the annoying Build/.../Lagom directory
and helps to deduplicate a bunch of logic while also drastically
simplifying everything.
2026-03-29 13:59:11 -06:00
Undefine
fbbcc73fea Meta: Refactor the way the GUI framework is picked
This is largely based of off the work done by Andrew Kaster in #5918.
Having this toggle makes much more sense, especially if there will be
more UIs in the future.

Co-authored-by: Andrew Kaster <andrew@ladybird.org>
2026-03-29 13:59:11 -06:00
Tim Ledbetter
9824194ddf CI: Add web-benchmarks job 2026-03-24 14:25:55 +01:00
dependabot[bot]
f8a7f3cdae CI: Bump dawidd6/action-download-artifact from 18 to 19
Bumps [dawidd6/action-download-artifact](https://github.com/dawidd6/action-download-artifact) from 18 to 19.
- [Release notes](https://github.com/dawidd6/action-download-artifact/releases)
- [Commits](https://github.com/dawidd6/action-download-artifact/compare/v18...v19)

---
updated-dependencies:
- dependency-name: dawidd6/action-download-artifact
  dependency-version: '19'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-24 11:07:13 +01:00
dependabot[bot]
5938b754ac CI: Bump gradle/actions from 5 to 6
Bumps [gradle/actions](https://github.com/gradle/actions) from 5 to 6.
- [Release notes](https://github.com/gradle/actions/releases)
- [Commits](https://github.com/gradle/actions/compare/v5...v6)

---
updated-dependencies:
- dependency-name: gradle/actions
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-24 11:06:54 +01:00