Engine 6.11.2-12

QtWebEngine 6.11.2 with Omaweb's patch series applied, for Linux x86_64 and aarch64.

This is the engine Omaweb runs on, and it is a modified QtWebEngine. It installs into /usr/lib/omaweb and does not replace the distribution's qt6-webengine, so every other Qt application on the machine keeps the engine it had.

What changed since engine-6.11.2-7. Still QtWebEngine 6.11.2 on Chromium 140.0.7339.225, now with twenty-four patches instead of twenty. No security fix comes with this release. Releases -8 to -11 were built along the way and never published.

  • 0021, an extension learns where its window is (Omaweb's #684). chrome.windows.get, getCurrent, getLastFocused, getAll and create report a window's left, top, width and height, which the application supplies through a new setWindowGeometryProvider. Bitwarden placed its passkey prompt from those numbers, got NaN and was refused, so its passkeys never reached a page (#561). Omaweb 0.14.0 supplies them, and needs this engine.
  • 0022, registered content scripts survive a restart (#686). Scripts an extension registers with scripting.registerContentScripts are kept on disk for each profile, as in Chrome, and a profile that isn't kept on disk keeps none. An update or an uninstall clears them, and a restored tab waits for them before it loads. It also fixes Chromium's updateContentScripts, which dropped persistAcrossSessions.
  • 0023, an extension is told when a window it opened closes (#687). A page opened with windows.create gets a window id of its own. When it closes, tabs.onRemoved and then windows.onRemoved are raised, and tabs.query, windows.remove and tabs.remove know it. A page Omaweb then shows as a reader's tab still counts as the extension's window, which is #694.
  • 0024, a profile can go while a message waits for an extension's worker (#696). The engine trusted any pointer as a live profile, so a profile deleted with a message still queued for a worker stopped the process. It now checks a set of live profiles, as Chrome does.

Corresponding source. The base is Qt's released qtwebengine-everywhere-src-6.11.2.tar.xz, which carries the Chromium tree it builds. The changes are the twenty-four patches in patches/ of omaweb-qtwebengine-patches at df2c00d, each a single commit with its own reasoning, and on x86_64 toolchain/clang.patch, which changes how the engine is compiled and not what its code does. packaging/MODIFICATIONS.md in the package says the same and ships with it, alongside the LGPL-3.0 text and Chromium's own notice taken from the tree the engine was built from.

The signed copy lives in Omaweb's pacman repository, which is where a reader gets it. The packages here are unsigned, and they are the artifacts the publishing workflow signs.

What it was tested against.

  • verify-x86_64.txt and verify-aarch64.txt are the gate from the builds these packages carry. Each read V8's ninja file and found it compiled with its write barriers, then passed 58 of 58, 10 of 10, 3 of 3 and 1 of 1. Neither container had a stock engine, so the stock comparison was skipped.
  • x86_64 was built with clang, LLD, ThinLTO and Chrome's PGO profile in an Arch container on an Intel Core Ultra X7 358H. aarch64 was built with GCC in an Arch Linux ARM container on an Apple M2 Max. Both were incremental builds of trees the series' own refresh.sh checked against the patches.
  • The x86_64 package was installed in a fresh container on Omarchy's stable mirror (qt6-base 6.11.2-3), and Omaweb's main at eda7f7e was built against it. Omaweb's engine contract suite passed 224 of 224, loading the engine from /usr/lib/omaweb.

This release on GitHub