Skip to content

Releases: joshzcold/riptide

riptide v0.3.0

Choose a tag to compare

@github-actions github-actions released this 08 Oct 23:01
2414b23

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.

riptide v0.2.0

Choose a tag to compare

@github-actions github-actions released this 07 Oct 16:11
308325b

0.2.0 - 2026-10-07

Features

  • tabs: Pinned tabs stay where they are and can sit between others
  • tabs: Gt lists this window's tabs by number alone
  • tabs: A dragged tab shrinks and stays centred on the pointer
  • content: Proxy, WebRTC IP policy, DNS prefetch, canvas reading, cache size
  • content: Autoplay, WebGL, reduced motion, PDF viewer, window.close and console messages
  • release: Ship a .deb with each release
  • cmdline: Ctrl-v and Shift-Insert paste into the command line and prompts
  • input: Partial_timeout, match_counts and mode_override
  • :report, :debug-keytester, :debug-log-filter, editor.remove_file, new_instance_open_target_window
  • Scrolling.bar and tabs.close_mouse_button_on_bar
  • content: Mailto: and other external links, mouse lock, protocol handlers, file access
  • downloads: Prompt-open-download (Ctrl-x) and prompt-yank (Alt-y)
  • input: Rocker gestures, spatial navigation and media keys
  • config: Say when a changed setting only applies after a restart
  • content: Notifications in the status bar, and keep tests off the desktop bus
  • tabs: Tabs.tabs_are_windows
  • cmdline: Cmd-repeat, cmd-repeat-last and cmd-run-with-count
  • hints: Hints inside cross-origin iframes and open shadow roots
  • tabs: A tab whose renderer crashed says so, and r reloads it
  • prompts: Float prompts in a box near the bottom of the page
  • A panic writes a crash report, and the next start says where
  • prompts: Amber floating prompts with a button per answer
  • theme: Themes and colors.* settings for riptide's bars, prompts and hints
  • theme: Fonts for riptide's bars, prompts and hints, and for pages
  • theme: Ui.css and content.user_stylesheets, reloaded on change
  • theme: Colors.webpage.bg, and dark mode that applies at once and per site
  • sessions: Restored tabs keep their back/forward history and scroll position
  • completion: Commands and settings match anywhere in their name, with the match highlighted
  • theme: Bars and completion rows grow to fit their fonts and padding
  • theme: A floating command line, ui.overlay.position and ui.overlay.width
  • hints: Hints.radius, hints.padding and a hints.css file shape the labels
  • prompts: Prompt.position center, and a CSS class for what each prompt is about
  • theme: Ui.theme = auto follows the light or dark preference
  • theme: :theme previews each theme while it's typed or picked
  • theme: Your own themes from themes/.toml in the config directory
  • window: Riptide's logo as the window icon
  • theme: The downloads and history pages take the theme's colors
  • windows: Call windows, where screen sharing picks a tab, window or screen
  • theme: Import base16 schemes and qutebrowser theme files from themes/
  • windows: :tab-call and content.call_sites send calls to call windows
  • lua: Rt.theme defines a theme in config.lua
  • :crash-report shows the last crash report, to send as a GitHub issue or by email

Bug fixes

  • tabs: Place a dragged tab by the pointer, not its centre
  • sessions: Keep each crash's tabs, and don't reopen tabs that crash again
  • permissions: Alt-y in a permission prompt copies the site's origin
  • notifications: Name riptide's desktop file, not Chromium's
  • sessions: Crash recovery messages stay until the tabs have loaded
  • theme: Readable text in every built-in theme
  • theme: The current tab is always the darkest tab
  • sessions: Ctrl-C and a closed terminal keep the tabs for crash recovery
  • window: Give riptide's windows a WM_CLASS
  • windows: Keep ordinary windows' focus as before call windows
  • theme: In light themes the current tab is the brightest tab

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.

riptide v0.1.0

Choose a tag to compare

@github-actions github-actions released this 06 Oct 17:07

0.1.0 - 2026-10-06

Features

  • Scaffold CEF-based vim-like browser (milestone 0)
  • Add ./task wrapper that bootstraps Task
  • Add tabs (milestone 3)
  • Add hints and yank/paste (milestone 4)
  • Add configuration: TOML, Lua and :set/:bind (milestone 5)
  • Add history, quickmarks, bookmarks and sessions (milestone 6)
  • Add prompts, downloads and permissions (milestone 7)
  • ui: Serve UI pages from hb:// with a UI-only message channel
  • tabs: Pinned tabs, tab bar mouse support and favicons
  • help: Generated help page, :help, :version and F1
  • remote: Hand arguments to a running browser from the terminal
  • ui: Add window.title_format
  • sandbox: Run Chromium's sandbox whenever Linux allows it
  • privacy: Stop background calls that only serve Google
  • adblock: Block ads and trackers with Adblock Plus filter lists
  • help: Add :changelog and an "Updated to" notice
  • spell: Spell checking with keyboard-driven suggestions
  • spawn: Add :spawn, qutebrowser-style userscripts and :open-editor
  • marks: Set and jump to marks with ` and '
  • macros: Record keys with q and replay them with @
  • caret: Add caret mode for keyboard text selection
  • greasemonkey: Run Greasemonkey scripts in matching pages
  • search: Find text in the page with /, ?, n and N
  • navigate: Go up the URL, to next/prev pages, or change its number
  • ui: Add dark mode and preferred color scheme settings
  • config: Per-site settings, and save 'always' permission answers
  • tabs: Restore each tab's mode when switching back
  • tls: Ask before loading pages with untrusted certificates
  • widevine: Opt-in Widevine DRM with content.widevine
  • windows: Multiple windows and private windows
  • lua: Script the browser from config.lua
  • clipboard: Yank to and open from the primary selection
  • tabs: Pick a tab in any window with :tab-select (T)
  • session: Crash-recovery autosave and a history page
  • history: Import qutebrowser's history with :history-import
  • tabs: Clone tabs and move them between windows
  • help: List commands from config.lua on the help page
  • hints: Hint elements inside same-origin iframes
  • hints: Number hints that filter by text
  • downloads: Tab path completion and a :downloads page
  • packaging: Build an AppImage next to the tarball
  • ui: Stack messages above the status bar
  • adblock: Hide ads with the lists' element-hiding rules
  • adblock: Re-check element hiding for ads that load late
  • spawn: Show output in a tab with :spawn -o, and Y in caret mode
  • hints: Run programs and userscripts on hinted links
  • search: Follow a search match's link with Return
  • lua: Add hb.tabs() for the current window's tabs
  • Zoom, devtools, print, fullscreen, view-source, jseval and more
  • Scroll-px, cmd-later, fake-key, click-element and more commands
  • breaking: Rename hackers-browser to riptide
  • tabs: Vertical tabs with tabs.position, and tabs.show
  • statusbar: Statusbar.position and statusbar.show
  • statusbar: Statusbar.widgets
  • keys: A key hint popup for partial key chains
  • completion: Delete and yank the selected completion
  • editor: Edit-url, cmd-edit and edit-text, and clean yanked URLs
  • hints: Hints.auto_follow, hint-follow and hints.selectors
  • input: Bindings.key_mappings and input.insert_mode.auto_load
  • sessions: Session.lazy_restore and confirm_quit
  • screenshot: Save the tab as an image with :screenshot
  • content: JavaScript, cookie and user agent settings
  • downloads: Retry, remove and delete downloads; external file picker
  • greasemonkey: @require and GM_setValue/getValue/deleteValue/listValues
  • prompts: Alt-e picks a folder for the download prompt
  • userscripts: Run qutebrowser's bundled userscripts unchanged
  • config: Config-list/dict add and remove, config-diff, config-clear, config-edit, config-write-toml
  • tabs: Tab title format, select_on_remove, wrap, undo stack size, tooltips
  • search: Search.wrap and wrap messages; smooth scrolling; zoom.levels
  • keys: Readline word commands, rl-yank, caret block moves, selection-drop
  • tools: Restart, bookmark-list, mark reloads, debug-dump-page, debug-clear-ssl-errors, devtools-focus
  • userscripts: breaking: Name the userscript variables RIPTIDE_*
  • completion: Completion.show, height, open_categories and more
  • urls: Url.auto_search, url.open_base_url and url.incdec_segments
  • hints: Hints.min_chars, scatter, leave_on_load and next/prev regexes
  • downloads: Location.suggestion and remember, open_dispatcher, remove_finished
  • content: Images, mute, popups, clipboard and protocol handler settings
  • tabs: Mark the current tab by making it darker, with an accent line
  • tabs: Title alignment, min and max tab width, indicator width, close button
  • completion: Shrink, timestamp_format, delay, quick and use_best_match
  • Update CEF to 154.0.33 (Chromium 154.0.8037.94)
  • hints: Word hints from hints.dictionary, and hints.hide_unmatched_rapid_hints
  • tabs: No accent line on the current tab by default; colors.tabs.selected.accent sets one
  • sessions: Session.default_name and :save
  • window: Window.hide_decoration and changelog_after_upgrade
  • greasemonkey: GM_xmlhttpRequest and GM_openInTab
  • lua: Rt.spawn runs programs and calls back with their output
  • content: Accept_language, do_not_track, referer and custom headers
  • tabs: Gt tab picker, pinned-tab prompt, live drag, gD, :set values
  • tabs: Gt tab picker, pinned-tab prompt, live drag, gD, :set values

Bug fixes

  • Build on Windows, where CEF event flags are i32
  • tabs: Focus a new tab again once its browser exists
  • keys: Send keys that land in a UI view on to the current tab
  • remote: Build valid file URLs from Windows paths
  • ui: Leave the port and user info out of {host}
  • permissions: Make per-site settings override Chromium's saved answers
  • tabs: U reopens a tab closed before its page loaded
  • content: Private windows crashed after content settings applied

Downloads

  • Linux (x86_64): the .tar.gz (unpack and run riptide) or the .AppImage. 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.

Nightly nightly-20261006-3363ca1

Pre-release

Choose a tag to compare

@github-actions github-actions released this 06 Oct 13:53

Built from main at 3363ca1 on 2026-10-06. Not a release: it's replaced every night that main changes, and may be broken.

Check a download with sha256sum -c SHA256SUMS --ignore-missing, or its build provenance with gh attestation verify <file> --repo joshzcold/riptide.

Changes since the last release

Features

  • Scaffold CEF-based vim-like browser (milestone 0)
  • Add ./task wrapper that bootstraps Task
  • Add tabs (milestone 3)
  • Add hints and yank/paste (milestone 4)
  • Add configuration: TOML, Lua and :set/:bind (milestone 5)
  • Add history, quickmarks, bookmarks and sessions (milestone 6)
  • Add prompts, downloads and permissions (milestone 7)
  • ui: Serve UI pages from hb:// with a UI-only message channel
  • tabs: Pinned tabs, tab bar mouse support and favicons
  • help: Generated help page, :help, :version and F1
  • remote: Hand arguments to a running browser from the terminal
  • ui: Add window.title_format
  • sandbox: Run Chromium's sandbox whenever Linux allows it
  • privacy: Stop background calls that only serve Google
  • adblock: Block ads and trackers with Adblock Plus filter lists
  • help: Add :changelog and an "Updated to" notice
  • spell: Spell checking with keyboard-driven suggestions
  • spawn: Add :spawn, qutebrowser-style userscripts and :open-editor
  • marks: Set and jump to marks with ` and '
  • macros: Record keys with q and replay them with @
  • caret: Add caret mode for keyboard text selection
  • greasemonkey: Run Greasemonkey scripts in matching pages
  • search: Find text in the page with /, ?, n and N
  • navigate: Go up the URL, to next/prev pages, or change its number
  • ui: Add dark mode and preferred color scheme settings
  • config: Per-site settings, and save 'always' permission answers
  • tabs: Restore each tab's mode when switching back
  • tls: Ask before loading pages with untrusted certificates
  • widevine: Opt-in Widevine DRM with content.widevine
  • windows: Multiple windows and private windows
  • lua: Script the browser from config.lua
  • clipboard: Yank to and open from the primary selection
  • tabs: Pick a tab in any window with :tab-select (T)
  • session: Crash-recovery autosave and a history page
  • history: Import qutebrowser's history with :history-import
  • tabs: Clone tabs and move them between windows
  • help: List commands from config.lua on the help page
  • hints: Hint elements inside same-origin iframes
  • hints: Number hints that filter by text
  • downloads: Tab path completion and a :downloads page
  • packaging: Build an AppImage next to the tarball
  • ui: Stack messages above the status bar
  • adblock: Hide ads with the lists' element-hiding rules
  • adblock: Re-check element hiding for ads that load late
  • spawn: Show output in a tab with :spawn -o, and Y in caret mode
  • hints: Run programs and userscripts on hinted links
  • search: Follow a search match's link with Return
  • lua: Add hb.tabs() for the current window's tabs
  • Zoom, devtools, print, fullscreen, view-source, jseval and more
  • Scroll-px, cmd-later, fake-key, click-element and more commands
  • breaking: Rename hackers-browser to riptide
  • tabs: Vertical tabs with tabs.position, and tabs.show
  • statusbar: Statusbar.position and statusbar.show
  • statusbar: Statusbar.widgets
  • keys: A key hint popup for partial key chains
  • completion: Delete and yank the selected completion
  • editor: Edit-url, cmd-edit and edit-text, and clean yanked URLs
  • hints: Hints.auto_follow, hint-follow and hints.selectors
  • input: Bindings.key_mappings and input.insert_mode.auto_load
  • sessions: Session.lazy_restore and confirm_quit
  • screenshot: Save the tab as an image with :screenshot
  • content: JavaScript, cookie and user agent settings
  • downloads: Retry, remove and delete downloads; external file picker
  • greasemonkey: @require and GM_setValue/getValue/deleteValue/listValues
  • prompts: Alt-e picks a folder for the download prompt
  • userscripts: Run qutebrowser's bundled userscripts unchanged
  • config: Config-list/dict add and remove, config-diff, config-clear, config-edit, config-write-toml
  • tabs: Tab title format, select_on_remove, wrap, undo stack size, tooltips
  • search: Search.wrap and wrap messages; smooth scrolling; zoom.levels
  • keys: Readline word commands, rl-yank, caret block moves, selection-drop
  • tools: Restart, bookmark-list, mark reloads, debug-dump-page, debug-clear-ssl-errors, devtools-focus
  • userscripts: breaking: Name the userscript variables RIPTIDE_*
  • completion: Completion.show, height, open_categories and more
  • urls: Url.auto_search, url.open_base_url and url.incdec_segments
  • hints: Hints.min_chars, scatter, leave_on_load and next/prev regexes
  • downloads: Location.suggestion and remember, open_dispatcher, remove_finished
  • content: Images, mute, popups, clipboard and protocol handler settings
  • tabs: Mark the current tab by making it darker, with an accent line
  • tabs: Title alignment, min and max tab width, indicator width, close button
  • completion: Shrink, timestamp_format, delay, quick and use_best_match
  • Update CEF to 154.0.33 (Chromium 154.0.8037.94)
  • hints: Word hints from hints.dictionary, and hints.hide_unmatched_rapid_hints
  • tabs: No accent line on the current tab by default; colors.tabs.selected.accent sets one

Bug fixes

  • Build on Windows, where CEF event flags are i32
  • tabs: Focus a new tab again once its browser exists
  • keys: Send keys that land in a UI view on to the current tab
  • remote: Build valid file URLs from Windows paths
  • ui: Leave the port and user info out of {host}
  • permissions: Make per-site settings override Chromium's saved answers
  • tabs: U reopens a tab closed before its page loaded
  • content: Private windows crashed after content settings applied