macro-clips slice 4a: script frame dialog + reusable action editor

- ActionEditor.vue — reusable list editor for Action[]: add/remove/reorder,
  per-type parameter forms (jump to time/frame/marker, set button
  state/disabled, script source). Marker and button dropdowns pull from
  the store's current scene.
- ScriptFrameDialog.vue — modal wrapping ActionEditor plus time and label
  inputs; commits on close, supports deletion.
- Timeline wires the dialog: clicking a script frame opens it for edit,
  clicking the empty script lane creates a new frame at that time and
  opens the editor.
- i18n keys for all action types, parameters, and dialog labels.

Button-authoring UI (definitions + instance placement + properties panel)
is its own slice (4b) — this commit ships script authoring only.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
thandClaude Opus 4.7 committed 2026-04-20 20:54:24 +02:00
1 parent 92d58937e3
commit b9d1ca16f7
4 files changed
+635

No files matched your search

+37
View File
@@ -359,6 +359,43 @@ export const en = {
panCanvas: 'Pan canvas',
},
},
actions: {
empty: 'No actions yet. Add one below.',
add: 'Add action',
remove: 'Remove',
moveUp: 'Move up',
moveDown: 'Move down',
noMarkers: 'No markers defined',
noButtons: 'No labeled button instances',
type: {
play: 'Play',
pause: 'Pause',
rewindToLoop: 'Rewind to loop start',
jumpTo: 'Jump to time',
jumpToFrame: 'Jump to frame',
jumpToMarker: 'Jump to marker',
setButtonState: 'Set button state',
setButtonDisabled: 'Set button disabled',
script: 'Run script',
},
param: {
time: 'Seconds',
frame: 'Frame',
marker: 'Marker',
button: 'Button',
state: 'State',
disabled: 'Disabled',
source: 'Script source',
},
},
scriptFrameDialog: {
title: 'Script frame',
time: 'Time (s)',
label: 'Label (optional)',
labelPlaceholder: 'e.g. intro-end',
remove: 'Delete frame',
done: 'Done',
},
} as const
export type Messages = typeof en