Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1016 commits
Select commit Hold shift + click to select a range
09e0067
IDLGenerators: Support Experimental extended attribute on IDL attributes
Lubrsi Feb 23, 2026
f06732d
LibWeb: Mark CacheStorage as Experimental
Lubrsi Feb 23, 2026
84043cd
LibWeb: Track deleted state on IndexedDb `Index` and `ObjectStore`
tcl3 Feb 24, 2026
f19d00c
LibJS: Memoize failed arrow function attempts in Rust parser
awesomekling Feb 24, 2026
abb392b
LibWeb: Remove redundant flush() in DisplayListPlayer::execute_impl()
kalenikaliaksandr Feb 24, 2026
2171337
LibWeb: Paint SVG-in-img with a nested display list
Lubrsi Feb 24, 2026
5224eb8
CI: Switch back to Linux for code linting
trflynn89 Feb 24, 2026
2e4ef08
LibWeb: Include Requests.h in SharedResourceRequest.cpp
Zaggy1024 Feb 24, 2026
e195d4e
LibWeb: Move canvas and media element iteration methods out of line
Zaggy1024 Feb 24, 2026
323e7dd
LibGC: Add GC::WeakHashSet<T> for safe weak pointer hash sets
awesomekling Feb 24, 2026
73b0ecd
LibWeb: Use GC::WeakHashSet for AnimationTimeline associated animations
awesomekling Feb 24, 2026
f1573df
LibWeb: Use GC::WeakHashSet for StyleScope's pending :has() nodes
awesomekling Feb 24, 2026
eda33ab
LibGC: Remove hash() from Traits<GC::Weak<T>>
awesomekling Feb 24, 2026
dc95107
test-web: Use the output StringBuilder to measure the counter length
Zaggy1024 Feb 24, 2026
6859c70
LibMedia: Add a formatter for DecoderErrorCategory
Zaggy1024 Feb 11, 2026
4778c6a
LibMedia: Deal with aborts in FFmpegDemuxer instead of the IO context
Zaggy1024 Feb 11, 2026
3a7f1f0
Tests: Add a test to read FFmpegDemuxer to EOF after aborting a read
Zaggy1024 Feb 11, 2026
a7d1c4b
LibJS: Defer GC during Rust-pipeline module and builtin compilation
awesomekling Feb 24, 2026
4b47245
LibJS: Cache ASCII-to-UTF-16 source conversion for Rust compilation
awesomekling Feb 24, 2026
1453add
Tests: Use the proper stream close() method in TestFFmpegDemuxer
Zaggy1024 Feb 24, 2026
432be81
Tests/LibWeb: Disable a couple tests
trflynn89 Feb 25, 2026
37454ec
CI: Bump actions/stale from 10.1.1 to 10.2.0
dependabot[bot] Feb 24, 2026
e803c38
CI: Bump dawidd6/action-download-artifact from 14 to 15
dependabot[bot] Feb 24, 2026
410e17a
LibMedia: Fix signed PCM to float sample normalization
jonbgamble Feb 23, 2026
9231b54
LibWeb: Pre-populate viewport in SVG subtree relayout
kalenikaliaksandr Feb 25, 2026
5f70d40
CI: Make failure to fetch git-gloss a fatal error
InvalidUsernameException Feb 7, 2026
0c5684f
CI: Do not run multiple note-pushing workflow runs in parallel
InvalidUsernameException Feb 7, 2026
8c57fa7
CI: Remove redundant `set -e` calls
InvalidUsernameException Feb 12, 2026
7b0d818
LibWeb: Update layout before accessing paintables in viewport scroll
awesomekling Feb 24, 2026
245eb7d
LibWeb: Use margin box for vertical overlap checks in float placement
tcl3 Feb 25, 2026
34cecb4
LibWeb+test-web: Allow identical echo registrations in http-test-server
jonbgamble Feb 24, 2026
6e03c21
LibWeb: Reduce navigation test's workload so it doesn't timeout on CI
jonbgamble Feb 13, 2026
e239ac8
LibWeb+test-web: Strip terminal escape codes from captured stderr
jonbgamble Feb 13, 2026
5911e8a
LibWeb+test-web: Add --repeat flag
jonbgamble Feb 13, 2026
4cafb9b
LibWeb+test-web: Add --debug-timeouts option to capture backtraces
jonbgamble Feb 13, 2026
472d6d4
LibWeb+test-web: Add --fail-fast option
jonbgamble Feb 13, 2026
00ffc34
LibJS: Wrap CompiledRegex in Rc to allow AST cloning
awesomekling Feb 25, 2026
cb6a468
LibJS: Return UTF16String's ASCII storage when applicable
trflynn89 Feb 25, 2026
025ddd3
LibWeb/HTML: Track secure context as part of Serialized{Document,Worker}
shannonbooth Feb 24, 2026
457b833
LibWeb/HTML: Add representation to WorkerGlobalScope to track owner set
shannonbooth Feb 24, 2026
9e7aa87
LibWeb: Properly determine if running in SecureContext for Workers
shannonbooth Feb 24, 2026
8d099b9
LibWeb: Add non const global object getter to EnvironmentSettingsObject
shannonbooth Feb 24, 2026
90a211b
LibWeb: Use device-pixel coordinates in display list and AVC
gmta Feb 25, 2026
f05bc7c
LibWeb: Implement `dominant-baseline` for SVG text
tcl3 Feb 25, 2026
ed26fda
LibWeb: Remove ViewportClient from ImagePaintable and VideoBox
awesomekling Feb 25, 2026
cc751a2
LibJS/Rust: Add aggressive optimisations for distribution
xnacly Feb 25, 2026
d360422
test-web: Use STDIN/STDOUT_FILENO to check for tty
Zaggy1024 Feb 25, 2026
124ff10
test-web: Use the event loop to wait for output from debuggers
Zaggy1024 Feb 24, 2026
6c41156
LibJS: Put RegExp flags in correct order
aplefull Feb 10, 2026
d95baf6
LibJS: Prevent escaped surrogates from combining in Unicode regexes
aplefull Feb 10, 2026
96d6dba
LibRegex: Backtrack 2 characters for legacy octal escapes
aplefull Feb 10, 2026
2ac9931
LibRegex: Restore parser state for incomplete \x and \u escapes
aplefull Feb 16, 2026
292c0cc
LibRegex: Detect overlapping character classes and ranges in optimizer
aplefull Feb 16, 2026
db76c1e
LibRegex: Account for case-insensitive matching in optimizer
aplefull Feb 17, 2026
53a98f2
LibRegex: Exclude lookahead assertions from match_length_minimum
aplefull Feb 16, 2026
6f1b7c8
LibRegex: Track optional capture groups for match_length_minimum
aplefull Feb 17, 2026
3d0b234
AK: Remove fallible and unused WeakPtr/Weakable methods
gmta Feb 25, 2026
2b78b84
AK+Everywhere: Add and use `weak_callback()`
gmta Feb 25, 2026
f9e837a
LibGC+LibWeb: Add and use `GC::weak_callback()`
gmta Feb 25, 2026
9bd0a50
RequestServer: Capture async references to Request objects weakly
trflynn89 Feb 25, 2026
a238894
CI: Move the flatpak build steps to their own job
trflynn89 Feb 26, 2026
ae5f28f
LibTextEncoder/LibURL: Cleanup includes
R-Goc Jan 16, 2026
57b12d3
LibCore: Remove LibCoreMinimal
R-Goc Jan 16, 2026
919f44f
LibCore: Explicitly export symbols from LibCore
R-Goc Dec 4, 2025
aa7eb95
LibJS: Implement Iterator.zip
trflynn89 Feb 25, 2026
100ed4c
LibJS: Implement Iterator.zipKeyed
trflynn89 Feb 25, 2026
74109d2
RequestServer: Only trim HTTP whitespace from response headers
shannonbooth Feb 26, 2026
787a83b
LibWeb: Stop calling Window::scroll_by() during layout
awesomekling Feb 26, 2026
3e3fcfa
LibWeb: Update layout before running intersection observations
awesomekling Feb 26, 2026
4ac4b92
LibWeb: Update layout after event dispatch in EventHandler
awesomekling Feb 26, 2026
1154a96
LibWeb: Update layout before processing screenshots
awesomekling Feb 26, 2026
7f459f4
LibWeb: Update layout before view transition capture
awesomekling Feb 26, 2026
e3b55e2
LibWeb: Update layout before getting selected text
awesomekling Feb 26, 2026
4a2d80b
LibWeb: Update layout in dump_dom_tree_as_json()
awesomekling Feb 26, 2026
b8b63dd
LibWeb: Update layout before auto-scroll processing
awesomekling Feb 26, 2026
a146225
LibWeb: Use unsafe layout/paintable accessors where appropriate
awesomekling Feb 26, 2026
5fe1a70
LibWeb: Add VERIFY checks to layout_node(), paintable(), paintable_box()
awesomekling Feb 26, 2026
0652a33
LibHTTP: Return a StringView from HTTP::normalize_header_value
trflynn89 Feb 26, 2026
ef134c9
LibHTTP: Correctly normalize header whitespace in cache utilities
trflynn89 Feb 26, 2026
9b229c9
AK: Fix handling of getting the current thread ID being unsupported
cqundefine Feb 23, 2026
a002bf5
AK: Implement `current_thread_id` for FreeBSD
cqundefine Feb 23, 2026
0b8650b
test-web: Actually create directories for test dumps
Zaggy1024 Feb 27, 2026
7ee9628
LibWeb: Await a stable state in media element failed_with_elements()
Zaggy1024 Feb 25, 2026
4bfa0d4
LibWeb: Clang-tidy up HTMLMediaElement a bit
Zaggy1024 Feb 25, 2026
a65046f
LibWeb: Remove ExceptionOr in the media element's resource selection
Zaggy1024 Feb 25, 2026
32efd1f
LibWeb: Remove ExceptionOr from the media element source selector
Zaggy1024 Feb 25, 2026
696a328
LibWeb: Skip waiting for media source failure steps to execute
Zaggy1024 Feb 25, 2026
0b3aca6
LibMedia: Ignore Aborted errors in data providers
Zaggy1024 Feb 26, 2026
274ad89
LibMedia: Ignore EndOfStream errors in PlaybackManager
Zaggy1024 Feb 26, 2026
a3a3e60
LibWeb: Implement media decode error handling in HTMLMediaElement
Zaggy1024 Feb 25, 2026
b84473f
LibWeb: Implement setting media element's network state to Loading
Zaggy1024 Feb 25, 2026
fa7f179
LibWeb: Don't try to restart the media fetching process after an error
Zaggy1024 Feb 26, 2026
57e36ce
LibWeb: Handle interrupted fetches in the media element
Zaggy1024 Feb 26, 2026
d6530d0
LibWeb: Clear the playback manager when forgetting media tracks
Zaggy1024 Feb 25, 2026
9353727
LibWeb: Don't synchronously set media element's seeking attribute false
Zaggy1024 Feb 26, 2026
44ed83f
Tests: Add a test for media element event ordering
Zaggy1024 Feb 26, 2026
02a2eb6
LibWeb: Keep delaying the load if an error event changes the media src
Zaggy1024 Feb 26, 2026
499ec26
LibWeb: Remove CSS pixel offsets from ScrollState
gmta Feb 26, 2026
30fb9d4
LibWeb: Remove unused snapshot from HTMLCanvasElement
gmta Feb 26, 2026
6596f27
LibGfx: Use accelerated painting surface snapshots if available
gmta Feb 26, 2026
d163c11
LibWeb: Skip IFC abspos static position in intrinsic sizing
kalenikaliaksandr Feb 27, 2026
50ec070
LibCrypto: Add AES-OCB support
mikiubo Feb 6, 2026
d604958
LibWeb: Import AES-OCB encrypt_decrypt WPT tests
mikiubo Feb 24, 2026
f7f95d2
LibWeb: Do not remove inline start padding when collapsing whitespace
Psychpsyo Feb 7, 2026
b83c11a
LibWeb: Deduplicate code for dispatching events to nested navigables
Psychpsyo Feb 7, 2026
0c22128
LibWeb: Use IntrinsicSizing mode for min-height measurement in BFC
kalenikaliaksandr Feb 27, 2026
c467c2f
LibWeb: Make `CounterStyleDefinition::create` return type non-optional
Calme1709 Feb 23, 2026
bd1ebdb
LibWeb: Add reusable `CounterStyleAlgorithmOrExtends` type
Calme1709 Feb 23, 2026
66dee23
LibWeb: Use i64 when generating initial counter representation
Calme1709 Feb 25, 2026
120cabd
LibWeb: Support `ethiopic-numeric` counter style
Calme1709 Feb 24, 2026
08a5ed7
LibWeb: Support Chinese counter styles
Calme1709 Feb 25, 2026
1877c20
LibWeb: Support extended Japanese counter styles
Calme1709 Feb 26, 2026
d0eabad
LibWeb: Support extended Korean counter styles
Calme1709 Feb 26, 2026
b683568
LibWeb: Add missing predefined counter style keywords
Calme1709 Feb 26, 2026
a7993e2
LibWeb: Skip BFC abspos static position in intrinsic sizing
kalenikaliaksandr Feb 27, 2026
f13a26d
LibMedia: Only update durations from data providers if it increases
Zaggy1024 Feb 27, 2026
8042878
LibWeb: Add SVG paint fallback color support to CSS parsing
tcl3 Feb 17, 2026
000a746
LibWeb: Apply SVG transforms to image elements during layout
tcl3 Feb 17, 2026
10248fc
Tests: Convert `getBBox()` tests from Text to Crash tests
tcl3 Feb 17, 2026
a762f62
LibWeb: Implement `SVGPatternElement`
tcl3 Feb 17, 2026
9cd2dae
LibWeb: Add gradientTransform/patternTransform presentation attributes
tcl3 Feb 17, 2026
9d1f727
LibJS: Add Value::is<T> to align with Value::as_if<T>
trflynn89 Feb 27, 2026
e95db70
LibJS+LibWeb: Return GC::Ptr from Value::as_if
trflynn89 Feb 27, 2026
cbf2517
LibJS: Make more use of Value::is and Value::as_if in Intl
trflynn89 Feb 27, 2026
cadba4c
LibJS: Make more use of Value::is and Value::as_if in Temporal
trflynn89 Feb 27, 2026
d7e828a
LibJS: Make more use of Value::is and Value::as_if in JS runtime
trflynn89 Feb 27, 2026
5b4b3b3
LibWeb: Remove unused `to_counter_style_name_keyword()`
Calme1709 Feb 26, 2026
858989e
LibWeb: Make `CounterStyle` ref counted
Calme1709 Feb 27, 2026
f6eccc6
LibWeb: Default `@counter-style` `system` descriptor to `symbolic`
Calme1709 Feb 27, 2026
81cb968
LibWeb: Support `symbols()` function in `<counter-style>`
Calme1709 Feb 27, 2026
7eafdcd
AK: Simplify `as_if<T>` when `fast_is<T>` is unavailable
gmta Feb 27, 2026
0d262ac
Meta/IDLGenerators: Make use of `as_if<T>` for union type checks
gmta Feb 27, 2026
703bef3
Meta/IDLGenerators: Do not call `resolve_overload()` if possible
gmta Feb 27, 2026
edf1ca8
LibWeb: Restrict throwaway layout states to their subtree
kalenikaliaksandr Feb 27, 2026
1477d86
LibImageDecoderClient: Verify main thread in Client methods
jonbgamble Feb 24, 2026
7d902c2
LibImageDecoderClient: Remove sync id fetch from async decode request
jonbgamble Feb 21, 2026
152758f
ImageDecoder: Disconnect client on duplicate request id
jonbgamble Feb 25, 2026
a40a34f
Tests/LibWeb: Run `optipng` after rebaselining screenshot tests
gmta Feb 27, 2026
87b923d
Meta: Update pinned Skia commit in Flatpak manifest
awesomekling Feb 28, 2026
a082cf7
Meta: Add an option to generate dSYM files for line numbers on macOS
Zaggy1024 Feb 27, 2026
1d89128
LibIPC: Reduce stack usage of generated IPC message dispatch
awesomekling Feb 28, 2026
ec55c80
LibIPC: Take MessageBuffer by lvalue reference in post_message()
awesomekling Feb 28, 2026
424a794
LibWeb: Flatten Platform::Timer by merging TimerSerenity
awesomekling Feb 28, 2026
3cfc7aa
LibWeb: Flatten Platform::EventLoopPlugin by merging Serenity impl
awesomekling Feb 28, 2026
b20d149
LibWeb: Flatten Platform::FontPlugin by merging WebView::FontPlugin
awesomekling Feb 28, 2026
bc0cff8
LibJS: Support Value::as_if for JS::Object
shannonbooth Feb 27, 2026
4c8723e
LibJS: Implement convenience helper Value::as<T>()
shannonbooth Feb 28, 2026
502ae99
LibJS: Make more use of Value::is and Value::as_if
shannonbooth Feb 28, 2026
1ca2b05
WebContent: Make more use of Value::as_if
shannonbooth Feb 28, 2026
9ef0433
test-js: Make more use of Value::as_if
shannonbooth Feb 28, 2026
0334a6b
js: Make more use of Value::as_if
shannonbooth Feb 28, 2026
2d6aba4
test-wasm: Make more use of Value::as_if
shannonbooth Feb 28, 2026
1811679
test262-runner: Make more use of Value::as_if
shannonbooth Feb 28, 2026
46cd477
LibWeb: Make more use of Value::{as,as_if,is} in LibWeb
shannonbooth Feb 28, 2026
d77a0a2
test-web: Convert ANSI control codes to HTML styling in dumped output
Zaggy1024 Feb 27, 2026
ed26c06
Meta: Do not use CMAKE_LINKER_TYPE on all BSD systems
cqundefine Jan 16, 2026
23e2408
Meta: Disable --no-undefined on all BSD systems
cqundefine Jan 16, 2026
b6e5b96
LibURL: Add a Origin::is_opaque_file_origin helper
shannonbooth Feb 28, 2026
8124a50
LibURL: Move some Origin helpers out of line
shannonbooth Feb 28, 2026
ec0231c
LibWeb/SecureContexts: Make use of Origin::is_opaque_file_origin
shannonbooth Feb 28, 2026
8d04c7b
Tests/LibWeb: Remove bogus file:// URL testcase
shannonbooth Feb 28, 2026
9e198ff
Tests/LibWeb: Run less Origin testcases from web server
shannonbooth Feb 28, 2026
8c8b833
Tests/LibWeb: Load tests relying on tuple file origins from HTTP server
shannonbooth Feb 28, 2026
336d95e
Tests/LibWeb: Run test-web tests with opaque origin file:// URLs
shannonbooth Feb 28, 2026
e188de8
LibWeb/PermissionsPolicy: Allow autoplay of file:// media from file://
shannonbooth Feb 28, 2026
e77167f
UI/AppKit: Make CPU painting work again
Zaggy1024 Feb 27, 2026
7fc945d
LibWeb: Account for scroll and transforms in `to_top_level_position()`
tcl3 Feb 11, 2026
65b08e7
LibWeb: Use correct point type in `to_top_level_position()`
tcl3 Mar 1, 2026
db5f16f
LibHTTP: Parse token-list headers according to their ABNF
shannonbooth Feb 28, 2026
766567a
LibJS: Compare Rust and C++ bytecode for lazily compiled functions
awesomekling Mar 1, 2026
18c40a1
LibJS/Rust: Fix has_parameter_expressions and TDZ checks for arguments
awesomekling Mar 1, 2026
8d51371
LibJS: Skip AST dump for ClassFieldInitializerStatement
awesomekling Mar 1, 2026
176a618
LibJS: Don't emit dead code after Throw for invalid LHS expressions
awesomekling Mar 1, 2026
543bd70
LibJS/Rust: Don't emit dead code after Throw for invalid LHS
awesomekling Mar 1, 2026
5660331
LibJS/Rust: Fix evaluation order in delete super[key]
awesomekling Mar 1, 2026
c365806
LibJS/Rust: Fix evaluation order for super in tagged templates
awesomekling Mar 1, 2026
d0b9905
LibJS/Rust: Use GetLengthWithThis for super.length property access
awesomekling Mar 1, 2026
8f38e52
LibJS/Rust: Fix several bytecode mismatches with the C++ pipeline
awesomekling Mar 1, 2026
95fec30
Tests/LibJS: Add bytecode test for nested try-finally continue
awesomekling Mar 1, 2026
1c40257
LibJS/Rust: Restore unwind handler when trampolining through finally
awesomekling Mar 1, 2026
17c8a80
Tests/LibJS: Add bytecode test for postfix update in logical AND
awesomekling Mar 1, 2026
e88932f
LibJS/Rust: Always allocate fresh register for postfix update result
awesomekling Mar 1, 2026
dc464ba
Tests/LibJS: Add bytecode test for var environment capacity
awesomekling Mar 1, 2026
4f503ef
LibJS/Rust: Use correct capacity for CreateVariableEnvironment
awesomekling Mar 1, 2026
ffa380f
Tests/LibJS: Add bytecode test for async await in try-catch with scope
awesomekling Mar 1, 2026
fa78df7
LibJS/Rust: Call perform_needed_unwinds before Throw instructions
awesomekling Mar 1, 2026
6432754
Tests/LibJS: Add bytecode test for postfix increment on private member
awesomekling Mar 1, 2026
93d19b3
LibJS/Rust: Handle private member update expressions
awesomekling Mar 1, 2026
fa9c1a6
Tests/LibJS: Add bytecode test for return from switch with block scope
awesomekling Mar 1, 2026
75e628c
LibJS/Rust: Push LeaveLexicalEnvironment boundary in switch statements
awesomekling Mar 1, 2026
f0c34d5
Tests/LibJS: Add bytecode test for for-of continue with block scope
awesomekling Mar 1, 2026
7602e03
LibJS/Rust: Push LeaveLexicalEnvironment boundary in for-of loops
awesomekling Mar 1, 2026
86191ce
Tests/LibJS: Add bytecode test for destructuring assignment in &&
awesomekling Mar 1, 2026
c379587
LibJS/Rust: Don't pass preferred_dst for destructuring assignment RHS
awesomekling Mar 1, 2026
aadfe0f
Tests/LibJS: Add test for compound assignment after destructuring
awesomekling Mar 1, 2026
496ca31
LibJS/Rust: Skip TDZ check for self-move in emit_set_variable
awesomekling Mar 1, 2026
d88374e
Tests/LibJS: Add bytecode test for for-of with conditional in RHS
awesomekling Mar 1, 2026
fdcb2cd
LibJS/Rust: Create for-of loop blocks before evaluating iterable
awesomekling Mar 1, 2026
677a22c
Meta: Make the GC explorer's source locations' word wrapping prettier
Zaggy1024 Feb 28, 2026
1a3e8fd
LibGC+Meta: Look up and display stack frames for StackPointer roots
Zaggy1024 Feb 28, 2026
03284ab
LibGC+Meta: Display a frame size in the GC graph explorer's stack trace
Zaggy1024 Feb 28, 2026
a3922aa
LibGC+Meta: Include inline frames in the GC explorer's stack trace
Zaggy1024 Feb 28, 2026
07d1b22
Meta: Simplify GC heap explorer's class list rendering
Zaggy1024 Feb 28, 2026
2282636
LibWeb: Clean up the element fullscreen APIs a bit
trflynn89 Feb 28, 2026
24aacfe
LibWeb: Add a button to the built-in media player to toggle fullscreen
trflynn89 Feb 27, 2026
3a9ae0e
LibWeb: Toggle the built-in media player fullscreen state on doubleclick
trflynn89 Feb 28, 2026
ae8181b
LibWeb+LibWebView+UI: Add a context menu item to toggle fullscreen state
trflynn89 Feb 28, 2026
f6ed54b
LibWeb: Keep the media element alive until fetches complete
Zaggy1024 Feb 28, 2026
70dc2ff
Meta: Add a rust-toolchain toml file to pin required rust version
ADKaster Mar 1, 2026
936fa1b
LibWeb: Apply document stylesheets to SVG use element shadow trees
tcl3 Feb 28, 2026
9ee2bb5
LibJS: Refactor function token is identifier to make it more readable
xD-saleem Feb 25, 2026
98f1813
LibWeb: Fix input field placeholder vertical alignment
punthenk Feb 21, 2026
85f98f9
LibWeb/SVG: Implement the feDisplacementMap filter
Lubrsi Feb 25, 2026
4a596f1
Tests/LibWeb: Include copy of the Open Font License 1.1
gmta Mar 2, 2026
e99ff65
LibWeb: Use glyph positions & widths instead of Harfbuzz for range rects
gmta Mar 2, 2026
d73b268
LibWeb: Update layout after dispatching initial mouse events
gmta Mar 2, 2026
aabf7ae
LibWeb: Skip fullscreen transient activation requests for WebDriver
trflynn89 Feb 28, 2026
44b9199
WebContent: Implement steps to fully exit fullscreen in WebDriver
trflynn89 Feb 28, 2026
1aed4d6
WebContent: Implement WebDriver's fullscreen endpoint according to spec
trflynn89 Feb 28, 2026
75aac67
AK: Call AtomicRefCounted::deref_base() on the subclass
Zaggy1024 Feb 27, 2026
04e95b7
LibCore: Avoid UAF on the array of wake pipes when exit()ing
Zaggy1024 Feb 27, 2026
035b489
LibCore: Prevent UAF on event loop wake handles on Windows
Zaggy1024 Feb 27, 2026
567ba4d
Tests: Add a test to check for UAF on the Unix event loop's thread data
Zaggy1024 Feb 27, 2026
1c7aca7
LibThreading: Simplify BackgroundAction callback invocation
Zaggy1024 Feb 27, 2026
7994d27
LibWeb: Add missing Promise.h include in DocumentLoading.cpp
Zaggy1024 Feb 27, 2026
8e0d31f
LibWeb: Simplify the lifetime of RenderingThread
Zaggy1024 Feb 27, 2026
d6ff027
LibCore: Remove the pending jobs functionality from ThreadEventQueue
Zaggy1024 Feb 27, 2026
8c96f7b
LibCore: Stop atomically ref-counting EventReceiver
Zaggy1024 Feb 27, 2026
2d4a976
Tests: Try to remove old test sockets in TestLibCoreStream
Zaggy1024 Feb 27, 2026
081f761
CI: Bump dawidd6/action-download-artifact from 15 to 16
dependabot[bot] Mar 3, 2026
e1ba577
LibWeb: Don't match ::part() selectors against unrelated pseudo-elements
gmta Mar 2, 2026
cc2daa2
CI: Bump actions/upload-artifact from 6 to 7
dependabot[bot] Mar 3, 2026
a7b70b0
LibWeb: Ensure execution context exists for FontFace loading task
tcl3 Mar 2, 2026
b49c243
LibWeb: Fix stale image request callbacks corrupting newer requests
kalenikaliaksandr Mar 1, 2026
bee9d1e
LibWeb: Add synthetic height for contenteditable elements
mikiubo Nov 3, 2025
87df9a9
LibWeb: Update layout before accessing paintable in label activation
tcl3 Mar 3, 2026
1243dbd
LibWeb: Create absolute container for `will-change: position`
mikewatt Dec 29, 2025
bfef5c4
LibWeb: Display video controls while the placeholder icon is visible
trflynn89 Mar 3, 2026
80977b5
LibWeb: Apply contain constraint in default image sizing algorithm
tcl3 Feb 28, 2026
1609eb1
AK: Reintroduce StackUnwinder.h
Zaggy1024 Mar 2, 2026
c78a98c
AK: Remove error passthrough from StackUnwinder
Zaggy1024 Mar 2, 2026
7339c26
LibGC: Use AK::unwind_stack_from_frame_pointer for stack pointer traces
Zaggy1024 Mar 2, 2026
d0e7ffd
LibGC: Add missing root type switch cases in graph dump
Zaggy1024 Mar 2, 2026
01526c6
Cleanup: minimize diff to upstream for Python integration layer
LonelyGuy12 Mar 3, 2026
09fd6e6
Merge upstream/master: resolve conflicts for Python integration
LonelyGuy12 Mar 3, 2026
9e43bda
CI: make brew update non-fatal, add retry for brew install
LonelyGuy12 Mar 3, 2026
cb61956
CI: add retried vcpkg pre-clone step on Linux
LonelyGuy12 Mar 3, 2026
50d645e
CI: add vcpkg pre-clone retry step to macOS job
LonelyGuy12 Mar 3, 2026
add821d
Fix: restore registered_property_set() declaration in Document.h
LonelyGuy12 Mar 3, 2026
055e5b2
[ImgBot] Optimize images
ImgBotApp Mar 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
3 changes: 3 additions & 0 deletions .devcontainer/features/ladybird/install-fedora.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,6 @@ dnf install -y git gh
dnf install -y autoconf-archive automake ccache cmake curl google-noto-sans-mono-fonts liberation-sans-fonts \
libglvnd-devel libtool nasm ninja-build patchelf perl-FindBin perl-IPC-Cmd perl-lib qt6-qtbase-devel \
qt6-qttools-devel qt6-qtwayland-devel tar unzip zip zlib-ng-compat-static

# Install Rust toolchain
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
4 changes: 4 additions & 0 deletions .devcontainer/features/ladybird/install-ubuntu.sh
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,10 @@ install_llvm_key() {

apt update -y
apt install -y lsb-release git python3 autoconf autoconf-archive automake build-essential cmake libdrm-dev libgl1-mesa-dev libtool nasm ninja-build pkg-config qt6-base-dev qt6-tools-dev-tools qt6-wayland ccache fonts-liberation2 zip unzip curl tar

### Install Rust toolchain
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y

### Ensure new enough host compiler is available

VERSION="0.0.0"
Expand Down
10 changes: 3 additions & 7 deletions .github/actions/cache-restore/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,6 @@ inputs:
description: 'Path to the ccache directory'
required: false
default: ''
download_cache_path:
description: 'Path to the download cache directory'
required: false
default: 'caches'
vcpkg_cache_path:
description: 'Path to vcpkg binary cache'
required: false
Expand Down Expand Up @@ -87,13 +83,13 @@ runs:
CCACHE_DIR: ${{ inputs.ccache_path }}
run: |
ccache -M 0

# Reset all ccache modification dates to a known epoch. This provides a baseline that we can prune against.
Get-ChildItem -Path "${{ inputs.ccache_path }}" -Recurse | Sort-Object FullName -Descending | ForEach-Object {
Get-ChildItem -Path "${{ inputs.ccache_path }}" -Recurse | Sort-Object FullName -Descending | ForEach-Object {
$_.LastWriteTime = [DateTime]::Parse("2018-10-10T09:53:07Z")
$_.LastAccessTime = [DateTime]::Parse("2018-10-10T09:53:07Z")
}

ccache -s
ccache -z

Expand Down
185 changes: 122 additions & 63 deletions .github/actions/setup/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,45 +14,123 @@ inputs:
description: 'Toolchain to set up'
required: true
default: 'Clang'
gcc_version:
description: 'GCC version to install'
required: false
default: '14'
llvm_version:
description: 'LLVM version to install'
required: false
default: '21'
type:
description: 'Whether the setup is for building or linting'
required: false
default: 'build'

outputs:
gcc_version:
description: 'The installed GCC version'
value: ${{ steps.export-versions.outputs.gcc_version }}
llvm_version:
description: 'The installed LLVM version'
value: ${{ steps.export-versions.outputs.llvm_version }}

runs:
using: "composite"
steps:
- uses: actions/setup-python@v5
- uses: actions/setup-python@v6
with:
python-version: 3.12
cache: 'pip'

- name: 'Install Python dependencies'
shell: bash
run: pip install pyyaml requests six
run: |
python3 -m pip install --upgrade pip

- name: 'Install Dependencies'
if ${{ inputs.type == 'build' }} ; then
pip3 install pyyaml requests six
else
pip3 install ruff
fi

- name: Install apt repositories
if: ${{ inputs.os == 'Linux' }}
shell: bash
run: |
set -e

sudo add-apt-repository ppa:ubuntu-toolchain-r/test

if [ ! -f /etc/apt/sources.list.d/llvm.list ]; then
UBUNTU_RELEASE=$(lsb_release -cs)

LLVM_LIST="/etc/apt/sources.list.d/llvm.list"
LLVM_TOOLCHAIN="llvm-toolchain-${UBUNTU_RELEASE}-${{ inputs.llvm_version }}"

if [ ! -f "${LLVM_LIST}" ] || ! grep -q "${LLVM_TOOLCHAIN}" "${LLVM_LIST}" ; then
curl -f -o /usr/share/keyrings/llvm-snapshot.gpg.key https://apt.llvm.org/llvm-snapshot.gpg.key
echo "deb [signed-by=/usr/share/keyrings/llvm-snapshot.gpg.key] http://apt.llvm.org/noble/ llvm-toolchain-noble-20 main" | sudo tee -a /etc/apt/sources.list.d/llvm.list
echo "deb [signed-by=/usr/share/keyrings/llvm-snapshot.gpg.key] http://apt.llvm.org/${UBUNTU_RELEASE}/ ${LLVM_TOOLCHAIN} main" | sudo tee "${LLVM_LIST}"
fi

sudo apt-get update -y
sudo apt-get install -y autoconf autoconf-archive automake build-essential ccache cmake curl fonts-liberation2 \
gcc-14 g++-14 libcurl4-openssl-dev libdrm-dev libegl1-mesa-dev libgl1-mesa-dev libpulse-dev libssl-dev \
libstdc++-14-dev lld-20 llvm-20 nasm ninja-build qt6-base-dev qt6-tools-dev-tools tar unzip zip

- name: Install Dependencies
if: ${{ inputs.os == 'Linux' && inputs.type == 'build' }}
shell: bash
run: |
sudo apt-get install -y \
autoconf \
autoconf-archive \
automake \
build-essential \
ccache \
cmake \
curl \
fonts-liberation2 \
g++-${{ inputs.gcc_version }} \
gcc-${{ inputs.gcc_version }} \
libcurl4-openssl-dev \
libdrm-dev \
libegl1-mesa-dev \
libgl1-mesa-dev \
libpulse-dev \
libssl-dev \
libstdc++-${{ inputs.gcc_version }}-dev \
lld-${{ inputs.llvm_version }} \
llvm-${{ inputs.llvm_version }} \
nasm \
ninja-build \
qt6-base-dev \
qt6-tools-dev-tools \
tar \
unzip \
zip

if ${{ inputs.toolchain == 'Clang' }} ; then
sudo apt-get install -y clang-20 clang++-20 clang-tools-20
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-20 100
sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-20 100
sudo apt-get install -y \
clang-${{ inputs.llvm_version }} \
clang++-${{ inputs.llvm_version }} \
clang-tools-${{ inputs.llvm_version }}

sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-${{ inputs.llvm_version }} 100
sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-${{ inputs.llvm_version }} 100
fi

sudo update-alternatives --install /usr/bin/llvm-symbolizer llvm-symbolizer /usr/bin/llvm-symbolizer-20 100
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-14 100
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-14 100
sudo update-alternatives --install /usr/bin/llvm-symbolizer llvm-symbolizer /usr/bin/llvm-symbolizer-${{ inputs.llvm_version }} 100
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-${{ inputs.gcc_version }} 100
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-${{ inputs.gcc_version }} 100

- name: Install Dependencies
if: ${{ inputs.os == 'Linux' && inputs.type == 'lint' }}
shell: bash
run: |
sudo apt-get install -y \
clang-format-${{ inputs.llvm_version }} \
generate-ninja \
optipng \
shellcheck

sudo update-alternatives --install /usr/bin/clang-format clang-format /usr/bin/clang-format-${{ inputs.llvm_version }} 100

sudo npm install -g prettier@3.8.1

- name: Ensure clang-cl is available
if: ${{ inputs.os == 'Windows' && inputs.toolchain == 'ClangCL' }}
Expand All @@ -74,60 +152,33 @@ runs:
with:
xcode-version: 26.2

- name: 'Install Swift toolchain'
if: ${{ inputs.toolchain == 'Swift' }}
shell: bash
run: |
set -e

export SWIFTLY_HOME_DIR=${{ github.workspace }}/.swiftly/share
export SWIFTLY_BIN_DIR=${{ github.workspace }}/.swiftly/bin

echo "$SWIFTLY_BIN_DIR" >> $GITHUB_PATH
echo "SWIFTLY_HOME_DIR=$SWIFTLY_HOME_DIR" >> $GITHUB_ENV
echo "SWIFTLY_BIN_DIR=$SWIFTLY_BIN_DIR" >> $GITHUB_ENV

export PATH=$SWIFTLY_BIN_DIR:$PATH

mkdir -p $SWIFTLY_HOME_DIR
mkdir -p $SWIFTLY_BIN_DIR

if ${{ inputs.os == 'Linux' }} ; then
curl -O https://download.swift.org/swiftly/linux/swiftly-${{ inputs.arch }}.tar.gz
file swiftly-${{ inputs.arch }}.tar.gz
tar -xzf swiftly-${{ inputs.arch }}.tar.gz -C $SWIFTLY_BIN_DIR
rm swiftly-${{ inputs.arch }}.tar.gz
else
# FIXME: https://github.com/swiftlang/swiftly/issues/271
# Why does this drop files in $HOME? That's not very CI-friendly
curl -O https://download.swift.org/swiftly/darwin/swiftly.pkg
installer -pkg swiftly.pkg -target CurrentUserHomeDirectory
cp ~/.swiftly/bin/swiftly $SWIFTLY_BIN_DIR
rm swiftly.pkg
fi

swiftly init \
--no-modify-profile \
--quiet-shell-followup \
--assume-yes \
--skip-install \
--verbose

echo "swiftly version: $(swiftly --version)" >&2

# installs version listed in .swift-version
swiftly install
swiftly list

- name: 'Install Dependencies'
if: ${{ inputs.os == 'macOS' || inputs.os == 'Android' }}
shell: bash
run: |
set -e
brew update
brew install autoconf autoconf-archive automake bash ccache coreutils libtool llvm@20 nasm ninja pkg-config qt unzip

brew install \
autoconf \
autoconf-archive \
automake \
bash \
ccache \
coreutils \
libtool \
llvm@${{ inputs.llvm_version }} \
nasm \
ninja \
pkg-config \
qt \
unzip

- name: 'Install Rust toolchain'
if: ${{ inputs.os != 'Windows' }}
uses: dtolnay/rust-toolchain@stable

- name: 'Install wasm-tools'
if: ${{ inputs.type == 'build' }}
shell: bash
run: |
VERSION=1.243.0
Expand Down Expand Up @@ -176,5 +227,13 @@ runs:
core.exportVariable('VCPKG_FORCE_SYSTEM_BINARIES', '1')

- name: 'Install vcpkg'
if: ${{ inputs.type == 'build' }}
shell: bash
run: ./Toolchain/BuildVcpkg.py

- name: 'Export installed versions'
id: 'export-versions'
shell: bash
run: |
echo "gcc_version=${{ inputs.gcc_version }}" >> "$GITHUB_OUTPUT"
echo "llvm_version=${{ inputs.llvm_version }}" >> "$GITHUB_OUTPUT"
33 changes: 31 additions & 2 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,19 @@ jobs:
sudo ln -snf /usr/share/zoneinfo/Etc/UTC /etc/localtime
echo "Etc/UTC" | sudo tee /etc/timezone

- name: Pre-clone vcpkg (with retry)
run: |
VCPKG_REV=$(python3 -c "import json; print(json.load(open('vcpkg.json'))['builtin-baseline'])")
VCPKG_DIR="Build/vcpkg"
if [ ! -d "$VCPKG_DIR/.git" ]; then
for i in 1 2 3 4 5; do
git clone https://github.com/microsoft/vcpkg.git "$VCPKG_DIR" && break
echo "vcpkg clone attempt $i failed, retrying in 30s..."
rm -rf "$VCPKG_DIR"
sleep 30
done
fi

- name: Build Ladybird
env:
VCPKG_BINARY_SOURCES: "clear;files,${{ github.workspace }}/.vcpkg_cache,readwrite"
Expand Down Expand Up @@ -114,8 +127,12 @@ jobs:

- name: Install dependencies including Clang 19+
run: |
brew update
brew install cmake ninja ccache qt python@3.14 pkg-config wabt autoconf autoconf-archive automake libtool
brew update || true # non-fatal: tap HTTP 500s are transient; homebrew/core still updates
for i in 1 2 3; do
brew install cmake ninja ccache qt python@3.14 pkg-config wabt autoconf autoconf-archive automake libtool && break
echo "brew install attempt $i failed, retrying in 15s..."
sleep 15
done

# Ensure Python 3.14 is properly linked
brew link --overwrite python@3.14
Expand Down Expand Up @@ -192,6 +209,18 @@ jobs:
which clang-20 || which clang
echo "Build environment ready"

- name: Pre-clone vcpkg (with retry)
run: |
VCPKG_DIR="Build/vcpkg"
if [ ! -d "$VCPKG_DIR/.git" ]; then
for i in 1 2 3 4 5; do
git clone https://github.com/microsoft/vcpkg.git "$VCPKG_DIR" && break
echo "vcpkg clone attempt $i failed, retrying in 30s..."
rm -rf "$VCPKG_DIR"
sleep 30
done
fi

- name: Build Ladybird (macOS)
env:
CMAKE_MAKE_PROGRAM: /opt/homebrew/bin/ninja
Expand Down
20 changes: 0 additions & 20 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -74,23 +74,3 @@ jobs:
arch: ${{ matrix.arch }}
build_preset: ${{ matrix.build_preset }}
clang_plugins: ${{ matrix.clang_plugins }}

Flatpak:
if: github.repository == 'LadybirdBrowser/ladybird'
name: Flatpak ${{ matrix.arch }}

strategy:
fail-fast: false
matrix:
arch: ['x86_64']
runner_labels: ['["blacksmith-16vcpu-ubuntu-2404"]']

include:
- arch: 'aarch64'
runner_labels: '["blacksmith-16vcpu-ubuntu-2404-arm"]'

secrets: inherit
uses: ./.github/workflows/flatpak-template.yml
with:
arch: ${{ matrix.arch }}
runner_labels: ${{ matrix.runner_labels }}
28 changes: 28 additions & 0 deletions .github/workflows/flatpak.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
name: Flatpak

on: [push, pull_request]

concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || format('{0}-{1}', github.ref, github.run_number) }}
cancel-in-progress: true

jobs:
Flatpak:
if: github.repository == 'LadybirdBrowser/ladybird'
name: Flatpak ${{ matrix.arch }}

strategy:
fail-fast: false
matrix:
arch: ['x86_64']
runner_labels: ['["blacksmith-16vcpu-ubuntu-2404"]']

include:
- arch: 'aarch64'
runner_labels: '["blacksmith-16vcpu-ubuntu-2404-arm"]'

secrets: inherit
uses: ./.github/workflows/flatpak-template.yml
with:
arch: ${{ matrix.arch }}
runner_labels: ${{ matrix.runner_labels }}
Loading
Loading