Skip to content

First launch

Savoia is a browser for macOS. Tabs, tab groups, an address, history, bookmarks, downloads, extensions — all where you expect them; on top of that, groups by meaning, two tabs side by side, the assistant and the agents.

What is on screen

At the top, the tabs: pinned ones as icons at the left edge, then the groups with their coloured labels. Under them, a bar about the tab you are reading: back and forward, the lock, the blocking shield, the address — and right against the field, the bookmark star and the Share button. Further right, the download ring, which appears only once something has been downloaded, the extensions’ buttons, and the profile button with its name and colour.

How groups, pinning and side by side work is on the Tabs and groups page.

A new tab

⌘T opens one at the end of the bar, outside every group. It opens not on somebody’s home page but on Savoia’s own start page: one field that takes a query and an address equally.

As you type, completions gather under it, in this order:

  1. an address row, when what you typed looks like one (apple.com, localhost:3000, anything with a scheme), so that ↩ opens it rather than searching for it;
  2. up to three pages you saved, by the start of the address or title (git — the GitHub page you saved) and by meaning;
  3. up to four pages from this profile’s history, by title, host and address, the often-visited ones first. A past search is found by what you searched for, in any language;
  4. the search engine’s own suggestions, each labelled with the engine — DuckDuckGo Search, Google Search, Bing Search, Yandex Search — so it is clear where ↩ goes.

Saved above visited above guessed: a bookmark is a page you decided to keep, history is a page you happened to open, and a completion is what everybody else is typing.

↑ ↓ walk the rows. Tab or → fills the field from the highlighted row: the full address for a page, the query for a past search or an engine suggestion. The caret stays at the end so you can keep typing. ↩ opens the selected row, Esc clears the field, and on an empty one lets go of the caret — as does a click beside the field.

The same completions — bookmarks, history and the engine — drop down under the address field (⌘L) as soon as you start typing in it. ↑ ↓ and ↩ work the same there, and Esc first puts the page’s address back, then lets go of the field.

The engine is switched from the chip to the left of the field, or from Configuration ▸ General ▸ Search Engine; DuckDuckGo by default. The choice is shared by the start page, the address bar and the assistant.

The query leaves the machine as you type

That is what a suggestion service is. Savoia sends them over a session of their own — no cookies, no cache, nothing tied to a profile. Beyond that, the start page touches the network not at all.

The personal half

The second row in that list is the one thing a search engine cannot have: your own bookmarks, found by meaning. The same way ⌘⌥B finds them, and the same way across languages — «плов» finds the English page about pilaf you once saved, “rate limiting” finds the article you kept about it whatever language you ask in. All of it is worked out on your machine; nothing goes anywhere.

Four things keep it out of the way:

  • with no bookmarks, nothing happens — the query is not even worked out, and the model behind search-by-meaning is not downloaded because somebody typed in the field. An address is skipped too: a host is not a question;
  • nothing appears while you are still typing the first word. An unfinished word is not yet a question: «руд», three letters into a word about mines, should not fetch a pilaf recipe merely for being the nearest thing to it;
  • two rows at most, and they are not always there. Search by meaning answers anything — the nearest page is still the nearest page when nothing is near — so for a question about something you never saved, Savoia shows nothing rather than the closest thing it has;
  • a private window has none of it: nothing is saved from there, and answering with your bookmarks in a window opened precisely to leave nothing behind would be the wrong thing.

What is honest to say about the quality

The order of the rows is nearly always right; the closeness number behind it is not. For this model a question about something you never saved scores as high as a real one, so on a whole phrase it does miss sometimes: one stray row under a query that has nothing to do with what you kept. It is harmless — ↩ with nothing selected still goes to the search engine.

Where things are kept

All of it on your machine, in ~/Library/Application Support/org.deffun.savoia:

savoia.sqlitetabs, groups, agent chats, history, bookmarks, site permissions, settings
Profiles/<name>/the profile’s bookmarks as files, and the agents’ scratchpad
Blocking/, Models/, Thumbnails/, Screenshots/filter lists, the model behind search-by-meaning, tab pictures, screenshots

A session survives a relaunch whole: tabs come back where they stood, with their addresses and scroll offsets, and agent chats carry on. Video and sound in restored tabs do not start by themselves — not until the first click on the page.

Making it the default browser

Configuration ▸ General ▸ Make Default Browser…, or System Settings › Desktop & Dock › Default web browser. After that, links from other applications and .html files from the Finder arrive as new tabs.