feat(shortcuts): make clipboard-video-append shortcut configurable (#158)

This commit is contained in:
2026-07-11 23:36:44 -07:00
committed by GitHub
parent 8797719a09
commit 6ab3d823a4
26 changed files with 87 additions and 18 deletions
@@ -27,6 +27,7 @@ function createShortcuts(overrides: Partial<ConfiguredShortcuts> = {}): Configur
openControllerDebug: null,
toggleSubtitleSidebar: null,
toggleNotificationHistory: null,
appendClipboardVideoToQueue: null,
...overrides,
};
}
@@ -515,6 +516,8 @@ test('compileSessionBindings wires every configured shortcut key into the shared
'openControllerSelect',
'openControllerDebug',
'toggleSubtitleSidebar',
'toggleNotificationHistory',
'appendClipboardVideoToQueue',
];
const shortcuts = createShortcuts();
shortcutKeys.forEach((key, index) => {
@@ -582,6 +585,42 @@ test('buildPluginSessionBindingsArtifact emits CLI args for plugin-bound session
});
});
test('appendClipboardVideoToQueue shortcut compiles to a session action with plugin CLI args', () => {
const result = compileSessionBindings({
shortcuts: createShortcuts({
appendClipboardVideoToQueue: 'CommandOrControl+A',
}),
keybindings: [],
platform: 'linux',
});
assert.deepEqual(result.warnings, []);
const binding = result.bindings.find(
(candidate) =>
candidate.actionType === 'session-action' &&
candidate.actionId === 'appendClipboardVideoToQueue',
);
assert.ok(binding);
assert.deepEqual(binding.key, { code: 'KeyA', modifiers: ['ctrl'] });
const artifact = buildPluginSessionBindingsArtifact({
bindings: result.bindings,
warnings: result.warnings,
numericSelectionTimeoutMs: 2500,
now: new Date('2026-05-26T00:00:00.000Z'),
});
const pluginBinding = artifact.bindings.find(
(candidate) =>
candidate.actionType === 'session-action' &&
candidate.actionId === 'appendClipboardVideoToQueue',
);
assert.ok(pluginBinding && 'cliArgs' in pluginBinding);
assert.equal(pluginBinding.cliArgs?.[0], '--session-action');
assert.deepEqual(JSON.parse(pluginBinding.cliArgs?.[1] ?? ''), {
actionId: 'appendClipboardVideoToQueue',
});
});
test('buildPluginSessionBindingsArtifact preserves plugin selector CLI for no-count multi-line actions', () => {
const result = compileSessionBindings({
shortcuts: createShortcuts({