You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
0.3.0 - 2026-10-08
Features
settings: :settings opens a page to browse, change and reset every setting
tabs: Mark tabs using the camera, microphone or screen
settings: A clearer settings page with sections, a colors preview and checks while typing
settings: URLs & search second on the settings page
sessions: :recover lists each crash's tabs to reopen some or all
notifications: Libnotify presenter with app name, urgency, timeout and site icon
settings: A Keys tab to bind, unbind and restore keys, with clash warnings
settings: A Sites tab to forget saved permission answers and clear site data
windows: Well-known call sites open in call windows by default
settings: Edit per-site values on the page, and j/k/Return to move and edit
windows: Say when a call site opened in a call window
prompts: Questions belong to their tab, and permission requests show the site and what it wants
completion: Site icons in :open and tab completion
adblock: The status bar counts requests blocked on the page
adblock: Hosts files work as block lists
completion: Letters with gaps match when nothing contains the text
spell: :spell-install downloads dictionaries checked against pinned checksums
tabs: Cm mutes the call from any tab with the site's own key
spell: :spell-install alone lists the languages to pick from
tabs: Gp floats the page's video in picture-in-picture
Chromium's crash dumps are kept locally and listed in :crash-report
lua: Rt.on with patterns, groups and once, and eleven more events
lua: Rt.defer and rt.every timers, rt.notify levels, and a time limit per callback
lua: Rt.keymap with descriptions, and commands that complete their arguments
lua: Rt.store keeps data between runs
lua: Sandboxed plugins from a folder, loaded once you approve their permissions
tabs: Screen shares are marked, and :share-stop ends them from any tab
lua: Plugins install from git and stay pinned in rt-pack-lock.json
lua: A Plugins tab with update review, revoke and remove
lua: Plugins can wait for an event, command or key to load
lua: Rt.statusbar.widget draws lua: widgets
lua: Rt.ui.select and rt.ui.input, rt.page to type and fill logins, and rt.json
lua: Rt.ui.float draws boxes of text over the page
lua: Builtin plugins, starting with passwords to fill logins from pass, rbw, bw or KeePassXC
lua: Rt.ui.panel docks lines beside or below the page
lua: Plugins ship HTML pages that talk only to their own plugin
Chrome extensions, installed from the Web Store with :extension-install
lua: Plugin pages can dock in a panel beside the page
lua: Rt.page.eval, rt.page.css and rt.page.selection
lua: Rt.page.hint hints a selector's elements and hands the pick to Lua
An Extensions tab in :settings, :extension-open and extension updates
help: :help rt.ui.float and :help
Install extensions straight from the Web Store page
lua: Riptide --plugin-test runs a plugin's specs, and a plugin template
lua: Subdir installs one plugin from a repository of several
Extension popups float over the page, as in Chrome
Drag an extension's popup by its bar
lua: Plugins declare dependencies, which install and load first
lua: One checkout per repository, and check, update, sync, restore and clean
adblock: Scriptlets, $redirect stand-ins and $removeparam
lua: Riptide checks plugins for updates in the background
adblock: UBlock Origin's lists by default, with its trusted scriptlets
adblock: Procedural element hiding (:has-text, :upward, :remove and more)
adblock: Element hiding inside frames
lua: Check plugins for updates daily, mentioning each update once
lua: Add plugins from the Plugins tab or :pack-add, kept in plugins.toml
adblock: Your own rules, and an element picker that writes them (;x)
Bug fixes
window: Windows can be resized, so tiling window managers tile them
cmdline: :q closes the current window and :qa quits, as in qutebrowser
tabs: Middle-click and Ctrl+click open links in a background tab
ui: Ctrl+scroll no longer zooms riptide's own bars
lua: A plugin whose folder is missing shows as Failed on the Plugins tab
Say plainly what works when an extension has a popup
lua: Commands added after loading run in the same callback
extensions: Build on Windows, and wait for the limits link in the e2e test
lua: Plugin names and tests on Windows
Downloads
Linux (x86_64): the .deb for Ubuntu 24.04+ and Debian 13+ (sudo apt install ./riptide_*.deb), the .AppImage, or the .tar.gz (unpack and run riptide). See Installing for the sandbox setup.
macOS and Windows: experimental packages that don't run the browser yet.
Check a download with sha256sum -c SHA256SUMS --ignore-missing, or its build provenance with gh attestation verify <file> --repo joshzcold/riptide.