v0.9.0
Prerelease
Start page
The Start page is the Omnibar at rest on the horizon of a night road. It shows for a Space at rest, for about:blank, and for a new-tab request, which shows it over the page on show. The tab is made only when you commit, and Escape gives the page back.
- The road is the CRT road the website draws, from the same parameter file,
share/scenes/crt-road.json. It runs under the whole window at 30 frames a second, and the sidebar stands over it. - After Return the road drives until the page first paints. A failed load ends the drive at once.
- On the Start page the Omnibar is glass over the road, which shows through blurred 14 px. Its rim catches the road's sun, warmest on the edge over the sun. Over a page it keeps its own glass and accent edge, with no rim.
- A Private window's road is unlit. The sun has set, and there are no stars, centre line or shooting star.
- The road holds one still frame under reduced motion.
- Turn the road off with "Night road on the Start page", or turn off only its glass with "CRT glass over the road". Both are in Settings, under Interface.
- The keymap sheet is now the Shortcut sheet. Press
?orPrimary+/over a page or the Start page.
Omnibar
- The Omnibar is one field and one list. It ranks what you type against open tabs, Spaces, the Space's history, search keywords and commands.
- Return commits the typed text. If an open tab's title or host starts with it, Return switches to that tab.
:orPrimary+Kopens the command scope, shown as a:prompt. Typing:in the field enters it, and Backspace before the first character leaves it with the text kept.- It lists the open tabs of every Space. The Space on show comes first, then the others in Space order. A row from another Space names that Space in its colour, and committing it switches there with the tab on show. Listing them loads or thaws no page. A Private window lists only its own tabs.
- Engine suggestions list a search engine's proposals as you type. Turn them on in Settings, under Network. They are off by default.
- With them on, the Omnibar asks the engine that Return would search after a 150 ms pause. It sends no cookies, and an answer that has not arrived within a second is dropped. Up to four rows follow your own rows, and each searches the engine that proposed it. A Private window never asks.
- Every preset engine has a suggest URL except Kagi. The add-engine form takes one too.
- Each row leads with a picture: the site's tile for a tab, history or keyword row, the colour for a Space, and the group's symbol for a command. What committing a row does is at its right edge.
- The Omnibar opens in one place over a page or the Start page, centred in the page area with its field on the horizon. Its rows grow down from the field. The key hint strip under the rows is gone.
- The field leads with the Omaweb mark in the accent, the caret is a blinking block, and a
→at the end commits as Return does. - A keybindings file that names
command-panelstill works. The command's id iscommand-scope.
Spaces and the sidebar
- Each Space has a Space colour: green, yellow, blue, bright green, bright yellow or bright blue. The theme resolves it, so a Space follows a theme change.
- A new Space takes the colour fewest of your Spaces have. Pick another in Settings, under Spaces. A light theme offers only the three plain colours. The colour syncs with the Space.
- Spaces from before this release get their colours at the first start, in footer order.
- The footer draws your Spaces as small squares in their colours, with the Space on show larger. Agent Spaces follow as small Agent marks, so an Agent's new Space never renumbers your Space keys.
- Spaces the footer has no room for are counted as
+N. Press it for a menu of them. The Space on show always keeps its place. - Each Space keeps the icon every page showed. A restored tab, a tab in a new window and an Omnibar row show it before the page loads. Nothing in this makes a network request.
- Deleting History deletes the icons of those pages, except one a sidebar tab still shows. A Private window keeps its icons in memory and drops them when it closes.
Primary+Egives the sidebar the keyboard. There,jandkmove the Sidebar cursor through its rows.lor Return opens the row and hands the keyboard to the page, andhreturns to the tab on show.- Hold Primary on its own for 400 ms to see Key labels: each control's key, read from the live keymap.
- A Space switch shows the Space notice, the Space's name at the top of the page. The window title names the Space too.
Motion and the chrome
- A click, drag or tap still eases the chrome. The same action from a key or the command scope arrives settled. This covers the sidebar, Space and tab switches, the Omnibar, the sheets, panels and the Glance.
- The Space notice and an Agent mark's pulse move whichever started them.
- The "Ease the chrome" setting is gone. To turn motion off, use the desktop's reduced-motion preference. It stills everything, the sidebar peek and page notices included.
- Omaweb reads that preference from the portal's
reduced-motion, Hyprland'sanimations:enabled, GNOME'senable-animationsand macOS's Reduce motion. - The bars over a page, such as a page's question or prompt, blur the page behind them. Its colours and shapes show through, but its text cannot be read.
Agents
An Agent is a program you run, such as a coding agent or your own script. It drives Omaweb through a control socket at $XDG_RUNTIME_DIR/omaweb/control.sock, with mode 0600. Omaweb holds no model and no provider credentials.
Browser commands are always open to the
omawebCLI.omaweb space <name>puts a Space on show, andomaweb focusselects a tab by id or by part of its address.omaweb commandslists the commands that can run now, andomaweb run <command>runs one. A keybind or a script can drive the window with them.Reading or driving a page needs Allow agents, in Settings, under Agents. It is off by default, and turning it off detaches every Agent.
Agents use an Agent Space without asking. Before an Agent uses one of your Spaces, Omaweb asks you once, with Allow and Deny. The Agent's call waits up to a minute for your answer.
A Space grant lasts until you revoke it in Settings, under Agents. Revoking detaches every Agent tab of that Space at once. A grant stays on this machine and never syncs.
The page verbs are
look,read,do,shotandeval.consolereturns what the page wrote to its console, up to 500 messages per document, kept in memory only.After each
dostep, Omaweb waits for the document to be quiet for 300 ms, at most 10 s. While your keyboard is in the tab,dowaits for you.space new --temporarymakes an Agent Space that lasts as long as the connection. It is deleted with its Engine profile and Browsing data when the connection closes or the browser quits.An Agent tab keeps running behind the page on show, is never frozen, and never takes your keyboard.
An Agent tab's JS dialogs go to the Agent. Its downloads land in
Agents/<connection>/under your downloads location. A High-risk download still waits for you.An Agent tab's file chooser takes only the files the Agent names, and only in an Agent Space. An Auxiliary window its page opens is the Agent's too.
An Agent tab's row ends with an Agent mark in the Agent accent, the Omarchy terminal's cyan. Its page on show is framed in the accent, with a label naming the connection and its last act.
A Space with an Agent at work shows the Agent mark, and the marks pulse while a command runs. Opening an Agent Space offers Take over, which keeps the Space as yours.
Every verb is logged to
agent-activity.jsonlwith its time, connection, Space, tab, address, verb, target and outcome. Addresses lose their query, fragment and credentials. Whatdofilled and whatevalran are never kept.Log lines older than 7 days are deleted. The "Show agent activity" command opens the log as a page, filtered by Agent and by Space.
omaweb mcpserves the same verbs as an MCP server over stdio. The package also installs an Agent skill. Register the server with:claude mcp add omaweb -- omaweb mcp
Install and upgrade
curl -fsSL https://omaweb.app/install | shinstalls Omaweb. It adds the[omaweb]repository, checks the signing key against its pinned fingerprint, trusts the key and installs the package.- The script says what it will change and asks once.
--yesskips the question. It backs uppacman.conffirst, and a second run leaves alone what the first one did. - The first launch after an upgrade opens that release's notes as a tab behind the page on show. They open in the Space on show, or in your own Space shown most recently when an Agent Space is on show.
- A first install, the same release, a downgrade and a return to a release you launched before open nothing. A Private window never opens them.
Fixes
- HTTPS-only mode let a redirect to a plain address go out in the clear. Omaweb now stops it and loads the address as its own navigation, which is upgraded.
- A site you chose plain HTTP for is found again when its address has the default port or an internationalised name.
- "Retry over insecure HTTP" is no longer upgraded straight back. A dotless name with a port, which the Omnibar sends over plain HTTP, is no longer upgraded.
- After a failed upgrade, a retry of the plain address within 15 seconds was labelled "sent back to plain HTTP". A failed upgrade is now forgotten.
- Site information no longer blames your Secure DNS resolver for a lookup the system made after the engine refused that resolver.
- A Private window's prompts say an answer lasts until the last Private window closes. They used to say "this" Private window.
- Switching a page's site off in Content blocking also turns off the hides in its frames from other sites. They followed the frame's own site.
- A rule change made during a load applies when you stop the load. It used to apply only to a load that finished.
- A full-page screenshot includes sticky elements past the first screenful. A long title no longer cuts an emoji in the file name.
- Under fractional scaling, the full-page height limit is checked at the window's pixel ratio. A page that fit could be refused before.
Full changelog: https://github.com/villekivela/omaweb/compare/v0.8.0...v0.9.0