e4eb278f21
Co-authored-by: Kandev Agent <agent@kandev.dev>
77 lines
3.9 KiB
Markdown
77 lines
3.9 KiB
Markdown
---
|
|
status: active
|
|
system: plugins
|
|
created: 2026-09-04
|
|
owners:
|
|
- kandev
|
|
---
|
|
# Plugin Shortcut Settings Requirements
|
|
|
|
## Overview
|
|
|
|
Plugin shortcut declarations belong to an installed plugin, but their controls
|
|
currently appear among Kandev's core shortcuts. This separates a plugin's
|
|
shortcut from the rest of that plugin's settings and makes a per-user
|
|
preference look like install-wide operator configuration. The plugin system
|
|
owns the declaration, identity, and configuration location; the UI system's
|
|
shared settings-save behavior remains an independent dependency.
|
|
|
|
## Requirements
|
|
|
|
### REQ-PLUGINS-PLUGIN-SHORTCUT-SETTINGS-001: Plugin-owned shortcut configuration
|
|
|
|
**Intent:** Keep each plugin's configurable shortcuts with that plugin while
|
|
preserving personal overrides, conflict visibility, and core-shortcut
|
|
precedence.
|
|
|
|
**User story:** As a Kandev user, I want to configure a plugin's shortcuts from
|
|
that plugin's settings page, so that I can find the controls where I manage the
|
|
plugin without mixing them into Kandev's core shortcuts.
|
|
|
|
#### Acceptance criteria
|
|
|
|
- **AC-PLUGINS-PLUGIN-SHORTCUT-SETTINGS-001.1:** When an installed plugin
|
|
declares one or more `ui.keybindings`, its detail page shall show an inline
|
|
shortcut editor containing only that plugin's declared bindings, and the
|
|
Preferences > Keyboard Shortcuts page shall show only Kandev-owned bindings.
|
|
The host-owned editor shall remain present when an active plugin registers a
|
|
replacement component at its exact detail route.
|
|
- **AC-PLUGINS-PLUGIN-SHORTCUT-SETTINGS-001.2:** Every user who can open the
|
|
installed plugin's detail page shall be able to edit their own shortcut
|
|
overrides without administrator permission; plugin configuration, enable,
|
|
disable, update, and uninstall controls shall retain their existing
|
|
administrator-only authorization.
|
|
- **AC-PLUGINS-PLUGIN-SHORTCUT-SETTINGS-001.3:** Recording, clearing, or
|
|
resetting a plugin shortcut shall change a route-local draft and use the
|
|
shared Settings save action. Saving only a shortcut shall not restart,
|
|
enable, disable, or otherwise mutate the plugin installation.
|
|
- **AC-PLUGINS-PLUGIN-SHORTCUT-SETTINGS-001.4:** The relocated editor shall
|
|
read and write the existing namespaced per-user override identity
|
|
`plugin:{pluginId}:{keybindingId}`. Existing overrides shall remain effective
|
|
and visible after the relocation, a reload, and normal portable-settings
|
|
synchronization, without a data migration.
|
|
- **AC-PLUGINS-PLUGIN-SHORTCUT-SETTINGS-001.5:** Conflict warnings on both the
|
|
core shortcut page and a plugin shortcut editor shall compare the effective
|
|
bindings of all Kandev-owned shortcuts and all installed plugin declarations,
|
|
name the other conflicting actions, and preserve the rule that a Kandev-owned
|
|
shortcut wins during dispatch.
|
|
- **AC-PLUGINS-PLUGIN-SHORTCUT-SETTINGS-001.6:** A disabled or errored plugin's
|
|
declared shortcuts shall remain visible and configurable on its detail page,
|
|
while the page makes clear that they run only while the plugin is active. A
|
|
plugin with no declared keybindings shall not render an empty shortcut card.
|
|
- **AC-PLUGINS-PLUGIN-SHORTCUT-SETTINGS-001.7:** On a phone, the shortcut editor
|
|
shall be reachable through Settings > Plugins > the installed plugin, retain
|
|
the detail page as the single vertical scroll owner, keep recording and
|
|
reset controls touch-usable without horizontal overflow, and complete the
|
|
same save-and-reload outcome as the desktop surface.
|
|
|
|
## Out of scope
|
|
|
|
- Changing the `ui.keybindings` manifest grammar, `registerKeybinding`, editor
|
|
opt-in behavior, dispatch order, or core-shortcut precedence.
|
|
- Moving plugin-authored settings slots or install-wide plugin configuration
|
|
across the existing user and administrator authorization boundary.
|
|
- Adding plugin-authored fields or individual plugin shortcuts to global
|
|
Settings search results.
|
|
- Deleting orphaned per-user override keys when a plugin is uninstalled.
|