@vestra-player/sdk 1.6.15 → 1.6.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -0
- package/dist/commands.d.ts +3 -2
- package/dist/commands.js +151 -172
- package/dist/docs-tree.json.gz +0 -0
- package/dist/plugin/runtime.js +3 -1
- package/dist/plugin/testing.d.ts +5 -3
- package/dist/plugin/testing.js +14 -8
- package/dist/plugin/types.d.ts +5 -2
- package/llms.txt +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.6.16
|
|
4
|
+
|
|
5
|
+
**Who must change: nobody.** A data refresh for the player's four built-in panels (player 0.7.6) and one additive read; no API is removed, `apiVersion` stays `vestra/1`.
|
|
6
|
+
|
|
7
|
+
- **`BUILTIN_COMMANDS`**: the Picture, Audio, Subtitles and Playback panels open from four top-level items, **Picture…** (`vestra.video`, `video.picture`, Alt+1), **Audio…** (`audio.workbench`, Alt+2), **Subtitles…** (`tune`, Alt+3) and **Playback…** (`vestra.playback`, `panel`, Alt+4), next to Playlist. The commands their panels hold left the menus for the command palette, with their keys and categories: Video's Pixel Shaders, Deinterlace, Aspect, Crop/Stretch, Framing, Image Processing and Rotation, the picture steps and GPU Rendering; Audio's track, channel, equalizer, preset, sync and processing items; Subtitles' show, style, secondary subtitle, sync and reload items; the playback plugin's seek steps, keyframes, Jump to Time… and speeds; the Reset items of the video, audio and subtitles plugins (the visualizer's Reset ▸ Idle Logo stays). **Subtitle Track ▸ Off** and **Audio Track ▸ No Audio Tracks** are now top-level submenus. New palette commands: Remove External Subtitle (`vestra.subtitles`, `remove`) and Picture Panel (`video.resetPanel`, a reset of the panel's values). Audio ▸ Output Device ▸ No Output Devices (`audio.device.none`) is gone.
|
|
8
|
+
- **`BUILTIN_SUBMENUS`**: the Video, Audio and Subtitles submenus of these plugins are gone; **Subtitle Track** (`vestra.subtitles`) and **Audio Track** (`vestra.audio`) are new, at the top level. Online Subtitles and Snapshot stay.
|
|
9
|
+
- **`plugin.commands.keys("host/<id>")`** reads the keys of the player's own commands (`host/volume-up`, `host/mute`, the ids of the `host` rows of `BUILTIN_COMMANDS`), read-only and current like a plugin's own, so a panel can show the player's key caps beside its controls; `onKeysChange` fires for their changes too. The `commands.keys` answer and event carry them as `host/<id>` entries (a local id has no `/`); player 0.7.6, like `keys` itself. A side effect: rebinding one of the player's own commands now sends `commands.keys` to every plugin listening for it, and a listener in standby is started for it (as for a change to its own keys); `onKeysChange` still fires only when a label the plugin can read changed.
|
|
10
|
+
- **`TestHost`**: `commands.keys` answers the core commands as `host/<id>` too, and `rebind` takes a core command's `host/<id>`.
|
|
11
|
+
|
|
3
12
|
## 1.6.15
|
|
4
13
|
|
|
5
14
|
**Who must change: nobody.** A plugin may now mount one panel per slot (player 0.7.6) instead of one panel in all; plugins with one panel work as before, and `apiVersion` stays `vestra/1`.
|
package/dist/commands.d.ts
CHANGED
|
@@ -348,8 +348,9 @@ export type CommandDeclaration = {
|
|
|
348
348
|
};
|
|
349
349
|
/**
|
|
350
350
|
* `commands.keys` (player 0.7.6): each of the plugin's own commands, by
|
|
351
|
-
* local id,
|
|
352
|
-
*
|
|
351
|
+
* local id, and (SDK 1.6.16) each of the player's own as `host/<id>`, with
|
|
352
|
+
* the labels of its current keys; the answer to the request and the data of
|
|
353
|
+
* the event of that name.
|
|
353
354
|
*/
|
|
354
355
|
export type CommandKeys = {
|
|
355
356
|
keys: Record<string, string[]>;
|
package/dist/commands.js
CHANGED
|
@@ -275,32 +275,7 @@ export const BUILTIN_SUBMENUS = Object.freeze([
|
|
|
275
275
|
path: ["Subtitles", "Online Subtitles"],
|
|
276
276
|
plugins: ["vestra.subtitle-online"],
|
|
277
277
|
},
|
|
278
|
-
{ path: ["Subtitles", "Secondary Subtitle"], plugins: ["vestra.subtitles"] },
|
|
279
|
-
{
|
|
280
|
-
path: ["Subtitles", "Secondary Subtitle", "Position"],
|
|
281
|
-
plugins: ["vestra.subtitles"],
|
|
282
|
-
},
|
|
283
|
-
{ path: ["Subtitles", "Subtitle Style"], plugins: ["vestra.subtitles"] },
|
|
284
|
-
{ path: ["Subtitles", "Subtitle Track"], plugins: ["vestra.subtitles"] },
|
|
285
|
-
{ path: ["Subtitles", "Sync"], plugins: ["vestra.subtitles"] },
|
|
286
|
-
{ path: ["Video", "Aspect"], plugins: ["vestra.video"] },
|
|
287
|
-
{ path: ["Video", "Crop/Stretch"], plugins: ["vestra.video"] },
|
|
288
|
-
{ path: ["Video", "Deinterlace"], plugins: ["vestra.video"] },
|
|
289
|
-
{ path: ["Video", "Deinterlace", "Output"], plugins: ["vestra.video"] },
|
|
290
|
-
{ path: ["Video", "Framing"], plugins: ["vestra.video"] },
|
|
291
|
-
{ path: ["Video", "Image Processing"], plugins: ["vestra.video"] },
|
|
292
|
-
{ path: ["Video", "Pixel Shaders"], plugins: ["vestra.video"] },
|
|
293
|
-
{
|
|
294
|
-
path: ["Video", "Pixel Shaders", "HDR Tone Mapping"],
|
|
295
|
-
plugins: ["vestra.video"],
|
|
296
|
-
},
|
|
297
|
-
{ path: ["Video", "Rotation"], plugins: ["vestra.video"] },
|
|
298
278
|
{ path: ["Video", "Snapshot"], plugins: ["vestra.capture"] },
|
|
299
|
-
{ path: ["Audio", "Audio Sync"], plugins: ["vestra.audio"] },
|
|
300
|
-
{ path: ["Audio", "Audio Track"], plugins: ["vestra.audio"] },
|
|
301
|
-
{ path: ["Audio", "Output Device"], plugins: ["vestra.audio"] },
|
|
302
|
-
{ path: ["Audio", "Preset"], plugins: ["vestra.audio"] },
|
|
303
|
-
{ path: ["Audio", "Processing"], plugins: ["vestra.audio"] },
|
|
304
279
|
{ path: ["Screen", "Always on Top"], plugins: ["vestra.window"] },
|
|
305
280
|
{ path: ["Screen", "When Playback Starts"], plugins: ["vestra.window"] },
|
|
306
281
|
{
|
|
@@ -309,6 +284,8 @@ export const BUILTIN_SUBMENUS = Object.freeze([
|
|
|
309
284
|
},
|
|
310
285
|
{ path: ["Settings", "Language"], plugins: ["vestra.preferences"] },
|
|
311
286
|
{ path: ["Copy to Clipboard"], plugins: ["vestra.playback"] },
|
|
287
|
+
{ path: ["Subtitle Track"], plugins: ["vestra.subtitles"] },
|
|
288
|
+
{ path: ["Audio Track"], plugins: ["vestra.audio"] },
|
|
312
289
|
]);
|
|
313
290
|
/** owner | id | key path, or (title) outside the menu | bindings | panel */
|
|
314
291
|
const BUILTIN_COMMAND_TABLE = `
|
|
@@ -330,24 +307,6 @@ vestra.playback | copy-path | Copy to Clipboard ▸ Full Path
|
|
|
330
307
|
host | play-pause | Playback ▸ Play/Pause | Space, Mouse:LeftClick
|
|
331
308
|
host | previous | Playback ▸ Previous | PageUp, Mouse:X2
|
|
332
309
|
host | next | Playback ▸ Next | PageDown, Mouse:X1
|
|
333
|
-
vestra.playback | keyframe-back | Playback ▸ Seek ▸ Previous Keyframe | Ctrl+Shift+ArrowLeft
|
|
334
|
-
vestra.playback | keyframe-forward | Playback ▸ Seek ▸ Next Keyframe | Ctrl+Shift+ArrowRight
|
|
335
|
-
vestra.playback | backward-2 | Playback ▸ Seek ▸ Back 30 s | Ctrl+ArrowLeft
|
|
336
|
-
vestra.playback | forward-2 | Playback ▸ Seek ▸ Forward 30 s | Ctrl+ArrowRight
|
|
337
|
-
vestra.playback | backward-3 | Playback ▸ Seek ▸ Back 60 s | Shift+ArrowLeft
|
|
338
|
-
vestra.playback | forward-3 | Playback ▸ Seek ▸ Forward 60 s | Shift+ArrowRight
|
|
339
|
-
vestra.playback | backward-4 | Playback ▸ Seek ▸ Back 300 s | Ctrl+Alt+ArrowLeft
|
|
340
|
-
vestra.playback | forward-4 | Playback ▸ Seek ▸ Forward 300 s | Ctrl+Alt+ArrowRight
|
|
341
|
-
vestra.subtitles | dialogue-previous | Playback ▸ Seek ▸ Previous Dialogue | Home
|
|
342
|
-
vestra.subtitles | dialogue-next | Playback ▸ Seek ▸ Next Dialogue | End
|
|
343
|
-
vestra.subtitles | dialogue-current | Playback ▸ Seek ▸ Current Subtitle Start | Ctrl+Home
|
|
344
|
-
vestra.playback | jump-start | Playback ▸ Seek ▸ Jump to Start | Backspace
|
|
345
|
-
vestra.playback | time-jump | Playback ▸ Seek ▸ Seek Steps…
|
|
346
|
-
vestra.playback | jump | Playback ▸ Jump to Time… | G
|
|
347
|
-
vestra.playback | rate-05 | Playback ▸ Speed ▸ 0.5×
|
|
348
|
-
vestra.playback | rate-15 | Playback ▸ Speed ▸ 1.5×
|
|
349
|
-
vestra.playback | rate-20 | Playback ▸ Speed ▸ 2×
|
|
350
|
-
vestra.playback | rate-custom | Playback ▸ Speed ▸ Custom…
|
|
351
310
|
vestra.playlist | playlist.add | Playback ▸ Playlist ▸ Add Files…
|
|
352
311
|
vestra.playlist | playlist.link | Playback ▸ Playlist ▸ Add Link…
|
|
353
312
|
vestra.playlist | playlist.add-folder | Playback ▸ Playlist ▸ Add Folder…
|
|
@@ -397,139 +356,19 @@ vestra.marks | ab.count.2 | Playback ▸ A-B Loop ▸ Loop Count ▸ 2 Times
|
|
|
397
356
|
vestra.marks | ab.count.3 | Playback ▸ A-B Loop ▸ Loop Count ▸ 3 Times
|
|
398
357
|
vestra.marks | ab.count.5 | Playback ▸ A-B Loop ▸ Loop Count ▸ 5 Times
|
|
399
358
|
vestra.marks | ab.count.10 | Playback ▸ A-B Loop ▸ Loop Count ▸ 10 Times
|
|
400
|
-
vestra.subtitles | show | Subtitles ▸ Show Subtitles | Alt+H
|
|
401
|
-
vestra.subtitles | track-off | Subtitles ▸ Subtitle Track ▸ Off
|
|
402
|
-
vestra.subtitles | track-cycle | Subtitles ▸ Subtitle Track ▸ Cycle | Alt+L
|
|
403
|
-
vestra.subtitles | second-off | Subtitles ▸ Secondary Subtitle ▸ Off
|
|
404
|
-
vestra.subtitles | second-position-top | Subtitles ▸ Secondary Subtitle ▸ Position ▸ Top
|
|
405
|
-
vestra.subtitles | second-position-aboveMain | Subtitles ▸ Secondary Subtitle ▸ Position ▸ Above Main Subtitle
|
|
406
|
-
vestra.subtitles | bold | Subtitles ▸ Subtitle Style ▸ Bold | Alt+B
|
|
407
|
-
vestra.subtitles | size-up | Subtitles ▸ Subtitle Style ▸ Size + | Alt+PageUp
|
|
408
|
-
vestra.subtitles | size-down | Subtitles ▸ Subtitle Style ▸ Size − | Alt+PageDown
|
|
409
|
-
vestra.subtitles | move-up | Subtitles ▸ Subtitle Style ▸ Move Up
|
|
410
|
-
vestra.subtitles | move-down | Subtitles ▸ Subtitle Style ▸ Move Down
|
|
411
|
-
vestra.subtitles | shadow | Subtitles ▸ Subtitle Style ▸ Shadow
|
|
412
|
-
vestra.subtitles | box | Subtitles ▸ Subtitle Style ▸ Opaque Box
|
|
413
|
-
vestra.subtitles | ass-original | Subtitles ▸ Original ASS/SSA Styles
|
|
414
|
-
vestra.subtitles | sync-earlier | Subtitles ▸ Sync ▸ Earlier 0.5 s | .
|
|
415
|
-
vestra.subtitles | sync-later | Subtitles ▸ Sync ▸ Later 0.5 s | ,
|
|
416
|
-
vestra.subtitles | sync-input | Subtitles ▸ Sync ▸ Adjust Sync…
|
|
417
359
|
vestra.subtitle-online | search | Subtitles ▸ Online Subtitles ▸ Search and Download Subtitles…
|
|
418
360
|
vestra.subtitle-online | settings | Subtitles ▸ Online Subtitles ▸ Online Subtitle Settings…
|
|
419
|
-
vestra.subtitles |
|
|
420
|
-
vestra.subtitles | refresh | Subtitles ▸ Refresh Subtitle Tracks
|
|
421
|
-
vestra.subtitles | tune | Subtitles ▸ Subtitle Tuning…
|
|
422
|
-
vestra.subtitles | settings | Subtitles ▸ Subtitle Settings…
|
|
423
|
-
vestra.video | video.shader.use | Video ▸ Pixel Shaders ▸ Use Shaders | Shift+P
|
|
424
|
-
vestra.video | video.shader.list | Video ▸ Pixel Shaders ▸ Shader List…
|
|
425
|
-
vestra.video | video.shader.folder | Video ▸ Pixel Shaders ▸ Open Shader Folder
|
|
426
|
-
vestra.video | video.shader.reload | Video ▸ Pixel Shaders ▸ Reload Shaders
|
|
427
|
-
vestra.video | video.hdr.auto | Video ▸ Pixel Shaders ▸ HDR Tone Mapping ▸ Auto
|
|
428
|
-
vestra.video | video.hdr.off | Video ▸ Pixel Shaders ▸ HDR Tone Mapping ▸ Off
|
|
429
|
-
vestra.video | video.hdr.bt.2390 | Video ▸ Pixel Shaders ▸ HDR Tone Mapping ▸ BT.2390
|
|
430
|
-
vestra.video | video.hdr.hable | Video ▸ Pixel Shaders ▸ HDR Tone Mapping ▸ Hable
|
|
431
|
-
vestra.video | video.hdr.mobius | Video ▸ Pixel Shaders ▸ HDR Tone Mapping ▸ Mobius
|
|
432
|
-
vestra.video | video.hdr.reinhard | Video ▸ Pixel Shaders ▸ HDR Tone Mapping ▸ Reinhard
|
|
433
|
-
vestra.video | video.hdr.clip | Video ▸ Pixel Shaders ▸ HDR Tone Mapping ▸ Clip
|
|
434
|
-
vestra.video | video.hdr.peak | Video ▸ Pixel Shaders ▸ HDR Tone Mapping ▸ Dynamic Peak Detection
|
|
435
|
-
vestra.video | video.hdr.settings | Video ▸ Pixel Shaders ▸ HDR Settings…
|
|
436
|
-
vestra.video | video.deinterlace.cycle | Video ▸ Deinterlace ▸ Cycle | Ctrl+I
|
|
437
|
-
vestra.video | video.deinterlace.auto | Video ▸ Deinterlace ▸ Auto
|
|
438
|
-
vestra.video | video.deinterlace.on | Video ▸ Deinterlace ▸ Always
|
|
439
|
-
vestra.video | video.deinterlace.off | Video ▸ Deinterlace ▸ Never
|
|
440
|
-
vestra.video | video.deinterlace.output.frame | Video ▸ Deinterlace ▸ Output ▸ By Frame
|
|
441
|
-
vestra.video | video.deinterlace.output.field | Video ▸ Deinterlace ▸ Output ▸ By Field (Double Rate)
|
|
442
|
-
vestra.video | video.fit.keep | Video ▸ Aspect ▸ Keep Aspect Ratio
|
|
443
|
-
vestra.video | video.fit.stretch | Video ▸ Aspect ▸ Ignore Aspect Ratio
|
|
444
|
-
vestra.video | video.fit.fill | Video ▸ Aspect ▸ Fill Window (Crop Excess)
|
|
445
|
-
vestra.video | video.aspect.cycle | Video ▸ Aspect ▸ Cycle Aspect Ratio | Shift+F6
|
|
446
|
-
vestra.video | video.aspect.default | Video ▸ Aspect ▸ Default (Source)
|
|
447
|
-
vestra.video | video.aspect.0 | Video ▸ Aspect ▸ 4:3
|
|
448
|
-
vestra.video | video.aspect.1 | Video ▸ Aspect ▸ 16:9
|
|
449
|
-
vestra.video | video.aspect.2 | Video ▸ Aspect ▸ 16:10
|
|
450
|
-
vestra.video | video.aspect.3 | Video ▸ Aspect ▸ 1.85:1
|
|
451
|
-
vestra.video | video.aspect.4 | Video ▸ Aspect ▸ 2.35:1
|
|
452
|
-
vestra.video | video.aspect.custom | Video ▸ Aspect ▸ Custom (x:y)
|
|
453
|
-
vestra.video | video.aspect.edit | Video ▸ Aspect ▸ Custom Aspect Ratio…
|
|
454
|
-
vestra.video | video.reframe.none | Video ▸ Crop/Stretch ▸ None
|
|
455
|
-
vestra.video | video.reframe.pad.0 | Video ▸ Crop/Stretch ▸ Stretch to 4:3
|
|
456
|
-
vestra.video | video.reframe.pad.1 | Video ▸ Crop/Stretch ▸ Stretch to 16:9
|
|
457
|
-
vestra.video | video.reframe.pad.2 | Video ▸ Crop/Stretch ▸ Stretch to 16:10
|
|
458
|
-
vestra.video | video.reframe.pad.3 | Video ▸ Crop/Stretch ▸ Stretch to 1.85:1
|
|
459
|
-
vestra.video | video.reframe.pad.4 | Video ▸ Crop/Stretch ▸ Stretch to 2.35:1
|
|
460
|
-
vestra.video | video.reframe.crop.0 | Video ▸ Crop/Stretch ▸ Crop to 4:3
|
|
461
|
-
vestra.video | video.reframe.crop.1 | Video ▸ Crop/Stretch ▸ Crop to 16:9
|
|
462
|
-
vestra.video | video.reframe.crop.2 | Video ▸ Crop/Stretch ▸ Crop to 16:10
|
|
463
|
-
vestra.video | video.reframe.crop.3 | Video ▸ Crop/Stretch ▸ Crop to 1.85:1
|
|
464
|
-
vestra.video | video.reframe.crop.4 | Video ▸ Crop/Stretch ▸ Crop to 2.35:1
|
|
465
|
-
vestra.video | video.reframe.left | Video ▸ Crop/Stretch ▸ Move Left
|
|
466
|
-
vestra.video | video.reframe.right | Video ▸ Crop/Stretch ▸ Move Right
|
|
467
|
-
vestra.video | video.reframe.up | Video ▸ Crop/Stretch ▸ Move Up
|
|
468
|
-
vestra.video | video.reframe.down | Video ▸ Crop/Stretch ▸ Move Down
|
|
469
|
-
vestra.video | video.frame.zoom-in | Video ▸ Framing ▸ Zoom In | Numpad9, Alt+Plus
|
|
470
|
-
vestra.video | video.frame.zoom-out | Video ▸ Framing ▸ Zoom Out | Numpad1, Alt+-
|
|
471
|
-
vestra.video | video.frame.right | Video ▸ Framing ▸ Pan → | Ctrl+Numpad6, Alt+ArrowRight
|
|
472
|
-
vestra.video | video.frame.left | Video ▸ Framing ▸ Pan ← | Ctrl+Numpad4, Alt+ArrowLeft
|
|
473
|
-
vestra.video | video.frame.up | Video ▸ Framing ▸ Pan ↑ | Ctrl+Numpad8, Alt+ArrowUp
|
|
474
|
-
vestra.video | video.frame.down | Video ▸ Framing ▸ Pan ↓ | Ctrl+Numpad2, Alt+ArrowDown
|
|
475
|
-
vestra.video | video.frame.centre | Video ▸ Framing ▸ Center Frame | Ctrl+Numpad5
|
|
476
|
-
vestra.video | video.flip.vertical | Video ▸ Image Processing ▸ Flip Vertically | Ctrl+P
|
|
477
|
-
vestra.video | video.flip.horizontal | Video ▸ Image Processing ▸ Flip Horizontally | Ctrl+Z
|
|
478
|
-
vestra.video | video.gaussian | Video ▸ Image Processing ▸ Gaussian Blur | Ctrl+B
|
|
479
|
-
vestra.video | video.sharpen | Video ▸ Image Processing ▸ Sharpen | Ctrl+R
|
|
480
|
-
vestra.video | video.edge | Video ▸ Image Processing ▸ Edge Sharpen
|
|
481
|
-
vestra.video | video.deblock | Video ▸ Image Processing ▸ Deblock | Ctrl+H
|
|
482
|
-
vestra.video | video.deband | Video ▸ Image Processing ▸ Deband
|
|
483
|
-
vestra.video | video.denoise.d3 | Video ▸ Image Processing ▸ 3D Denoise | Ctrl+N
|
|
484
|
-
vestra.video | video.denoise.gradual | Video ▸ Image Processing ▸ Gradual Denoise
|
|
485
|
-
vestra.video | video.denoise.temporal | Video ▸ Image Processing ▸ Temporal Denoise | Ctrl+M
|
|
486
|
-
vestra.video | video.frame-blend | Video ▸ Image Processing ▸ Frame Doubling
|
|
487
|
-
vestra.video | video.interpolation | Video ▸ Image Processing ▸ Motion Interpolation
|
|
488
|
-
vestra.video | video.rotate.cycle | Video ▸ Rotation ▸ Cycle | Alt+K
|
|
489
|
-
vestra.video | video.rotate.0 | Video ▸ Rotation ▸ No Rotation
|
|
490
|
-
vestra.video | video.rotate.90 | Video ▸ Rotation ▸ 90°
|
|
491
|
-
vestra.video | video.rotate.180 | Video ▸ Rotation ▸ 180°
|
|
492
|
-
vestra.video | video.rotate.270 | Video ▸ Rotation ▸ 270°
|
|
361
|
+
vestra.subtitles | track-off | Subtitle Track ▸ Off
|
|
493
362
|
vestra.capture | capture.save | Video ▸ Snapshot ▸ Save Current Frame | Ctrl+E
|
|
494
363
|
vestra.capture | capture.panel | Video ▸ Snapshot ▸ Capture… | Alt+S
|
|
495
364
|
vestra.capture | capture.copy | Video ▸ Snapshot ▸ Copy Current Frame | Ctrl+C
|
|
496
365
|
vestra.capture | capture.burst | Video ▸ Snapshot ▸ Burst… | Ctrl+G
|
|
497
366
|
vestra.capture | capture.clip | Video ▸ Snapshot ▸ Export Clip…
|
|
498
|
-
vestra.video | video.picture | Video ▸ Picture Adjustments…
|
|
499
|
-
vestra.video | video.brightness.down | Video ▸ Brightness -1% | W
|
|
500
|
-
vestra.video | video.brightness.up | Video ▸ Brightness +1% | E
|
|
501
|
-
vestra.video | video.contrast.down | Video ▸ Contrast -1% | R
|
|
502
|
-
vestra.video | video.contrast.up | Video ▸ Contrast +1% | T
|
|
503
|
-
vestra.video | video.saturation.down | Video ▸ Saturation -1% | Y
|
|
504
|
-
vestra.video | video.saturation.up | Video ▸ Saturation +1% | U
|
|
505
|
-
vestra.video | video.hue.down | Video ▸ Hue -1% | I
|
|
506
|
-
vestra.video | video.hue.up | Video ▸ Hue +1% | O
|
|
507
|
-
vestra.video | video.gpu-rendering | Video ▸ GPU Rendering (Experimental)
|
|
508
367
|
host | volume-up | Audio ▸ Volume + | ArrowUp, Mouse:WheelUp
|
|
509
368
|
host | volume-down | Audio ▸ Volume − | ArrowDown, Mouse:WheelDown
|
|
510
369
|
host | mute | Audio ▸ Mute | M
|
|
511
|
-
vestra.audio | audio.workbench | Audio ▸ Audio Workbench…
|
|
512
|
-
vestra.audio | audio.track.none | Audio ▸ Audio Track ▸ No Audio Tracks
|
|
513
|
-
vestra.audio | audio.track.cycle | Audio ▸ Audio Track ▸ Cycle Tracks | Alt+A
|
|
514
|
-
vestra.audio | audio.channels.stereo | Audio ▸ Audio Track ▸ Stereo
|
|
515
|
-
vestra.audio | audio.channels.left | Audio ▸ Audio Track ▸ Left Channel
|
|
516
|
-
vestra.audio | audio.channels.right | Audio ▸ Audio Track ▸ Right Channel
|
|
517
|
-
vestra.audio | audio.channels.mono | Audio ▸ Audio Track ▸ Mono Mix
|
|
518
|
-
vestra.audio | audio.channels.swap | Audio ▸ Audio Track ▸ Swap Left and Right
|
|
519
|
-
vestra.audio | audio.device.none | Audio ▸ Output Device ▸ No Output Devices
|
|
520
|
-
vestra.audio | audio.equalizer | Audio ▸ Equalizer | Shift+E
|
|
521
|
-
vestra.audio | audio.preset.0 | Audio ▸ Preset ▸ Flat
|
|
522
|
-
vestra.audio | audio.preset.1 | Audio ▸ Preset ▸ Voice
|
|
523
|
-
vestra.audio | audio.preset.2 | Audio ▸ Preset ▸ Music
|
|
524
|
-
vestra.audio | audio.preset.3 | Audio ▸ Preset ▸ Cinema
|
|
525
|
-
vestra.audio | audio.sync.earlier | Audio ▸ Audio Sync ▸ 50 ms Earlier | >
|
|
526
|
-
vestra.audio | audio.sync.later | Audio ▸ Audio Sync ▸ 50 ms Later | <
|
|
527
|
-
vestra.audio | audio.sync.keep.none | Audio ▸ Audio Sync ▸ Don't Keep
|
|
528
|
-
vestra.audio | audio.sync.keep.session | Audio ▸ Audio Sync ▸ Keep for This Run
|
|
529
|
-
vestra.audio | audio.sync.keep.always | Audio ▸ Audio Sync ▸ Always Keep
|
|
530
|
-
vestra.audio | audio.normalize | Audio ▸ Processing ▸ Normalize | Shift+N
|
|
531
|
-
vestra.audio | audio.clarity | Audio ▸ Processing ▸ Crystalizer | Shift+C
|
|
532
370
|
vestra.visualizer | audio-cover | Audio ▸ Show Album Cover for Audio Only
|
|
371
|
+
vestra.audio | audio.track.none | Audio Track ▸ No Audio Tracks
|
|
533
372
|
host | fullscreen | Toggle Fullscreen | Escape
|
|
534
373
|
vestra.window | pip | Screen ▸ Picture-in-Picture
|
|
535
374
|
vestra.window | mini | Screen ▸ Mini Size | \`
|
|
@@ -550,6 +389,10 @@ vestra.window | top.never | Screen ▸ Always on Top ▸ Never
|
|
|
550
389
|
vestra.window | top.always | Screen ▸ Always on Top ▸ Always
|
|
551
390
|
vestra.window | top.playing | Screen ▸ Always on Top ▸ While Playing
|
|
552
391
|
vestra.window | top.fullscreen | Screen ▸ Always on Top ▸ While Playing in Fullscreen
|
|
392
|
+
vestra.video | video.picture | Picture… | Alt+1
|
|
393
|
+
vestra.audio | audio.workbench | Audio… | Alt+2
|
|
394
|
+
vestra.subtitles | tune | Subtitles… | Alt+3
|
|
395
|
+
vestra.playback | panel | Playback… | Alt+4
|
|
553
396
|
vestra.playlist | playlist.visibility | Playlist | F6
|
|
554
397
|
vestra.info | info.toggle | Playback Info | Tab
|
|
555
398
|
vestra.info | info.properties | Playback Properties… | Ctrl+F1
|
|
@@ -571,13 +414,6 @@ vestra.preferences | language.ko | Settings ▸ Language ▸ 한국어
|
|
|
571
414
|
vestra.preferences | language.de | Settings ▸ Language ▸ Deutsch
|
|
572
415
|
vestra.preferences | language.fr | Settings ▸ Language ▸ Français
|
|
573
416
|
vestra.preferences | language.es | Settings ▸ Language ▸ Español
|
|
574
|
-
vestra.subtitles | move-reset | Reset ▸ Subtitle Position | Alt+Home
|
|
575
|
-
vestra.subtitles | sync-reset | Reset ▸ Subtitle Sync | /
|
|
576
|
-
vestra.video | video.reset | Reset ▸ Picture | Q
|
|
577
|
-
vestra.video | video.frame.reset | Reset ▸ Framing | Numpad5, Alt+Backspace
|
|
578
|
-
vestra.video | video.reframe.reset | Reset ▸ Crop Position
|
|
579
|
-
vestra.audio | audio.sync.reset | Reset ▸ Audio Sync | ?
|
|
580
|
-
vestra.audio | audio.reset | Reset ▸ Audio Processing
|
|
581
417
|
vestra.visualizer | reset-logo | Reset ▸ Idle Logo
|
|
582
418
|
vestra.info | info.about | About Vestra Player… | F1
|
|
583
419
|
vestra.info | info.update | Check for Updates…
|
|
@@ -594,6 +430,26 @@ host | seek-forward | (Forward 5 s) | ArrowRight
|
|
|
594
430
|
host | rate-normal | (Normal) | Z
|
|
595
431
|
host | rate-down | (Slower 0.1) | X
|
|
596
432
|
host | rate-up | (Faster 0.1) | C
|
|
433
|
+
vestra.audio | audio.track.cycle | (Cycle Tracks) | Alt+A
|
|
434
|
+
vestra.audio | audio.channels.stereo | (Stereo)
|
|
435
|
+
vestra.audio | audio.channels.left | (Left Channel)
|
|
436
|
+
vestra.audio | audio.channels.right | (Right Channel)
|
|
437
|
+
vestra.audio | audio.channels.mono | (Mono Mix)
|
|
438
|
+
vestra.audio | audio.channels.swap | (Swap Left and Right)
|
|
439
|
+
vestra.audio | audio.equalizer | (Equalizer) | Shift+E
|
|
440
|
+
vestra.audio | audio.preset.0 | (Flat)
|
|
441
|
+
vestra.audio | audio.preset.1 | (Voice)
|
|
442
|
+
vestra.audio | audio.preset.2 | (Music)
|
|
443
|
+
vestra.audio | audio.preset.3 | (Cinema)
|
|
444
|
+
vestra.audio | audio.sync.earlier | (50 ms Earlier) | >
|
|
445
|
+
vestra.audio | audio.sync.later | (50 ms Later) | <
|
|
446
|
+
vestra.audio | audio.sync.reset | (Reset) | ?
|
|
447
|
+
vestra.audio | audio.sync.keep.none | (Don't Keep)
|
|
448
|
+
vestra.audio | audio.sync.keep.session | (Keep for This Run)
|
|
449
|
+
vestra.audio | audio.sync.keep.always | (Always Keep)
|
|
450
|
+
vestra.audio | audio.normalize | (Normalize) | Shift+N
|
|
451
|
+
vestra.audio | audio.clarity | (Crystalizer) | Shift+C
|
|
452
|
+
vestra.audio | audio.reset | (Reset)
|
|
597
453
|
vestra.capture | capture.clipExport | (Export Clip Range) | Ctrl+Shift+E
|
|
598
454
|
vestra.capture | capture.saveAs | (Save Current Frame As…)
|
|
599
455
|
vestra.capture | capture.saveScreen | (Save Rendered Frame) | Ctrl+Alt+E
|
|
@@ -615,6 +471,21 @@ vestra.capture | capture.clipStart | (Set Clip Start)
|
|
|
615
471
|
vestra.capture | capture.clipEnd | (Set Clip End)
|
|
616
472
|
vestra.capture | capture.last30 | (Export Last 30 Seconds) | Ctrl+Shift+R
|
|
617
473
|
vestra.info | info.brief | (Brief Info) | Shift+Tab
|
|
474
|
+
vestra.playback | keyframe-back | (Previous Keyframe) | Ctrl+Shift+ArrowLeft
|
|
475
|
+
vestra.playback | keyframe-forward | (Next Keyframe) | Ctrl+Shift+ArrowRight
|
|
476
|
+
vestra.playback | jump | (Jump to Time…) | G
|
|
477
|
+
vestra.playback | jump-start | (Jump to Start) | Backspace
|
|
478
|
+
vestra.playback | time-jump | (Seek Steps…)
|
|
479
|
+
vestra.playback | rate-05 | (0.5×)
|
|
480
|
+
vestra.playback | rate-15 | (1.5×)
|
|
481
|
+
vestra.playback | rate-20 | (2×)
|
|
482
|
+
vestra.playback | rate-custom | (Custom…)
|
|
483
|
+
vestra.playback | backward-2 | (Back 30 s) | Ctrl+ArrowLeft
|
|
484
|
+
vestra.playback | forward-2 | (Forward 30 s) | Ctrl+ArrowRight
|
|
485
|
+
vestra.playback | backward-3 | (Back 60 s) | Shift+ArrowLeft
|
|
486
|
+
vestra.playback | forward-3 | (Forward 60 s) | Shift+ArrowRight
|
|
487
|
+
vestra.playback | backward-4 | (Back 300 s) | Ctrl+Alt+ArrowLeft
|
|
488
|
+
vestra.playback | forward-4 | (Forward 300 s) | Ctrl+Alt+ArrowRight
|
|
618
489
|
vestra.playlist | playlist.play | (Play) | Enter, P | panel
|
|
619
490
|
vestra.playlist | playlist.list-add | (Add Files…) | Ctrl+I | panel
|
|
620
491
|
vestra.playlist | playlist.list-add-folder | (Add Folder…) | Ctrl+O | panel
|
|
@@ -646,6 +517,114 @@ vestra.playlist | playlist.list-open-list | (Open List File…) | F3 | panel
|
|
|
646
517
|
vestra.playlist | playlist.list-save-list | (Save List…) | F2 | panel
|
|
647
518
|
vestra.playlist | playlist.close | (Close List) | F6 | panel
|
|
648
519
|
vestra.playlist | playlist.settings | (Playlist Settings…) | F5 | panel
|
|
520
|
+
vestra.subtitles | show | (Show Subtitles) | Alt+H
|
|
521
|
+
vestra.subtitles | second-off | (Off)
|
|
522
|
+
vestra.subtitles | second-position-top | (Top)
|
|
523
|
+
vestra.subtitles | second-position-aboveMain | (Above Main Subtitle)
|
|
524
|
+
vestra.subtitles | track-cycle | (Cycle) | Alt+L
|
|
525
|
+
vestra.subtitles | size-up | (Size +) | Alt+PageUp
|
|
526
|
+
vestra.subtitles | size-down | (Size −) | Alt+PageDown
|
|
527
|
+
vestra.subtitles | move-up | (Move Up)
|
|
528
|
+
vestra.subtitles | move-down | (Move Down)
|
|
529
|
+
vestra.subtitles | move-reset | (Subtitle Position) | Alt+Home
|
|
530
|
+
vestra.subtitles | bold | (Bold) | Alt+B
|
|
531
|
+
vestra.subtitles | shadow | (Shadow)
|
|
532
|
+
vestra.subtitles | box | (Opaque Box)
|
|
533
|
+
vestra.subtitles | ass-original | (Original ASS/SSA Styles)
|
|
534
|
+
vestra.subtitles | dialogue-previous | (Previous Dialogue) | Home
|
|
535
|
+
vestra.subtitles | dialogue-next | (Next Dialogue) | End
|
|
536
|
+
vestra.subtitles | dialogue-current | (Current Subtitle Start) | Ctrl+Home
|
|
537
|
+
vestra.subtitles | sync-reset | (Subtitle Sync) | /
|
|
538
|
+
vestra.subtitles | sync-input | (Adjust Sync…)
|
|
539
|
+
vestra.subtitles | reload | (Reload Subtitles) | Ctrl+Alt+Y
|
|
540
|
+
vestra.subtitles | refresh | (Refresh Subtitle Tracks)
|
|
541
|
+
vestra.subtitles | remove | (Remove External Subtitle)
|
|
542
|
+
vestra.subtitles | settings | (Subtitle Settings…)
|
|
543
|
+
vestra.subtitles | sync-earlier | (Earlier 0.5 s) | .
|
|
544
|
+
vestra.subtitles | sync-later | (Later 0.5 s) | ,
|
|
545
|
+
vestra.video | video.shader.use | (Use Shaders) | Shift+P
|
|
546
|
+
vestra.video | video.shader.list | (Shader List…)
|
|
547
|
+
vestra.video | video.shader.folder | (Open Shader Folder)
|
|
548
|
+
vestra.video | video.shader.reload | (Reload Shaders)
|
|
549
|
+
vestra.video | video.hdr.auto | (Auto)
|
|
550
|
+
vestra.video | video.hdr.off | (Off)
|
|
551
|
+
vestra.video | video.hdr.bt.2390 | (BT.2390)
|
|
552
|
+
vestra.video | video.hdr.hable | (Hable)
|
|
553
|
+
vestra.video | video.hdr.mobius | (Mobius)
|
|
554
|
+
vestra.video | video.hdr.reinhard | (Reinhard)
|
|
555
|
+
vestra.video | video.hdr.clip | (Clip)
|
|
556
|
+
vestra.video | video.hdr.peak | (Dynamic Peak Detection)
|
|
557
|
+
vestra.video | video.hdr.settings | (HDR Settings…)
|
|
558
|
+
vestra.video | video.deinterlace.cycle | (Cycle) | Ctrl+I
|
|
559
|
+
vestra.video | video.deinterlace.auto | (Auto)
|
|
560
|
+
vestra.video | video.deinterlace.on | (Always)
|
|
561
|
+
vestra.video | video.deinterlace.off | (Never)
|
|
562
|
+
vestra.video | video.deinterlace.output.frame | (By Frame)
|
|
563
|
+
vestra.video | video.deinterlace.output.field | (By Field (Double Rate))
|
|
564
|
+
vestra.video | video.fit.keep | (Keep Aspect Ratio)
|
|
565
|
+
vestra.video | video.fit.stretch | (Ignore Aspect Ratio)
|
|
566
|
+
vestra.video | video.fit.fill | (Fill Window (Crop Excess))
|
|
567
|
+
vestra.video | video.aspect.cycle | (Cycle Aspect Ratio) | Shift+F6
|
|
568
|
+
vestra.video | video.aspect.default | (Default (Source))
|
|
569
|
+
vestra.video | video.aspect.0 | (4:3)
|
|
570
|
+
vestra.video | video.aspect.1 | (16:9)
|
|
571
|
+
vestra.video | video.aspect.2 | (16:10)
|
|
572
|
+
vestra.video | video.aspect.3 | (1.85:1)
|
|
573
|
+
vestra.video | video.aspect.4 | (2.35:1)
|
|
574
|
+
vestra.video | video.aspect.custom | (Custom (x:y))
|
|
575
|
+
vestra.video | video.aspect.edit | (Custom Aspect Ratio…)
|
|
576
|
+
vestra.video | video.reframe.none | (None)
|
|
577
|
+
vestra.video | video.reframe.pad.0 | (Stretch to 4:3)
|
|
578
|
+
vestra.video | video.reframe.pad.1 | (Stretch to 16:9)
|
|
579
|
+
vestra.video | video.reframe.pad.2 | (Stretch to 16:10)
|
|
580
|
+
vestra.video | video.reframe.pad.3 | (Stretch to 1.85:1)
|
|
581
|
+
vestra.video | video.reframe.pad.4 | (Stretch to 2.35:1)
|
|
582
|
+
vestra.video | video.reframe.crop.0 | (Crop to 4:3)
|
|
583
|
+
vestra.video | video.reframe.crop.1 | (Crop to 16:9)
|
|
584
|
+
vestra.video | video.reframe.crop.2 | (Crop to 16:10)
|
|
585
|
+
vestra.video | video.reframe.crop.3 | (Crop to 1.85:1)
|
|
586
|
+
vestra.video | video.reframe.crop.4 | (Crop to 2.35:1)
|
|
587
|
+
vestra.video | video.reframe.left | (Move Left)
|
|
588
|
+
vestra.video | video.reframe.right | (Move Right)
|
|
589
|
+
vestra.video | video.reframe.up | (Move Up)
|
|
590
|
+
vestra.video | video.reframe.down | (Move Down)
|
|
591
|
+
vestra.video | video.reframe.reset | (Crop Position)
|
|
592
|
+
vestra.video | video.frame.zoom-in | (Zoom In) | Alt+Plus, Numpad9
|
|
593
|
+
vestra.video | video.frame.zoom-out | (Zoom Out) | Alt+-, Numpad1
|
|
594
|
+
vestra.video | video.frame.right | (Pan →) | Alt+ArrowRight, Ctrl+Numpad6
|
|
595
|
+
vestra.video | video.frame.left | (Pan ←) | Alt+ArrowLeft, Ctrl+Numpad4
|
|
596
|
+
vestra.video | video.frame.up | (Pan ↑) | Alt+ArrowUp, Ctrl+Numpad8
|
|
597
|
+
vestra.video | video.frame.down | (Pan ↓) | Alt+ArrowDown, Ctrl+Numpad2
|
|
598
|
+
vestra.video | video.frame.centre | (Center Frame) | Ctrl+Numpad5
|
|
599
|
+
vestra.video | video.frame.reset | (Framing) | Alt+Backspace, Numpad5
|
|
600
|
+
vestra.video | video.flip.vertical | (Flip Vertically) | Ctrl+P
|
|
601
|
+
vestra.video | video.flip.horizontal | (Flip Horizontally) | Ctrl+Z
|
|
602
|
+
vestra.video | video.gaussian | (Gaussian Blur) | Ctrl+B
|
|
603
|
+
vestra.video | video.sharpen | (Sharpen) | Ctrl+R
|
|
604
|
+
vestra.video | video.edge | (Edge Sharpen)
|
|
605
|
+
vestra.video | video.deblock | (Deblock) | Ctrl+H
|
|
606
|
+
vestra.video | video.deband | (Deband)
|
|
607
|
+
vestra.video | video.denoise.d3 | (3D Denoise) | Ctrl+N
|
|
608
|
+
vestra.video | video.denoise.gradual | (Gradual Denoise)
|
|
609
|
+
vestra.video | video.denoise.temporal | (Temporal Denoise) | Ctrl+M
|
|
610
|
+
vestra.video | video.frame-blend | (Frame Doubling)
|
|
611
|
+
vestra.video | video.interpolation | (Motion Interpolation)
|
|
612
|
+
vestra.video | video.rotate.cycle | (Cycle) | Alt+K
|
|
613
|
+
vestra.video | video.rotate.0 | (No Rotation)
|
|
614
|
+
vestra.video | video.rotate.90 | (90°)
|
|
615
|
+
vestra.video | video.rotate.180 | (180°)
|
|
616
|
+
vestra.video | video.rotate.270 | (270°)
|
|
617
|
+
vestra.video | video.reset | (Picture) | Q
|
|
618
|
+
vestra.video | video.resetPanel | (Picture Panel)
|
|
619
|
+
vestra.video | video.brightness.down | (Brightness -1%) | W
|
|
620
|
+
vestra.video | video.brightness.up | (Brightness +1%) | E
|
|
621
|
+
vestra.video | video.contrast.down | (Contrast -1%) | R
|
|
622
|
+
vestra.video | video.contrast.up | (Contrast +1%) | T
|
|
623
|
+
vestra.video | video.saturation.down | (Saturation -1%) | Y
|
|
624
|
+
vestra.video | video.saturation.up | (Saturation +1%) | U
|
|
625
|
+
vestra.video | video.hue.down | (Hue -1%) | I
|
|
626
|
+
vestra.video | video.hue.up | (Hue +1%) | O
|
|
627
|
+
vestra.video | video.gpu-rendering | (GPU Rendering (Experimental))
|
|
649
628
|
`;
|
|
650
629
|
/**
|
|
651
630
|
* The commands the player and its built-in plugins register when the
|
package/dist/docs-tree.json.gz
CHANGED
|
Binary file
|
package/dist/plugin/runtime.js
CHANGED
|
@@ -13,7 +13,9 @@ const SDK_DIRECTORY = fileURLToPath(new URL("..", import.meta.url));
|
|
|
13
13
|
export const WAKE_EVENTS = [
|
|
14
14
|
"packages.changed",
|
|
15
15
|
"bindings.changed",
|
|
16
|
-
// Player 0.7.6: sent
|
|
16
|
+
// Player 0.7.6: sent to a plugin whose own keys changed and, from SDK
|
|
17
|
+
// 1.6.16, to every listener when a player command (`host/<id>`) is
|
|
18
|
+
// rebound, which wakes each parked listener.
|
|
17
19
|
"commands.keys",
|
|
18
20
|
"appearance.changed",
|
|
19
21
|
"resolvers.fileTypes",
|
package/dist/plugin/testing.d.ts
CHANGED
|
@@ -2557,8 +2557,9 @@ export declare class TestHost implements Transport {
|
|
|
2557
2557
|
*/
|
|
2558
2558
|
get conflicts(): string[][];
|
|
2559
2559
|
/**
|
|
2560
|
-
* Change the keys of one of the plugin's commands
|
|
2561
|
-
*
|
|
2560
|
+
* Change the keys of one of the plugin's commands, or of one of the
|
|
2561
|
+
* player's core commands by its `host/<id>` (SDK 1.6.16), as the user
|
|
2562
|
+
* does in Keyboard Shortcuts (SDK 1.6.6): `inputs` replaces its keys (`[]`
|
|
2562
2563
|
* clears them, as Ignore Default Shortcuts does for every default),
|
|
2563
2564
|
* `null` gives it its own defaults back. It writes
|
|
2564
2565
|
* {@link TestHost.bindings | bindings.overlay}, and the plugin hears it
|
|
@@ -2580,7 +2581,8 @@ export declare class TestHost implements Transport {
|
|
|
2580
2581
|
* ```
|
|
2581
2582
|
*
|
|
2582
2583
|
* @capability None.
|
|
2583
|
-
* @throws `Error` `command` is
|
|
2584
|
+
* @throws `Error` `command` is neither a command of the plugin nor a
|
|
2585
|
+
* core command.
|
|
2584
2586
|
* @since 1.6.6
|
|
2585
2587
|
*/
|
|
2586
2588
|
rebind(command: string, inputs: readonly string[] | null): void;
|
package/dist/plugin/testing.js
CHANGED
|
@@ -3244,8 +3244,9 @@ export class TestHost {
|
|
|
3244
3244
|
return this.coreCommands.has(id) ? id : `${this.manifestId}/${id}`;
|
|
3245
3245
|
}
|
|
3246
3246
|
/**
|
|
3247
|
-
* Change the keys of one of the plugin's commands
|
|
3248
|
-
*
|
|
3247
|
+
* Change the keys of one of the plugin's commands, or of one of the
|
|
3248
|
+
* player's core commands by its `host/<id>` (SDK 1.6.16), as the user
|
|
3249
|
+
* does in Keyboard Shortcuts (SDK 1.6.6): `inputs` replaces its keys (`[]`
|
|
3249
3250
|
* clears them, as Ignore Default Shortcuts does for every default),
|
|
3250
3251
|
* `null` gives it its own defaults back. It writes
|
|
3251
3252
|
* {@link TestHost.bindings | bindings.overlay}, and the plugin hears it
|
|
@@ -3267,11 +3268,12 @@ export class TestHost {
|
|
|
3267
3268
|
* ```
|
|
3268
3269
|
*
|
|
3269
3270
|
* @capability None.
|
|
3270
|
-
* @throws `Error` `command` is
|
|
3271
|
+
* @throws `Error` `command` is neither a command of the plugin nor a
|
|
3272
|
+
* core command.
|
|
3271
3273
|
* @since 1.6.6
|
|
3272
3274
|
*/
|
|
3273
3275
|
rebind(command, inputs) {
|
|
3274
|
-
if (!this.commands.has(command))
|
|
3276
|
+
if (!this.commands.has(command) && !this.coreCommands.has(command))
|
|
3275
3277
|
throw new Error(`test host: no command ${command}`);
|
|
3276
3278
|
const key = this.#bindingKey(command);
|
|
3277
3279
|
if (inputs === null)
|
|
@@ -3287,15 +3289,19 @@ export class TestHost {
|
|
|
3287
3289
|
#keysRevision = 0;
|
|
3288
3290
|
/**
|
|
3289
3291
|
* `commands.keys` as the player answers it: each of the plugin's own
|
|
3290
|
-
* commands
|
|
3291
|
-
*
|
|
3292
|
-
* them on
|
|
3292
|
+
* commands, and the player's core commands as `host/<id>` (SDK 1.6.16),
|
|
3293
|
+
* with the labels of the keys it holds now (the overlay, else its
|
|
3294
|
+
* defaults; not a key an earlier command holds), as menus write them on
|
|
3295
|
+
* `systemInfo.os`.
|
|
3293
3296
|
*/
|
|
3294
3297
|
#keys() {
|
|
3295
3298
|
const claims = this.#claims();
|
|
3296
3299
|
const mac = this.systemInfo.os === "macos";
|
|
3297
3300
|
const keys = {};
|
|
3298
|
-
for (const [id, { declaration }] of
|
|
3301
|
+
for (const [id, { declaration }] of [
|
|
3302
|
+
...this.commands,
|
|
3303
|
+
...this.coreCommands,
|
|
3304
|
+
]) {
|
|
3299
3305
|
const scope = declaration.focus ? "panel" : "global";
|
|
3300
3306
|
const current = this.bindings.overlay.get(this.#bindingKey(id)) ??
|
|
3301
3307
|
declaration.bindings ??
|
package/dist/plugin/types.d.ts
CHANGED
|
@@ -1470,8 +1470,11 @@ export interface Commands {
|
|
|
1470
1470
|
* player, and until its answer arrives (a few milliseconds) every
|
|
1471
1471
|
* command reads `[]`; a binding that read it runs again then.
|
|
1472
1472
|
*
|
|
1473
|
-
*
|
|
1474
|
-
*
|
|
1473
|
+
* The plugin's own commands, and the player's own as `host/<id>` (SDK
|
|
1474
|
+
* 1.6.16; `host/volume-up`, `host/mute`: the ids of
|
|
1475
|
+
* {@link "@vestra-player/sdk/testing"!BUILTIN_COMMANDS | BUILTIN_COMMANDS} rows owned by `host`), for a panel that
|
|
1476
|
+
* shows the player's keys beside its own controls; an id the plugin has
|
|
1477
|
+
* not added (or another plugin's) reads `[]`. Needs nothing beyond `commands`, not
|
|
1475
1478
|
* `bindings.manage` (the whole binding table, every plugin's, is
|
|
1476
1479
|
* {@link Bindings.list}). Without the `commands` capability every
|
|
1477
1480
|
* command reads `[]`. Players before 0.7.6 have no `keys` (the player
|
package/llms.txt
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Vestra Player SDK
|
|
2
2
|
|
|
3
|
-
> @vestra-player/sdk 1.6.
|
|
3
|
+
> @vestra-player/sdk 1.6.16: write plugins for Vestra Player in TypeScript (plugin API `vestra/1`). A plugin is a folder with `manifest.json` and an entry module whose default export `activate(plugin)` the player calls. The documentation is a tree of short pages read by path, like `go doc`: the same pages and API as https://vestrasys.github.io/vestra-player-sdk/.
|
|
4
4
|
|
|
5
5
|
## Read the documentation
|
|
6
6
|
|