diff --git a/CHANGELOG.md b/CHANGELOG.md index 27a44dbf..e0f49913 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,95 @@ For changes in `@project-gauntlet/tools` see [separate CHANGELOG.md](https://git ## [Unreleased] +### General +- Window Tracking + - Gauntlet now tracks opened windows and assigns them to specific application entry in results + - If application has window open, primary action now instead focuses the window, or if there are multiple opens view which contains list of windows that can be focused + - If application has window open, it is still possible to open new application instance by using separate new action + - It is experimental, and it is possible to disable window tracking by unchecking checkbox in Application entrypoint preferences in Settings UI + - Currently supported on + - Linux X11 + - wlroots-based window managers + - Hyprland + - Cosmic +- Added "Show all opened windows" entrypoint to bundled plugin +- Application plugin is now implemented on Windows +- macOS native-like dark and light mode themes are now available +- On macOS theme is now auto-selected based on system theme +- On macOS window can now be dragged to change its position + - Window position is saved and will be used after restart +- Binary side has been reduced by around 40% (contributed by @davfsa) +- Added `main_window.close_on_unfocus` boolean option to config file to disable "close on unfocus" functionality of main window + - Intended to be used when using "window focus follows mouse" functionality of OS, Desktop Environment or Window Manager +- Added option in Settings UI to choose were main window appears when opening it + - Current options + - `Static` + - Window always opens in the same location (on macOS location can be changed by dragging the window) + - `Active Monitor` + - Windows opens on monitor which has currently focused window + - Currently supported only on macOS + +### Theming +- Themes have been reworked + - Removed complex themes + - Removed theme versioning + - Removed sample generation commands + - Themes are now defined in TOML format + - Theme file is located in config directory (varies based on OS) with name `theme.toml` + - Format of theme file has been reworked, see bundled themes for examples +- 3 bundled themes are now available: [Bundled themes](./bundled_themes) + - Legacy (previous default theme) + - macOS Light + - macOS Dark +- It is possible to change theme in Settings UI + - By default, theme is auto-detected to use one of the bundled ones + - Setting is locked if theme config file exists + +### Plugins +- Entrypoint Generator improvements + - **BREAKING CHANGE**: Renamed `"command-generator"` entrypoint type into `"entrypoint-generator"`, as well as all types related to it + - **BREAKING CHANGE**: Removed `GeneratedEntrypoint`'s `fn: () => void` + - `actions: GeneratedEntrypointAction[]` field now is required to have at least one element + - It is now possible to specify label displayed on bottom row panel for primary action + - **BREAKING CHANGE**: Renamed `GeneratedEntrypointAction`'s `fn` field into `run` + - It is now possible to have `GeneratedEntrypointAction` which opens view instead of running command by specifying `view` field with value of React `FC` type instead of `run` + - Renamed `GeneratorProps` to `GeneratorContext` + - Added `pluginPreferences` and `entrypointPreferences` properties to `GeneratorContext` to access preferences from Entrypoint Generator + - Added `get: (id: string) => GeneratedEntrypoint | undefined` function to `GeneratorContext` to get added entrypoint + - Added `getAll: () => GeneratedEntrypoint[]` function to `GeneratorContext` to get all added entrypoints + - Generated Entrypoints can now have accessories similar to `` component +- Removed `pluginPreferences` and `entrypointPreferences` +- Add `usePluginPreferences` and `useEntrypointPreferences` React Hooks +- Unified primary and secondary action execution in `` and `` + - **BREAKING CHANGE**: Removed `onClick` property on `` and `` components + - **BREAKING CHANGE**: `` and `` now has how `id: string` required property + - If primary or secondary action is executed when `` and `` is focused, `onAction` handler first parameter will be value of `id` prop of focused item +- Added `onItemFocusChange?: (itemId: string | undefined) => void` property on `` and ``. Function is called when focused item changes +- **BREAKING CHANGE**: Renamed `Image` type to `ImageLike` to avoid conflict with `` component +- When entrypoint is enabled/disabled or preference value is changed whole plugin runtime is restarted instead of just reloading the search index +- It is now possible to control whether the action closes main window by returning `{ close: true }` object from `onAction` property function + - For `` view and commands (including generated commands) action always closes window without possibility to keep it open +- Improved rejected promise error log + +### UI/UX Improvements +- On macOS main window now uses native window decorations +- Show name of generator entrypoint near plugin name of entrypoints generated by it in main view search results +- Improved styling of action panel popup + - Tweaked padding between sections + - Added shadow around it +- Tweak height of `` to be slightly taller +- Values of fields in `` are now positioned on the same row as labels + +### Fixes +- Fixed one thread having close to 100% CPU usage while main window is hidden +- Fixed icons in main search view sometimes not loading when window is opened or disappearing after scrolling +- Fixed commands in `permissions.exec.command` in Plugin Manifest not being resolved properly +- Fixed zombie processes being left over after plugin runtime is stopped +- Fixed `npm run dev` failing to reload in some cases +- Fixed `` not displaying the image +- Fixed image in `` being too big so labels are not shown +- Fixed action not being run if `` or `` view has focused `` + ## [12] - 2024-12-22 ### General @@ -54,7 +143,7 @@ For changes in `@project-gauntlet/tools` see [separate CHANGELOG.md](https://git ### Plugin API - Added `` component in `` and `` 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 entrypoint generator function has finished running + - 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` and `remove: (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