diff --git a/_posts/2025-12-12-november-in-servo.md b/_posts/2025-12-12-november-in-servo.md
new file mode 100644
index 000000000..e7c97e0b4
--- /dev/null
+++ b/_posts/2025-12-12-november-in-servo.md
@@ -0,0 +1,44 @@
+---
+layout: post
+tags: blog
+title: "November in Servo: ???"
+date: 2025-12-12
+summary: ao!! wrrrrao!!
+categories:
+---
+
+
+
+
diff --git a/commits.txt b/commits.txt
new file mode 100644
index 000000000..06ab41981
--- /dev/null
+++ b/commits.txt
@@ -0,0 +1,4818 @@
+>>> 2025-11-01T06:22:46Z
+-https://github.com/servo/servo/pull/40326 (@yerke, #40326) devtools: move test for IdMap to a separate mod test (#40326)
+ # devtools: move test for IdMap to a separate mod test
+ # Testing: existing unit test still runs with mach test-unit.
+ # This change will reduce the amount of code that the compiler has to compile when we are not running tests.
+-https://github.com/servo/servo/pull/40325 (@yerke, #40325) script: add CanGc as argument to VirtualMethods::children_changed (#40325)
+ # script: add CanGc as argument to VirtualMethods::children_changed
+ # Testing: These changes do not require tests because they are a refactor.
+ # Addresses part of https://github.com/servo/servo/issues/34573
+https://github.com/servo/servo/pull/40321 (@lumiscosity, #40321) Properly provide architecture in useragent string (#40321)
+ # Uses `std::env::consts::ARCH` to accurately provide the target CPU architecture for the useragent string.
+ # Testing: Manual.
+ # Fixes: #12123
+https://github.com/servo/servo/pull/40310 (@lumiscosity, #40310) script: fix defaults on formMethod getters on and (#40310)
+ # Fixes the getters for `formMethod` on `` and `` elements providing a missing value default when they shouldn't.
+ # Testing: 3 new passing tests in `html/dom/reflection-forms.html` and `/html/dom/reflection-forms-weekmonth.html`.
+ # Fixes: #8302. (`formEnctype` seems to have already been fixed since that issue was filed.)
+https://github.com/servo/servo/pull/40254 (@jdm, #40254) script: Report target padding and desired sizes for ResizeObserver notifications (#40254)
+ # We were not following the specification for computing the values of the content rect. Additionally, any non-content-box
+ # observer would get confused because we never stored the correct size, leading to infinite notifications when the
+ # latest size didn't match the last observed size.
+ # Testing: Various tests now pass.
+ # Fixes: #32549
+ # Fixes: #40107
+-https://github.com/servo/servo/pull/40317 (@jschwe, #40317) ci: Fix unit-test coverage (#40317)
+ # `linker-features` stabilized in rust 1.90, so using it with -Z causes ci to fail.
+ # lld is also the default on linux now, so we can just remove the feature.
+ # Testing: [Try run](https://github.com/servo/servo/actions/runs/18976287667)
+ # Fixes: #40313
+-https://github.com/servo/servo/pull/40318 (@lumiscosity, #40318) servoshell: Fix typo in unrecognized debug option message (#40318)
+ # Changes "urnecognized" to "unrecognized".
+ # Testing: Not relevant.
+-https://github.com/servo/servo/pull/40311 (@jschwe, #40311) installer: Change windows installation directory (#40311)
+ # Change the installation directory to Servo.
+ # This was discussed during the October TSC meeting
+ # and removes the outdated reference to mozilla research.
+ # Testing: Manually tested the windows installer
+ # Fixes: #40068
+https://github.com/servo/servo/pull/40309 (@mukilan, @mrobinson, #40309) compositor: Make new frame notifications per Painter (#40309)
+ # Track the `PainterId` in the `RenderNotifier` and use it to ensure needs_repaint is set independently for each
+ # `Painter`. This allows us to post new frame notifications only to the painters that WebRender notified us about.
+ # Testing: Should be covered by existing tests.
++https://github.com/servo/servo/pull/40305 (@kkoyung, #40305) script: Implement generate key operation of ECDH (#40305)
+ dom; crypto.subtle.generateKey("ECDH")
+ # Continue on adding ECDH support to WebCrypto API. This patch implements generate key operation of ECDH.
+ # Testing:
+ # - Pass some WPT tests that were expected to fail.
+ # - Some FAIL expectations are added. They require not-yet-implemented "derive bits" operation of ECDH. WPT skipped
+ # them when "generate key" operation for ECDH were not yet implemented.
+ # Fixes: Part of #39060
+https://github.com/servo/servo/pull/40303 (@yezhizhen, #40303) servoshell: Implement `WebDriverCommandMsg::TakeScreenshot` for egl (#40303)
+ # Move the screenshot handler to `RunningAppStateBase` to be shared between egl and desktop. This enables
+ # screenshot/element screenshot capability for egl.
+ # Testing: Existing test. For egl, tested on Ohos.
+ # Fixes: Part of #40279
+https://github.com/servo/servo/pull/40302 (@mukilan, #40302) compositor: use the `Painter` terminology in `RefreshDriver` traits (#40302)
+ # Also clean up the code and remove unnecesary borrow in the `Painter::render` method. This was missed during code
+ # review of #40264.
+ # Testing: No testing. This is just a small code cleanup.
+https://github.com/servo/servo/pull/40308 (@atbrakhi, #40308) servoshell: Move `servoshell_preferences` to `RunningAppStateBase` (#40308)
+ # There are several code duplicates in servoshell. In this PR, we extract `servoshell_preference` from the desktop
+ # and EGL implementations into a shared RunningAppStateBase trait. This eliminates duplicate code while maintaining
+ # the same functionality across all platforms.
+ # This is part of refactoring effort to consolidate shared code between desktop and EGL implementations.
+ # Testing: No functional changes. Existing tests should test this.
+https://github.com/servo/servo/pull/40307 (@mukilan, @mrobinson, #40307) compositor: Rename `RenderingGroupId` to `PainterId` (#40307)
+ # And let the Compositor create the `PainterId` when it creates a new `Painter`. Also make inline formatting code take
+ # `LayoutContext` rather than threading it via the `InlineFormattingContextBuilder`.
+ # Testing: Should preserve existing behavior, so covered by existing tests.
++https://github.com/servo/servo/pull/40158 (@mrobinson, #40158) pixels: Store decoded images as RGBA premultiplied data (#40158)
+ perf; faster animated GIF rendering
+ # Canvas expects input data to be in RGBA premultiplied format and
+ # WebRender already supports RGBA and BGRA data as long as they are
+ # premultiplied. Pre-multiplying up front allows:
+ # - Avoiding many conversions when painting images to canvas.
+ # - Passing the `RasterImage` IpcSharedMemory of the image instead of creating
+ # a new one with the premultiplied data every time we upload to
+ # WebRender. This is a big deal for animated gifs, because before every
+ # frame was creating a new shared memory segment.
+ # It seems that for rasterized SVGs were were already putting
+ # premultplied data into the `RasterImage` so it's quite likely SVGs were
+ # being composited incorrectly.
+ # Testing: This causes 8 tests to start passing and 2 tests to fail in the WebGL conformance suite.
+ # The failures are due to the fact that premultiplying alpha is lossy when alpha is 0. In that case,
+ # the resulting color of a blend operation might be wrong. This is typically only a problem if you
+ # use RGBA data as RGB data, which is pretty unusual. In the case that you are blending with
+ # RGBA the final color values will be 0 or close to 0 anyway. Gecko solves this issue by having a
+ # cacheable surface generation API that can fetch both premulitplied and unpremulitplied data
+ # from things like image elements. We do not have that yet, but I argue that this change
+ # is important anyway due to the amount that it reduces memory and file descriptor usage
+ # as well as the cost of copying image data so much in memory.
++https://github.com/servo/servo/pull/39384 (@shubhamg13, @boluochoufeng, #39384) Add support for LargestContentfulPaint PaintMetric (#39384)
+ perf; LCP measurement
+ # Steps for calculating LCP:
+ # 1. When the pref for `largest_contentful_paint_enabled` is enabled, `LargestContentfulPaintCandidateCollector`
+ # is created once per LayoutThread using `viewport_size`.
+ # 2. While building the `display_list`, it send the pre-calculated `clip_rect` and `bounds` to `LCPCollector`
+ # along with `transform` and `LCPCandidateType` for `visual_rect` calculation for `LCPCandidates`.
+ # 3. After `visual_rect` calculation, update the `lcp_candidate` based on `area` of `visual_rect` and send it to
+ # `compositor`.
+ # 4. Then among `lcp_candidates`, we find out the `largest_contentful_paint` and send it to `paint_metric`
+ # 5. In addition to above `LCP` also uses `PaintMetricState` to save console from spamming with duplicate entries.
+ # This PR includes following commits better segregation of code
+ # 1. Add `LargestContentfulPaintCandidate` struct
+ # 2. Add `LargestContentfulPaintCandidateCollector`
+ # 6. Collect the `LargestContentfulPaintCandidates`when feature is enabled.
+ # 7. Send the `LargestContentfulPaintCandidates` to compositor
+ # 8. Add `LargestContentfulPaintCalculator`
+ # 9. Calculates the `LargestContentfulPaint`
+ # 10. Send `LCP` to `PaintMetrics`
+ # 11. Disable `LCP` feature on user interaction
+ # Elements considered for LCP in this PR:
+ # - Image element
+ # - An element with background image
+ # Reference: https://github.com/servo/servo/pull/38041
+ # Testing: Tested using [perf-analysis-tools](https://github.com/servo/perf-analysis-tools) See attached screenshot.
+ # Fixes: None
+ # Perfetto
+ # Console Output of Metric
+https://github.com/servo/servo/pull/40128 (@aaron-wgd, #40128) servoshell/desktop: Draw WebViews without using an egui::CentralPanel (#40128)
+ # Showing a CentralPanel causes egui to claim touch events over the WebView, making workarounds like that in [commit
+ # f182f74](https://github.com/servo/servo/commit/f182f748ab31e75e585c59681648739b3c77132a) necessary. Since we are
+ # only using the panel to determine the size of the WebView, we can also use ctx.available_rect() instead.
+ # The reason I looked into this is that I noticed servoshell very often (but not always) panicking when I end touch
+ # events on my linux/wayland. It was pretty clear that this was triggered by touch start events not being forwarded
+ # to compositing/touch.rs such that the end events acted on inconsistent state. This happened because egui claimed
+ # to consume the start events, just like for pinch zoom in commit f182f74.
+ # Extending the workaround to touch start events fixes my panics as well. But while I was at it, I looked
+ # into egui's code, where the decision to count all space as used by egui after adding a central panel happens
+ # [here](https://github.com/emilk/egui/blob/f6fa74c66578be17c1a2a80eb33b1704f17a3d5f/crates/egui/src/pass_state.rs#L360).
+ # It looks intentional - by adding a central panel, we are expressing our intention to let egui handle events not
+ # just in the side panels, but everywhere. I think this commit is therefore a cleaner way to handle this instead of
+ # extending the workaround - but I'm not certain and curious what y'all think!
+ # The fact that the commit title of f182f74 mentions macOS and that the panics on ending touch events were not noticed
+ # when pinch gestures were added makes me worry that there is some platform dependency here that I do not understand,
+ # so it would probably be best if someone on different platforms tested this as well.
+ # Finally, we were actually adding two central panels [in the previous
+ # code](https://github.com/servo/servo/blob/025abc855ef4f2225db4e2a28e5d29529dbf9894/ports/servoshell/desktop/minibrowser.
+ # rs#L453).
+ # I suspect that was unintentional, at least dialogs seem to work fine if I call `state.for_each_active_dialog(..)`
+ # outside of a panel.
+ # Testing: Tested manually on linux/wayland.
+ # Fixes: Intermittent panics on touch end events, see above.
++https://github.com/servo/servo/pull/40298 (@kkoyung, #40298) script: Implement export key operation of ECDH (#40298)
+ dom; crypto.subtle.exportKey() for ECDH keys
+ # Continue on adding ECDH support to WebCrypto WPI. This patch implements export key operation of ECDH.
+ # Testing:
+ # - Pass some WPT tests that were expected to fail.
+ # - Some FAIL expectations are added. They require not-yet-implemented "derive bits" operation of ECDH. WPT skipped
+ # them when "export key" operation for ECDH were not yet implemented.
+ # Fixes: Part of #39060
+-https://github.com/servo/servo/pull/40300 (@kkoyung, #40300) script: Remove unneeded unsafe code annotation (#40300)
+ # These two functions no longer use unsafe code. The annotation `#[allow(unsafe_code)]` can be removed.
+ # Testing: Refactoring. Existing tests suffice.
+>>> 2025-11-02T06:18:03Z
+-https://github.com/servo/servo/pull/40346 (@servo-wpt-sync, #40346) Sync WPT with upstream (02-11-2025) (#40346)
+ # Automated downstream sync of changes from upstream as of 02-11-2025
+ # [no-wpt-sync]
+-https://github.com/servo/servo/pull/40345 (@sagudev, #40345) CI: Add free disk space in docs workflow (#40345)
+ # Should fix docs workflow which currently fails because not enough space is left:
+ # https://github.com/servo/servo/actions/runs/18964865479
+ # run: https://github.com/servo/servo/actions/runs/18997885819
+-https://github.com/servo/servo/pull/40327 (@mukilan, #40327) wpt: Have `ServoRefTestExecutor` inherit from `RefTestExecutor` (#40327)
+ # Since `ProcessTestExecutor` is only used by Servo and doesn't add much
+ # on top of `ServoExecutor`, merge the former into the latter.
+ # Also make `ServoExecutor` a mixin so that the derived classes can
+ # inherit from upstream `wptrunner`'s classes and avoid the diamond
+ # inheritance of `TestExecutor` base class.
+ # Another issue is that new changes in the
+ # `RefTestImplementation.get_screenshot_list` method upstream conflicts
+ # with the assumptions in Servo's executor:
+ # - The `dpi` argument is used as an `int` although it is a string
+ # - The `viewport_size` argument is treated as a tuple of ints but it is
+ # in fact a string of the format `WxH`. It also treats the viewport
+ # dimensions as being specified in device pixel coordinates while
+ # Servo treats it as logical coordinates and will scale it by `dpi`.
+ # These issues need to discussed with upstream and patched in
+ # `RefTestImplementation`.
+ # Finally, add back `**kwargs` argument to `ServoCrashtestExecutor`'s
+ # constructor to fix #40322.
+ # Testing: Tested on fork with changes from upstream's base executor.
+ # Fixes #40288
+ # Fixes #40322
+-https://github.com/servo/servo/pull/40342 (@sagudev, #40342) chore: Update mozjs to remove cargo_metadata (#40342)
+ # With https://github.com/servo/mozjs/pull/639 we use vendored icu_capi headers, thus we removed cargo_metadata. Offline
+ # builds should now work.
+ # Testing: Done in mozjs
+-https://github.com/servo/servo/pull/40315 (@atbrakhi, #40315) servoshell: Move `servo` to `RunningAppStateBase` (#40315)
+ # There are several code duplicates in servoshell. In this PR, we extract `servo` from the desktop and EGL
+ # implementations into a shared `RunningAppStateBase` trait. This eliminates duplicate code while maintaining the
+ # same functionality across all platforms.
+ # This is part of refactoring effort to consolidate shared code between desktop and EGL implementations.
+ # Testing: No functional changes. Existing tests should test this.
+-https://github.com/servo/servo/pull/40330 (@yezhizhen, #40330) servoshell: Move `webview_by_id` into `RunningAppStateTrait` (#40330)
+ # This reduces code duplication between egl and Desktop.
+ # Testing: No behaviour change. Just simplification.
+-https://github.com/servo/servo/pull/40337 (@mrobinson, #40337) wpt: Remove annotations in `executorservo.py` (#40337)
+ # The upstream WPT runs with Python 3.8 which does not support type
+ # annotations. This is an attempt to get future changes to the file to
+ # merge successfully upstream.
+https://github.com/servo/servo/pull/40205 (@yerke, #40205) layout: Show pointer cursor for submit input with text value (#40205)
+ # layout: Show pointer cursor for submit input with text value
+ # Before:
+ # After:
+ # Testing: tested manually, as [suggested](https://github.com/servo/servo/issues/9084#issuecomment-3257188850) by @jdm.
+ # Fixes: https://github.com/servo/servo/issues/9084
+-https://github.com/servo/servo/pull/40329 (@yerke, #40329) script: add `CanGc` as argument to `VirtualMethods.post_connection_steps` (#40329)
+ # script: add `CanGc` as argument to `VirtualMethods.post_connection_steps`
+ # Testing: These changes do not require tests because they are a refactor.
+ # Addresses part of https://github.com/servo/servo/issues/34573
+-https://github.com/servo/servo/pull/40335 (@yerke, #40335) script: move media interfaces to `script/dom/media` module (#40335)
+ # script: move media interfaces to `script/dom/media` module
+ # Testing: Just a refactor shouldn't need any testing
+ # Fixes: Partially https://github.com/servo/servo/issues/38901
+-https://github.com/servo/servo/pull/40332 (@yerke, #40332) move unit tests to a separate mod test (#40332)
+ # move unit tests to a separate mod test
+ # Testing: existing unit test still runs with mach test-unit.
+ # This change will reduce the amount of code that the compiler has to compile when we are not running tests.
+-https://github.com/servo/servo/pull/40331 (@simonwuelker, #40331) Turn all commented links before functions into doccomments (#40331)
+ # Servo has a lot of comments like this:
+ # ```rust
+ # // https://example-spec.com/#do-the-thing
+ # fn do_the_thing() {}
+ # ```
+ # and I keep turning these into doc comments whenever I'm working close to one of them. Doing so allows me to
+ # hover over a function call in an IDE and open its specification without having to jump to the function definition
+ # first. This change fixes all of these comments at once.
+ # This was done using `find components -name '*.rs' -exec perl -i -0777 -pe 's|^([ \t]*)// (https?://.*)\n\1(fn
+ # )|\1/// \n\1$3|mg' {} +`.
+ # Note that these comments should be doc comments even within trait `impl` blocks, because rustdoc will use them as
+ # fallback documentation when the method definition on the trait does not have documentation.
+ # Testing: Comments only, no testing required
+ # Preparation for https://github.com/servo/servo/pull/39552
+>>> 2025-11-03T06:08:32Z
+-https://github.com/servo/servo/pull/40364 (@yezhizhen, #40364) deps: Update tungstenite-related group (#40364)
+ # tungstenite: 0.27->0.28
+ # async-tungstenite: 0.31->0.32
+ # Fixes: #40359
+-https://github.com/servo/servo/pull/40361 (@dependabot[bot], @dependabot[bot], #40361) build(deps): bump webpki-roots from 1.0.3 to 1.0.4 (#40361)
+ # Bumps [webpki-roots](https://github.com/rustls/webpki-roots) from 1.0.3 to 1.0.4.
+ # Release notes
+ # Sourced from webpki-roots's releases.
+ # 1.0.4
+ # CommScope removal
+ # https://bugzilla.mozilla.org/show_bug.cgi?id=1994866 tracks the voluntary removal of:
+ # CommScope Public Trust ECC Root-01
+ # CommScope Public Trust ECC Root-02
+ # CommScope Public Trust RSA Root-01
+ # CommScope Public Trust RSA Root-02
+ # What's Changed
+ # 1.0.4: track removal of CommScope by @ctz in rustls/webpki-roots#109
+ # Full Changelog: https://github.com/rustls/webpki-roots/compare/v/1.0.3...v/1.0.4
+ # Commits
+ # 28ead9c 1.0.4: track removal of CommScope
+ # See full diff in compare view
+ # [](https://docs.github.com/en/github/managing-security-vulnerabilities/abou
+ # t-dependabot-security-updates#about-compatibility-scores)
+ # Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger
+ # a rebase manually by commenting `@dependabot rebase`.
+ # [//]: # (dependabot-automerge-start)
+ # [//]: # (dependabot-automerge-end)
+-https://github.com/servo/servo/pull/40360 (@dependabot[bot], @dependabot[bot], #40360) build(deps): bump ordered-float from 4.6.0 to 5.0.0 (#40360)
+ # Bumps [ordered-float](https://github.com/reem/rust-ordered-float) from 4.6.0 to 5.0.0.
+ # Release notes
+ # Sourced from ordered-float's releases.
+ # v5.0.0
+ # What's Changed
+ # Breaking change: Implement Hash for f32 and f64 only by @mbrubeck in reem/rust-ordered-float#168
+ # Breaking change: Remove implicit panics in NotNan<T> x T operators by @Ten0 in reem/rust-ordered-float#167
+ # Full Changelog: https://github.com/reem/rust-ordered-float/compare/v4.6.0...v5.0.0
+ # Commits
+ # 478e67d Version 5.0.0
+ # 5c8edf3 Implement Hash for f32 and f64 only.
+ # 428ab8c Merge pull request #167 from Ten0/less_implicit_panic_on_binary_operations
+ # 86f0b79 Adapt tests
+ # 8ff0bb1 Re-add NotNan x PossiblyNan operations (now returning PossiblyNan)
+ # f9fd9a7 Remove evil impls
+ # facb424 Increase rust-version to 1.63
+ # 1740c93 Add libm-only tests to CI
+ # See full diff in compare view
+ # [](https://docs.github.com/en/github/managing-security-vulnerabilities/abo
+ # ut-dependabot-security-updates#about-compatibility-scores)
+ # Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger
+ # a rebase manually by commenting `@dependabot rebase`.
+ # [//]: # (dependabot-automerge-start)
+ # [//]: # (dependabot-automerge-end)
+-https://github.com/servo/servo/pull/40358 (@dependabot[bot], @dependabot[bot], #40358) build(deps): bump the gstreamer-related group with 2 updates (#40358)
+ # Bumps the gstreamer-related group with 2 updates: gstreamer and gstreamer-video.
+ # Updates `gstreamer` from 0.24.2 to 0.24.3
+ # Updates `gstreamer-video` from 0.24.2 to 0.24.3
+ # Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger
+ # a rebase manually by commenting `@dependabot rebase`.
+ # [//]: # (dependabot-automerge-start)
+ # [//]: # (dependabot-automerge-end)
++https://github.com/servo/servo/pull/40271 (@lukewarlow, #40271) script: Implement `ToggleEvent` and use for `` element (#40271)
+ dom; toggle events on HTMLDetailsElement
+ # Implement ToggleEvent and use for details element
+ # Testing: Covered by existing WPTs
++https://github.com/servo/servo/pull/40328 (@mark-buer, #40328) devtools: Expose cache status for requests in network monitor. (#40328)
+ devtools
+ # Expose cache status for requests in network monitor.
+ # Testing: Net tests pass. No existing test infrastructure for devtools, adding them seems outside the scope of this PR.
+ # Fixes: #40237
+https://github.com/servo/servo/pull/40286 (@lukewarlow, #40286) Update Attr::SetValue to match updated spec (#40286)
+ # Update Attr::SetValue to match updated spec
+ # We no longer early return if the attributes owner changes after the Trusted Types callback runs.
+ # Testing: https://wpt.live/trusted-types/set-attributes-mutations-in-callback.tentative.html - not sure how to
+ # import the test change?
+-https://github.com/servo/servo/pull/40353 (@jdm, #40353) script: Trigger rendering update for skipped resize observations. (#40353)
+ # When resize observations are skipped, they get delayed until the next turn of the event loop. In headless tests,
+ # we're not guaranteed that this next turn occurs in time, unless some other event happens to run. This leads to
+ # intermittent results unless we ensure that the event loop will run again.
+ # Testing: Newly passing test.
+ # Fixes: #33599
+-https://github.com/servo/servo/pull/40351 (@mrobinson, #40351) wpt: Always run Servo tests in headless mode on WPT TaskCluster (#40351)
+ # This was done inside of the Servo executor, but we must do it manually
+ # now that the `--headless` and `--no-headless` command line arguments are
+ # processed properly.
+ # Testing: This is tested by the WPT CI.
+ # Fixes: #40350
+-https://github.com/servo/servo/pull/40349 (@mrobinson, #40349) wpt: Turn on `selectFiles` and handle asynchronicity in FileAPI test (#40349)
+ # This change fixes the Servo-specific FileAPI tests which need the
+ # special `SelectFiles` API. In addition, file selection is now totally
+ # asynchronous, so update the tests to handle this.
+ # Testing: This change fixes some tests.
+ # Fixes: #40348.
+>>> 2025-11-07T06:18:32Z
++https://github.com/servo/servo/pull/39714 (@shubhamg13, #39714) Add basic `IDL` implementation for `LargestContentfulPaint` (#39714)
+ perf; `observe({type: "largest-contentful-paint"})` on PerformanceObserver
+ # Add basic `IDL` implementation for `LargestContentfulPaint`
+ # Testing: Tested locally
+ # Fixes: N/A
++https://github.com/servo/servo/pull/40463 (@WaterWhisperer, #40463) script: Add message to IndexSizeError (#40463)
+ dom; exception messages
+ # Adding an optional message to be attached to a IndexSizeError.
+ # The enum definition of IndexSize is now `IndexSize(Option)`. Future PRs should probably add more appropriate
+ # messages to some of the `IndexSize(None)`s.
+ # Testing: Just a refactor
+ # Fixes: Partially #39053
+-https://github.com/servo/servo/pull/40470 (@dependabot[bot], @dependabot[bot], #40470) build(deps): bump quote from 1.0.41 to 1.0.42 (#40470)
+ # Bumps [quote](https://github.com/dtolnay/quote) from 1.0.41 to 1.0.42.
+ # Release notes
+ # Sourced from quote's releases.
+ # 1.0.42
+ # Tweaks to improve build speed (#305, #306, #307, #308, thanks @dishmaker)
+ # Commits
+ # bb9e7a4 Release 1.0.42
+ # 683c1d6 Merge pull request #311 from dtolnay/append
+ # ed93e8e Revert PR 305
+ # 1f2a959 Merge pull request #310 from dtolnay/up
+ # 37448aa Raise required compiler to Rust 1.68
+ # 39ac89e Resolve manual_let_else pedantic clippy lint
+ # f3eac36 Raise required compiler to Rust 1.65
+ # 7b490c5 Merge pull request #309 from dtolnay/append
+ # 71dfa84 Apply pattern from PR 306 to append_separated & append_terminated
+ # df32af7 Touch up PR 306
+ # Additional commits viewable in compare view
+ # [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dep
+ # endabot-security-updates#about-compatibility-scores)
+ # Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger
+ # a rebase manually by commenting `@dependabot rebase`.
+ # [//]: # (dependabot-automerge-start)
+ # [//]: # (dependabot-automerge-end)
+https://github.com/servo/servo/pull/40462 (@Taym95, #40462) WebGLBuffer: follow spec for buffer binding restrictions (#40462)
+ # WebGLBuffer: follow spec for buffer binding restrictions
+ # Testing: more WebGLBuffer pass
+-https://github.com/servo/servo/pull/40468 (@jschwe, #40468) ci: Fix ohos libservoshell.so artifact path (#40468)
+ # cargo places the shared library artifact under
+ # `target///libservoshell.so`. The openharmony prefix, is something we do in mach for the hap, and is not relevant
+ # for the .so (essentially a copy-paste mistake).
+ # Can be compared by looking at the job run of
+ # https://github.com/servo/servo/actions/runs/19125758002/job/54655560361 which failed due to the wrong path.
+ # Testing: Not tested
+ # Fixes: #40467
+-https://github.com/servo/servo/pull/40464 (@Narfinger, #40464) Script: Do not double copy for javascript source (#40464)
+ # Previously, `evaluate_js_on_global_with_result` took a &str and most cases
+ # of it being called are owned strings. As it itself converts it to a
+ # DOMString which owns the string it double copied it.
+ # We now use Cow as input making both sides happy.
+ # Testing: Does not change functionality.
+-https://github.com/servo/servo/pull/40461 (@mrobinson, #40461) net: Simplify `FetchResponseListener` and move it to `script` (#40461)
+ # `FetchReponseListener` has traditionally lived in `net` even though it
+ # is only used in `script` currently. Because of the two way dependency,
+ # it has also use a lot of templating to implement something pretty basic
+ # (call methods on a trait object).
+ # This change moves the trait to `script` and removes several levels of
+ # templating, making the code quite a bit shorter and easier to
+ # understand.
+ # This change is preparation for fixing #22550 and implementing
+ # off-the-main-thread CSS parsing.
+ # Testing: This should not change any behavior so is covered by existing tests.
+-https://github.com/servo/servo/pull/40453 (@mrobinson, @mukilan, #40453) net: Use callbacks instead of IPC channels in the `ImageCache` API (#40453)
+ # Previously, the `ImageCache` would inform consumers of changes to image
+ # availability by messaging an IPC channel. This isn't great, because it
+ # requires serialization and deserialization. Nowadays, `ImageCache`s are
+ # always owned by the same `Global` that uses them. This change replaces
+ # the IPC channel with callback that implements `Send`.
+ # For the case of normal HTML document images, the results are still sent
+ # over the pre-existing Crossbeam channel that was connected via an IPC
+ # route. A followup change might eliminate that channel entirely.
+ # Testing: This should not change observable behavior so is covered by existing tests.
+ # Fixes: #24338.
+-https://github.com/servo/servo/pull/40430 (@atbrakhi, #40430) libservo: Fix panic in `Reload` of `ContextMenuAction` (#40430)
+ # Right now when the Reload action is selected from a right-click context menu, Servo would
+ # panic. Context menu's Reload action was calling `Location.Reload()`, which caused the panic. As per [HTML
+ # spec](https://html.spec.whatwg.org/multipage/#dom-location-reload) it looks like, to perform a user-requested
+ # reload we should be using `reload_without_origin_check()` instead.
+ # Testing: Added a test for `ContextMenuAction::Relaod` action.
+-https://github.com/servo/servo/pull/40458 (@WaterWhisperer, #40458) Change some `#[allow]`s to `#[expect]`s (#40458)
+ # Removes some unneeded lints.
+ # Testing: Refactor
+ # Part of: #40383
+https://github.com/servo/servo/pull/40451 (@simonwuelker, #40451) xpath: Enforce tree order in node sets during evaluation (#40451)
+ # This change adds `NodeSet`, which is more or less a `Vec` that knows whether it is sorted, and can sort itself if
+ # it isn't. This allows us to efficiently enforce tree order in intermediary node sets that occur during evaluation.
+ # Notably, in many cases it is not necessary to sort at all, because all location step expressions yield node
+ # sets that are either already sorted (`Axis::DescendantOrSelf` for example), or that are in inverse tree order
+ # (`Axis::PrecedingSiblings` for example).
+ # There's still optimization work left to be done. When merging two node sets that are already sorted then we could
+ # use merge sort instead of appending one to the other and naively sorting. But I suspect that the sorting algorithm
+ # used by the standard library is already well tuned to handle such cases...
+ # Testing: This change adds a web platform test
+ # Fixes https://github.com/servo/servo/issues/40435
+https://github.com/servo/servo/pull/40436 (@Taym95, #40436) script: Properly handle foreign contexts in `Context2D`'s `isSync` and `isTransformFeedback` (#40436)
+ # CanvasContext: follow spec for isSync and isTransformFeedback
+ # Testing: more CanvasContext test will pass.
+-https://github.com/servo/servo/pull/40454 (@WaterWhisperer, #40454) script/dom/: Change some `#[allow]`s to `#[expect]`s (#40454)
+ # Removes some unneeded lints, especially `#[allow(unsafe_code)]`.
+ # Testing: Refactor
+ # Part of: #40383
+https://github.com/servo/servo/pull/40235 (@delan, #40235) ci: Move runner-select and runner-timeout to servo/ci-runners (#40235)
+ # continuing from #40234, this patch moves the runner-select and runner-timeout composite actions to
+ # [servo/ci-runners](https://github.com/servo/ci-runners), avoiding an extra checkout step. the action calls are
+ # locked to a commit, to avoid problems when making breaking changes.
+ # while [servo/actions](https://github.com/servo/actions) is a reasonable place to store this action,
+ # i’m planning to document our self-hosted CI system and potentially make it usable by other projects,
+ # and this action is effectively part of that system. that said, actions in that repo will undergo
+ # [review](https://github.com/servo/ci-runners/commit/00deefd2be1ce9f8bb065157f42b37cba04780da)
+ # as if they were in this repo. feel free to check the actions being adopted in this patch:
+ # [runner-select](https://github.com/servo/ci-runners/blob/0b9edd49381b22c14e5b123f21377269864ddf54/actions/runner-select/
+ # action.yml),
+ # [runner-timeout](https://github.com/servo/ci-runners/blob/0b9edd49381b22c14e5b123f21377269864ddf54/actions/runner-timeou
+ # t/action.yml).
+ # Testing:
+ # - GitHub-hosted: [full](https://github.com/delan/servo/actions/runs/19126025419),
+ # [coverage](https://github.com/delan/servo/actions/runs/19126126210/job/54656556991)
+ # - self-hosted: [full](https://github.com/servo/servo/actions/runs/19126029083),
+ # [coverage](https://github.com/servo/servo/actions/runs/19126130030/job/54656604357)
+https://github.com/servo/servo/pull/40449 (@mrobinson, #40449) script: Also set the `Theme` on incomplete loads (#40449)
+ # When updating the theme, ensure that it is also set on incomplete loads.
+ # This is particularly necessary to make it so that a non-Light theme is
+ # used when it is set before the page loads.
+ # Testing: This adds a new WebView API test.
+ # Fixes: #40437.
+https://github.com/servo/servo/pull/40429 (@mrobinson, @mukilan, #40429) script: Handle broken image icon in `HTMLImageElement` (#40429)
+ # Instead of having the `ImageCache` return the broken image icon for
+ # failed loads, have `HTMLImageElement` explicitly request it. This means
+ # that the image is loaded on demand (reducing the usage of resources) and
+ # also simplifying the interface of the `ImageCache` greatly.
+ # In addition, the display of the broken image icon is improved, more
+ # closely matching other browsers. A test for this display (which was
+ # falsely passing before) is updated to reflect the new display of the
+ # broken image icon.
+ # Testing: There is a Servo-specific test for this change. Some WPT tests
+ # start to fail as well. Before these were not properly loading the broken
+ # image icon so they were failing before, just in a hidden way.
+-https://github.com/servo/servo/pull/40450 (@yezhizhen, #40450) webdriver: Allow dummy sessionId for `ServoExtensionCommand::Shutdown` (#40450)
+ # ...This is unavoidable, unless we have our own fork of [webdriver crate](https://crates.io/crates/webdriver). Right
+ # now it does not allow any self-defined command to run without sessionId. See
+ # [this](https://hg-edge.mozilla.org/mozilla-central/file/tip/testing/webdriver/src/server.rs#l84). There is also no
+ # way to override [Dispatcher](https://hg-edge.mozilla.org/mozilla-central/file/tip/testing/webdriver/src/server.rs#l65).
+ # A follow up PR which changes wptrunner to gracefully shutdown servo without killing depends on this.
+-https://github.com/servo/servo/pull/40445 (@yezhizhen, #40445) webdriver: Remove session requirement from Shutdown command (#40445)
+ # Change API endpoint from "/session/{sessionId}/servo/shutdown" to "/servo/shutdown", similar to [Status
+ # command](https://w3c.github.io/webdriver/#dfn-status).
+ # This will make it much easier to shutdown Servo properly from wptrunner.
+https://github.com/servo/servo/pull/40234 (@delan, #40234) ci: Extract fast checkout steps into composite action (#40234)
+ # this patch extracts the “faster checkout” steps we use for jobs that may run on self-hosted runners into a
+ # composite action. the action is stored in [servo/ci-runners](https://github.com/servo/ci-runners), to avoid an
+ # extra checkout step, and the action calls are locked to a commit, to avoid problems when making breaking changes.
+ # while [servo/actions](https://github.com/servo/actions) is a reasonable place to store this action,
+ # i’m planning to document our self-hosted CI system and potentially make it usable by other projects,
+ # and this action is effectively part of that system. that said, actions in that repo will undergo
+ # [review](https://github.com/servo/ci-runners/commit/00deefd2be1ce9f8bb065157f42b37cba04780da) as if they were in
+ # this repo.
+ # Testing:
+ # - self-hosted: [windows](https://github.com/servo/servo/actions/runs/19125076579/job/54653625055#step:2:25),
+ # [lint](https://github.com/servo/servo/actions/runs/19125076579/job/54653630737#step:2:21)
+ # - GitHub-hosted: [windows](https://github.com/delan/servo/actions/runs/19125003933/job/54653410264#step:2:25),
+ # [lint](https://github.com/delan/servo/actions/runs/19125003933/job/54653410010#step:2:21)
+-https://github.com/servo/servo/pull/40439 (@dependabot[bot], @dependabot[bot], #40439) build(deps): bump the servo-media-related group with 12 updates (#40439)
+ # Bumps the servo-media-related group with 12 updates:
+ # | Package | From | To |
+ # | --- | --- | --- |
+ # | [servo-media](https://github.com/servo/media) | ``a644ff6`` | ``5b788a9`` |
+ # | [servo-media-dummy](https://github.com/servo/media) | ``a644ff6`` | ``5b788a9`` |
+ # | [servo-media-gstreamer](https://github.com/servo/media) | ``a644ff6`` | ``5b788a9`` |
+ # | servo-media-audio | ``a644ff6`` | ``5b788a9`` |
+ # | servo-media-derive | ``a644ff6`` | ``5b788a9`` |
+ # | servo-media-gstreamer-render | ``a644ff6`` | ``5b788a9`` |
+ # | servo-media-gstreamer-render-android | ``a644ff6`` | ``5b788a9`` |
+ # | servo-media-gstreamer-render-unix | ``a644ff6`` | ``5b788a9`` |
+ # | servo-media-player | ``a644ff6`` | ``5b788a9`` |
+ # | servo-media-streams | ``a644ff6`` | ``5b788a9`` |
+ # | servo-media-traits | ``a644ff6`` | ``5b788a9`` |
+ # | servo-media-webrtc | ``a644ff6`` | ``5b788a9`` |
+ # Updates `servo-media` from `a644ff6` to `5b788a9`
+ # Commits
+ # 5b788a9 Apply servo style rust formatting (#459)
+ # See full diff in compare view
+ # Updates `servo-media-dummy` from `a644ff6` to `5b788a9`
+ # Commits
+ # 5b788a9 Apply servo style rust formatting (#459)
+ # See full diff in compare view
+ # Updates `servo-media-gstreamer` from `a644ff6` to `5b788a9`
+ # Commits
+ # 5b788a9 Apply servo style rust formatting (#459)
+ # See full diff in compare view
+ # Updates `servo-media-audio` from `a644ff6` to `5b788a9`
+ # Updates `servo-media-derive` from `a644ff6` to `5b788a9`
+ # Updates `servo-media-gstreamer-render` from `a644ff6` to `5b788a9`
+ # Updates `servo-media-gstreamer-render-android` from `a644ff6` to `5b788a9`
+ # Updates `servo-media-gstreamer-render-unix` from `a644ff6` to `5b788a9`
+ # Updates `servo-media-player` from `a644ff6` to `5b788a9`
+ # Updates `servo-media-streams` from `a644ff6` to `5b788a9`
+ # Updates `servo-media-traits` from `a644ff6` to `5b788a9`
+ # Updates `servo-media-webrtc` from `a644ff6` to `5b788a9`
+ # Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger
+ # a rebase manually by commenting `@dependabot rebase`.
+ # [//]: # (dependabot-automerge-start)
+ # [//]: # (dependabot-automerge-end)
+-https://github.com/servo/servo/pull/40443 (@dependabot[bot], @dependabot[bot], #40443) build(deps): bump orbclient from 0.3.48 to 0.3.49 (#40443)
+ # Bumps orbclient from 0.3.48 to 0.3.49.
+ # [](https://docs.github.com/en/github/managing-security-vulnerabilities/about
+ # -dependabot-security-updates#about-compatibility-scores)
+ # Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger
+ # a rebase manually by commenting `@dependabot rebase`.
+ # [//]: # (dependabot-automerge-start)
+ # [//]: # (dependabot-automerge-end)
+-https://github.com/servo/servo/pull/40442 (@dependabot[bot], @dependabot[bot], #40442) build(deps): bump syn from 2.0.108 to 2.0.109 (#40442)
+ # Bumps [syn](https://github.com/dtolnay/syn) from 2.0.108 to 2.0.109.
+ # Release notes
+ # Sourced from syn's releases.
+ # 2.0.109
+ # Tweaks to improve build speed (#1927, #1928, #1930, #1932, #1934, thanks @dishmaker)
+ # Commits
+ # 085e597 Release 2.0.109
+ # 675c845 Disable rustdoc's automatic selection of cfg markers
+ # 8d87f3b Import Spacing for all of tt module
+ # 46104b3 Touch up PR 1930
+ # f6e1310 Merge pull request #1930 from dishmaker/dishmaker/tokenstream_collect_cmp
+ # 1893ecd Touch up PR 1933
+ # f365a65 Merge pull request #1933 from dishmaker/dishmaker/perf_fold_vec
+ # b25abd1 Merge pull request #1934 from dishmaker/dishmaker/perf_llvml_punct_into_iter
+ # b62dc57 Consolidate on iter::once for pushing TokenTree into TokenStream
+ # 1535d5d Resolve explicit_into_iter_loop clippy lint from PR 1932
+ # Additional commits viewable in compare view
+ # [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dep
+ # endabot-security-updates#about-compatibility-scores)
+ # Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger
+ # a rebase manually by commenting `@dependabot rebase`.
+ # [//]: # (dependabot-automerge-start)
+ # [//]: # (dependabot-automerge-end)
+-https://github.com/servo/servo/pull/40438 (@dependabot[bot], @dependabot[bot], #40438) build(deps): bump the napi-ohos-related group with 5 updates (#40438)
+ # Bumps the napi-ohos-related group with 5 updates:
+ # | Package | From | To |
+ # | --- | --- | --- |
+ # | [napi-derive-ohos](https://github.com/ohos-rs/ohos-rs) | `1.1.3` | `1.1.4` |
+ # | [napi-ohos](https://github.com/ohos-rs/ohos-rs) | `1.1.3` | `1.1.4` |
+ # | [napi-build-ohos](https://github.com/ohos-rs/ohos-rs) | `1.1.3` | `1.1.4` |
+ # | [napi-derive-backend-ohos](https://github.com/ohos-rs/ohos-rs) | `1.1.3` | `1.1.4` |
+ # | [napi-sys-ohos](https://github.com/ohos-rs/ohos-rs) | `1.1.3` | `1.1.4` |
+ # Updates `napi-derive-ohos` from 1.1.3 to 1.1.4
+ # Commits
+ # 45a39d0 Merge pull request #158 from ohos-rs/feat-1105
+ # f998bc9 Bump version
+ # 3e48db5 Merge branch 'main' into feat-1105
+ # 31bde7a chore(napi): mark tsfn data as pub and split SendableResolver to indent file ...
+ # edd419a chore(deps): lock file maintenance (#2989)
+ # 8173c22 chore(deps): update dependency @rollup/plugin-commonjs to v29 (#2983)
+ # bfc3cae ci: change armv7-lts to armv7-22 (#2984)
+ # a62b9f2 chore(deps): update dependency @rollup/plugin-alias to v6 (#2982)
+ # dd26253 chore(napi): mark SendableResolver and PromiseRaw as pub (#2981)
+ # e2a4ee6 chore(deps): update dependency electron to v39 (#2979)
+ # Additional commits viewable in compare view
+ # Updates `napi-ohos` from 1.1.3 to 1.1.4
+ # Commits
+ # 45a39d0 Merge pull request #158 from ohos-rs/feat-1105
+ # f998bc9 Bump version
+ # 3e48db5 Merge branch 'main' into feat-1105
+ # 31bde7a chore(napi): mark tsfn data as pub and split SendableResolver to indent file ...
+ # edd419a chore(deps): lock file maintenance (#2989)
+ # 8173c22 chore(deps): update dependency @rollup/plugin-commonjs to v29 (#2983)
+ # bfc3cae ci: change armv7-lts to armv7-22 (#2984)
+ # a62b9f2 chore(deps): update dependency @rollup/plugin-alias to v6 (#2982)
+ # dd26253 chore(napi): mark SendableResolver and PromiseRaw as pub (#2981)
+ # e2a4ee6 chore(deps): update dependency electron to v39 (#2979)
+ # Additional commits viewable in compare view
+ # Updates `napi-build-ohos` from 1.1.3 to 1.1.4
+ # Release notes
+ # Sourced from napi-build-ohos's releases.
+ # ohrs@1.1.4
+ # What's Changed
+ # fix(cli): skip-check by default by @richerfu in ohos-rs/ohos-rs#156
+ # Sync by @richerfu in ohos-rs/ohos-rs#158
+ # Full Changelog: https://github.com/ohos-rs/ohos-rs/compare/ohrs@1.1.3...ohrs@1.1.4
+ # Commits
+ # 45a39d0 Merge pull request #158 from ohos-rs/feat-1105
+ # f998bc9 Bump version
+ # 3e48db5 Merge branch 'main' into feat-1105
+ # 31bde7a chore(napi): mark tsfn data as pub and split SendableResolver to indent file ...
+ # edd419a chore(deps): lock file maintenance (#2989)
+ # 8173c22 chore(deps): update dependency @rollup/plugin-commonjs to v29 (#2983)
+ # bfc3cae ci: change armv7-lts to armv7-22 (#2984)
+ # a62b9f2 chore(deps): update dependency @rollup/plugin-alias to v6 (#2982)
+ # dd26253 chore(napi): mark SendableResolver and PromiseRaw as pub (#2981)
+ # e2a4ee6 chore(deps): update dependency electron to v39 (#2979)
+ # Additional commits viewable in compare view
+ # Updates `napi-derive-backend-ohos` from 1.1.3 to 1.1.4
+ # Commits
+ # 45a39d0 Merge pull request #158 from ohos-rs/feat-1105
+ # f998bc9 Bump version
+ # 3e48db5 Merge branch 'main' into feat-1105
+ # 31bde7a chore(napi): mark tsfn data as pub and split SendableResolver to indent file ...
+ # edd419a chore(deps): lock file maintenance (#2989)
+ # 8173c22 chore(deps): update dependency @rollup/plugin-commonjs to v29 (#2983)
+ # bfc3cae ci: change armv7-lts to armv7-22 (#2984)
+ # a62b9f2 chore(deps): update dependency @rollup/plugin-alias to v6 (#2982)
+ # dd26253 chore(napi): mark SendableResolver and PromiseRaw as pub (#2981)
+ # e2a4ee6 chore(deps): update dependency electron to v39 (#2979)
+ # Additional commits viewable in compare view
+ # Updates `napi-sys-ohos` from 1.1.3 to 1.1.4
+ # Release notes
+ # Sourced from napi-sys-ohos's releases.
+ # ohrs@1.1.4
+ # What's Changed
+ # fix(cli): skip-check by default by @richerfu in ohos-rs/ohos-rs#156
+ # Sync by @richerfu in ohos-rs/ohos-rs#158
+ # Full Changelog: https://github.com/ohos-rs/ohos-rs/compare/ohrs@1.1.3...ohrs@1.1.4
+ # Commits
+ # 45a39d0 Merge pull request #158 from ohos-rs/feat-1105
+ # f998bc9 Bump version
+ # 3e48db5 Merge branch 'main' into feat-1105
+ # 31bde7a chore(napi): mark tsfn data as pub and split SendableResolver to indent file ...
+ # edd419a chore(deps): lock file maintenance (#2989)
+ # 8173c22 chore(deps): update dependency @rollup/plugin-commonjs to v29 (#2983)
+ # bfc3cae ci: change armv7-lts to armv7-22 (#2984)
+ # a62b9f2 chore(deps): update dependency @rollup/plugin-alias to v6 (#2982)
+ # dd26253 chore(napi): mark SendableResolver and PromiseRaw as pub (#2981)
+ # e2a4ee6 chore(deps): update dependency electron to v39 (#2979)
+ # Additional commits viewable in compare view
+ # Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger
+ # a rebase manually by commenting `@dependabot rebase`.
+ # [//]: # (dependabot-automerge-start)
+ # [//]: # (dependabot-automerge-end)
+https://github.com/servo/servo/pull/40428 (@eerii, #40428) tools: Use ISO8601 timestamps and filter ports correctly in the Devtools parser (#40428)
+ # A recent change in tshark makes it emit timestamps in ISO 8601 format
+ # (https://gitlab.com/wireshark/wireshark/-/merge_requests/17273), which breaks the existing parser. Simplify the
+ # code to simply print the new timestamp as is.
+ # The captured messages were not being filtered correctly by the devtools port, which could result in messy logs. The
+ # `-f "tcp port ..."` option filters the port, while `-d "tcp.port==...,http"` just specifies how the messages from
+ # that port should be treated.
+ # Simplify the tshark command function and some variable names.
+ # Testing: Using `mach test-scripts`.
+https://github.com/servo/servo/pull/40432 (@mrobinson, #40432) script: Eagerly update the `Device` in Layout when it changes (#40432)
+ # Instead of waiting for a reflow to update the `Device` in layout, update
+ # it eagerly. This ensures that media queries can be answered correctly in
+ # script before the next reflow. Also, it ensure that a new reflow is
+ # triggered and reflects the change to the theme or viewport.
+ # In addition, an unused viewport-related message from the Constellation
+ # is removed. This would have needed to be updated by change, but since
+ # it's unused I've just removed it.
+ # This depends on https://github.com/servo/stylo/pull/260.
+ # Testing: This fixes a WebView API test and improves
+ # `/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html`.
+ # Fixes: #40395.
+ # Fixes: #40129.
+https://github.com/servo/servo/pull/40431 (@Taym95, #40431) script: Error if `program` in `TransformFeedbackVaryings` and `GetTransformFeedbackVarying` is from another context (#40431)
+ # Follow spec for TransformFeedbackVaryings GetTransformFeedbackVarying
+ # Testing: more webgl tests pass
++https://github.com/servo/servo/pull/40405 (@lukewarlow, #40405) Partially implement dialog.showModal() (#40405)
+ dom; check how partial is partial
+ # Partially implement dialog.showModal()
+ # Follow-ups will be needed to further implement proper dialog functionality but this makes a good start.
+ # Testing: Existing WPTs cover this.
++https://github.com/servo/servo/pull/40304 (@WaterWhisperer, #40304) script/layout: Implement Element.currentCSSZoom attribute (#40304)
+ dom; currentCSSZoom property on Element
+ # Implements the `currentCSSZoom` readonly attribute on the Element interface as
+ # [spec](https://drafts.csswg.org/cssom-view/#dom-element-currentcsszoom).
+ # - Adds a new layout query (`CurrentCSSZoomQuery`) that traverses from the target element up through its ancestors
+ # - Accumulates the product of all `zoom` CSS property values to compute the effective zoom
+ # - Returns 1.0 for elements that are not being rendered (display: none or no layout data)
+ # Testing: Updated WPT (removed 4 FAIL expectations from `idlharness.html.ini`). Behavior tests in
+ # Element-currentCSSZoom.html remain as expected FAIL because the underlying CSS `zoom` property implementation in
+ # Servo does not yet apply zoom values to layout (the zoom property is parsed but computed values remain 1.0).
+ # Fixes: #40256
+-https://github.com/servo/servo/pull/40427 (@WaterWhisperer, #40427) Disallow running `clippy` and `--use-crown` together (#40427)
+ # Prevent users from running `./mach clippy --use-crown` together, which doesn't work as expected.
+ # Testing: Verified error message appears when running `./mach clippy --use-crown`
+ # Fixes: #39334
+https://github.com/servo/servo/pull/40422 (@yezhizhen, #40422) webdriver: Implement extension command `Shutdown` (#40422)
+ # We implement `ServoExtensionCommand::Shutdown`, which shutdown Servo elegantly. This is
+ # required for Coverage Report. Later, we will implement Servo's override of [`stop()` in
+ # `WebDriverBrowser`](https://github.com/servo/servo/blob/0d44ca8ddcea5399807abf0e3aef7b097133f679/tests/wpt/tests/tools/w
+ # ptrunner/wptrunner/browsers/base.py#L389).
+ # Testing: Manually tested with PowerShell script.
+https://github.com/servo/servo/pull/40316 (@tharkum, #40316) html: Support releasing of underlying resources and frames (#40316)
+ # The HTMLMediaElement should stop playback of any previously playing media resource on running media element loading
+ # algorithm or before attempt to load next source child.
+ # This step will reset media player (including release of the underlying media resources and media frames from the
+ # video renderer).
+ # The closure for marshalling the incoming GLPLayer messages from ROUTER ("router-proxy") thread to script thread
+ # will use `Weak` instead of `Trusted` to break circular references dependency (decouple ownership).
+ # The media frame renderer will track the media player id to be able ignore async locking render call with new frame
+ # after playback of any previously playing media was stopped.
+ # Testing: No WPT test expectation changes
+ # Fixes (partially): https://github.com/servo/servo/issues/40243
+ # Fixes (partially): https://github.com/servo/servo/issues/40265
+ # Fixes: https://github.com/servo/servo/issues/37173
++https://github.com/servo/servo/pull/40421 (@kkoyung, #40421) script: Implement export key operation of X25519 (#40421)
+ dom; crypto.subtle.exportKey() for X25519 keys
+ # Continue on adding X25519 support to WebCrypto API. This patch implements export key operation of X25519, using
+ # X25519 implementation from the crate `x25519-dalek`.
+ # Testing:
+ # - Pass some WPT tests that were expected to fail.
+ # - Some FAIL expectations are added. They require derive_bits operations of X25519, and RSA-OAEP, which have not
+ # yet implemented.
+ # Fixes: Part of #39060
+-https://github.com/servo/servo/pull/40420 (@kkoyung, #40420) script: Implement MallocSizeOf for (De)Compressor (#40420)
+ # Implement `MallocSizeOf` for the internal context of `CompressionStream` and `DecompressionStream`. This helps
+ # remove the `ignore_malloc_size_of` annotation in the structs `CompressionStream` and `DecompressionStream`
+ # Testing: Existing tests suffice.
++https://github.com/servo/servo/pull/40333 (@kkoyung, #40333) script: Implement derive bits operation of ECDH (#40333)
+ dom; crypto.subtle.deriveBits("ECDH")
+ # Finish adding ECDH support to WebCrypto API. This patch implements derive bits operation of ECDH.
+ # Testing: Pass some WPT tests that were expected to fail.
+ # Fixes: Part of #39060
+-https://github.com/servo/servo/pull/40415 (@dependabot[bot], @dependabot[bot], #40415) build(deps): bump rustls from 0.23.34 to 0.23.35 (#40415)
+ # Bumps [rustls](https://github.com/rustls/rustls) from 0.23.34 to 0.23.35.
+ # Commits
+ # 7768cd2 Bump version to 0.23.35
+ # 6ed925e Address nightly clippy::derivable_impls lints
+ # 645095f Pass through attributes for enum_builder!
+ # 90e28d6 fix: only add ocsp in ConfigBuilder::with_single_cert_with_ocsp if
+ # See full diff in compare view
+ # [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-
+ # dependabot-security-updates#about-compatibility-scores)
+ # Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger
+ # a rebase manually by commenting `@dependabot rebase`.
+ # [//]: # (dependabot-automerge-start)
+ # [//]: # (dependabot-automerge-end)
++https://github.com/servo/servo/pull/40408 (@mrobinson, #40408) libservo: Add a fallback clipboard (#40408)
+ api
+ # Add a fallback implementation of the default clipboard delegate that
+ # works within a single Servo process. This introduces one failure, which
+ # was hidden before.
+ # Testing: This fixes some WPT tests.
+https://github.com/servo/servo/pull/40400 (@mrobinson, #40400) layout: Have ServoRestyleDamage immediately update flags on `LayoutImpl` (#40400)
+ # Instead of passing a `damage` variable around during a single layout, have the
+ # damage update flags immediately on the `LayoutImpl`. This ensure that
+ # damage from a restyle are not lost event when a layout query doesn't
+ # need a display list or stacking context tree. In addition, it makes it
+ # so that this is handled consistently across all different kinds of
+ # layout (from queries or for display lists).
+ # Testing: This should fix the test case from #40367.
+ # Fixes: #40367.
+-https://github.com/servo/servo/pull/40414 (@dependabot[bot], @dependabot[bot], #40414) build(deps): bump the servo-media-related group with 12 updates (#40414)
+ # Bumps the servo-media-related group with 12 updates:
+ # | Package | From | To |
+ # | --- | --- | --- |
+ # | [servo-media](https://github.com/servo/media) | ``29446c7`` | ``a644ff6`` |
+ # | [servo-media-dummy](https://github.com/servo/media) | ``29446c7`` | ``a644ff6`` |
+ # | [servo-media-gstreamer](https://github.com/servo/media) | ``29446c7`` | ``a644ff6`` |
+ # | servo-media-audio | ``29446c7`` | ``a644ff6`` |
+ # | servo-media-derive | ``29446c7`` | ``a644ff6`` |
+ # | servo-media-gstreamer-render | ``29446c7`` | ``a644ff6`` |
+ # | servo-media-gstreamer-render-android | ``29446c7`` | ``a644ff6`` |
+ # | servo-media-gstreamer-render-unix | ``29446c7`` | ``a644ff6`` |
+ # | servo-media-player | ``29446c7`` | ``a644ff6`` |
+ # | servo-media-streams | ``29446c7`` | ``a644ff6`` |
+ # | servo-media-traits | ``29446c7`` | ``a644ff6`` |
+ # | servo-media-webrtc | ``29446c7`` | ``a644ff6`` |
+ # Updates `servo-media` from `29446c7` to `a644ff6`
+ # Commits
+ # a644ff6 gstreamer: Use weak ptr to renderer in sink callbacks (#457)
+ # See full diff in compare view
+ # Updates `servo-media-dummy` from `29446c7` to `a644ff6`
+ # Commits
+ # a644ff6 gstreamer: Use weak ptr to renderer in sink callbacks (#457)
+ # See full diff in compare view
+ # Updates `servo-media-gstreamer` from `29446c7` to `a644ff6`
+ # Commits
+ # a644ff6 gstreamer: Use weak ptr to renderer in sink callbacks (#457)
+ # See full diff in compare view
+ # Updates `servo-media-audio` from `29446c7` to `a644ff6`
+ # Updates `servo-media-derive` from `29446c7` to `a644ff6`
+ # Updates `servo-media-gstreamer-render` from `29446c7` to `a644ff6`
+ # Updates `servo-media-gstreamer-render-android` from `29446c7` to `a644ff6`
+ # Updates `servo-media-gstreamer-render-unix` from `29446c7` to `a644ff6`
+ # Updates `servo-media-player` from `29446c7` to `a644ff6`
+ # Updates `servo-media-streams` from `29446c7` to `a644ff6`
+ # Updates `servo-media-traits` from `29446c7` to `a644ff6`
+ # Updates `servo-media-webrtc` from `29446c7` to `a644ff6`
+ # Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger
+ # a rebase manually by commenting `@dependabot rebase`.
+ # [//]: # (dependabot-automerge-start)
+ # [//]: # (dependabot-automerge-end)
+https://github.com/servo/servo/pull/40409 (@mrobinson, #40409) wpt: Ensure that the correct argument is read when outputting stable unexpected log (#40409)
+ # In the review for #40369, the name of a command-line argument was
+ # changed, but not the code that accessed the argument. This meant that
+ # the unexpected log was never dumped, even when there are stable
+ # unexpected results. This change fixes that.
+ # Testing: This should ensure that the `stable-unexpected-results-linux` artifact
+ # is not empty when running WPT on CI.
+https://github.com/servo/servo/pull/40411 (@simonwuelker, #40411) xpath: Handle OOB conditions and non-char-boundaries in `substring` (#40411)
+ # This change fixes two panics and cleans up a bunch of the surrounding code.
+ # Testing: I've added new unit tests
++https://github.com/servo/servo/pull/40314 (@simonwuelker, #40314) script: Enforce exclusivity between elements in the same tree (#40314)
+ layout; exclusivity
+ # Within the same tree, only one `` element with the same name may be open at a time. Before this change, this
+ # invariant was not enforced.
+ # I've added a `HashMap` to `Document` and `ShadowRoot` which maps from a name to the a list of details elements
+ # with the same name. This map allows us to find conflicting details elements without having to traverse the whole
+ # tree. Of course this only works when the tree is a document tree or a shadow tree, so we still have to fall back to
+ # `traverse_preorder` in some cases (which I believe to be uncommon).
+ # This is ready for review, but I'd like to wait until https://github.com/servo/servo/pull/40271 is merged to not
+ # cause unnecessary merge conflicts.
+ # Testing: New web platform tests start to pass
++https://github.com/servo/servo/pull/40402 (@mrobinson, @atbrakhi, #40402) libservo: Integrate context menu into the show_embedder_control API (#40402)
+ api servoshell; rework context menu api, embedders can now know the position and know what each item does (`show_context_menu(webview, result_sender, title, items)` → `ContextMenu.{id,position,items,select,dismiss}()`)
+ # This PR integrates showing context menus into the
+ # `WebViewDelegate::show_embedder_control` API. In addition,
+ # `ContextMenuItem` and `ContextMenuAction` data types are exposed which
+ # abstract away the different components of the context menu. Later
+ # changes will implement this API for servoshell as well as add
+ # element-specific actions such as "Select All" and "Copy Image URL".
+ # Testing: This change adds a WebView API test.
+-https://github.com/servo/servo/pull/40404 (@Taym95, #40404) Add CanGc argument to SafeFromJSValConvertible::safe_from_jsval (#40404)
+ # Add CanGc argument to SafeFromJSValConvertible::safe_from_jsval
+ # Fixes: #40392
++https://github.com/servo/servo/pull/40398 (@kkoyung, #40398) script: Implement import key operation of X25519 (#40398)
+ dom; crypto.subtle.importKey(,,"X25519")
+ # Start adding X25519 support to WebCrypto API. This patch implements import key operation of X25519, using X25519
+ # implementation from the crate `x25519-dalek`.
+ # Testing:
+ # - Pass some WPT tests that were expected to fail.
+ # - Some FAIL expectations are added. They require other not-yet-implemented operations of X25519. WPT skipped them
+ # when "import key" operation for X25519 were not yet implemented.
+ # Fixes: Part of #39060
+-https://github.com/servo/servo/pull/40403 (@arihant2math, #40403) `script/dom/`: Change some `#[allow]`s to `#[expect]`s (#40403)
+ # This removes some unneeded lints, especially `#[allow(unsafe_code)]`.
+ # Testing: Refactor
+ # Part of: #40383
+-https://github.com/servo/servo/pull/40393 (@yezhizhen, #40393) Reduce unnecessary type conversion and share `WebDriverCommandMsg::LoadUrl` handler across platform (#40393)
+ # - Reduces unnecessary type conversion between `ServoUrl`, `Url`, string slice
+ # - Share `WebDriverCommandMsg::LoadUrl` handler across platform
+ # Testing: Covered by existing test. Manually tested for OHOS.
+https://github.com/servo/servo/pull/40375 (@mrobinson, @mukilan, #40375) script: Let `HTMLCanvasElement` manage the `ImageKey` for canvases (#40375)
+ # This change makes it so that the `HTMLCanvasElement` is responsible for
+ # managing the `ImageKey` for associated `RenderingContext`s. Only
+ # canvases display their contents into WebRender directly, so this makes
+ # it so that keys are not generated for `OffscreenCanvas`.
+ # The main goal here is that `ImageKey`s are always associated with a
+ # particular `WebView`, which isn't possible in the various canvas
+ # backends yet. This is important because each `WebView` may soon have a
+ # different WebRender instance entirely with its own set of `ImageKey`s.
+ # This also allows for clearing `ImageKey`s when canvases are disconnected
+ # from the DOM in a future change. One tricky thing here is placeholder
+ # canvases, which are meant to be driven from workers.
+ # It seems that the implementation isn't correct for these at the moment
+ # as they need to be updated to the specification. Instead, what is
+ # happening is that any existing context / image is completely lost when
+ # converting to an `OffscreenCanvas`.
+ # Testing: This shouldn't change observable behavior, so is covered by
+ # existing tests.
+ # Fixes: This is part of #40261.
++https://github.com/servo/servo/pull/40357 (@arihant2math, @jschwe, #40357) Add bump-version command (#40357)
+ release
+ # Comprehensively sets the version across Cargo.toml and all installer/config files (i.e. `Info.plist`, `Servo.wxs.mako`,
+ # etc.)
+ # Testing: Manual
+ # Fixes: #40312
+-https://github.com/servo/servo/pull/40376 (@mrobinson, #40376) net: Associate every `ImageCache` with a `WebView` (#40376)
+ # Every `ImageCache` should be assigned a `Pipeline` and a `WebView`, so
+ # that it knows what WebRender instance to create image keys in. This
+ # change accomplishes that by splitting the `ImageCache` trait into
+ # `ImageCache` and `ImageCacheFactory`. There should only be one
+ # `ImageCacheFactory` per process.
+ # Testing: This should not change observable behavior and is thus covered by
+ # existing tests.
+ # Fixes: This is part of #40261.
+https://github.com/servo/servo/pull/40391 (@richerfu, #40391) ohos: Support resize for tablet (#40391)
+ # This change can allow resize window in pad and pc device.
+https://github.com/servo/servo/pull/40388 (@arihant2math, #40388) Initial credential management checks (#40388)
+ # It's taking longer than expected to implement credential management fully, so I've decided to start branching
+ # individual PRs out. This just implements some basic scaffolding functions.
+ # Testing: Passes a WPT test
+ # Fixes: Partially #38788
+https://github.com/servo/servo/pull/40377 (@sagudev, #40377) CI: Switch to `macos-15-intel` (#40377)
+ # Intel is not dead till 2027: https://github.com/actions/runner-images/issues/13045
+ # try run: https://github.com/sagudev/servo/actions/runs/19048166686
+ # Closes #40354
+-https://github.com/servo/servo/pull/40382 (@dependabot[bot], @dependabot[bot], #40382) build(deps): bump version-compare from 0.2.0 to 0.2.1 (#40382)
+ # Bumps [version-compare](https://gitlab.com/timvisee/version-compare) from 0.2.0 to 0.2.1.
+ # Changelog
+ # Sourced from version-compare's changelog.
+ # 0.2.1 (2025-10-31)
+ # Hide cfg(tarpaulin) warning during compilation
+ # Commits
+ # 0c261ec Bump version to 0.2.1
+ # 21305cb Hide warning for tarpaulin cfg attribute in latest Rust version
+ # 52e754d Bump version number in README
+ # See full diff in compare view
+ # [](https://docs.github.com/en/github/managing-security-vulnerabilities/a
+ # bout-dependabot-security-updates#about-compatibility-scores)
+ # Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger
+ # a rebase manually by commenting `@dependabot rebase`.
+ # [//]: # (dependabot-automerge-start)
+ # [//]: # (dependabot-automerge-end)
+-https://github.com/servo/servo/pull/40385 (@dependabot[bot], @dependabot[bot], #40385) build(deps): bump dtor from 0.1.0 to 0.1.1 (#40385)
+ # Bumps [dtor](https://github.com/mmastrac/rust-ctor) from 0.1.0 to 0.1.1.
+ # Commits
+ # See full diff in compare view
+ # [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-depend
+ # abot-security-updates#about-compatibility-scores)
+ # Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger
+ # a rebase manually by commenting `@dependabot rebase`.
+ # [//]: # (dependabot-automerge-start)
+ # [//]: # (dependabot-automerge-end)
+-https://github.com/servo/servo/pull/40381 (@dependabot[bot], @dependabot[bot], #40381) build(deps): bump cc from 1.2.43 to 1.2.44 (#40381)
+ # Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.2.43 to 1.2.44.
+ # Release notes
+ # Sourced from cc's releases.
+ # cc-v1.2.44
+ # Other
+ # Fix debug assertion for env/abi mismatch (#1604)
+ # Update CHANGELOG for version 1.2.43 (#1602)
+ # Stop passing an invalid target to llvm-mingw's cross-compilation wrappers (#1495)
+ # Changelog
+ # Sourced from cc's changelog.
+ # 1.2.44 - 2025-10-31
+ # Other
+ # Fix debug assertion for env/abi mismatch (#1604)
+ # Update CHANGELOG for version 1.2.43 (#1602)
+ # Stop passing an invalid target to llvm-mingw's cross-compilation wrappers (#1495)
+ # Commits
+ # 514e4d1 chore(cc): release v1.2.44 (#1603)
+ # 2a2eee3 Fix debug assertion for env/abi mismatch (#1604)
+ # 97281b6 Update CHANGELOG for version 1.2.43 (#1602)
+ # 8a45e2b Stop passing an invalid target to llvm-mingw's cross-compilation wrappers (...
+ # See full diff in compare view
+ # [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-depend
+ # abot-security-updates#about-compatibility-scores)
+ # Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger
+ # a rebase manually by commenting `@dependabot rebase`.
+ # [//]: # (dependabot-automerge-start)
+ # [//]: # (dependabot-automerge-end)
+-https://github.com/servo/servo/pull/40380 (@dependabot[bot], @dependabot[bot], #40380) build(deps): bump tokio-util from 0.7.16 to 0.7.17 (#40380)
+ # Bumps [tokio-util](https://github.com/tokio-rs/tokio) from 0.7.16 to 0.7.17.
+ # Commits
+ # 454fd8c chore: prepare tokio-util v0.7.17 (#7719)
+ # 4421022 codec: remove unnecessary trait bounds on all Framed constructors (#7716)
+ # 5a709e3 io_uring: change Completable to not return io::Result (#7702)
+ # 5efb1c3 io: doc that AsyncWrite does not inherit from Write (#7705)
+ # f490029 runtime: revert "replace manual vtable definitions with Wake" (#7699)
+ # d25778f task: add tests for task::Builder::spawn_local (#7697)
+ # b8318fa task: add tests for spawn_local in panic scenarios (#7694)
+ # acfdb87 task: use #[tokio::test] explicitly in tests/task_builder.rs (#7698)
+ # d060401 sync: return TryRecvError::Disconnected from Receiver::try_recv after `Re...
+ # 5dacc2e task: add tests for spawn_local and spawn_local_on (#7609)
+ # Additional commits viewable in compare view
+ # [](https://docs.github.com/en/github/managing-security-vulnerabilities/abou
+ # t-dependabot-security-updates#about-compatibility-scores)
+ # Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger
+ # a rebase manually by commenting `@dependabot rebase`.
+ # [//]: # (dependabot-automerge-start)
+ # [//]: # (dependabot-automerge-end)
++https://github.com/servo/servo/pull/40291 (@mrobinson, #40291) wpt: Enable WebDriver by default when running WPT (#40291)
+ testing; testdriver tests enabled, webdriver now enabled by default (`--product servo` to opt out)
+ # This change switches the default test runner for WPT to be WebDriver,
+ # enabling testdriver tests by default. In addition, it update results to
+ # reflect the ones that you would expect when running with WebDriver.
+ # While there are some failures that require more investigation, in
+ # general the differences in results are fairly explicable.
+ # Testing: This change modifies the way that tests are run and is thus
+ # tested by all WPT-like tests.
+ # Fixes: #34683
+https://github.com/servo/servo/pull/40369 (@mrobinson, #40369) wpt: Filter non-stable expected results and create an artifact for it (#40369)
+ # This change ensures that the filtered raw log file of WPT results only
+ # contains stable unexpected results and uploads a resulting aggregated
+ # log file as an artifact. This artifact can be used to generate new
+ # baselines of *only* stable unexpected results, so is useful for updating
+ # results given a CI run. A future change will add a `mach` command to do
+ # this automatically.
+ # Testing: The CI should run the code to produce this artifact for every WPT run.
+https://github.com/servo/servo/pull/40372 (@yezhizhen, #40372) servoshell: Move `handle_webdriver_script_command` to `RunningAppStateTrait` (#40372)
+ # Share more code between egl and Desktop.
+ # Testing: Just refactoring
++https://github.com/servo/servo/pull/40378 (@jdm, #40378) config: Enable ResizeObserver by default. (#40378)
+ dom
+ # Per https://github.com/servo/servo/issues/39790#issuecomment-3460233532 we now pass tests for all the related
+ # engine features that Servo implements, so there's no benefit to keeping this API disabled. Let's ship it!
+ # Testing: No behaviour change, just updating defaults.
+ # Fixes: #39790
+https://github.com/servo/servo/pull/40272 (@arihant2math, #40272) Light mode for newtab page (#40272)
+ # As requested, the mode changes per the preferences. I had to add a shadow to fix the contrast on light mode (the
+ # colors/shadowing are roughly similar to the firefox new tab page).
+https://github.com/servo/servo/pull/40283 (@Narfinger, #40283) Script: Efficient DOMString methods for as_bytes, eq_ascii, is_ascii, to_jsval (#40283)
+ # This implements efficient methods for as_bytes, eq_ascii, is_ascii and to_jsval.
+ # Tests were added for as_bytes. Additionally, BytesView now has an internal type to make sure nobody can construct it.
+ # Testing: New unit tests were added and some old ones covered the new functions.
+-https://github.com/servo/servo/pull/40374 (@jschwe, #40374) ohos CI: Upload screenshot if speedometer failed (#40374)
+ # Upload a screenshot to help debug failures (due to test timeouts) which happen somewhat frequently when running
+ # speedometer in ohos CI.
+ # Testing: Not tested
+-https://github.com/servo/servo/pull/40373 (@jschwe, #40373) ohos CI: Compile nightly in production and upload libservoshell.so (#40373)
+ # - Compile the nightly in production mode
+ # - Additionally also upload `libservoshell.so` as an artifact. This makes it easier for interested users on HarmonyOS
+ # to test the demo app, since we can't provide a signed version for HarmonyOS, but users can self-sign easily if we
+ # provide the pre-compiled binary.
+ # Testing: Not tested
+https://github.com/servo/servo/pull/40323 (@jdm, #40323) script: Do not include transforms and inline boxes in ResizeObserver box area queries (#40323)
+ # These changes implement the restrictions for content rects required by the ResizeObserver specification: inline
+ # boxes must return empty rects, and any transforms must be ignored.
+ # Testing: Newly passing tests.
+ # Fixes: #40259
+ # Fixes: #40258
+https://github.com/servo/servo/pull/40371 (@Gae24, #40371) script: remove microtask queue from globalscope (#40371)
+ # Remove the microtask queue from `GlobalScope`. The queue is moved inside worker global scopes, while for window
+ # globals the script thread's queue is accessed.
+ # Testing: Covered by existing tests
+ # Fixes: #20908
++https://github.com/servo/servo/pull/40334 (@kkoyung, #40334) script: Use `base64ct` instead of `base64` in SubtleCrypto (#40334)
+ security dom
+ # The `SubtleCrypto` interface of WebCrypto API needs to encode and decode keys in base64 alphabets when
+ # exporting/importing keys in JsonWebKey format.
+ # We currently use the `base64` crate to handle base64 encoding and decoding. This patch switches to use the `base64ct`
+ # crate, which is a constant-time implementation of base64 alphabets.
+ # Using constant-time implementation to handle base64 encoding and decoding of cryptographic secret provides a better
+ # protection against time-based sidechannel attack.
+ # Remarks: The multi-line changes in `ecdh_operation.rs` are mostly caused by `./mach fmt`.
+ # Testing: Refactoring. Existing tests suffice.
++https://github.com/servo/servo/pull/40306 (@mrobinson, #40306) servoshell: Add a `VsyncRefreshDriver` for Android (#40306)
+ servoshell; use system compositor for vsync
+ # This adds an implementation of `VsyncRefreshDriver` ensuring that frame
+ # updates are driven by the system compositor.
+ # Testing: This should increase the smoothness of animations, but I'm
+ # not sure how to test that exactly.
+-https://github.com/servo/servo/pull/40100 (@gterzian, #40100) script: improve spec compliance of the iframe load event steps (#40100)
+ # Prevent the running of the iframe load event steps for the initial about:blank document. Part of
+ # https://github.com/servo/servo/issues/31973
+ # Testing: /html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-nosrc.html
+ # Fixes: It is expected that the intermittent issue of 34819 will go away, but I will leave it open so we can close
+ # it when we realize it isn't being mentioned by PR's anymore.
+ # https://github.com/servo/servo/issues/34819
+>>> 2025-11-08T06:07:37Z
+-https://github.com/servo/servo/pull/40483 (@yezhizhen, #40483) webdriver: Do not remove id from `input_state_table` if it still in `input_cancel_list` (#40483)
+ # There ~was~ has been a [bug](https://github.com/servo/servo/issues/37579#issuecomment-2990762713) in spec. Our
+ # workaround has been: for every keyup/pointerup, we remove a corresponding entry in `input_cancel_list`.
+ # But we missed one thing: it is possible to only dispatch keydown in [element send
+ # keys](https://w3c.github.io/webdriver/#dfn-element-send-keys). In that case, we inserted an entry into
+ # `input_cancel_list` but removes Id from `input_state_table` in the end. This causes a panic with a followup
+ # [release actions](https://w3c.github.io/webdriver/#dfn-release-actions).
+ # This PR makes sure we only remove if it is safe.
+ # Testing: CI no longer panic on
+ # https://github.com/servo/servo/blob/dc9696c27d35f407832e6ef2624ee96afe1ba438/components/webdriver_server/actions.rs#L338
+ # for some testdriver tests.
++https://github.com/servo/servo/pull/40494 (@mrobinson, #40494) script: Wrap unsafe code in `scriptruntime.rs` in `unsafe {}` (#40494)
+ quality
+ # This is another step on the way toward enabling the default set
+ # of rustc compiler warnings for `script`. This also renames two
+ # functions according to Rust snake case guidelines.
+ # Testing: This should not change behavior and is thus covered by existing tests.
+https://github.com/servo/servo/pull/40495 (@mrobinson, #40495) wpt: Run in headless mode by default unless `--no-headless` is passed (#40495)
+ # This is a more reasonable default as the detection of running one or
+ # more tests is a bit inconsistent. It also makes the behavior of the
+ # command a bit more predictable IMO.
+ # Testing: This was tested manually as there is no tests for this
+ # layer of the test runner
+ # Fixes: #40407.
+-https://github.com/servo/servo/pull/40487 (@mukilan, #40487) fonts: prime per-painter font key cache during `WebView` creation (#40487)
+ # Currently we only prime the font key cache for the very first painter. Replace this with a mechanism to request
+ # the System Font Service to prime the key cache whenever a new `WebView` is created.
+ # Testing: This only modifies an internal optimization, so should be covered by existing tests.
++https://github.com/servo/servo/pull/40459 (@Narfinger, #40459) net: Do not implement `Serialize`/`Deserialize` for `RasterImage` and introduce``SharedRasterImage` (#40459)
+ crash; fix crash in Speedometer3.1
+ # RasterImage is now not seralizeable and backed by Vec storage. Add a new struct `SharedRasterImage` that allows
+ # serializeing. This can be constructed from RasterImage. This introduces some more copying but I think the tradeoff
+ # is ok. Newly introduced copies are for favicon response to the embedder and EmbedderNotifications.
+ # Testing: Should not change functionality, so covered by existing tests.
+ # Fixes: https://github.com/servo/servo/issues/39626 and related issues.
+https://github.com/servo/servo/pull/40484 (@mrobinson, @mukilan, #40484) compositing: Allow mapping from WebRender key types to `PainterId` (#40484)
+ # In order to properly select the appropriate `Painter` when dealing with
+ # incoming keys to the renderer API, we ensure that these keys carry the
+ # `PainterId` encoded as `IdNamespace` inside them. This should eliminate
+ # the need to pass the `WebViewId` or `PainterId` with messages involving
+ # these keys.
+ # Testing: This should not change observable behavior, so should be covered
+ # by existing tests.
+https://github.com/servo/servo/pull/40401 (@gterzian, #40401) script: extend the prevention of the firing of load events to all iframes (#40401)
+ # This extends the preventing of the firing of the load events when there is a pending navigation from the initial
+ # blank document only to all iframes. Part of https://github.com/servo/servo/issues/31973
+ # Testing: tests/wpt/mozilla/tests/mozilla/FileAPI/file-upload.html
+ # Fixes: This should fix the intermittency of https://github.com/servo/servo/issues/40348
++https://github.com/servo/servo/pull/39916 (@jschwe, #39916) Add code-coverage option to mach run, test-wpt and test-devtools (#39916)
+ testing
+ # Add a `--coverage` flag to `./mach build` and a `./mach coverage-report` command to use `cargo llvm-cov` to
+ # generate a coverage report from the raw profiles.
+ # The workflow is:
+ # ```
+ # ./mach build --coverage [--profile ]
+ # # Or test-wpt or test-devtools
+ # ./mach run --coverage [--profile ]
+ # # Note, that coverage-report needs to know the cargo build profile.
+ # ./mach coverage-report [--profile ] [optional parameters for cargo-llvm-cov]
+ # ```
+ # According to the LLVM documentation on source based coverage, the optimization profile should not influence the
+ # accuracy of the coverage profile, so we can gather coverage data from optimized builds.
+ # Note that `./mach test-devtools --coverage` will not produce any coverage profiles yet, since the test runner
+ # kills the servo binary, which prevents writing the profile data at shutdown.
+ # The same problem also affects `test-wpt` with `servodriver`, which will be fixed by
+ # https://github.com/servo/servo/pull/40455.
+ # Testing: Manually tested. A CI workflow to test wpt coverage will be added in a follow-up PR.
+-https://github.com/servo/servo/pull/40466 (@yezhizhen, @jdm, #40466) Upgrade wptrunner mozprocess version to 1.4.0 (#40466)
+ # This fixes the error in Windows when Servo shuts down normally without being killed.
+ # Testing: Tested on Windows.
+-https://github.com/servo/servo/pull/40476 (@yezhizhen, #40476) webdriver: Print details when fail to start server (#40476)
+ # This has made life much easier to debug servodriver.
+https://github.com/servo/servo/pull/40482 (@mukilan, @mrobinson, #40482) compositor: Allow `GenerateFrame` to take `Vec` (#40482)
+ # This change simply allows `GenerateFrame` to carry a list of `WebViewId`s and modifies `update_the_rendering`
+ # to collect `WebViewId`s and pass them in the `GenerateFrame` message. The list of `WebViewId`s is currently not
+ # used and that will be handled in a follow-up patch.
+ # Testing: Covered by existing tests.
++https://github.com/servo/servo/pull/40480 (@kkoyung, #40480) script: Implement generate key operation of X25519 (#40480)
+ dom; crypto.subtle.generateKey("X25519")
+ # Continue on adding X25519 support to WebCrypto API. This patch implements generate key operation of X25519, using
+ # X25519 implementation from the crate `x25519-dalek`.
+ # Testing: Pass some WPT tests that were expected to fail.
+ # Fixes: Part of #39060
+-https://github.com/servo/servo/pull/40477 (@mrobinson, #40477) background_hang_monitor: Clean up `Sampler` a bit and use `allow(dead_code)` (#40477)
+ # This clean up the way that the `SamplerImpl` is defined slightly and
+ # switches to using `allow(dead_code)` as this code isn't dead on all
+ # platforms. This fixes a build warning.
+ # Testing: This should not change behavior and is thus covered by existing tests.
+-https://github.com/servo/servo/pull/34960 (@webbeef, #34960) Reduce boilerplate in `Constellation` and `ScriptThread` (#34960)
+ # The constellation has many cases of early returns in match expressions that can be rewritten using `if let Some(...) =
+ # xyz else { return abc; }`. Two macros are introduced to help with repetitive code blocks that can't be extracted
+ # as functions.
+>>> 2025-11-09T06:21:04Z
+-https://github.com/servo/servo/pull/40510 (@servo-wpt-sync, #40510) Sync WPT with upstream (09-11-2025) (#40510)
+ # Automated downstream sync of changes from upstream as of 09-11-2025
+ # [no-wpt-sync]
++https://github.com/servo/servo/pull/39989 (@excitablesnowball, #39989) script: Use InputEvent for input events (#39989)
+ dom; {composed,data,isComposing,inputType} properties on `input`/`beforeinput` events
+ # Use `InputEvent` for text input and set appropriate values for the `composed`, `data`, `isComposing`, and
+ # `inputType` attributes. Use a placeholder for `dataTransfer` attribute and `getTargetRanges` function, as they
+ # are only applicable to contenteditable, which isn't implemented.
+ # Testing: I added two tests under `tests/wpt/mozilla/tests/input-events` based on the similarly named ones for
+ # contenteditable under `tests/wpt/tests/input-events`.
+ # Fixes: https://github.com/servo/servo/issues/36398
+-https://github.com/servo/servo/pull/40505 (@jschwe, #40505) bootstrap: Run apt update before apt-cache (#40505)
+ # In a fresh container skipping the apt-update will cause only 4 packages to be installed and the rest filtered. Also
+ # add a debug print to inform the user if packages were skipped.
+ # Testing: Manually tested
+https://github.com/servo/servo/pull/40456 (@tharkum, #40456) html: Render media controls without ready state precondition (#40456)
+ # Follow the specification and allow to render media controls (expose a user interface to the user) without any
+ # HTMLMediaElement `readyState` precondition.
+ # The media controls be shown for the following examples without specified media source (e.g. without `src` attribute).
+ # ```
+ # /
+ # ```
+ # See https://html.spec.whatwg.org/multipage/media.html#user-interface
+ # For media controls UI don't define root `div` element's style `width` property from the video natural size
+ # (`videoWidth/Height` IDL attributes which return `0` if `readyState` is `HAVE_NOTHING`).
+ # When the `media` element is adopted between different documents need adopt the media controls id, so media controls UI
+ # will keep access to the whilelist of media controls identifiers via `document.servoGetMediaControls(id)` API.
+ # Testing: Improvements in the following tests
+ # - html/rendering/replaced-elements/embedded-content-rendering-rules/audio-controls-00*
+ # - html/semantics/the-button-element/command-and-commandfor/on-audio-behavior.tentative.html
+ # - html/semantics/the-button-element/command-and-commandfor/on-audio-invalid-behavior.tentative.html
+ # Note that `Invoker Commands` API is not yet supported so these `command and commandfor` tests should fail, but due
+ # to previous bug with delayed media controls shown up. The invoker `onClick` function send actions with mouse events
+ # (move/up/down) to the test driver at the position of the button element (via getBoundingClientRect), but before
+ # test driver
+ # will handle these actions the mediadata is received and media controls are shown up with "play" button at this
+ # position.
+ # So the media control "play" button is clicked instead of the button, and it triggers media element `pause`
+ # state change.
+ # See https://open-ui.org/components/invokers.explainer/
+-https://github.com/servo/servo/pull/38789 (@jdm, #38789) Suppress debug representations of network response bodies (#38789)
+ # Adds a wrapper type for vectors that can contain large response bodies to prevent flooding debug logs with the
+ # contents of those bodies.
+ # Testing: Can't test debug log output.
+ # Fixes: #37769
+-https://github.com/servo/servo/pull/40506 (@eerii, #40506) Remove tshark from mach bootstrap (#40506)
+ # `mach bootstrap` no longer installs Wireshark, as it isn't useful for people not working directly on DevTools
+ # support. The linux runner that runs `mach test-scripts` now installs it manually, skipping the security prompt.
+ # Testing: Manual test of `mach test-scripts`
+ # Fixes: #40503
+-https://github.com/servo/servo/pull/40488 (@eerii, #40488) tools: Update DevTools parser flags (#40488)
+ # Rename the `--scan` argument to `-w/--write-file` and the `--use` argument to `-r/--read-file`. This is more
+ # aligned with `tshark`'s syntax, and I think it is a more intuitive naming scheme.
+ # Remove the `--filter` and `--range` arguments. They are very easily replaced by more powerful tools like `grep` and
+ # `jq`. It seems unnecessary to have them in this script (specially when the most useful thing it does is exporting
+ # the capture as NDJSON for other tools to process). This fixes an issue with the last message not being exported.
+ # Change the default port to `6080`. This matches the current information [in the
+ # book](https://book.servo.org/hacking/using-devtools.html#connecting-to-servo) on how to run Servo with DevTools
+ # enabled.
+ # Testing: Checked with `math test-scripts`
++https://github.com/servo/servo/pull/40499 (@mrobinson, #40499) script: Wrap remaining unsafe code and enable `unsafe_op_in_unsafe_fn` (#40499)
+ quality; unsafe as signature vs unsafe as fence around operations
+ # This is last step toward enabling the default rustc
+ # `unsafe_op_in_unsafe_fn` warning for the script crate. It wraps the
+ # remaining unsafe code in `unsafe {}` and removes the line disabling this
+ # warning from `script`'s `Cargo.toml`. In addition, two variables are
+ # renamed from `v` to something slightly more descriptive.
+ # Testing: This should not change behavior so is covered by existing tests.
+https://github.com/servo/servo/pull/40490 (@mrobinson, #40490) script: Handle more `ScriptThread` messages synchronously (#40490)
+ # Make the handling of more messages to the `ScriptThread` happen
+ # synchronously with the rest of the message handling. Previously these
+ # had to be handled first, but the resiliency of the `ScriptThread` has
+ # increased such that they can be done inline now. This simplifies message
+ # handling.
+ # Testing: This should not change observable behavior and is thus covered
+ # by existing tests. In fact, no tests fail with this change which is
+ # the reason we can do it.
+https://github.com/servo/servo/pull/40491 (@mrobinson, #40491) script: Rename `ScriptThreadMessage::AttachLayout` to `ScriptThreadMessage::SpawnPipeline` (#40491)
+ # The thing that this message does is to spawn a pipeline in a
+ # `ScriptThread`. I believe that the `AttachLayout` name is a relic of a
+ # different time. The corresponding procedure in the `Constellation` is
+ # already called `Pipeline::spawn`.
+ # Testing: This is just a rename, so existing tests should cover this change.
++https://github.com/servo/servo/pull/40434 (@atbrakhi, @mrobinson, #40434) servoshell: Implement context menu in servoshell (#40434)
+ servoshell; initial context menu (back, forward, reload)
+ # This PR adds context menu support with clickable menu items in the Minibrowser. The menu appears on right click
+ # and supports basic navigation actions (Back, Forward, Reload).
+ # Testing: We already have tests for ContextMenu in WebView API test.
+-https://github.com/servo/servo/pull/40486 (@jschwe, #40486) mach try: Don't run commit hooks (#40486)
+ # An implementation detail of `./mach try` is that it creates a git commit containing information about the try
+ # configuration. Adding `--no-verify` skips running git pre-commit hooks, which could cause the commit to fail. This
+ # is useful for draft / work-in-progress branches, where you quickly want to commit something and test CI works,
+ # before fixing lints / formatting etc.
+ # Testing: Manually tested with `./mach try`.
+ # Fixes: #40475
+https://github.com/servo/servo/pull/40489 (@eerii, #40489) tools: Remove wrapped JSON message in the DevTools parser (#40489)
+ # Instead of outputing `{"_to": "...", "message": {"to": "...", ...}}` the JSON message is simplified to `{"to":
+ # "...", ...}`. This is possible since all valid devtools messages include a "to" or a "from" field. These two fields
+ # will always be placed at the start of the serialized message, with the rest of fields being sorted alphabetically.
+ # Simplify detection of server or client message, removing the need to pass the devtools port when reading a .pcap
+ # file. Now the pretty message says "Server" and "Client" instead of "Servo" and "Firefox", which was innacurate
+ # when inspecting one instance of Firefox from another.
+ # Testing: Check with `mach test-scripts`
++https://github.com/servo/servo/pull/40497 (@kkoyung, #40497) script: Implement derive bits operation of X25519 (#40497)
+ dom; crypto.subtle.deriveBits("X25519")
+ # Finish adding X25519 support to WebCrypto API. This patch implements derive bits operation of X25519, using X25519
+ # implementation from the crate `x25519-dalek`.
+ # Testing: Pass some WPT tests that were expected to fail.
+ # Fixes: Part of #39060
++https://github.com/servo/servo/pull/40493 (@mrobinson, #40493) script: Wrap unsafe code in `windowproxy.rs` in `unsafe {}` (#40493)
+ quality
+ # This is another step on the way toward enabling the default set
+ # of rustc compiler warnings for `script`. This also renames two
+ # functions according to Rust snake case guidelines.
+ # Testing: This should not change behavior and is thus covered by existing tests.
+-https://github.com/servo/servo/pull/40492 (@arihant2math, #40492) Fix some typos in comments across various parts of the codebase (#40492)
+ # Testing: This only updates comments, so should not need new tests.
+>>> 2025-11-11T06:50:51Z
+-https://github.com/servo/servo/pull/40547 (@arihant2math, #40547) mach: Remove unused setup/config (#40547)
+ # Removed `setup.py`, `setup.cfg`, `mach.egg-info/`, and `PKG-INFO`. I don't see these being used
+ # anywhere and mach isn't packaged by us. I checked the firefox source tree and couldn't find them:
+ # https://github.com/mozilla-firefox/firefox/tree/45fd8b48b2906e1b83e0307502e655ce430ef702/python/mach.
+-https://github.com/servo/servo/pull/40549 (@RichardTjokroutomo, #40549) Fixed codegen to prevent double declaration of -webkit- prefixed CSS properties (#40549)
+ # Removed the following on `script_bindings/codegen/run.py`:
+ # ```
+ # # https://drafts.csswg.org/cssom/#dom-cssstyledeclaration-webkit-cased-attribute
+ # if property_name.startswith("-webkit-"):
+ # yield "".join(camel_case(property_name, True))
+ # ```
+ # Credits to @jdm !
+ # Fixes: issue #40545
+-https://github.com/servo/servo/pull/40522 (@Loirooriol, #40522) Upgrade Stylo to 2025-11-01 (#40522)
+ # This continues #39612
+ # Changelog:
+ # - Upstream:
+ # https://github.com/servo/stylo/compare/b98470a5cbd3792db79366ec1559d72231ef2c1f...d71fd89b781dca6e92ee9a6e683269c3e6a28
+ # 115
+ # - Servo fixups:
+ # https://github.com/servo/stylo/compare/4714bab122cc233eaf7e8330bdfbf55ab859efa8...7481d7f7afe698b1ad141755f6f525857da7b
+ # c49
+ # Stylo tracking issue: https://github.com/servo/stylo/issues/264
+-https://github.com/servo/servo/pull/40546 (@arihant2math, #40546) storage: Run storage tests (#40546)
+ # These were accidentally disabled when creating the storage crate.
+-https://github.com/servo/servo/pull/40544 (@webbeef, #40544) script: improve cookie processing of control characters (#40544)
+ # This implements character set restrictions both for the DOM API and when getting cookies from http/ws headers. This
+ # is a local workaround for https://github.com/rwf2/cookie-rs/issues/243
+ # We still fail some tests because hyper errors out when parsing headers with %x1 characters.
+ # This patch also makes a minor change to 'ServoCookie::from_cookie_string()' to avoid some string cloning when possible.
+ # Testing: wpt tests expectations are updated
+-https://github.com/servo/servo/pull/40539 (@Narfinger, #40539) Net: ServoUrl.into_string().parse() optimization (#40539)
+ # parse takes by reference, so it is enough to use as_str() (which is fast according to the Url documentation)
+ # instead of `into_string`.
+ # `into_string()` copies the whole url into a new string.
+ # Signed-off-by: Narfinger
+ # Testing: Should not change any functionality.
+-https://github.com/servo/servo/pull/40538 (@atbrakhi, #40538) servoshell: Move `webdriver_receiver` to shared base (#40538)
+ # This PR eliminates duplicate code while maintaining the same functionality across all platforms.. We move
+ # `webdriver_receiver` to shared base where `webdriver_sender` lives
+ # Testing: No functional changes. Existing tests should test this.
+ # Fixes: Part of https://github.com/servo/servo/issues/40530
+-https://github.com/servo/servo/pull/40537 (@Narfinger, #40537) script_bindings: Small USVString cleanup (#40537)
+-https://github.com/servo/servo/pull/40534 (@atbrakhi, #40534) servoshell: Move screenshot stability tracking to shared base (#40534)
+ # Move screenshot stability tracking to shared base. This PR eliminates duplicate code while maintaining the same
+ # functionality across all platforms.
+ # Testing: No functional changes. Existing tests should test this.
+ # Fixes: Part of #40530
++https://github.com/servo/servo/pull/40536 (@kkoyung, #40536) script: Implement export key operation of ECDSA (#40536)
+ dom; crypto.subtle.exportKey() for ECDSA keys
+ # Continue on adding ECDSA support to WebCrypto API. This patch implements export key operation of ECDSA, using
+ # ECDSA implementation from the crates `p256`, `p384`, `p521` and `elliptic_curve`.
+ # Testing:
+ # - Pass some WPT tests that were expected to fail.
+ # - The new FAIL expectations are added to `wrapKey_unwrapKey.https.any.js.ini`, which require the not-yet-implemented
+ # sign/verify operations of ECDSA and RSA-OAEP. These tests were skipped by WPT when the export key operation of
+ # ECDSA had not been implemented at the time.
+ # Fixes: Part of #39060
+-https://github.com/servo/servo/pull/40535 (@tharkum, #40535) html: Add description for steps of legacy constructor (#40535)
+ # Add missing description for steps of legacy constructor with a small refactoring, avoiding unnecessary `upcast`
+ # from `HTMLAudioElement` to `Element`.
+ # See https://html.spec.whatwg.org/multipage/media.html#dom-audio
+ # Testing: No expected changes in tests (added steps description).
+-https://github.com/servo/servo/pull/40498 (@WaterWhisperer, #40498) net: Create unit tests for the image cache (#40498)
+ # Add unit tests for ImageCache
+ # Testing:
+ # Fixes: #10793
+https://github.com/servo/servo/pull/40529 (@mrobinson, #40529) constellation: Reuse `InitialScriptState` and `InitialPipelineState` in `UnprivilegedPipelineContent` (#40529)
+ # `UnprivilegedPipelineContent` contains all of the data necessary to
+ # create a new `ScriptThread` with an initial `Pipeline` in a new
+ # process. This change reuses the `InitialScriptState` and
+ # `InitialPipelineState` structs inside `UnprivilegedPipelineContent` and
+ # renames it to `NewScriptEventLoopProcessInfo` to clarify what it does.
+ # In addition, `InitialScriptState` also repeated much of the data of
+ # `NewPipelineInfo`, which is now deduplicated and passed separately to
+ # the `ScriptThreadFactory`.
+ # The overall goal here is to make `ScriptThread` and `Pipeline` creation
+ # separate. A `ScriptThread` contains many `Pipeline`s which come and go,
+ # so it should not depend on a single creation `Pipeline`. This is the
+ # first step toward doing that.
+ # Some inputs to `ScriptThreadFactory` differ based on whether the new
+ # `ScriptThread` is created in a new process or not. This change makes it
+ # so that these input are passed as extra arguments.
+ # Finally these changes have revealed a couple members of data structures
+ # that aren't used. These have been removed.
+ # Testing: This is just a refactor and shouldn't change behavior so is
+ # covered by existing tests.
++https://github.com/servo/servo/pull/40525 (@Loirooriol, #40525) Upgrade cssparser to version 0.36 (#40525)
+ upgrade; CSS now support color(display-p3-linear) and color-mix(in display-p3-linear)
+ # Stylo PR: https://github.com/servo/stylo/pull/262
+ # Testing: Various WPT now pass
+-https://github.com/servo/servo/pull/40531 (@jschwe, #40531) Remove duplicate entry for 'rustc-dev' in toolchain (#40531)
+ # Testing: Trivial, Not required
+https://github.com/servo/servo/pull/40527 (@tharkum, #40527) dom: Add the attribute mutation reason (#40527)
+ # For some specific cases (one of them see below) where are requirement to identify the reason of the attribute
+ # mutation (by whom/why it was changed - by cloning, parser or directly), so the following `reason` parameter was
+ # added to `AttributeMutation::Set` option.
+ # Note that for the HTMLMediaElement the internal `muted` state should be set to true when the element is created
+ # and the element has a `muted` content attribute specified (should be done once on the first attribute mutation
+ # caused by parser or cloning).
+ # See https://html.spec.whatwg.org/multipage/#dom-media-muted
+ # Testing: Improvements in the following tests
+ # - html/semantics/embedded-content/media-elements/user-interface/muted.html
++https://github.com/servo/servo/pull/40523 (@kkoyung, #40523) script: Implement import key operation of ECDSA (#40523)
+ dom; crypto.subtle.importKey(,,"ECDSA")
+ # Start adding ECDSA support to WebCrypto API. This patch implements import key operation of ECDSA, using ECDSA
+ # implementation from the crates `p256`, `p384`, `p521` and `elliptic_curve`.
+ # Testing:
+ # - Pass some WPT tests that were expected to fail.
+ # - Remaining failed tests in `ec_importKey.https.any.js.ini` require the not-yet-implemented export key operation
+ # of ECDSA.
+ # - The new FAIL expectations are added to `ecdsa.https.any.js.ini`, which require the not-yet-implemented sign/verify
+ # operations of ECDSA. These tests were skipped by WPT because the import key operation had not been implemented at
+ # the time.
+ # Fixes: Part of #39060
+-https://github.com/servo/servo/pull/40514 (@sagudev, #40514) Update mozjs to include SpiderMonkey 140.5 (#40514)
+ # Companion to https://github.com/servo/mozjs/pull/644.
+ # Testing: Covered by WPT tests
+ # try run: https://github.com/sagudev/servo/actions/runs/19208771497/job/54909497069
+-https://github.com/servo/servo/pull/40524 (@sagudev, #40524) CI: Remove llvm upgrade from Windows workflow (#40524)
+ # Windows image has enough new LLVM version.
+ # This will hopefully fix CI, because it currently fails on choco:
+ # https://github.com/servo/servo/actions/runs/19221588811/job/54940572416
+-https://github.com/servo/servo/pull/40521 (@dependabot[bot], @dependabot[bot], #40521) build(deps): bump sea-query from 1.0.0-rc.16 to 1.0.0-rc.17 (#40521)
+ # Bumps [sea-query](https://github.com/SeaQL/sea-query) from 1.0.0-rc.16 to 1.0.0-rc.17.
+ # Commits
+ # See full diff in compare view
+ # [](https://docs.github.com/en/github/managing-security-vulnerabili
+ # ties/about-dependabot-security-updates#about-compatibility-scores)
+ # Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger
+ # a rebase manually by commenting `@dependabot rebase`.
+ # [//]: # (dependabot-automerge-start)
+ # [//]: # (dependabot-automerge-end)
+-https://github.com/servo/servo/pull/40519 (@dependabot[bot], @dependabot[bot], #40519) build(deps): bump cc from 1.2.44 to 1.2.45 (#40519)
+ # Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.2.44 to 1.2.45.
+ # Release notes
+ # Sourced from cc's releases.
+ # cc-v1.2.45
+ # Other
+ # Regenerate target info (#1606)
+ # Use a default check for the "env" variable in apple_sdk_name (#1605)
+ # Changelog
+ # Sourced from cc's changelog.
+ # 1.2.45 - 2025-11-07
+ # Other
+ # Regenerate target info (#1606)
+ # Use a default check for the "env" variable in apple_sdk_name (#1605)
+ # Commits
+ # df67ed3 chore(cc): release v1.2.45 (#1607)
+ # 0c15d10 Regenerate target info (#1606)
+ # c1fa376 Use a default check for the "env" variable in apple_sdk_name (#1605)
+ # See full diff in compare view
+ # [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-depend
+ # abot-security-updates#about-compatibility-scores)
+ # Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger
+ # a rebase manually by commenting `@dependabot rebase`.
+ # [//]: # (dependabot-automerge-start)
+ # [//]: # (dependabot-automerge-end)
+-https://github.com/servo/servo/pull/40518 (@dependabot[bot], @dependabot[bot], #40518) build(deps): bump jiff from 0.2.15 to 0.2.16 (#40518)
+ # Bumps [jiff](https://github.com/BurntSushi/jiff) from 0.2.15 to 0.2.16.
+ # Changelog
+ # Sourced from jiff's changelog.
+ # 0.2.16 (2025-11-07)
+ # This release contains a number of enhancements and bug fixes that have accrued
+ # over the last few months. Most are small polishes. A couple of the bug fixes
+ # apply to panics that could occur when parsing invalid TZ strings or invalid
+ # strptime format strings.
+ # Also, parsing into a Span should now be much faster (for both the ISO 8601
+ # and "friendly" duration formats).
+ # Enhancements:
+ # #298:
+ # Add Serde helpers for (de)serializing std::time::Duration values.
+ # #396:
+ # Add Sub and Add trait implementations for Zoned (in addition to the
+ # already existing trait implementations for &Zoned).
+ # #397:
+ # Add BrokenDownTime::set_meridiem and ensure it overrides the hour when
+ # formatting.
+ # #409:
+ # Switch dependency on serde to serde_core. This should help speed up
+ # compilation times in some cases.
+ # #430:
+ # Add new Zoned::series API, making it consistent with the same API on other
+ # datetime types.
+ # #432:
+ # When lenient mode is enabled for strftime, Jiff will no longer error when
+ # the formatting string contains invalid UTF-8.
+ # #432:
+ # Formatting of %y and %g no longer fails based on the specific year value.
+ # #432:
+ # Parsing of %s is now a bit more consistent with other fields. Moreover,
+ # BrokenDownTime::{to_timestamp,to_zoned} will now prefer timestamps parsed
+ # with %s over any other fields that have been parsed.
+ # #433:
+ # Allow parsing just a %s into a Zoned via the Etc/Unknown time zone.
+ # Bug fixes:
+ # #386:
+ # Fix a bug where 2087-12-31T23:00:00Z in the Africa/Casablanca time zone
+ # could not be round-tripped (because its offset was calculated incorrectly as
+ # a result of not handling "permanent DST" POSIX time zones).
+ # #407:
+ # Fix a panic that occurred when parsing an empty string as a POSIX time zone.
+ # #410:
+ # Fix a panic that could occur when parsing %: via strptime APIs.
+ # #414:
+ # Update some parts of the documentation to indicate that TimeZone::unknown()
+ # ... (truncated)
+ # Commits
+ # 2ef6045 0.2.16
+ # 0b293b4 doc: a few documentation fixes
+ # 0fe02f2 changelog: add entries for duration work
+ # b9484ea fmt/serde: add helpers for std::time::Duration
+ # 87c607b fmt: add parsing routines for std::time::Duration
+ # 8a7f249 fmt: add support for printing std::time::Duration
+ # 3e49cbe signed_duration: remove extraneous comments
+ # b5f30f2 fmt: make fractional formatting use u32
+ # 8e61ffd fmt: add unsigned integer formatting
+ # 1910063 fmt: refactor friendly printer to use std::time::Duration
+ # Additional commits viewable in compare view
+ # [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-depe
+ # ndabot-security-updates#about-compatibility-scores)
+ # Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger
+ # a rebase manually by commenting `@dependabot rebase`.
+ # [//]: # (dependabot-automerge-start)
+ # [//]: # (dependabot-automerge-end)
+-https://github.com/servo/servo/pull/40517 (@dependabot[bot], @dependabot[bot], #40517) build(deps): bump font-types from 0.10.0 to 0.10.1 (#40517)
+ # Bumps [font-types](https://github.com/googlefonts/fontations) from 0.10.0 to 0.10.1.
+ # Commits
+ # c64c8f7 [chore] bump patch for types, read, skrifa (#1691)
+ # c75b6fc Merge pull request #1689 from googlefonts/space_splitting
+ # 1f61198 [klippa-repacker] space splitting overflow resolution
+ # b022894 [read-fonts+skrifa] CFF: clear stem hints for seac components (#1688)
+ # 0bd210e [read-fonts] CFF: ignore unknown operators (#1687)
+ # 8b20dfd [read-fonts] CFF: relax stack checks (#1686)
+ # 185e369 Merge pull request #1685 from googlefonts/fix_doc_link
+ # 4b0b683 fix broken_intra_doc_links
+ # 8b1798a Merge pull request #1682 from crlf0710/main
+ # ec7bbff Merge pull request #1683 from googlefonts/assign_spaces
+ # Additional commits viewable in compare view
+ # [](https://docs.github.com/en/github/managing-security-vulnerabilities/abou
+ # t-dependabot-security-updates#about-compatibility-scores)
+ # Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger
+ # a rebase manually by commenting `@dependabot rebase`.
+ # [//]: # (dependabot-automerge-start)
+ # [//]: # (dependabot-automerge-end)
+-https://github.com/servo/servo/pull/40516 (@dependabot[bot], @dependabot[bot], #40516) build(deps): bump weezl from 0.1.10 to 0.1.11 (#40516)
+ # Bumps [weezl](https://github.com/image-rs/weezl) from 0.1.10 to 0.1.11.
+ # Changelog
+ # Sourced from weezl's changelog.
+ # Version 0.1.11
+ # Adjusted a debug assertion that handled 1-bit code sizes incorrectly in the
+ # decoder (relevant for TIFF but non-standard for GIF). In that case the size
+ # switch semantics are a bit messy.
+ # Commits
+ # fca39dd Bump version to 0.1.11
+ # e2af58a Release notes for 0.1.11
+ # fa42aa4 Merge pull request #53 from image-rs/cleanup-fuzzers
+ # a686f30 Cleanup fuzzer runs
+ # 954cef3 Merge pull request #50 from image-rs/release-0.1.10
+ # See full diff in compare view
+ # [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dep
+ # endabot-security-updates#about-compatibility-scores)
+ # Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger
+ # a rebase manually by commenting `@dependabot rebase`.
+ # [//]: # (dependabot-automerge-start)
+ # [//]: # (dependabot-automerge-end)
+-https://github.com/servo/servo/pull/40515 (@dependabot[bot], @dependabot[bot], #40515) build(deps): bump async-compression from 0.4.32 to 0.4.33 (#40515)
+ # Bumps [async-compression](https://github.com/Nullus157/async-compression) from 0.4.32 to 0.4.33.
+ # Commits
+ # 2aa1b5f chore: release (#393)
+ # 47667f0 Simplify WriteBuffer: Rm unwritten_initialized_mut (#413)
+ # e6b3819 fix: UnexpectedEof on truncated input (#412)
+ # 83a06fe Update async-compression to use codecs v2 (#410)
+ # 2c13c1d Dedup write::Encoder and simplify write::Decoder impl (#409)
+ # 7944821 Dedup write::Decoder::poll_write (#408)
+ # 28f4272 Optimize BufWriter::poll_* method (#407)
+ # 52e1043 Dedup write::{AsyncBufWriter, BufWriter, Decoder} (#406)
+ # 386f59e Early return in do_poll_read instead of keep polling (#404)
+ # 6c0835e Deduplicate bufread::Encoder impl (#402)
+ # Additional commits viewable in compare view
+ # [](https://docs.github.com/en/github/managing-security-vulnerabiliti
+ # es/about-dependabot-security-updates#about-compatibility-scores)
+ # Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger
+ # a rebase manually by commenting `@dependabot rebase`.
+ # [//]: # (dependabot-automerge-start)
+ # [//]: # (dependabot-automerge-end)
+https://github.com/servo/servo/pull/39510 (@Taym95, #39510) Implement read looping using a read request following the spec (#39510)
+ # Implement read looping using a read request following the spec.
+ # Testing: current wpt test should pass.
+ # Fixes: #39482
++https://github.com/servo/servo/pull/40465 (@sagudev, #40465) script: Start preparation to use safer JSContext (#40465)
+ script; safer mozjs api
+ # This PR is companion to https://github.com/servo/mozjs/pull/638, currently it only make stuff compile. In follwups
+ # we will start passing/using safer JSContext down everywhere.
+ # Testing: Not needed as it's just refactorings.
+ # try run: https://github.com/sagudev/servo/actions/runs/19196312972/job/54879090390
+>>> 2025-11-12T06:28:11Z
+-https://github.com/servo/servo/pull/40558 (@jschwe, #40558) ohos: Make test-speedometer-ohos more robust (#40558)
+ # The main change is running `hdc shell power-shell setmode 602`, which sets the device to performance mode,
+ # increasing the screen timeout and manually waking the device up.
+ # We add a helper class for that, so that we can use the `with` syntax to undo these changes at the end of scope.
+ # We also add a small HDC wrapper class, which slightly simplifies and abstracts over some common functionality like
+ # running commands or making a screenshot.
+ # Testing: This is a CI script change.
+ # Fixes: Speculative fix for speedometer sometimes timing out on HOS and the screenshot showing a locked device screen.
+-https://github.com/servo/servo/pull/40577 (@dependabot[bot], @dependabot[bot], #40577) build(deps): bump syn from 2.0.109 to 2.0.110 (#40577)
+ # Bumps [syn](https://github.com/dtolnay/syn) from 2.0.109 to 2.0.110.
+ # Release notes
+ # Sourced from syn's releases.
+ # 2.0.110
+ # Tweaks to improve build speed (#1939, thanks @dishmaker)
+ # Make syn::ext::IdentExt::unraw available without "parsing" feature (#1940)
+ # Support parsing syn::Meta followed by => (#1944)
+ # Commits
+ # 1c8cabe Release 2.0.110
+ # 8ef195b Merge pull request #1944 from dtolnay/metaarrow
+ # 9ab4aef Support parsing Meta followed by fat arrow
+ # 7711764 Add test of parsing fat arrow after meta
+ # 193f52e Update test suite to nightly-2025-11-10
+ # 5ece7e1 Merge pull request #1941 from dtolnay/ext
+ # 6a44478 Add extension trait for Punct construction with span
+ # 798e109 Drop 2 from name of TokenStreamExt2
+ # b344f2d Never import name of quote::TokenStreamExt
+ # b0ec4c7 Touch up PR 1939
+ # Additional commits viewable in compare view
+ # [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dep
+ # endabot-security-updates#about-compatibility-scores)
+ # Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger
+ # a rebase manually by commenting `@dependabot rebase`.
+ # [//]: # (dependabot-automerge-start)
+ # [//]: # (dependabot-automerge-end)
+-https://github.com/servo/servo/pull/40576 (@dependabot[bot], @dependabot[bot], #40576) build(deps): bump hyper from 1.7.0 to 1.8.0 (#40576)
+ # Bumps [hyper](https://github.com/hyperium/hyper) from 1.7.0 to 1.8.0.
+ # Release notes
+ # Sourced from hyper's releases.
+ # v1.8.0
+ # Highlights
+ # Features
+ # rt: add Timer::now() method to allow overriding the instant returned (#3965) (5509ebe6)
+ # Bug Fixes
+ # http1: fix rare missed write wakeup on connections (#3952) (2377b893)
+ # http2: fix internals of HTTP/2 CONNECT upgrades (#3967) (58e0e7dc, closes #3966)
+ # Breaking Changes
+ # While technically breaking, it's assumed you will not need to do anything or be affected.
+ # The HTTP/2 client connection no longer allows an executor
+ # that can not spawn itself.
+ # This was an oversight originally. The client connection will now include spawning
+ # a future that keeps a copy of the executor to spawn other futures. Thus, if it is
+ # !Send, it needs to spawn !Send futures. The likelihood of executors that match
+ # the previously allowed behavior should be very remote.
+ # There is also technically a semver break in here, which is that the
+ # Http2ClientConnExec trait no longer dyn-compatible, because it now expects to
+ # be Clone. This should not break usage of the conn builder, because it already
+ # separately had E: Clone bounds. If someone were using dyn Http2ClientConnExec,
+ # that will break. However, there is no purpose for doing so, and it is not usable
+ # otherwise, since the trait only exists to propagate bounds into hyper. Thus, the
+ # breakage should not affect anyone.
+ # (58e0e7dc)
+ # What's Changed
+ # chore(ci): update to actions/checkout@v5 by @tottoto in hyperium/hyper#3935
+ # refactor(ffi): specify "C" ABI explicitly in ffi_fn! macro by @1911860538 in hyperium/hyper#3937
+ # Update documented default values for http1::Builder by @Will-Low in hyperium/hyper#3938
+ # fix(client): port tests to in-memory socket by @cratelyn in hyperium/hyper#3947
+ # feat: allow overriding the instant returned from Timer by @arielb1 in hyperium/hyper#3965
+ # fix(http1): poll_loop writes when ready by @lthiery in hyperium/hyper#3952
+ # test(ready_stream): replace tracing with printlns by @seanmonstar in hyperium/hyper#3973
+ # fix(http2): fix internals of HTTP/2 CONNECT upgrades by @seanmonstar in hyperium/hyper#3967
+ # Release v1.8.0 by @seanmonstar in hyperium/hyper#3974
+ # New Contributors
+ # @Will-Low made their first contribution in hyperium/hyper#3938
+ # @arielb1 made their first contribution in hyperium/hyper#3965
+ # @lthiery made their first contribution in hyperium/hyper#3952
+ # Changelog
+ # Sourced from hyper's changelog.
+ # v1.8.0 (2025-11-11)
+ # Bug Fixes
+ # http1: fix rare missed write wakeup on connections (#3952) (2377b893)
+ # http2: fix internals of HTTP/2 CONNECT upgrades (#3967) (58e0e7dc, closes #3966)
+ # Features
+ # rt: add Timer::now() method to allow overriding the instant returned (#3965) (5509ebe6)
+ # Breaking Changes
+ # The HTTP/2 client connection no longer allows an executor
+ # that can not spawn itself.
+ # This was an oversight originally. The client connection will now include spawning
+ # a future that keeps a copy of the executor to spawn other futures. Thus, if it is
+ # !Send, it needs to spawn !Send futures. The likelihood of executors that match
+ # the previously allowed behavior should be very remote.
+ # There is also technically a semver break in here, which is that the
+ # Http2ClientConnExec trait no longer dyn-compatible, because it now expects to
+ # be Clone. This should not break usage of the conn builder, because it already
+ # separately had E: Clone bounds. If someone were using dyn Http2ClientConnExec,
+ # that will break. However, there is no purpose for doing so, and it is not usable
+ # otherwise, since the trait only exists to propagate bounds into hyper. Thus, the
+ # breakage should not affect anyone.
+ # (58e0e7dc)
+ # Commits
+ # dbe6f25 v1.8.0
+ # 58e0e7d fix(http2): fix internals of HTTP/2 CONNECT upgrades (#3967)
+ # 0a37a8c test(ready_stream): replace tracing with printlns (#3973)
+ # 2377b89 fix(http1): fix rare missed write wakeup on connections (#3952)
+ # 5509ebe feat(rt): add Timer::now() method to allow overriding the instant returned ...
+ # f9f8f44 tests(client): port tests to in-memory socket (#3947)
+ # 5803a9c docs(server): update default values for http1::Builder (#3938)
+ # e1e1f2b refactor(ffi): specify "C" ABI explicitly in ffi_fn! macro (#3937)
+ # 64ab7ae chore(ci): update to actions/checkout@v5 (#3935)
+ # See full diff in compare view
+ # [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-depen
+ # dabot-security-updates#about-compatibility-scores)
+ # Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger
+ # a rebase manually by commenting `@dependabot rebase`.
+ # [//]: # (dependabot-automerge-start)
+ # [//]: # (dependabot-automerge-end)
+-https://github.com/servo/servo/pull/40573 (@dependabot[bot], @dependabot[bot], #40573) build(deps): bump glslopt from 0.1.11 to 0.1.12 (#40573)
+ # Bumps [glslopt](https://github.com/jamienicol/glslopt-rs) from 0.1.11 to 0.1.12.
+ # Commits
+ # See full diff in compare view
+ # [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-d
+ # ependabot-security-updates#about-compatibility-scores)
+ # Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger
+ # a rebase manually by commenting `@dependabot rebase`.
+ # [//]: # (dependabot-automerge-start)
+ # [//]: # (dependabot-automerge-end)
+-https://github.com/servo/servo/pull/40574 (@dependabot[bot], @dependabot[bot], #40574) build(deps): bump weezl from 0.1.11 to 0.1.12 (#40574)
+ # Bumps [weezl](https://github.com/image-rs/weezl) from 0.1.11 to 0.1.12.
+ # Changelog
+ # Sourced from weezl's changelog.
+ # Version 0.1.12
+ # Further adjusted a debug assertion for TIFF compatibility. It still had one
+ # of its OR conditions formulated incorrectly, relying on equality of the
+ # code word mask and the size switch code. In TIFF we hit the limit of the
+ # code dictionary (all 12-bit words) one code later than we would detect a
+ # code switch that we need to ignore.
+ # Commits
+ # See full diff in compare view
+ # [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dep
+ # endabot-security-updates#about-compatibility-scores)
+ # Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger
+ # a rebase manually by commenting `@dependabot rebase`.
+ # [//]: # (dependabot-automerge-start)
+ # [//]: # (dependabot-automerge-end)
+https://github.com/servo/servo/pull/40556 (@mrobinson, #40556) script: Have `FetchResponseListener::process_response_eof` consume the listener (#40556)
+ # The goal of this change is to prevent having to copy so much data out of
+ # listeners when a fetch completes, which will be particularly important
+ # for off-the-main thread parsing of CSS (see #22478). This change has
+ # pros and cons:
+ # Pros:
+ # - This makes the design of the `FetchResponseListener` a great deal simpler.
+ # They no longer individually store a dummy `ResourceFetchTiming` that is
+ # only replaced right before `process_response_eof`.
+ # - The creation of the `Arc>` in the
+ # `NetworkListener` is abstracted away from clients and now they just
+ # pass the `FetchResponseListener` to the fetch methods in the global.
+ # Cons:
+ # - Now each `FetchResponseListener` must explicitly call `submit_timing`
+ # instead of having the `NetworkListener` do it. This is arguably a bit
+ # easier to follow in the code.
+ # - Since the internal data of the `NetworkListener` is now an
+ # `Arc>>`, when the fetching code
+ # needs to share state with the `NetworkListener` it either needs to
+ # share an `Option` or some sort of internal state. In one case I've
+ # stored the `Option` and in another case, I've stored a new inner
+ # shared value.
+ # Testing: This should not change observable behavior and is thus covered by existing tests.
+ # Fixes: #22550
+-https://github.com/servo/servo/pull/40565 (@simonwuelker, #40565) tests: Remove duplicate xpath test (#40565)
+ # The test query `//L/*` is present twice in the xpathmark-FT test suite. Our WPT harness was complaining about that,
+ # so I've removed the second test instance.
+ # Depends on https://github.com/servo/servo/pull/40564
+ # Testing: The relevant test is now `OK`
+-https://github.com/servo/servo/pull/40564 (@simonwuelker, #40564) script: Choose correct document for xpath queries (#40564)
+ # The result of an xpath query can depend on whether or not the document is a HTMLDocument. We should always use the
+ # document that `document.evaluate` was called on. Instead, we were using the document of the relevant window. This
+ # makes a difference when a script creates a document and calls `document.evaluate` on that.
+ # Testing: New tests start to pass
+https://github.com/servo/servo/pull/40542 (@simonwuelker, #40542) xpath: Don't expect ancestor-or-self axis to be in tree order (#40542)
+ # Depends on https://github.com/servo/servo/pull/40541
+ # We still don't really pass any tests because we incorrectly compare local names case-sensitively. Needs more
+ # investigation.
+ # Testing: New tests start to not-crash
+ # Fixes https://github.com/servo/servo/issues/40540
+-https://github.com/servo/servo/pull/40559 (@Narfinger, #40559) net: Small cleanup in http_network_or_cache_fetch (#40559)
+ # Previously there where two functions defined in this function which was already
+ # roughly 600 lines. There was also a blocking section which was split out.
+ # Testing: Should not change functionality and tests still work.
++https://github.com/servo/servo/pull/40501 (@mrobinson, @atbrakhi, #40501) script: Add context-based context menu options (#40501)
+ api servoshell; copy link, open link in new, copy image link, open image in new, cut, copy, paste, select all
+ # Add context menu options for images, links, and editable text areas. In
+ # addition add the ability to show menu options that are disabled. This
+ # also improves the visual style of the context menu in egui as part of
+ # supporting disabled options.
+ # Testing: This has been manually tested, but we could we should be able to
+ # easily add unit tests when enriching the API with information about the
+ # active element under context menus.
+https://github.com/servo/servo/pull/40541 (@simonwuelker, #40541) tests: Import the XPathMark-FT test suite (#40541)
+ # [XPathMark-FT](https://web.archive.org/web/20070720155520/https://users.dimi.uniud.it/~massimo.franceschet/xpathmark/FT.
+ # html)
+ # is a test suite targeting xpath 1.0 from 2005. It's not very big, but covers all operators, axes and functions. I've
+ # converted it to a web platform test in `mozilla/`.
+ # This exposes numerous new bugs (one of which being https://github.com/servo/servo/issues/40540), which will be
+ # fixed in followup changes. Firefox and chrome both pass all tests.
+ # Testing: This change adds new tests
+ # Fixes #39726
++https://github.com/servo/servo/pull/40554 (@Loirooriol, #40554) script: Pass the right base URI to inline sheets (#40554)
+ layout; inline