Repository navigation
Releases: villekivela/omaweb
Release list
v0.16.1
Fixes
- Choosing Follow Omarchy after picking a Browser theme now stays chosen. In 0.16.0 the earlier pick came back by itself the next time Sync applied a change pushed from another machine. Settings being open had nothing to do with it. Sync left the Browser theme off its list of synced settings, so the old pick stayed in the repository and returned on the next apply. Sync now covers every synced setting. Clearing the Browser theme removes its record, and a machine that finds the record gone clears its own pick too. A theme picked on one machine while another chooses Follow Omarchy survives the merge. A machine that joins Sync by adopting an existing repository keeps its own pick. (#740, #741)
Full changelog: v0.16.0...v0.16.1
v0.16.0
Browser theme
You can now pick the browser theme from any installed Omarchy theme, separately from the desktop. Choose it in the Theme row, the first row of Settings > Interface. "Follow Omarchy" is first in the list and is the default. It behaves as before. Every other installed theme follows, under the name Omarchy's menu shows. Each row ends with three squares showing that theme's background, foreground and accent.
- The theme you pick drives the chrome, Settings and its controls, popups and tooltips, Start page Scenes, Space colours, the Private and Agent accents, and Developer tools. It also sets the colour scheme pages are told, so a light theme on a dark desktop gives pages a light
prefers-color-scheme. - The desktop's theme and the app icon stay as they are. Omaweb never runs
omarchy theme setand never writes into Omarchy's folders. - A picked theme stays picked when the desktop changes theme.
- Omaweb renders the picked theme through your
~/.config/omarchy/themed/omaweb.json.tpl. It renders again when the theme'scolors.tomlchanges. A theme folder that ships its ownomaweb.jsonis used as it is. - If the picked theme is uninstalled, Omaweb follows Omarchy and says so under the row. The theme comes back when it is installed again.
- If
~/.config/omaweb/theme.jsonorOMAWEB_THEME_FILEsets the palette, the row is disabled and names the override. - The row is hidden where no Omarchy theme is installed.
- The choice is stored as
browser-themeinsettings.json, and Sync copies it.
Fixes
- A playing tab now stays audible through quiet stretches in its media (#731). Before, Omaweb treated a tab as silent about a quarter of a second into a silence, even while the media kept playing. The tab's sound button came and went. A tab you were not looking at could be frozen in a quiet scene. It then lost its place as the Sounding tab and never resumed. A tab now counts as audible while it has made sound and media in any of its frames is still playing unmuted at some volume. When that media stops or pauses, the tab goes quiet as before. Media that never made a sound, such as a muted video, gets no sound button.
Full changelog: v0.15.1...v0.16.0
Diagnostic build for #711 (not for general use)
A one-off Omaweb 0.16.0 for #711 that reports Chrome 152 instead of the engine's Chromium 140 in its user agent and client hints, and changes nothing else. It's built from the never-merged branch diag/711-report-chrome-152 and isn't in the pacman repository. Install it only if you were asked to on #711, then go back with sudo pacman -S omaweb. This release will be deleted once the test is done.
v0.15.1
Breaking changes
- Omaweb 0.15.1 needs the engine package
omaweb-qtwebengine6.11.2-15 or newer. The package now depends on that version, so pacman upgrades the engine with Omaweb. If you install packages by hand, upgradeomaweb-qtwebenginewith Omaweb. A build of Omaweb against Arch's ownqt6-webenginelacks Omaweb's engine patches. The passkey and SVG favicon fixes below need those patches.
Private windows
- A Private window now rejects a web push subscription the same way a Space does. The request fails at once with "push service not available", and no notifications prompt appears. Before, a Private window raised the notifications prompt and then rejected the subscription whatever you answered. A site could use that difference to tell a Private window apart from a Space.
Notification.requestPermissionstill asks you in a Private window.
Passkeys
- A page that calls
PublicKeyCredential.getClientCapabilities()now gets an answer. Before, it never got one, because the engine waited for a Bluetooth adapter that never came. The page is told that phone passkeys over hybrid transport and a platform authenticator are not available. This is part of the work on Google sign-in for accounts that use a passkey by default (#711). That sign-in is not yet confirmed fixed.
Fixes
- Key labels shown while Primary is held now draw above the address row. They also stay opaque on a disabled back or forward button. Before, the address field showed through the labels on the sidebar's top row.
- A page that removes its body background after it first draws now gets a white canvas. Before, the theme's colour showed beside its content, as in the black stripes beside myapplications.microsoft.com's dashboard. Omaweb now checks the page again whenever its root or body attributes change, a style sheet in its head changes, or a linked sheet loads. A page that sets its own background later, or asks for
color-scheme: dark, keeps it. - A tab now shows a page's SVG favicon when the page also offers a raster icon beside it. The SVG still follows the colour scheme after a live theme change. On chatgpt.com, the tab showed a black ICO under a dark theme. It now shows the SVG, which turns light. If the SVG cannot be fetched, the tab falls back to the raster icon.
Full changelog: v0.15.0...v0.15.1
Engine 6.11.2-15
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-14. Still QtWebEngine 6.11.2 on Chromium 140.0.7339.225, now with twenty-nine patches instead of twenty-six. No security fix comes with this release.
- 0027, a page's SVG icon ranks above its raster ones (Omaweb's #700). chatgpt.com declares a black ICO for any size ahead of an SVG that follows
prefers-color-scheme, and Chromium preferred the ICO's exact frames, so the tab showed a black mark under a dark theme. A small icon is now tried from the page's SVG first, and the raster is shown only when the SVG can't be fetched. Touch icons keep their ranking. - 0028, a page is told what its passkeys can reach without Bluetooth (#711). The engine is built without BlueZ, and
PublicKeyCredential.getClientCapabilities()waited for a Bluetooth adapter that never came, so the promise never settled. The engine now says it has no Bluetooth LE, and a page hears: no hybrid transport and no platform authenticator. - 0029, a push subscription is answered alike in every window (#421). With no push service,
PushManager.subscribe()is rejected at once, with "push service not available", in a private profile as in any other. Before, a private profile asked for the notifications permission first, which put a question to the reader that led nowhere and told a site the two apart.Notification.requestPermission()is unchanged.
Each package names the Qt it was built against. The engine uses Qt's private API, so it runs on the Qt it was built against or a newer one. Each package's qt6-base and qt6-declarative floor is that Qt, and the module's version is pinned to 6.11.2.
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-nine patches in patches/ of omaweb-qtwebengine-patches at a8932b3, 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.
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.
- x86_64 was built against Qt 6.11.2 from Omarchy's stable mirror, with clang, LLD, ThinLTO and Chrome's PGO profile in an Arch container, as an incremental build of the -14 tree with the three new patches applied: "26 already applied, 3 more, no conflicts". It depends on
qt6-base>=6.11.2. verify-x86_64.txtis that build's gate. It found V8 compiled with its write barriers, then passed 61 of 61, 10 of 10, 3 of 3, 9 of 9, 3 of 3 and 6 of 6, the last being 0028's and 0029's cases.- aarch64 was built against Arch Linux ARM's Qt 6.12.0 with GCC, incrementally on the -14 tree, and
verify-aarch64.txtis its gate, with the same sections passing in full. - Neither container had a stock engine, so the stock comparison was skipped on both.
- A real USB security key hasn't signed in on this engine. 0028 changes the Bluetooth answer the security key request also reads, and its tests cover only what a page is told.
v0.15.0
Glance
- A Glance now stands the full height of the page area, with 12% margins at the sides and no head bar. Its close and "Open as tab" buttons sit in a pill beside the panel's top corner. The page beneath is scaled back to 0.96 and dimmed instead of blurred.
- Keeping a Glance as a tab now moves it into place. The panel grows to the width of the page area over 180 ms, the page beneath comes forward, and the new row in the sidebar lights up as it arrives. With
chromeEaseoff it is still a cut. - A kept Glance's tab lands right after the tab it came from. After a split it lands after both halves, and from a Pinned tab it lands at the head of the list. The page keeps its scroll position and typed text, because it is the same page.
- Nothing closes a Glance while it grows into its tab. If keeping stalls, it lets go within a second so the Glance can still be closed.
- An extension's popup takes the same look at its own size, centred. The command that keeps a Glance leaves a popup alone.
- A Glance in a Tab window has the new look too. Keeping it still opens a new Tab window, as a cut, since a Tab window has no sidebar.
- The sidebar no longer has a divider where it meets the page.
Extensions
- A page an extension opens with
windows.createand Omaweb shows as one of your tabs is now treated by the engine as your tab. That covers a request opened as a tab with Glance off, in the Space on show or another Space or a Tab window, and a Glance you keep with "Open as tab".tabs.querylists the page among the browser's tabs, andtabs.removerefuses it like any other tab of yours. - The extension is not told when its window becomes a tab. A Bitwarden passkey prompt kept as a tab stays alive.
- A Glance and an Auxiliary window are not tabs, and the engine is not told about them.
Command line
omaweb help,omaweb --helpandomaweb -hprint the verbs, one line each, and how to launch the browser, then exit 0. They used to launch the browser on your profile. They never start the browser, open a profile or reach the control socket, and they still work after a leading option such as--json.omaweb help <verb>lists that verb's options, read from the same grammar the parser uses. A word that is not a verb is reported, and the command exits 2.
Engine
Omaweb now requires omaweb-qtwebengine 6.11.2-14 or later. This engine build carries the patches behind the favicon fix and the extension change above, and pacman installs it with Omaweb.
Fixes
- A favicon that follows the colour scheme, such as chatgpt.com's, now changes with a theme you switch while Omaweb runs. Before, it changed only after a restart. The page on show draws its icon again straight away. Any other page does so on its next visit and shows its earlier icon until then.
- Returning to Omaweb's Hyprland workspace no longer flashes dark over a page with a dark background and light content. Omaweb now keeps a picture of the page as you left it and shows that until the page draws again. In testing on the maintainer's machine, 0 of 50 returns showed a dark frame, down from 10 of 10. If the page was resized, changed display scale or moved to another document while away, the page's own colour shows instead, as before.
- The sidebar's background now reaches its edges. At 1.5x scale, a transparent column at the seam used to let the desktop show through.
Full changelog: v0.14.0...v0.15.0
v0.14.0
Tab windows
- A tab of any Space can now pop out into a Tab window of its own, so a page can sit on another monitor. Run
pop-out-tabfrom Command scope, from the tab menu, or withomaweb run pop-out-tab <tab id>. - The live page moves into the window as it is. Nothing reloads, and scroll position, typed text and playing video carry over.
- The tab stays in its Space's sidebar with a window mark. It keeps running whichever Space the main window shows, and it is never put away.
- Selecting a popped-out tab raises its Tab window and leaves the main window as it was.
- The window has a slim strip with the Space, Site information and the address. It opens with the Wayland app id
omaweb-tab, so a Hyprland rule can place it, for example on another workspace. - A Tab window comes back after a restart, with its strip as you left it.
- Closing the window or running
put-back-tabreturns the tab to the sidebar, still live. - A page in a Tab window asks for permissions and automatic downloads in its own Space. It fills the window when it asks for fullscreen. A link that wants a new tab opens a Glance or a new Tab window.
- Which tabs are popped out, and the state of their strips, stay on this machine and are never synced.
- An Agent tab cannot pop out.
- A popped-out Pinned tab has no close-tab command, as in the sidebar.
- A popped-out tab cannot move to another Space until you put it back.
Bitwarden passkeys and Known extensions
These need omaweb-qtwebengine 6.11.2-12, which pacman now installs with Omaweb.
- Bitwarden's passkeys now work in Omaweb. An extension can now ask where its page's window is and how large it is. Bitwarden uses this to place its passkey prompt, and before this change it refused to open the prompt. With Bitwarden signed in as a Known extension, a passkey registers on webauthn.io and signs in again. On Wayland the window's top left is reported as 0, 0, and only the size is real.
- Content scripts an extension registers are now kept across a restart, as in Chrome, unless the extension registered them with
persistAcrossSessions: false. Turning a Known extension off and on again keeps them. - Because Bitwarden never unregisters its page script on logout, a Space that signs out of Bitwarden still gets that script after a restart.
- When a window an extension opened with
windows.createcloses, the extension now hearstabs.onRemovedand thenwindows.onRemoved. A Bitwarden request ends when you close its prompt, so you no longer wait out the site's timeout. - A page an extension opened is still reported to the extension as its own window when Omaweb shows it as a tab. This happens with Glance off, or after "Open as tab" (#694).
Omarchy
- On Omarchy, the one-line installer now runs
omarchy update -yfor the system upgrade and thenpacman -S --needed omaweb. Omarchy's pacman guard aborts a directpacman -Syu, so the installer no longer runs it there. - The installer's plan names which path it takes. On Omarchy,
omarchy updatekeeps Omaweb current. On plain Arch,sudo pacman -Syustill does. - Omaweb no longer asks you to add a Hyprland window opacity rule, because Omarchy now draws windows opaque unless they opt in. Install and upgrade no longer print the rule. If you added it earlier, you can remove it. On Omarchy 4.0.4 or earlier, pages still look slightly washed without the rule.
Fixes
- A page in a Space not on show can now open tabs and windows. This covers a Keep active or inspected tab in an away Space, and an Agent tab in an Agent Space. Before,
window.openreturned null and an extension'swindows.createfailed.- A tab request opens a tab at the end of that Space's list, and the main window stays where it is.
- An Auxiliary window opens as it does from the Space on show.
- A request from a page whose tab has just closed is now dropped.
- A permission asked by a Keep active tab in an away Space is now answered in that tab's Space, not in the Space on show.
- Favicons that recolour themselves for the colour scheme, such as ChatGPT's, now match the theme. Omaweb clears each Space's stored favicon drawings at startup, so the first visit in a run draws the icon again under that run's scheme.
- A launch that hands its address to an already running browser does not clear anything.
- A theme changed while Omaweb runs still shows the earlier icons until the next start (#700).
- An Agent command with an option such as
--nameor--jsonbefore the verb now runs as an Agent command. Before, it silently launched or raised the browser you were using. Every option a verb takes may come before it.omaweb --name x mcpworks. An Agent option with no verb now exits 2 and names the option. - Pinned tabs now stay on a column grid. A partial row leaves its remaining columns empty instead of stretching its tiles, and a lone pin is one column wide.
Full changelog: v0.13.1...v0.14.0
Engine 6.11.2-14
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-12. Still QtWebEngine 6.11.2 on Chromium 140.0.7339.225, now with twenty-six patches instead of twenty-four. No security fix comes with this release. Release -13 was built along the way and never published.
- 0025, a favicon is drawn again when the colour scheme changes (Omaweb's #700). A page is told a colour scheme the application changes while it runs, the icon of each page on show is drawn again under it, and every drawing the profile keeps is marked out of date, so another page draws its icon afresh on its next visit. An icon that follows
prefers-color-scheme, such as chatgpt.com's, now follows a live Omarchy theme change. - 0026, the application can say a page is a tab (#694).
Each package names the Qt it was built against. The engine uses Qt's private API, so it runs on the Qt it was built against or a newer one. Each package's qt6-base and qt6-declarative floor is that Qt, and the module's version is pinned to 6.11.2 (omaweb-qtwebengine-patches#21).
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-six patches in patches/ of omaweb-qtwebengine-patches at 3124a21, 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.
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.
- x86_64 was built against Qt 6.11.2 from Omarchy's stable mirror (
qt6-base6.11.2-3), with clang, LLD, ThinLTO and Chrome's PGO profile in an Arch container on an Intel Core Ultra X7 358H, as an incremental build of a tree the series' ownrefresh.shextended: "25 already applied, 1 more, no conflicts". Its libraries are.so.6.11.2, and it depends onqt6-base>=6.11.2andqt6-declarative>=6.11.2. verify-x86_64.txtis that build's gate. It read V8's ninja file and found it compiled with its write barriers, then passed 61 of 61, 10 of 10, 3 of 3, 6 of 6 and 3 of 3. The container had no stock engine, so the stock comparison was skipped.- aarch64 is built separately, against Arch Linux ARM's Qt 6.12.0, and joins this release with its own gate.
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,getAllandcreatereport a window'sleft,top,widthandheight, which the application supplies through a newsetWindowGeometryProvider. Bitwarden placed its passkey prompt from those numbers, gotNaNand 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.registerContentScriptsare 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'supdateContentScripts, which droppedpersistAcrossSessions. - 0023, an extension is told when a window it opened closes (#687). A page opened with
windows.creategets a window id of its own. When it closes,tabs.onRemovedand thenwindows.onRemovedare raised, andtabs.query,windows.removeandtabs.removeknow 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.txtandverify-aarch64.txtare 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.shchecked against the patches. - The x86_64 package was installed in a fresh container on Omarchy's stable mirror (
qt6-base6.11.2-3), and Omaweb's main ateda7f7ewas built against it. Omaweb's engine contract suite passed 224 of 224, loading the engine from/usr/lib/omaweb.
v0.13.1
Fixes
- v0.13.1 starts on Omarchy machines again. Omarchy installs from
stable-mirror.omarchy.org, which still serves Qt 6.11.2. v0.13.0 was built against Arch's Qt 6.12.0, andomaweb-browser,libomaweb-sync.soandlibomaweb-sync-plugin.soneeded theQt_6.12symbol version, so it would not start there. The x86_64 packages are now built from the mirror. A release check now fails the release if a packaged binary needs a newer Qt than the mirror serves. - Engine 6.11.2-7 has no Qt version floor, so pacman no longer holds
omawebandomaweb-qtwebengineback on Omarchy with "cannot resolve qt6-base>=6.12.0". Readers held on v0.12.1 and engine 6.11.2-5 can runpacman -Syuto get v0.13.1 and the engine, which no longer crashes when an extension makes an offscreen document (#646).
Full changelog: v0.13.0...v0.13.1