Skip to content

Commit f6e3748

Browse files
committed
Update CHANGELOG.md, README.md and THEME.md
1 parent 6ea9748 commit f6e3748

File tree

3 files changed

+152
-51
lines changed

3 files changed

+152
-51
lines changed

CHANGELOG.md

Lines changed: 94 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,99 @@ and this project doesn't adhere to Semantic Versioning, see [Versioning](./READM
88
For changes in `@project-gauntlet/tools` see [separate CHANGELOG.md](https://github.com/project-gauntlet/tools/blob/main/CHANGELOG.md)
99

1010
## [Unreleased]
11+
### General
12+
- Main view now has action bar and action panel
13+
- Action bar displays current primary action depending on focused result item
14+
- <kbd>ALT</kbd> + <kbd>K</kbd> (<kbd>OPT</kbd> + <kbd>K</kbd> on macOS) is available to open action panel
15+
- Content of action panel can be defined by plugins
16+
- `"inline-view"` and `"command-generator"` entrypoint types can now specify custom actions on main view
17+
- Plugin can also provide shortcut that will be available depending on focused result item without opening the action panel
18+
- Primary and secondary actions
19+
- First action in action panel is now considered primary and can be run using <kbd>ENTER</kbd> without opening action panel
20+
- Second action in action panel is now considered secondary and can be run using <kbd>SHIFT</kbd> + <kbd>ENTER</kbd> without opening action panel
21+
- Works for all places that can define actions: `"inline-view"`, `"command-generator"` and `"view"` entrypoint types
22+
- Action panel now supports keyboard navigation
23+
- All bundled plugins are merged into one
24+
- It is now possible to update plugin using "Check for updates" button in settings
25+
26+
### Bundled plugin
27+
#### `Applications`
28+
- Add Flatpak application support on Linux
29+
- Fixed no applications being shown on macOS Sequoia (15)
30+
- Fixed crash on macOS if macOS version only contains two segments, e.g. `15.0` vs `15.0.1`
31+
- Fixed some applications not having icons on macOS
32+
33+
#### `Calculator`
34+
- It is now possible to copy result of calculation using primary action and its shortcut
35+
- After copying, popup is shown to indicate that the result was copied
36+
- Updated `numbat` dependency to [1.14.0](https://github.com/sharkdp/numbat/releases/tag/v1.14.0)
37+
- Notable change: "Add lowercase aliases for currency units"
38+
39+
### Plugin API
40+
- Plugin permissions reworked
41+
- **BREAKING CHANGE**: Plugin manifest property `permissions.ffi` removed
42+
- FFI in Deno is an unstable feature
43+
- May be brought back in future
44+
- **BREAKING CHANGE**: Plugin manifest property `permissions.high_resolution_time` removed
45+
- This is done in preparation for Deno update, newer versions of which removed this permission
46+
- **BREAKING CHANGE**: Plugin manifest property `permissions.fs_read_access` renamed to `permissions.filesystem.read`
47+
- **BREAKING CHANGE**: Plugin manifest property `permissions.fs_write_access` renamed to `permissions.filesystem.write`
48+
- **BREAKING CHANGE**: Plugin manifest property `permissions.run_subprocess` has been split into 2 properties: `permissions.exec.command` and `permissions.exec.executable`
49+
- `command` is for commands on `PATH`, e.g. `"ls"`
50+
- `executable` is for absolute paths to binary, e.g. `"/usr/bin/ls"`
51+
- **BREAKING CHANGE**: Windows-style paths are not allowed in plugins that do not support Windows
52+
- **BREAKING CHANGE**: Unix-style paths are not allowed in plugins that do not support Linux or macOS
53+
- **BREAKING CHANGE**: Plugin manifest property `permissions.network` now can only contain domain and optionally port of URL
54+
- **BREAKING CHANGE**: Path permissions (`permissions.filesystem.read`, `permissions.filesystem.write` and `permissions.exec.executable`) now can only contain absolute paths
55+
- Path permissions (`permissions.filesystem.read`, `permissions.filesystem.write` and `permissions.exec.executable`) can now contain variables which will be replaced at plugin load time
56+
- Examples: `{linux:user-home}/.local/share`, `{common:plugin-cache}/my-plugin-cache`
57+
- Variables can only be used at the beginning of the path
58+
- List of currently available variables
59+
- `{macos:user-home}`
60+
- Resolves to `$HOME`, i.e. `/Users/<username>`
61+
- Only available if plugin supports macOS
62+
- `{linux:user-home}`
63+
- Resolves to `$HOME`, i.e. `/home/<username>`
64+
- Only available if plugin supports Linux
65+
- `{windows:user-home}`
66+
- Resolves to `{FOLDERID_Profile}`, i.e. `C:\Users\<username>`
67+
- Only available if plugin supports Windows
68+
- `{common:plugin-data}`
69+
- On Windows: `{FOLDERID_RoamingAppData}\Gauntlet\data\plugins\<plugin-uuid>`
70+
- On Linux: `$XDG_DATA_HOME/gauntlet/plugins/<plugin-uuid>`
71+
- On macOS: `$HOME/Library/Application Support/dev.project-gauntlet.gauntlet/plugins/<plugin-uuid>`
72+
- `{common:plugin-cache}`
73+
- On Windows: `{FOLDERID_LocalAppData}\Gauntlet\cache\plugins\<plugin-uuid>`
74+
- On Linux: `$XDG_CACHE_HOME/gauntlet/plugins/<plugin-uuid>`
75+
- On macOS: `$HOME/Library/Application Support/dev.project-gauntlet.gauntlet/plugins/<plugin-uuid>`
76+
- `<Grid.Item/>`'s `title` property is now optional
77+
- `<Grid.Item/>` have a new `accessory` property, which provides an ability to specify text and/or icon under the grid cell
78+
- `<List.Item/>` have a new `accessories` property, which provides an ability to specify one or multiple text and/or icon items on the right side of list item
79+
- **BREAKING CHANGE**: `<Action>`'s `title` property renamed to `label`
80+
- Added `entrypoint.icon` plugin manifest property that accepts path to image inside plugin's `assets` directory
81+
- Added `showHud` function that will create a simple popup window with text provided to that function
82+
83+
### Theming API
84+
- **BREAKING CHANGE**: Current color theme version increased to `3`
85+
- **BREAKING CHANGE**: Current everything theme version increased to `3`
86+
87+
### UI/UX Improvements
88+
- Grid styling refined
89+
- Inline view styling refined
90+
- Plugin and entrypoint names of rendered inline view are now shown above that inline view
91+
- Made color of text slightly more bright
92+
- Focused (by keyboard navigation) and hovered (by hovering with mouse) search items now have distinct styling
93+
- Slightly increased size of icons in main search view
94+
- Plugin ID is now shown in sidebar in settings when plugin is selected
95+
- "Remove plugin" button has been moved to the bottom of the sidebar in settings
96+
- In settings required preferences that do not have value provided or do not have default value are now highlighted
97+
- Names of keys of shortcuts were changed from all upper-case to first letter only upper-case
98+
99+
### Fixes
100+
- Fixed panic when trying to stop already stopped plugin
101+
- Fixed crash on macOS if `openssl@v3` library is not installed
102+
- Fixed inline view still being shown after main view was closed and reopened
103+
- Fixed download info panel in settings sometimes going outside of window size and being cut off
11104

12105
## [9] - 2024-09-15
13106

@@ -49,7 +142,7 @@ For changes in `@project-gauntlet/tools` see [separate CHANGELOG.md](https://git
49142
- Refined styling to accommodate this change
50143
- **BREAKING CHANGE**: Current color theme version increased to `2`
51144
- **BREAKING CHANGE**: Current everything theme version increased to `2`
52-
145+
53146
### `Applications` plugin
54147
- Add macOS System settings items like Sound, Network, etc
55148
- Both pre- and post-Ventura macOS settings are supported

README.md

Lines changed: 56 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,16 @@ https://github.com/user-attachments/assets/19964ed6-9cd9-48d4-9835-6be04de14b66
2323
- Dynamically provide list of one-shot commands
2424
- Render quick "inline" content directly under main search bar based on value in it
2525
- Get content from and add to Clipboard
26-
- Currently, 3 bundled plugins are provided
27-
- Applications: provides list of applications
28-
- Calculator: shows result of mathematical operations directly under main search bar
29-
- Powered by [Numbat](https://github.com/sharkdp/numbat)
30-
- Settings: open Gauntlet Settings from Gauntlet itself
3126
- Plugins are distributed as separate branch in Git repository, meaning plugin distribution doesn't need any central
3227
server
3328
- Plugins IDs are just Git Repository URLs
29+
- Built-in functionality is provided by bundled plugin
30+
- Applications: shows applications installed on the system in search results
31+
- Calculator: shows result of mathematical operations directly under main search bar
32+
- Includes converting currency using exchange rates
33+
- Powered by [Numbat](https://github.com/sharkdp/numbat)
34+
- Settings: open Gauntlet Settings
35+
- More to come, see [#15](https://github.com/project-gauntlet/gauntlet/issues/15)
3436
- [React](https://github.com/facebook/react)-based UI for plugins
3537
- Implemented using custom React Reconciler (no Electron)
3638
- [iced-rs](https://github.com/iced-rs/iced) is used for UI
@@ -41,12 +43,13 @@ https://github.com/user-attachments/assets/19964ed6-9cd9-48d4-9835-6be04de14b66
4143
- Frecency-based search result ordering
4244
- Frecency is a combination of frequency and recency
4345
- More often the item is used the higher in the result list it will be, but items used a lot in the past will be ranked lower than items used the same amount of times recently
46+
- Currently, there is no fuzzy matching. Results are matched per word by substring
4447
- Designed with cross-platform in mind
4548
- Permissions
4649
- By default, plugins do not have access to host system
47-
- If plugin asked for access to filesystem, env variables, FFI or running commands, it is required to specify
50+
- If plugin asked for access to filesystem, env variables or running commands, it is required to specify
4851
which operating systems it supports.
49-
- If plugin doesn't use filesystem, env variables, ffi or running commands and just uses network and/or UI, it
52+
- If plugin doesn't use filesystem, env variables or running commands and just uses network and/or UI, it
5053
is cross-platform
5154
- Shortcuts
5255
- Plugins are allowed to use only limited set of keys for shortcuts to support widest possible range of keyboards
@@ -67,30 +70,25 @@ https://github.com/user-attachments/assets/19964ed6-9cd9-48d4-9835-6be04de14b66
6770
- Both X11 and Wayland (via LayerShell protocol) are supported
6871
- <img src="https://cdn.jsdelivr.net/gh/simple-icons/simple-icons@develop/icons/apple.svg" width="18" height="18" /> macOS
6972
- <img src="https://img.icons8.com/windows/32/windows-11.png" width="18" height="18" /> Windows
70-
- built-in "Applications" plugin is not yet implemented. See [#9](https://github.com/project-gauntlet/gauntlet/issues/9)
73+
- Bundled "Applications" plugin is not yet implemented. See [#9](https://github.com/project-gauntlet/gauntlet/issues/9)
7174

72-
##### UI
75+
##### Planned features
7376

74-
###### Implemented
77+
- See [#13](https://github.com/project-gauntlet/gauntlet/issues/13)
78+
- See [#15](https://github.com/project-gauntlet/gauntlet/issues/15)
79+
- See [#16](https://github.com/project-gauntlet/gauntlet/issues/16)
7580

76-
- Detail
77-
- Form
78-
- Action Panel
79-
- List
80-
- Grid
81-
- Inline
82-
- View directly under main search bar
83-
- Requires separate permission to be explicitly specified in manifest because it reads everything user enters in main search bar
84-
- Settings window
85-
- Action Shortcuts
86-
- Theming
87-
88-
###### Planned
89-
90-
See [#13](https://github.com/project-gauntlet/gauntlet/issues/13)
91-
92-
##### APIs
81+
##### Plugin APIs
9382

83+
- UI
84+
- Detail
85+
- Form
86+
- Action Panel
87+
- List
88+
- Grid
89+
- Inline
90+
- View directly under main search bar
91+
- Requires separate permission to be explicitly specified in manifest because it reads everything user enters in main search bar
9492
- Stack-based Navigation
9593
- Assets
9694
- Files placed into `assets` directory in root of plugin repository are accessible at plugin runtime using `assetData` function
@@ -99,6 +97,9 @@ See [#13](https://github.com/project-gauntlet/gauntlet/issues/13)
9997
- Clipboard
10098
- Accessible via `Clipboard` api
10199
- Requires separate permission to be explicitly specified in manifest
100+
- HUD
101+
- Shows small popup window with feedback information
102+
- Accessible via `showHud` function
102103
- React Helper Hooks
103104
- `usePromise`
104105
- Helper to run promises in a context of React view
@@ -120,10 +121,6 @@ See [#13](https://github.com/project-gauntlet/gauntlet/issues/13)
120121
- Follows `stale-while-revalidate` caching strategy
121122
- Uses `useCachedPromise` Hook internally
122123

123-
###### Planned
124-
125-
See [#13](https://github.com/project-gauntlet/gauntlet/issues/13)
126-
127124
## Getting Started
128125

129126
### Create your own plugin
@@ -260,15 +257,33 @@ path = 'src/inline-view.tsx'
260257
type = 'inline-view'
261258
description = 'Some entrypoint description' # required
262259

263-
[permissions] # For allowed values see: https://docs.deno.com/runtime/manual/basics/permissions
264-
environment = ["ENV_VAR_NAME"] # array of strings, if specified requires supported_system to be specified as well
265-
high_resolution_time = false # boolean
266-
network = ["github.com"] # array of strings
267-
ffi = ["path/to/dynamic/lib"] # array of strings, if specified requires supported_system to be specified as well
268-
fs_read_access = ["path/to/something"] # array of strings, if specified requires supported_system to be specified as well
269-
fs_write_access = ["path/to/something"] # array of strings, if specified requires supported_system to be specified as well
270-
run_subprocess = ["program"] # array of strings, if specified requires supported_system to be specified as well
271-
system = ["apiName"] # array of strings, if specified requires supported_system to be specified as well
260+
[permissions]
261+
network = ["github.com", "example.com:8833"]
262+
clipboard = ["read", "write", "clear"]
263+
main_search_bar = ["read"]
264+
265+
# if specified requires supported_system to be specified as well
266+
environment = ["ENV_VAR_NAME"]
267+
268+
# if specified requires supported_system to be specified as well
269+
system = ["apiName"]
270+
271+
# if specified requires supported_system to be specified as well
272+
[permissions.filesystem]
273+
read = [
274+
"C:\\ProgramFiles\\test",
275+
"C:/ProgramFiles/test",
276+
"{windows:user-home}\\test",
277+
"{windows:user-home}/test",
278+
"{linux:user-home}/test",
279+
"/etc/test"
280+
]
281+
write = ["/home/exidex/.test"]
282+
283+
# if specified requires supported_system to be specified as well
284+
[permissions.exec]
285+
command = ["ls"]
286+
executable = ["/usr/bin/ls"]
272287

273288
[[supported_system]]
274289
os = 'linux' # 'linux', 'windows' or 'macos'
@@ -319,7 +334,7 @@ Server is an application that exposes gRPC server.
319334
All plugins run on server.
320335
Each plugin in its own sandboxed Deno Worker.
321336
In plugin manifest it is possible to configure permissions which will allow plugin to have access to filesystem,
322-
network, environment variables, ffi or subprocess execution.
337+
network, environment variables or subprocess execution.
323338
Server saves plugins themselves and state of plugins into SQLite database.
324339

325340
Frontend is GUI module that uses [iced-rs](https://github.com/iced-rs/iced) as a GUI framework. It is run in the same process as a server.
@@ -346,13 +361,6 @@ Plugins (or rather its compiled state: manifest, js code and assets) are distrib
346361
Which means there is no one central place required for plugin distribution.
347362
And to install plugin all you need is Git repository url.
348363

349-
Application defines set of React components to use for plugins.
350-
Creating and validating components involves some boilerplate.
351-
Component model was created for help manage is.
352-
It is essentially a json file which defines what components exist, what properties and event handler they have.
353-
This file is then used
354-
to generate TypeScript typings for `@project-gauntlet/api` and Rust validation code for server and frontend.
355-
356364
## Application packaging for Linux
357365

358366
This section contains a list of things

docs/THEME.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ theme will stop working until it is updated.
1313
This may change in the future
1414

1515
Current theme version:
16-
- Color: `2`
17-
- Everything: `2`
16+
- Color: `3`
17+
- Everything: `3`
1818

1919
Theming is only applied to main window and doesn't affect settings
2020

0 commit comments

Comments
 (0)