Repository navigation
0.2.0 is the second public release of OpenBrowserAgent, after 25 test pre-releases. It adds page and video subtitle translation, a guided setup, a toolbar menu and a smart bar dictionary, makes the agent better at real pages, and reworks sync and settings. Each pre-release's own notes are in CHANGELOG.md.
Status: Chrome and other Chromium-based browsers (Edge, Brave, Arc) are the supported target. The Firefox and Safari builds are experimental. They build and pass the shared tests, but they have not been tested on real browsers yet.
Install or update
- Chrome / Chromium: unzip
open-browser-agent-0.2.0-chrome.zip, openchrome://extensions, turn on Developer mode, choose Load unpacked, and select the unzipped folder. To update, replace the folder's contents and click the reload button on the extension's card. - Firefox (experimental):
open-browser-agent-0.2.0-firefox.zip. Load it as a temporary add-on fromabout:debugging. - Safari (experimental):
open-browser-agent-0.2.0-safari.zip. It needs Xcode's Safari web extension converter. open-browser-agent-0.2.0-sources.zipis the source package for store review.
Highlights
- Page translation: translate a whole page from the toolbar menu, the translate button on the page edge, the right-click menu or a keyboard shortcut. The translation sits under each paragraph (or replaces it), with the page's font and layout kept; menus, buttons, names and dates stay as they are. Engines: the browser's on-device translator (the default), your AI model, or Google's or Microsoft's free translation.
- Video subtitles: each subtitle line shows with its translation under it, on any site, also in fullscreen, from the video's tracks, the caption files a player loads or captions it draws. Turn it on for every video in Settings or for one video from its right-click menu, and set the background, colours, font and size with a live preview.
- Guided setup on install: languages, an AI provider (or a sync code from another device), what to add to web pages, and your keyboard shortcuts. Returning users connect sync instead and skip the rest.
- Toolbar menu: the toolbar button opens a small menu for the current site (translate it, the smart bar on this site, video subtitles, "Translate into") and a button to open the side panel. Ctrl+Shift+Y (Command+Shift+Y on Mac) opens the side panel directly.
- Smart bar dictionary: translating a single word or short phrase shows a dictionary entry with the meaning on this page first. One "Translate into" language is used by page translation, subtitles and the smart bar.
- A more capable agent: it sees what changed after each click or typing, notices covered buttons, read-only and invalid fields, and pages that are still loading; it can search inside long pages and files, take enlarged screenshots of one element, download files, run JavaScript in a sandbox to compute or parse data, record a tab's failed requests and console errors while you reproduce a problem (credentials removed), and stays on its own tab while it works.
- Sync in groups: settings always sync; API keys (encrypted with a sync passphrase), chats and files each have one switch. A sync code connects another device in one paste, and a broken sync file on the server is rebuilt instead of failing.
- Simpler settings: one Models table picks the model for chat, helper tasks, the smart bar, page translation and images; named AI providers such as DeepSeek or OpenRouter can be added straight from the list; recommended MCP servers are added with one click.
- A new look: one set of design tokens throughout, pride themes, holiday touches, a frosted message box, and the tabs and files sent with a message shown as small tags under it.
Good to know
- Sync users, update every device. The sync format changed in this version (see 0.2.0-beta.9). The first sync from 0.2.0 replaces the old data on the server with that device's, so update and sync the device with the most data first, then the others. Older versions stop syncing with the new format. Your data on each device stays as it is.
- Settings and data from 0.1.0 carry over; nothing needs to be set up again apart from turning sync's keys, chats and files switches back on.
- Page translation with the built-in translator, Google or Microsoft keeps your AI provider out of it; Google and Microsoft receive the page text. See Permissions and privacy.
- You bring your own model provider and API key. Nothing is sent anywhere except the providers, MCP servers, translation engine and sync servers you choose.
Please report problems on the issue tracker.
What's Changed
- feat: visual refresh, pride themes and holiday touches (0.2.0) by @Lumysia in #49
- ci: submit releases to the Chrome Web Store by @Lumysia in #50
- chore(store): keep Chrome Web Store assets and the screenshot script in the repo by @Lumysia in #51
- chore(release): 0.2.0-beta.1 by @Lumysia in #52
- fix: holiday touches follow the theme accent; built-in MCP servers can be turned off, not deleted by @Lumysia in #53
- chore(release): 0.2.0-beta.2 by @Lumysia in #54
- feat(smart-bar): show a dictionary entry when translating a word or short phrase by @Lumysia in #55
- chore(release): 0.2.0-beta.3 by @Lumysia in #56
- fix(smart-bar): keep toolbar icons still on hover by @Lumysia in #57
- chore(release): 0.2.0-beta.4 by @Lumysia in #58
- feat: add a right-click menu and smart bar AI search by @Lumysia in #59
- fix(ui): keep interface chrome out of text selection by @Lumysia in #60
- fix(smart-bar): the close menu highlights only the item under the pointer by @Lumysia in #61
- fix(options): show every theme swatch's tooltip on hover by @Lumysia in #62
- fix(smart-bar): read each part aloud in its own language by @Lumysia in #63
- chore(release): 0.2.0-beta.5 by @Lumysia in #64
- fix: localize what users see and make tool results clearer by @Lumysia in #65
- feat: a downloads tool for the agent by @Lumysia in #66
- feat: translate whole pages from the right-click menu by @Lumysia in #67
- chore(release): 0.2.0-beta.6 by @Lumysia in #68
- feat: keep the agent on its own tab and out of the user's way by @Lumysia in #69
- fix(page-translate): clean up after an update and say when translation can't start by @Lumysia in #70
- fix(page-translate): start on the first click when the smart bar is on the page by @Lumysia in #71
- fix(page-toast): draw page notes with the extension's own look by @Lumysia in #72
- fix(page-toast): sit a little higher above the page's last lines by @Lumysia in #73
- feat: ask before sending content to a remote AI provider by @Lumysia in #74
- fix(i18n): say AI provider and which settings always sync by @Lumysia in #75
- fix(sidepanel): stop following the answer once the reader scrolls up by @Lumysia in #76
- fix(i18n): call every API-style provider type "…-compatible" by @Lumysia in #77
- feat(page-translate): keep the page's layout and show translations where they read well by @Lumysia in #78
- chore(release): 0.2.0-beta.7 by @Lumysia in #79
- perf: answer quick requests without long thinking, and put the smart bar first by @Lumysia in #81
- feat(tools): run model-written JavaScript in a QuickJS sandbox by @Lumysia in #82
- refactor(page): decide from page structure, not from particular websites by @Lumysia in #83
- chore(release): 0.2.0-beta.8 by @Lumysia in #84
- ci(release): take release notes from CHANGELOG.md by @Lumysia in #85
- fix(sidepanel): one background behind the composer, no flicker on the send button by @Lumysia in #86
- chore: clean up build, scripts, tests and CI by @Lumysia in #87
- feat(page-translate): keep translating later pages in a translated tab until reload by @Lumysia in #89
- feat(page-translate): the built-in translator is the default engine, with the AI model as fallback by @Lumysia in #90
- fix(chat): say when a response ended early, and keep its usage by @Lumysia in #92
- fix(page-translate): translate text that was missed on some pages by @Lumysia in #93
- test(browser): make the browser tests pass on Chrome for Testing by @Lumysia in #91
- feat(page-translate): give the AI model the context of each batch by @Lumysia in #94
- feat(sync)!: sync groups, encrypted keys, recovery from a damaged root by @Lumysia in #95
- feat(subtitles): translate video subtitles by @Lumysia in #96
- refactor(ui): shared settings pieces, local Mermaid, one model name parser by @Lumysia in #97
- refactor: background and shared cleanup by @Lumysia in #98
- chore(release): 0.2.0-beta.9 by @Lumysia in #99
- refactor(providers): one registry for endpoints and model lists, loaded through the background by @Lumysia in #100
- test(browser): attach to the service worker once its extension APIs are there by @Lumysia in #102
- fix(agent): put the user's tab back when a tab the page opened comes to the front late by @Lumysia in #103
- refactor(ui): split the side panel into contexts; shared lists, tokens and empty states by @Lumysia in #101
- fix(page-translate): keep texts already in the target language, and translate tabs opened from a translated page by @Lumysia in #104
- refactor: background leftovers from the review; learned model refusals; full model lists by @Lumysia in #105
- chore(debug): remove the diagnostic logging switch that no longer did anything by @Lumysia in #106
- fix(smart-bar): decide the dictionary and translation language from the selected text by @Lumysia in #107
- fix(page-translate): short titles no longer stop a batch; a block-styled line at a paragraph's edge is its own; controls whose label is content are translated by @Lumysia in #108
- feat(page-translate): a translate button on the page edge, and a shortcut by @Lumysia in #109
- chore(release): 0.2.0-beta.10 by @Lumysia in #110
- fix(sidepanel): question cards stay answerable while the run waits by @Lumysia in #111
- fix(page-translate): translate what reads as content in the page's interface by @Lumysia in #112
- feat(subtitles): translate every video's subtitles with one switch by @Lumysia in #113
- chore(release): 0.2.0-beta.11 by @Lumysia in #114
- docs(store): describe providers without a list of brand names by @Lumysia in #115
- docs(store): keep a review history by @Lumysia in #116
- fix(subtitles): don't translate live chat or bullet comments as subtitles by @Lumysia in #117
- feat: simpler page tools (toolbar menu, This page strip, one Translate into language) by @Lumysia in #118
- feat: simpler settings (setup on install, simpler sync and providers, six pages) by @Lumysia in #119
- chore(release): 0.2.0-beta.12 by @Lumysia in #120
- chore(store): store screenshots for 0.2.0-beta.12 by @Lumysia in #121
- fix: make browser tests pass on main again by @Lumysia in #122
- feat(setup): guided setup, and Base URL first for compatible providers by @Lumysia in #123
- chore(release): 0.2.0-beta.13 by @Lumysia in #124
- feat(images): the model picks the image size by @Lumysia in #126
- refactor(options): settings sub-pages in the sidebar, pages ordered by use by @Lumysia in #127
- fix(ui): close tooltips when the pointer leaves for the web page by @Lumysia in #128
- feat(setup): returning-user path, and close the setup tab after Open side panel by @Lumysia in #129
- chore(release): 0.2.0-beta.14 by @Lumysia in #130
- refactor(sidepanel): remove the This page strip by @Lumysia in #132
- fix(ui): pad the bottom of a card that has only a header by @Lumysia in #133
- fix(setup): centre each step vertically by @Lumysia in #131
- chore(release): 0.2.0-beta.15 by @Lumysia in #134
- fix(sidepanel): token counts in K and M in every language by @Lumysia in #135
- feat: toolbar menu by @Lumysia in #136
- fix(provider): show reasoning between tool calls on every API; short progress notes by @Lumysia in #137
- chore(release): 0.2.0-beta.16 by @Lumysia in #138
- fix(sidepanel): chat history fills the panel again by @Lumysia in #139
- fix: settings and side panel polish (subtitles wording, image model switch, General order, toggle edge, composer glow and glass) by @Lumysia in #140
- fix(ui): remove the remaining doubled edges by @Lumysia in #141
- chore(release): 0.2.0-beta.17 by @Lumysia in #142
- fix(setup): visible hover everywhere; no empty provider left behind by @Lumysia in #143
- feat(page-tools): fixes from agents using the tools by @Lumysia in #144
- chore(release): 0.2.0-beta.18 by @Lumysia in #145
- fix(ui): long dropdown lists show that they scroll by @Lumysia in #146
- fix(ui): drop the dropdown scroll arrows by @Lumysia in #147
- chore(deps): update dependencies by @Lumysia in #148
- fix(subtitles): don't take player tooltips for captions by @Lumysia in #150
- fix(subtitles): hide the player's own captions; reveal timed words as said by @Lumysia in #151
- chore(release): 0.2.0-beta.19 by @Lumysia in #152
- feat(subtitles): lighter default look and subtitle style settings by @Lumysia in #153
- chore(release): 0.2.0-beta.20 by @Lumysia in #155
- feat(page-tools): network and console capture, source search, clearer act results by @Lumysia in #156
- chore(release): 0.2.0-beta.21 by @Lumysia in #157
- fix(options): disable the Translation model while page translation doesn't use a model by @Lumysia in #159
- fix: bilingual translation spacing and guided setup balance by @Lumysia in #160
- fix(video-subtitles): translate lines from their own language, not the site's by @Lumysia in #161
- fix(options): model selects never show blank; Images lists image models by @Lumysia in #162
- chore(release): 0.2.0-beta.22 by @Lumysia in #163
- fix(page-translate): built-in translator no longer falls back to the AI model by @Lumysia in #164
- fix(page-translate): 0.3em under the source, 0.7em before the next pair by @Lumysia in #165
- chore(release): 0.2.0-beta.23 by @Lumysia in #166
- feat(sidepanel): show sent context as one-line pills under the message by @Lumysia in #167
- chore(release): 0.2.0-beta.24 by @Lumysia in #168
- feat(page-translate): free subtitle colours, lighter defaults by @Lumysia in #170
- chore(release): 0.2.0-beta.25 by @Lumysia in #171
- docs: release notes for 0.2.0 by @Lumysia in #172
- chore(release): 0.2.0 by @Lumysia in #173
Full Changelog: v0.1.0...v0.2.0