0.1.59a
Breaking Changes
Diacritic Keymaps on macOS
Previously on macOS, if you wanted to define a keymap with the Option key, you had to use the diacritic version of the key as macOS uses Option to enable diacritics. By default, Glide will now use the physical key pressed instead of the diacritic:New Features
Findbar API
Support for programmatically operating the Firefox findbar. You can now open/close the findbar and traverse through matches directly from the config. API methods:glide.findbar.open()glide.findbar.next_match()glide.findbar.previous_match()glide.findbar.close()glide.findbar.is_open()glide.findbar.is_focused()
Previous/Next Link Following
New default keymappings[[ and ]] in normal mode automatically follow “previous” and “next” links.
- Works by searching for link elements containing specific text (e.g., “next”, “more”)
- Selects the element at the bottom of the page when multiple matches are found
- Customize search patterns with
glide.o.go_next_patternsandglide.o.go_previous_patterns
Customizable Keyboard Layouts
Resolve keymaps from the physical key pressed instead of the software layout’s key string. Important for users with multiple keyboard layouts - no need to define keymaps multiple times:The default keyboard layout is US qwerty. If you use a different layout, see the
glide.o.keyboard_layouts option.Half Page Scrolling
The<C-d> and <C-u> keymaps now scroll half pages instead of full pages to match Vim behavior more closely.
Changes
- Bumped Firefox from 148.0b4 to 148.0b15
- Blocked AI link previews by default
- Enabled Firefox’s experimental AI controls UI
- Added
glide.tabs.unload() - Added
glide.prefs.scoped()for temporarily setting prefs with theusingkeyword - Added
DOM.listeners.has()for checking if an element has a specific event listener type - Added support for installing addons in private browsing mode with
glide.addons.install('...', { private_browsing_allowed: true }) - Added
--glide-current-mode-colorCSS variable for easier mode-specific UI customisation (thanks @45Hnri!) - Added
:tab_reopento open the most recently closed tab - Added the
^motion in normal mode (thanks @suveshmoza!)
Bug Fixes
- Fixed the
Imotion crossing multiple lines (thanks @suveshmoza!) - Fixed (partially) an issue where
glide.keys.next()promises could hang around after config reloads
0.1.58a
Experimental Windows Support
This release adds support for Windows!Changes
- Bumped Firefox from 147.0b8 to 148.0b4
- Added process output helpers:
await process.stdout.text(),await process.stdout.lines() - Added support for writing to process stdin with
await process.stdin.write("data")(thanks @philocalyst!) - Added support for registering event listeners in the browser UI
- Added
glide.o.newtab_urlfor customizing the newtab page - Added
glide.fs.mkdir() - Added
Addon.reload()for reloading an installed addon - Added
Addon.typefor identifying addon type (extension, theme, etc.) - Added
yfkeymapping to copy thehrefof an element to the clipboard (thanks @suveshmoza!) - Added
auto_activate: "always"toglide.hints.show() - Promoted
glide.unstable.include()toglide.include() - Fixed calling
glide.commandline.show()within an excmd - Fixed the commandline not closing immediately if an excmd takes a long time
- Fixed expanding
~in the processcwd(thanks @suveshmoza!) - Fixed errors while reloading the config from potentially corrupting internal state
0.1.57a
Search Engine Configuration
Configure new search engines directly in the Glide config:disc<space> in the address bar!
Changes
- Bumped Firefox from 147.0b3 to 147.0b8
- Improved type inference for
glide.content.execute()params (thanks @TomerAberbach!) - Added support for hiding the native tab bar with
glide.o.native_tabs = "hide"or"autohide"(thanks @45Hnri!) - Added
glide.styles.has()andglide.styles.get() - Added support for overwriting existing styles with
glide.styles.add('css', { id: '...', overwrite: true }) - Added
:tab_pinand:tab_unpincommands (thanks @suveshmoza!) - Updated
:config_reloadto apply across all open windows - Updated the commandline to show suggested commands first (thanks @jyn514!)
- Removed Perplexity as a default search engine
- Fixed usage of the
browserAPI on privileged pages - Fixed permissions error when creating tabs with privileged URIs
- Fixed
glide.bo.hint_sizestyling - Fixed
isending an unnecessary<left>key event - Set up Zulip chat for realtime discussion
0.1.56a
Breaking Changes
Hint Callback Execution
Theaction and pick callbacks are now executed in the main process (not content process). This allows access to the glide API in callbacks.
Before:
Relative Path Resolution
Calls to APIs likeglide.fs.read() with relative paths now resolve relative to the current file instead of the config file.
New Features
Custom Hint Label Generators
Override label generation for hints with custom strategies:Changes
- Bumped Firefox from 146.0b9 to 147.0b3
- Added support for nested
glide.unstable.include()calls - Added
glide.modes.list()andglide.commandline.is_active() - Added support for overriding commandline custom option matching
- Added
<CR>keymapping to accept the hint with typed label (thanks @peff!) - Added support for
DOM.create_element()in the content process - Fixed
glide.o.switch_mode_on_focusdisabling certain mode changes - Fixed keymap types to allow
<leader>-,<<,<sequences (thanks @suveshmoza!) - Fixed repeated
glide.styles.remove()calls - Fixed static properties/methods on builtin classes not being accessible
0.1.55a
Picker API
Use the commandline as a picker for arbitrary options:Split Views API
Manage Firefox split views directly from the Glide config:Changes
- Bumped Firefox from 146.0b4 to 146.0b9
- Added
gUandgukeymappings for URL hierarchy navigation - Added
CommandLineExitautocmd - Added
glide.commandline.show()andglide.autocmds.remove() - Added
glide.content.fn()for marking callbacks as executing in content process - Added
glide.o.switch_mode_on_focusfor disabling automatic mode switching - Added
childrensyntax sugar toDOM.create_element() - Made the
glide.otype extensible
0.1.54a
Navigation Key Changes
Page navigation keys now translate to standard keys:hjkl→ arrow keys<C-u>→<PageUp><C-d>→<PageDown>gg→<D-Up>(macOS) or<C-Home>(Linux)G→<D-Down>(macOS) or<C-End>(Linux)
- Leverage Firefox’s smooth scrolling implementation
- Better compatibility with websites and PDFs
- Standard navigation behavior
Websites can now intercept navigation key events. If this causes issues, revert with:
Smooth Scrolling
Smooth scrolling is now enabled by default. To disable:Changes
- Bumped Firefox from 145.0b6 to 146.0b3
- Added
Imotion support - Added
<C-,>to move focus out of the active element - Added
:copyexcmd - Added
glide.styles.remove()for removing browser styles - Added opt-in support for hinting elements with
clicklisteners - Added
glide.ctx.versionandglide.ctx.firefox_version - Added opt-in JPEG XL support (thanks @SED4906!)
- Removed relative path limitations in
glide.unstable.include() - Fixed scrolling while editable elements are focused
- Fixed DBus names on Linux to use
app.glide_browser(thanks @thomascft!)
0.1.53a
Addons API
Install addons directly from the Glide config:Styles API
Inject custom CSS into the browser UI:Changes
- Bumped Firefox from 144.0b9 to 145.0b6
- Enabled WebAuthn on macOS
- Added
glide.addons.install(),glide.addons.list(), andglide.styles.add() - Added
glide.o.hint_chars - Fixed the source tarball to include hidden files
- Fixed hint label generation to avoid conflicts with hint mode keymaps (thanks @jacobzim-stl!)
- Fixed missing hints for elements across shadow roots
- Fixed the commandline stealing focus after close