Commit graph

783 commits

Author SHA1 Message Date
Tim Ledbetter
e2d223b305 Documentation: Add glslang-tools as a dependency for Ubuntu
This is needed for WebGL to work on Ubuntu.
2026-06-22 00:37:03 +02:00
Andreas Kling
7426185b9d AK: Remove SANITIZE_PTRS support
Remove the unused SANITIZE_PTRS destructor poisoning blocks from AK
pointer wrappers. Also drop the stale Qt Creator configuration define
that referenced this old mode.
2026-06-13 22:49:15 +02:00
Timothy Flynn
b9ae2e472e Meta: Hoist the Fuzzers directory up one level 2026-06-13 10:30:02 -04:00
Zaggy1024
39e8b10f14 Documentation: Add a document about the design of the media pipeline
In case it is useful, especially when it comes time to refactor it for
out-of-process decoding.
2026-06-09 19:25:29 +02:00
Shannon Booth
2dc3e3da55 Meta: Remove obsolete Lagom host-tools build 2026-06-08 01:11:40 +02:00
sideshowbarker
ea15484700 Documentation: List ncurses as a build dependency
Problem: “configure: error: libncurses, libcurses, libtermcap or
libtinfo is required!” local-build failure in vcpkg libedit compilation.

Cause: dfb2656 replaced the in-tree LibLine with libedit, which vcpkg
builds, and libedit’s configure needs system ncurses (or termcap/tinfo).

Fix: Add the ncurses dev package to dependency lists for distros that
ship it separately: libncurses-dev on Debian/Ubuntu, and ncurses-devel
on Fedora/openSUSE/Void — and into the dev-container install scripts.
(Arch and macOS already ship the necessary headers.)

Fixes https://github.com/LadybirdBrowser/ladybird/issues/9946
2026-06-07 12:05:42 +12:00
Shannon Booth
2328c272e5 Documentation: Refer to correct directory for CSS code generators 2026-06-05 20:23:24 +02:00
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
Callum Law
0c5d120d75 LibWeb: Mark pseudo-elements as either synthetic or element-reference
See new paragraph in `Documentation/CSSGeneratedFiles.md` for what this
signifies.
2026-05-21 14:26:22 +01:00
Sam Atkins
9996403e73 LibWeb/CSS: Extract base class from MediaFeature
`<media-feature>` and the upcoming `<size-feature>` from `@container`,
share the same syntax and almost all of their behaviour. To avoid a lot
of duplication, pull as much as possible into a FeatureQuery template
class that they will both inherit from.

MediaFeatureValue is renamed FeatureValue as it's also shared by both.

No behaviour change.
2026-05-20 13:00:50 +01:00
Sam Atkins
f81cfba399 Documentation: Remove mention of "good first issue" label
We haven't maintained any of these for a while now.
2026-05-14 18:34:01 +01:00
Shannon Booth
4b9f6450bd LibWeb: Treat support IDLs like normal bindings inputs
Allow the WebIDL parser to accept files without a top-level interface,
and have the exposed-interface generator skip those modules.

With that in place, register support IDLs through
libweb_js_bindings() as well, including generated CSS IDLs from the
build directory, and remove the separate support-idl plumbing.

This is enabled now that the IDL generator rules have been simplified
so that every IDL file produces a corresponding header and cpp file.
2026-05-10 20:11:46 +02:00
Shane Cardoz
a22deae79c Documentation: Add missing FreeBSD build prerequisites and vcpkg note 2026-05-08 18:13:01 +01:00
Shannon Booth
0a8ff78675 Documentation: Update AddNewIDLFile for current IDL workflow
Remove stale #import guidance and clarify when to use
libweb_js_bindings() versus libweb_support_idl() when adding new IDL
files.
2026-05-03 10:56:45 +02:00
Callum Law
8849435d6f Meta+LibWeb: Initial scaffolding for CSS value type parsing code gen
In the future we should switch to using a better file format for this,
i.e. one that supports directly pasting CSS grammar production blocks
(https://drafts.csswg.org/css-values-4/#css-grammar-production-block)
and has support for inline comments, but we use JSON for now for
simplicity's sake.
2026-04-29 11:42:57 +01:00
Andreas Kling
072a3bdb90 RequestServer: Add diagnostic wire-activity logging
Per-request and per-connection logging that surfaces enough detail
to diagnose where time goes when a page load misbehaves. Gated by a
new REQUESTSERVER_WIRE_DEBUG cmakedefine.

Documentation/RequestServerWireLogging.md describes each label
(wire/wire+/wire++/wire^, wire-batch, wire-stall, wire-burst,
wire-pipe-pressure, LibDNS wire-dns, UI wire-cookie) and how to read
them.
2026-04-26 17:59:52 +02:00
Shannon Booth
83427086fa LibWeb/Bindings: Use IDL context to determine 'is platform object' 2026-04-24 20:08:29 +02: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
59d320a1d3 Meta: Remove configure-clangd.sh
This script:
1. Hasn't get up with our build directory structure.
2. Only works on macOS due to the way it invokes sed.
3. Arguably takes longer to figure out how to run the script than it
   does to just edit .clangd's build path.
2026-04-23 12:36:08 -04:00
Timothy Flynn
3f73528cad Meta: Move linter helpers to a subdirectory
Continuing some organization of the Meta directory. lint-ci.sh and
lint-commits.sh are left alone as "top-level" linters.
2026-04-23 07:31:19 -04:00
Andrew Kaster
5c835157c6 Documentation+Meta: Remove references to nonexistent Toolchain directory
After b1d708dd16, the Toolchain directory
was removed from the repository. Some documentation and scripts still
referenced it, so this commit removes those references. The only
remaining references are in the gitignore file, to prevent bisections
from being polluted by the presence of a Toolchain directory in the
working copy.
2026-04-21 06:56:32 -04:00
Andrew Kaster
f7c932f50e Meta: Add option to select GUI Framework to ladybird.py 2026-04-20 18:41:42 -04:00
Johan Dahlin
6c99bf74ea Documentation: Add GTK UI build prerequisites and style guide
Add GTK4/libadwaita build instructions alongside Qt.
Add Documentation/GtkFrontend.md with GTK-specific coding style
rules and a manual test checklist.
2026-04-17 11:17:56 -04:00
Jelle Raaijmakers
c3fb1be321 Everywhere: Remove GN build system
We've had some impressive efforts going into setting up and maintaining
GN as an alternative to CMake, but as of today we're still using CMake
and the GN files have bitrotted quite severely.

We've found no convincing reason to keep maintaining two build systems
in parallel - so let's remove GN and make life a bit simpler for us.
2026-04-15 18:54:19 -04:00
darshan
554891b033 Documentation: Replace 'default' CMake preset with 'Release'
The 'CMake --preset default' examples are now invalid, because the
'default' preset no longer exists.
Update all examples to use 'Release' preset.
Update the wording at line 305 to Release preset.
2026-04-08 12:30:10 +01:00
Sam Atkins
492cfc58d9 LibWeb/CSS: Add flags for element-backed & tree-abiding pseudo-elements
Generate a couple of functions for checking if a pseudo-element fits
these categories.
2026-04-08 10:37:05 +01:00
Callum Law
071b000d9f LibWeb: Only allow ASFs in descriptor values if explicitly supported
`@function` descriptors are the only ones that support ASFs, while most
descriptors enforce this through their syntaxes implicitly disallowing
ASFs, this wasn't the case for `@property/initial-value`.

We now explictly disallow ASFs unless they are marked as allowed within
`Descriptors.json`.
2026-03-30 19:57:36 +01:00
Callum Law
0219eb2ef9 LibWeb: Remove FooOrCalculated classes
These are unused since we now store values as `StyleValue`s before
used-value time, and as their resolved type (e.g. CSSPixels) after
2026-03-30 14:05:10 +01: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
36f79124b5 Documentation: Regenerate patch to disable debug optimizations 2026-03-29 13:59:11 -06:00
Undefine
ceca4a701b Meta: Move all compile options to one file
This is the first step to unify the common / lagom code paths which are
not relevant since the SerenityOS fork.
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
Callum Law
e7243f0090 LibWeb: Support custom descriptors
Some at-rules (i.e. `@function`) require us to support custom
descriptors (e.g. `--foo`).

We do this by adding `DescriptorID::Custom` and using a new
`DescriptorNameAndID` class in a bunch of places where we previously
just used `DescriptorID`
2026-03-27 11:19:28 +00:00
Callum Law
d0a868dcfb LibWeb: Add method to map from physical to logical property
This will be required in later commit.

The implementation could do with some optimization
2026-03-25 12:53:22 +00:00
Jelle Raaijmakers
a47013b4c4 Documentation: Standardize on spec question syntax 2026-03-15 09:03:20 -04:00
Timothy Flynn
3ad6fef866 Documentation: Clarify Rust installation note
* It is required for more than LibJS, so let's just remove that note.
* Only recommend using rustup to install the toolchain. System package
  managers have been found to be too out of date.
2026-03-14 11:47:44 -04:00
Undefine
c537bdf723 LibGfx: Add debug macro to enable Vulkan validation layers
Vulkan Validation Layers provides diagnostic feedback about Vulkan API
usage while live testing Ladybird. It is possible to enable this
diagnostic output without changing the code (using the Vulkan SDK),
but having it built into the code makes it very easy to enable whenever
required.

Co-authored-by: Rocco Corsi <5201151+rcorsi@users.noreply.github.com>
2026-03-04 22:27:40 +01:00
Andreas Kling
a64e13d232 Meta: Add Rust toolchain as a build dependency
There's now an ENABLE_RUST CMake option (on by default).

Install Rust via rustup in devcontainer scripts, document the
requirement in build instructions, and add Cargo's target/ directory
to .gitignore.
2026-02-24 09:39:42 +01:00
Jelle Raaijmakers
73658137b6 Documentation+Tests: Optimize PNGs using optipng
The wide gamut test file went unused, so it was deleted.
2026-02-23 13:45:04 +01:00
Timothy Flynn
372c7b9822 CI: Update the Clang pipeline to Clang 21 2026-02-18 08:02:45 -05:00
Andreas Kling
e87f889e31 Everywhere: Abandon Swift adoption
After making no progress on this for a very long time, let's acknowledge
it's not going anywhere and remove it from the codebase.
2026-02-17 10:48:09 -05:00
Ben Wiederhake
2085bdc361 Documentation: Add missing parent for AK/
Without this includedir, files like AK/Debug.h cannot be resolved.
2026-02-16 13:21:42 +01:00
Callum Law
63584321fe LibWeb: Skip property computation in some cases
There are cases where we can skip the property value computation process
because we know that the computed value will be equal to the specified
value
2026-02-13 21:54:06 +01:00
Rocco Corsi
8ea0a877a1 Documentation: Add missing 'less' command to Arch Linux dependencies
After installing Arch Linux 2026.02.01 and following the instructions
in Documentation/BuildInstructionsLadybird.md to install the
dependencies, using git command will fail due to missing pager less.
2026-02-12 00:06:27 +01:00
Sam Atkins
cdf55ea371 WebContent+LibWebView: Rename --layout-test-mode flag to --test-mode
This name has been outdated for a while, as it's enabled when running
any kind of test, not just layout tests.
2026-01-20 06:58:16 -05:00
Samq64
a47d59fa7b Documentation: Adjust Arch Linux dependencies
- Remove automake: base-devel already depends directly on it.
- Remove qt6-wayland: QT 6.10 added Wayland support to qt6-base.
- Add Python and Git: Not part of base or base-devel and are listed for
Ubuntu.
2026-01-19 12:04:17 +01:00
Andrew Kaster
f71b909bed CMake+CI: Use the same preset names on every platform
Starting with CMake 3.30 and CMakePresets version 9, the include field
supports interesting macro expansions. We can now define platform
specific presets in separate files and include them in the top-level
CMakePresets.json, while keeping the same preset names across all
platforms. This avoids some preset explosion at the cost of some mostly
empty json files for each unix platform.

The CMake minimum required in the top-level and Lagom CMakeLists.txt
have not been adjusted in this patch, as that would have the effect of
changing the default policy versions and is a bit out of scope.
2026-01-17 12:18:46 -07:00
R-Goc
aa6b588c97 Meta: Document Windows build
This updates the documentation for the state of the Windows build.
2026-01-16 11:15:16 -07:00
Callum Law
cbd07b2153 LibWeb: Don't mark whether shorthand properties are inherited
Inheritance applies to longhands individually so whether a shorthand was
marked as inherit or not is irrelevant
2025-12-29 16:11:13 +01:00
Jacob M Hunter
51114d12fb Documentation: Fix typos in build instructions 2025-12-29 09:02:34 -05:00