mirror of
https://github.com/project-gauntlet/gauntlet.git
synced 2025-12-23 10:35:53 +00:00
16 KiB
16 KiB
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project doesn't adhere to Semantic Versioning, see Versioning
For changes in @project-gauntlet/tools see separate CHANGELOG.md
[Unreleased]
[9] - 2024-09-15
Plugin API
- New React Hooks
usePromise- Helper to run promises in a context of React view
- Returns
AsyncStateobject which containsisLoading,erroranddataproperties
useStorage- Helper to store data between entrypoint, plugin and application runs
- Follows API similar to
useStatebuilt-in React Hook - Uses
localStorageinternally
useCache- Helper to store data between entrypoint runs but will be reset when plugin or application is restarted
- Follows API similar to
useStatebuilt-in React Hook - Uses
sessionStorageinternally
useCachedPromise- Helper to run promises with caching done automatically
- Follows
stale-while-revalidatecaching strategy - Uses
usePromiseanduseCacheHooks internally
useFetch- Helper to run
fetch()with caching done automatically - Follows
stale-while-revalidatecaching strategy - Uses
useCachedPromiseHook internally
- Helper to run
- Add
isLoadingproperty on<Detail/>,<Form/>,<Grid/>and<List/>- If passed
truethe loading indicator will be shown above view content
- If passed
- BREAKING CHANGE: To use
Clipboardapi, new permissionpermissions.clipboardis required to be specified in plugin manifestpermissions.clipboardmanifest 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_baris required to be specified in plugin manifestpermissions.main_search_barmanifest property accepts a list that can include"read"value
- BREAKING CHANGE: Plugin and Entrypoint Preference
nameproperties in plugin manifest was split into 2 propertiespreferences.nameis split intopreferences.nameandpreferences.identrypoint.preferences.nameis split intoentrypoint.preferences.nameandentrypoint.preferences.id- To preserve value set by user in settings please set the previous value of
nametoid
- BREAKING CHANGE: Replaced
onSelectionChangeandidproperties on<Grid/>and<List/>withonClickon<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 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
Applicationsdirectory, not being added
Calculator plugin
- Updated
numbatdependency to 1.13.0 - Enabled currency exchange rate module
Fixes
- Fix application crash when refreshing plugin via
npm run devfrom tools - Fix plugin runtime shutting down when exception is thrown inside a promise handler
[8] - 2024-09-07
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=glenvironment 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
[7] - 2024-08-30
Big things
- Bundling improvements
.dmgfile is now signed, notarized and stapled, removing the need for manual manipulations on.dmgfile to be able to install Gauntlet.msiinstaller for Windows is now available.tar.gzarchive for Linux now contains defaultsystemdservice,.desktopand.pngicon 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-themeandgenerate-sample-color-themeCLI 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'siconfield changed fromicon: ArrayBuffer | undefinedtoicon?: ArrayBuffer - Default function returned from
commandandcommand-generatorentrypoints can now beasync
[6] - 2024-08-04
Big things
- Wayland support
- Requires LayerShell protocol
zwlr_layer_shell_v1to be supported by window managerzwlr_layer_shell_v1is implemented by most window managers with the exception of Gnome
- Global Shortcut on Wayland is not yet implemented, please use
gauntlet openCLI 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.
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
- 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_systemplugin manifest property.- If OS was not specified in
supported_systemplugin 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_subprocessorsystempermission)
- If OS was not specified in
Plugin Development
- Local plugin stdout
console.logand stderrconsole.errorlogs are now saved to file to be able to show them in tools dev server CLI - Added
windowsandmacosvalues to plugins manifestsupported_systemproperty - BREAKING CHANGE: For local development plugins,
distsuffix is now automatically added to plugin ID. Please update@project-gauntlet/toolsto0.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
.desktopfiles are now opened usinggtk-launchinstead 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
42321TCP port- Note: port
42320is still being used
- Note: port
[5] - 2024-07-07
Big things
- Style overhaul
- Window no longer changes the size in subviews. Default window size is a little bigger
- BREAKING CHANGE: Rename
managementcli 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
[4] - 2024-06-20
Fixes
- Fix Gauntlet crash on startup on macOS
- Fix Gauntlet crash on startup if there is no enabled plugins
[3] - 2024-06-16
Big things
- macOS support
.dmgfile 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
gauntletcommand instead ofgauntlet serverCLI option - When executing the binary, if server is already running, GUI will be opened
- Added
--minimizedflag 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/plainandimage/pngare supported types of clipboards
- Remove
Detailchildren component ofGridfrom TypeScript typings. It never worked
UI Improvements and Fixes
- Slightly better styling of
EmptyViewcomponent - 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
keyproperty whenActionPanelcomponent 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
[2] - 2024-04-30
Big changes
- BREAKING CHANGE: Instead of separate binary for "frontend", frontend is now started by server in separate process on initial application launch
- Global shortcut is available to show the application window. Currently, hardcoded to META + SPACE
- In case window manager or underlying library we use doesn't support global shortcuts,
gauntlet opencommand is also now available - Unfortunately had to remove Wayland support for now, because GUI library we use, on Wayland doesn't support hiding/showing windows as well as setting window to be top-level
- BREAKING CHANGE: Inter-process communication protocol has been changed from
DBustogRPC- To be able to support macOS and Windows easier in near future
- Currently, 2 TCP ports are used and hardcoded to be
42320and42321
- BREAKING CHANGE: Plugins and plugin entrypoints now require description to be specified in plugin manifest
gauntlet.descriptionandentrypoint.*.descriptionkeys are now required- Currently, only shown in Settings
- Actions can now be executed also using shortcuts
- Shortcuts for specific entrypoint need to be specified in plugin manifest
- Plugins are allowed to use only limited set of keys for shortcuts
- Only upper and lower-case letters, symbols and numbers
- Shortcut can have either
"main"or"alternative"kind"main"shortcut requires following modifiers- Windows and Linux: CTRL
- macOS: CMD
"alternative"shortcut requires following modifiers- Windows and Linux: ALT
- macOS: OPT
- Whether SHIFT is also required depends on character specified for shortcut, e.g
$will require SHIFT to be pressed, while4will not
- 3 new bundled plugins
Applications- Collects and shows list of applications from systems as
"command"entrypoints - "Gauntlet Application Launcher can now launch applications" :)
- Currently, only works on Linux
- Collects
.desktopfiles based on Desktop Entry Specification
- Collects
- Collects and shows list of applications from systems as
Calculator- Shows result of mathematical operations directly in main view under the search bar
- Powered by Numbat
Settings- Allows to open Gauntlet Settings from the Gauntlet itself
- Production React bundle is now used instead of Development bundle
- Better performance
- Worse error reporting
- Main window now has keyboard navigation
- It is now possible to remove plugins in Settings
- Plugin Entrypoints can now have icons
- Linux binary is now published inside
.tar.gzfile
API changes
- BREAKING CHANGE:
"command"entrypoint now expects function as default export instead of plain JS file - BREAKING CHANGE: Removed
<Content.Link>React Component<Content>is now expected to only contain non-interactive elements because of usage in<Inline>and<Grid.Item>
- BREAKING CHANGE:
<MetadataIcon>iconproperty type was changed to enum and renders to proper image of limited set of icons - New
<List>and<Grid>top-level React Components - New
"inline-view"entrypoint type- A view is rendered directly under main view search bar
- Default export is expected to be a React Component that takes
textstring with current value of main search bar as single property - Child component is expected to be of type
<Inline> - Used to implement built-in
Calculatorplugin but also available for any plugins to use
- New
"command-generator"entrypoint type- Allows plugins to provide dynamically generated list of
"command"entrypoints - Used to implement built-in
Applicationsplugin but also available for any plugins to use
- Allows plugins to provide dynamically generated list of
- New
useNavigationReact Hook. Simple stack based navigation in plugins - Plugins and plugin entrypoints can now have preferences
- Need to be declared in plugin manifest
- Values can be set either on first plugin/entrypoint usage (if preference is required) or in Settings
pluginPreferencesandentrypointPreferenceshelper functions to retrieve values
- Plugins now have ability to provide assets in
assetsdirectory which later can be retrieved in JS using newassetDatahelper function - Add
"title"property toCheckboxReact Component- It is shown to the right of the checkbox in forms
<Image>is now properly implemented and hassourceprop of typeImageSourcewhich is object that contains image binary data
UI/UX Improvements and Fixes
- Application window is now always show on top of all other windows
- Application now requests focus when the window is opened
- Application window is now re-centered when opening any plugin-rendered view
- Needed because plugin-rendered views make window bigger causing it to be not centered
- Show error in GUI when React rendering fails either because of plugin or Gauntlet itself
- Text now flows and wraps properly if multiple separate strings were passed as children parameter to
<Paragraph>React Component - Entrypoint name is now shown at the bottom of every plugin-rendered view
- Clicking on
<Detail.Metadata.Link>now properly opens links in your default browser - Plugin name in main view has been moved to the right side of the window
[1] - 2024-02-03
Added
- Initial release.