Skip to content

Commit

Permalink
Update CHANGELOG.md, README.md and THEME.md
Browse files Browse the repository at this point in the history
  • Loading branch information
Exidex committed Sep 15, 2024
1 parent 0caea4f commit ba86afa
Show file tree
Hide file tree
Showing 3 changed files with 85 additions and 14 deletions.
52 changes: 52 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,58 @@ For changes in `@project-gauntlet/tools` see [separate CHANGELOG.md](https://git

## [Unreleased]

### Plugin API
- New React Hooks
- `usePromise`
- Helper to run promises in a context of React view
- Returns `AsyncState` object which contains `isLoading`, `error` and `data` 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` and `useCache` Hooks internally
- `useFetch`
- Helper to run `fetch()` with caching done automatically
- Follows `stale-while-revalidate` caching strategy
- Uses `useCachedPromise` Hook internally
- Add `isLoading` property on `<Detail/>`, `<Form/>`, `<Grid/>` and `<List/>`
- If passed `true` the loading indicator will be shown above view content
- **BREAKING CHANGE**: To use `Clipboard` api, new permission `permissions.clipboard` is required to be specified in plugin manifest
- `permissions.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 permission `permissions.main_search_bar` is required to be specified in plugin manifest
- `permissions.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 properties
- `preferences.name` is split into `preferences.name` and `preferences.id`
- `entrypoint.preferences.name` is split into `entrypoint.preferences.name` and `entrypoint.preferences.id`
- To preserve value set by user in settings please set the previous value of `name` to `id`
- **BREAKING CHANGE**: Replaced `onSelectionChange` and `id` properties on `<Grid/>` and `<List/>` with `onClick` on `<Grid.Item/>` and `<List.Item/>`

### UI/UX Improvements
- Added <kbd>ALT</kbd> + <kbd>K</kbd> (<kbd>OPT</kbd> + <kbd>K</kbd> 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 `Applications` directory, not being added

### `Calculator` plugin
- Updated `numbat` dependency to [1.13.0](https://github.com/sharkdp/numbat/releases/tag/v1.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

## [8] - 2024-09-07

### Plugin API
Expand Down
43 changes: 31 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,6 @@ https://github.com/user-attachments/assets/1aa790dc-fce9-4ac5-97d8-3b81b83acf2e

##### OS Support

###### Implemented

- <img src="https://cdn.jsdelivr.net/gh/simple-icons/simple-icons@develop/icons/linux.svg" width="18" height="18" /> Linux
- Both X11 and Wayland (via LayerShell protocol) are supported
- <img src="https://cdn.jsdelivr.net/gh/simple-icons/simple-icons@develop/icons/apple.svg" width="18" height="18" /> macOS
Expand All @@ -79,25 +77,47 @@ https://github.com/user-attachments/assets/1aa790dc-fce9-4ac5-97d8-3b81b83acf2e
- Action Panel
- List
- Grid
- Separate settings window
- Stack-based Navigation
- Inline
- View directly under main search bar
- Requires separate permission to be explicitly specified in manifest because it reads everything user enters in main search bar
- Settings window
- Action Shortcuts
- Theming

###### Planned

See [#13](https://github.com/project-gauntlet/gauntlet/issues/13)

- Keyboard only navigation in plugin-views
- Vim motions

##### APIs

###### Implemented

- Stack-based Navigation
- Assets
- Files placed into `assets` directory in root of plugin repository are accessible at plugin runtime using `assetData` function
- Preferences
- Inline views under main search bar
- Preferences defined in plugin manifest can be set by user and are accessible at plugin runtime using `pluginPreferences` and `entrypointPreferences` functions
- Clipboard
- Accessible via `Clipboard` api
- Requires separate permission to be explicitly specified in manifest
- React Helper Hooks
- `usePromise`
- Helper to run promises in a context of React view
- Returns `AsyncState` object which contains `isLoading`, `error` and `data` 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` and `useCache` Hooks internally
- `useFetch`
- Helper to run `fetch()` with caching done automatically
- Follows `stale-while-revalidate` caching strategy
- Uses `useCachedPromise` Hook internally

###### Planned

Expand Down Expand Up @@ -301,8 +321,7 @@ In plugin manifest it is possible to configure permissions which will allow plug
network, environment variables, ffi or subprocess execution.
Server saves plugins themselves and state of plugins into SQLite database.

Frontend is GUI application that uses [iced-rs](https://github.com/iced-rs/iced) as a GUI framework.
It is also exposes gRPC server that is used by server to render views
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.

Plugins can create UI using [React](https://github.com/facebook/react).
Server implements custom React Reconciler (similar to React Native) which renders GUI components to frontend.
Expand Down
4 changes: 2 additions & 2 deletions docs/THEME.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ theme will stop working until it is updated.
This may change in the future

Current theme version:
- Color: `1`
- Everything: `1`
- Color: `2`
- Everything: `2`

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

Expand Down

0 comments on commit ba86afa

Please sign in to comment.