Releases: project-gauntlet/gauntlet
Releases · project-gauntlet/gauntlet
v12
General
- Each plugin Deno runtime now runs in separate OS process
- Nix package, dev shell and home-manager modules are now available (contributed by @schradert)
- Replaced wayland layer-shell implementation, fixing several long-standing issues
- Fixed icons not being rendered properly
- Fixed Ctrl + A shortcut not working in text inputs
- Fixed Backspace only removing single character at a time
- Improved window handling on macOS
- Main window is now non-activating, so it doesn't take away focus from front-most application
- Main window no longer shows up in macOS Dock panel
- Fixed application not receiving keyboard input if front-most application is using Secure Event Input (e.g. Terminal)
- Main window is now closed automatically when plugin action is executed
- A lot of internal dependency updates
Plugin API
- Internal JS functions are no longer accessible from plugins
- BREAKING CHANGE: Deno updated from
v1.37.0
tov2.1.1
- BREAKING CHANGE: Clipboard api now uses
ArrayBuffer
instead ofBlob
@project-gauntlet/deno
is deprecated in favor of@types/deno
UI/UX Improvements
- Hud window was moved lower (below main window) on non-wayland platforms
Fixes
- Fixed possible freeze when spamming keys or buttons in plugin view
- Fixed separator in
<Inline/>
view not being horizontally centered
v11
General
- Primary action label on bottom bar is now a clickable button
- It is now possible to unset global shortcut in settings
- Implemented keyboard navigation support for
<List/>
and<Grid/>
- Note:
<Grid/>
scrolling while using keyboard navigation is still quite buggy and is work in progress
- Note:
Bundled plugin
Applications
- Applications commands are now automatically added or removed when application is installed or uninstalled respectively
- When loading the list of applications from OS, loading bar and "Indexing..." text in bottom panel is shown in main window
Plugin API
- Added
<SearchBar/>
component in<List/>
and<Grid/>
which is text input field above content of the respective view "command-generator"
entrypoints have been reworked- Now it is possible to update list of generated entrypoints (add or remove) after the main command generator function has finished running
- BREAKING CHANGE: Command Generator entrypoint function now accepts an object with
add: (id: string, data: GeneratedCommand) => void
andremove: (id: string) => void
functions - BREAKING CHANGE: Command Generator entrypoint function now should return nothing or a cleanup function e.g. close file watcher. Currently, it is called when disabling/enabling any of entrypoints in plugin, but it is not called when whole plugin is stopped
- While generator function itself is running (given that the function is async) the loading bar and "Indexing..." text in bottom panel will be shown in main window
- BREAKING CHANGE: Validation of React Component children is now a lot more strict with respect to what amount of children of specific type is allowed
- BREAKING CHANGE:
assetData
helper function renamed toassetDataSync
- Added async variant of
assetDataSync
helper function namedassetData
which returnsPromise<ArrayBuffer>
- Added Plugin Environment API
Environment.gauntletVersion
-number
, current Gauntlet versionEnvironment.isDevelopment
-boolean
,true
if plugin was added withnpm run dev
as opposed to Settings UIEnvironment.pluginCacheDir
-string
, path to plugin cache directory, corresponds to{common:plugin-cache}
variable in permissionsEnvironment.pluginDataDir
-string
, path to plugin data directory, corresponds to{common:plugin-data}
variable in permissions
Theming API
- Themes slightly reworked
- "Color Theme" is renamed into "Simple Theme"
- BREAKING CHANGE: Sample generation CLI command was changed to
gauntlet generate-sample-simple-theme
- BREAKING CHANGE: Theme file is renamed from
color_theme.json
tosimple-theme.json
- BREAKING CHANGE: Sample generation CLI command was changed to
- "Everything Theme" or just "Theme" is renamed into "Complex Theme"
- BREAKING CHANGE: Sample generation CLI command was changed to
gauntlet generate-sample-complex-theme
- BREAKING CHANGE: Theme file is renamed from
theme.json
tocomplex-theme.json
- BREAKING CHANGE: Sample generation CLI command was changed to
- It is now possible to customize color, width and radius of borders in Simple Theme
- "Color Theme" is renamed into "Simple Theme"
- BREAKING CHANGE: Current Simple Theme version increased to
4
- BREAKING CHANGE: Current Complex Theme version increased to
4
UI/UX Improvements
- Loading bar is now shown if opening plugin view takes more than 300 milliseconds
- Pressed button state now has distinct styling, providing more clear indication that button was pressed
- When registering global shortcut in settings fails, instead of showing error on whole settings screen now icon with on hover text is shown to the right of the setting field
- If registering global shortcut on application startup fails, error is now also shown in settings
- Fixed padding of grid and list section being too far down if it is first in the view
- Fixed incorrect supported schemas label in Settings UI, http(s), ssh and git are the only supported schemas for plugin IDs
- Better error for not supported plugin ID schemas
<Grid.Item/>
height is now dynamic and is based on<Grid/>
or<Grid.Section/>
columns
property
Fixes
- Fixed global shortcut not working on Windows
- Fixed emojis not working in a lot of places across the application
- Fixed hud window not disappearing on Wayland
- Fixed clipboard operations not working on KDE
- Note:
Clipboard.clear()
orClipboard.writeText("")
is still not working on KDE due to upstream bug
- Note:
- Fixed clipboard operations not working on Wayland
- Fix primary action of first search result being called if primary action of inline view is called using enter key
- Fix scrollable resetting when clicking action panel button in bottom panel
v10
General
- Main view now has action bar and action panel
- Action bar displays current primary action depending on focused result item
- ALT + K (OPT + K on macOS) is available to open action panel
- Content of action panel can be defined by plugins
"inline-view"
and"command-generator"
entrypoint types can now specify custom actions on main view- Plugin can also provide shortcut that will be available depending on focused result item without opening the action panel
- Primary and secondary actions
- First action in action panel is now considered primary and can be run using ENTER without opening action panel
- Second action in action panel is now considered secondary and can be run using SHIFT + ENTER without opening action panel
- Works for all places that can define actions:
"inline-view"
,"command-generator"
and"view"
entrypoint types
- Action panel now supports keyboard navigation
- All bundled plugins are merged into one
- It is now possible to update plugin using "Check for updates" button in settings
Bundled plugin
Applications
- Add Flatpak application support on Linux
- Fixed no applications being shown on macOS Sequoia (15)
- Fixed crash on macOS if macOS version only contains two segments, e.g.
15.0
vs15.0.1
- Fixed some applications not having icons on macOS
Calculator
- It is now possible to copy result of calculation using primary action and its shortcut
- After copying, popup is shown to indicate that the result was copied
- Updated
numbat
dependency to 1.14.0- Notable change: "Add lowercase aliases for currency units"
Plugin API
- Plugin permissions reworked
- BREAKING CHANGE: Plugin manifest property
permissions.ffi
removed- FFI in Deno is an unstable feature
- May be brought back in future
- BREAKING CHANGE: Plugin manifest property
permissions.high_resolution_time
removed- This is done in preparation for Deno update, newer versions of which removed this permission
- BREAKING CHANGE: Plugin manifest property
permissions.fs_read_access
renamed topermissions.filesystem.read
- BREAKING CHANGE: Plugin manifest property
permissions.fs_write_access
renamed topermissions.filesystem.write
- BREAKING CHANGE: Plugin manifest property
permissions.run_subprocess
has been split into 2 properties:permissions.exec.command
andpermissions.exec.executable
command
is for commands onPATH
, e.g."ls"
executable
is for absolute paths to binary, e.g."/usr/bin/ls"
- BREAKING CHANGE: Windows-style paths are not allowed in plugins that do not support Windows
- BREAKING CHANGE: Unix-style paths are not allowed in plugins that do not support Linux or macOS
- BREAKING CHANGE: Plugin manifest property
permissions.network
now can only contain domain and optionally port of URL - BREAKING CHANGE: Path permissions (
permissions.filesystem.read
,permissions.filesystem.write
andpermissions.exec.executable
) now can only contain absolute paths - Path permissions (
permissions.filesystem.read
,permissions.filesystem.write
andpermissions.exec.executable
) can now contain variables which will be replaced at plugin load time- Examples:
{linux:user-home}/.local/share
,{common:plugin-cache}/my-plugin-cache
- Variables can only be used at the beginning of the path
- List of currently available variables
{macos:user-home}
- Resolves to
$HOME
, i.e./Users/<username>
- Only available if plugin supports macOS
- Resolves to
{linux:user-home}
- Resolves to
$HOME
, i.e./home/<username>
- Only available if plugin supports Linux
- Resolves to
{windows:user-home}
- Resolves to
{FOLDERID_Profile}
, i.e.C:\Users\<username>
- Only available if plugin supports Windows
- Resolves to
{common:plugin-data}
- On Windows:
{FOLDERID_RoamingAppData}\Gauntlet\data\plugins\<plugin-uuid>
- On Linux:
$XDG_DATA_HOME/gauntlet/plugins/<plugin-uuid>
- On macOS:
$HOME/Library/Application Support/dev.project-gauntlet.gauntlet/plugins/<plugin-uuid>
- On Windows:
{common:plugin-cache}
- On Windows:
{FOLDERID_LocalAppData}\Gauntlet\cache\plugins\<plugin-uuid>
- On Linux:
$XDG_CACHE_HOME/gauntlet/plugins/<plugin-uuid>
- On macOS:
$HOME/Library/Application Support/dev.project-gauntlet.gauntlet/plugins/<plugin-uuid>
- On Windows:
- Examples:
- BREAKING CHANGE: Plugin manifest property
<Grid.Item/>
'stitle
property is now optional<Grid.Item/>
have a newaccessory
property, which provides an ability to specify text and/or icon under the grid cell<List.Item/>
have a newaccessories
property, which provides an ability to specify one or multiple text and/or icon items on the right side of list item- BREAKING CHANGE:
<Action>
'stitle
property renamed tolabel
- Added
entrypoint.icon
plugin manifest property that accepts path to image inside plugin'sassets
directory - Added
showHud
function that will create a simple popup window with text provided to that function
Theming API
- BREAKING CHANGE: Current color theme version increased to
3
- BREAKING CHANGE: Current everything theme version increased to
3
UI/UX Improvements
- Grid styling refined
- Inline view styling refined
- Plugin and entrypoint names of rendered inline view are now shown above that inline view
- Made color of text slightly more bright
- Focused (by keyboard navigation) and hovered (by hovering with mouse) search items now have distinct styling
- Slightly increased size of icons in main search view
- Plugin ID is now shown in sidebar in settings when plugin is selected
- "Remove plugin" button has been moved to the bottom of the sidebar in settings
- In settings required preferences that do not have value provided or do not have default value are now highlighted
- Names of keys of shortcuts were changed from all upper-case to first letter only upper-case
Fixes
- Fixed panic when trying to stop already stopped plugin
- Fixed crash on macOS if
openssl@v3
library is not installed - Fixed inline view still being shown after main view was closed and reopened
- Fixed download info panel in settings sometimes going outside of window size and being cut off
v9
Plugin API
- New React Hooks
usePromise
- Helper to run promises in a context of React view
- Returns
AsyncState
object which containsisLoading
,error
anddata
properties
useStorage
- Helper to store data between entrypoint, plugin and application runs
- Follows API similar to
useState
built-in React Hook - Uses
localStorage
internally
useCache
- Helper to store data between entrypoint runs but will be reset when plugin or application is restarted
- Follows API similar to
useState
built-in React Hook - Uses
sessionStorage
internally
useCachedPromise
- Helper to run promises with caching done automatically
- Follows
stale-while-revalidate
caching strategy - Uses
usePromise
anduseCache
Hooks internally
useFetch
- Helper to run
fetch()
with caching done automatically - Follows
stale-while-revalidate
caching strategy - Uses
useCachedPromise
Hook internally
- Helper to run
- Add
isLoading
property on<Detail/>
,<Form/>
,<Grid/>
and<List/>
- If passed
true
the loading indicator will be shown above view content
- If passed
- BREAKING CHANGE: To use
Clipboard
api, new permissionpermissions.clipboard
is required to be specified in plugin manifestpermissions.clipboard
manifest property accepts a list that can include one or multiple of"read"
,"write"
or"clear"
values
- BREAKING CHANGE: To use plugin entrypoint of type
inline-view
, new permissionpermissions.main_search_bar
is required to be specified in plugin manifestpermissions.main_search_bar
manifest property accepts a list that can include"read"
value
- BREAKING CHANGE: Plugin and Entrypoint Preference
name
properties in plugin manifest was split into 2 propertiespreferences.name
is split intopreferences.name
andpreferences.id
entrypoint.preferences.name
is split intoentrypoint.preferences.name
andentrypoint.preferences.id
- To preserve value set by user in settings please set the previous value of
name
toid
- BREAKING CHANGE: Replaced
onSelectionChange
andid
properties on<Grid/>
and<List/>
withonClick
on<Grid.Item/>
and<List.Item/>
UI/UX Improvements
- Added ALT + K (OPT + K on macOS) label to Action Panel button in bottom panel in plugin views
- Refined styling to accommodate this change
- BREAKING CHANGE: Current color theme version increased to
2
- BREAKING CHANGE: Current everything theme version increased to
2
Applications
plugin
- Add macOS System settings items like Sound, Network, etc
- Both pre- and post-Ventura macOS settings are supported
- Fixed macOS applications, that are nested more than one directory level deep in
Applications
directory, not being added
Calculator
plugin
- Updated
numbat
dependency to 1.13.0 - Enabled currency exchange rate module
Fixes
- Fix application crash when refreshing plugin via
npm run dev
from tools - Fix plugin runtime shutting down when exception is thrown inside a promise handler
v8
Plugin API
- Command Generator functions are no longer needlessly called after every entrypoint click in main window
Fixes
- Fixed crash on Arch Linux if using AMD GPU with Vulkan not setup properly
- Still if Vulkan is not setup properly it can result in low FPS when scrolling
- In some cases installing vulkan-radeon package resolves the FPS problem
- Alternatively setting
WGPU_BACKEND=gl
environment variable may also resolve the FPS problem
- Reduced minimal required version of macOS to 11 (Big Sur)
- Fix panic when spamming enable/disable plugin or entrypoint checkbox in settings
v7
Big things
- Bundling improvements
.dmg
file is now signed, notarized and stapled, removing the need for manual manipulations on.dmg
file to be able to install Gauntlet.msi
installer for Windows is now available.tar.gz
archive for Linux now contains defaultsystemd
service,.desktop
and.png
icon file
- Added system tray icon on Windows and macOS with ability to open main or settings window, see version or quit Gauntlet
- Local plugins now always use development React bundle for better error messages at the expense of performance.
General fixes
- Fix being unable to stop plugin in various situations including when there is unresolved pending promise
- Fix
generate-sample-theme
andgenerate-sample-color-theme
CLI commands failing if config folder doesn't exist - Fix console window popping up when starting Gauntlet on Windows
Applications
plugin
- On macOS and Linux, applications are now started detached from main process, fixing situations when other applications blocked Gauntlet from exiting
UI Improvements
- Action panel and download information panel in settings are now closed when clicking outside of panel on background
API changes
- Type of
GeneratedCommand
'sicon
field changed fromicon: ArrayBuffer | undefined
toicon?: ArrayBuffer
- Default function returned from
command
andcommand-generator
entrypoints can now beasync
v6
Big things
- Wayland support
- Requires LayerShell protocol
zwlr_layer_shell_v1
to be supported by window managerzwlr_layer_shell_v1
is implemented by most window managers with the exception of Gnome
- Global Shortcut on Wayland is not yet implemented, please use
gauntlet open
CLI command to open main window
- Requires LayerShell protocol
- Style changes
- Settings UI overhaul
- Slightly tweaked colors
- Changed text selection color to make text more visible
- Other minor style changes
- Theming support
- 2 types of themes
- Color only
- Everything: Color, paddings, borders, etc
- Theming is only applied to main window
- Versioned
- Because of internally invasive nature of the themes, it is perpetually unstable feature.
Themes are versioned and only one version is supported at the same time by application, the theme will stop working as soon as version is incremented- This may change in the future
- Because of internally invasive nature of the themes, it is perpetually unstable feature.
- See THEME.md for details
- 2 types of themes
- It is now possible to change global shortcut for opening main window in settings
- Plugin shortcuts are now matched based on physical keycode, which means shortcuts now work regardless of selected keyboard layout
- It is now possible to show/hide action panel using ALT + K on Windows and Linux or OPT + K on macOS
- At the moment it is not possible to change this shortcut to different keys
- BREAKING CHANGE: Implemented actual validation of
supported_system
plugin manifest property.- If OS was not specified in
supported_system
plugin manifest property, plugin will stop loading on that OS unless plugin is cross-platform (it doesn't haveenvironment
,ffi
,fs_read_access
,fs_write_access
,run_subprocess
orsystem
permission)
- If OS was not specified in
Plugin Development
- Local plugin stdout
console.log
and stderrconsole.error
logs are now saved to file to be able to show them in tools dev server CLI - Added
windows
andmacos
values to plugins manifestsupported_system
property - BREAKING CHANGE: For local development plugins,
dist
suffix is now automatically added to plugin ID. Please update@project-gauntlet/tools
to0.6.0
- BREAKING CHANGE: Image source properties how accept path to asset, url or icon instead of byte array
- Url source at the moment is not cached, so the image is downloaded every time the view is opened
Applications
plugin
- On Linux
.desktop
files are now opened usinggtk-launch
instead of custom implementation, fixing several edge cases
UI Improvements and Fixes
- Main window list is now scrolled automatically when using keyboard navigation to keep focused item visible
- Better feedback about in-progress/failed/successful plugin downloads with information about errors in settings
General fixes
- Fix plugin toggle button to hide/show entrypoints in settings not doing anything
- Fix settings app being always on top of other windows on macOS
Internal Improvements
- Removed the need to have
42321
TCP port- Note: port
42320
is still being used
- Note: port
v5
Big things
- Style overhaul
- Window no longer changes the size in subviews. Default window size is a little bigger
- BREAKING CHANGE: Rename
management
cli option tosettings
- Add error message for settings view when unable to connect to server
Fixes
- Fix Gauntlet crash on startup on Linux
- Built-in plugins no longer re-enable themselves after restart
v4
Fixes
- Fix Gauntlet crash on startup on macOS
- Fix Gauntlet crash on startup if there is no enabled plugins
v3
Big things
- macOS support
.dmg
file is now available- Implement Applications Plugin on macOS
- Implement auto-launch on startup
- Search improvements
- Use Frecency-based sorting
- Use substring matching instead of prefix matching
- Multiple (space-separated) word queries now return intersection of results instead of union
- Startup was reworked again
- BREAKING CHANGE: Server is now started with plain
gauntlet
command instead ofgauntlet server
CLI option - When executing the binary, if server is already running, GUI will be opened
- Added
--minimized
flag to start server without opening the GUI - Frontend is now in the same process as server
- BREAKING CHANGE: Server is now started with plain
- Main view search results are now refreshed if the plugin changed search index while the view was opened
Work-in-progress Windows support
- Fix build on Windows
- Implemented auto-launch on Windows
- Use ALT + SPACE global shortcut on Windows to open main window
APIs changes
- Implemented Clipboard API
text/plain
andimage/png
are supported types of clipboards
- Remove
Detail
children component ofGrid
from TypeScript typings. It never worked
UI Improvements and Fixes
- Slightly better styling of
EmptyView
component - Remove vertical separator line in Details view when there is no Content
General fixes
- Fix panic when global shortcut functionality is not available
- Fix React warning about required
key
property whenActionPanel
component is used - Fix useEffect destructors not being called when view is closed
Internal Improvements
- Preparation for documentation web page
- Screenshot generation tool to generate screenshots for showing how UI looks for specific TS code
- Preparation for theming support