Module cleanup and tests
CI / ci (push) Failing after 7s

This commit is contained in:
2026-05-24 23:13:45 +02:00
parent 63d83e999a
commit 5dc9b3b8d4
72 changed files with 2545 additions and 1220 deletions
+79 -27
View File
@@ -1,58 +1,110 @@
{{!-- Director's Board — GM camera-management overview window --}}
<div class="directors-board__inner">
{{!-- Drag grip --}}
<div class="directors-board__grip" data-action="drag-grip" aria-hidden="true">
<i class="fas fa-grip-lines"></i>
</div>
<button type="button"
class="directors-board__close-btn"
data-action="close"
aria-label="{{localize "scrying-pool.directorsBoard.close"}}"
data-tooltip="{{localize "scrying-pool.directorsBoard.close"}}">×</button>
<section class="scrying-pool directors-board__content"
role="list"
aria-label="{{localize "video-view-manager.directorsBoard.title"}}">
aria-label="{{localize "scrying-pool.directorsBoard.title"}}">
{{#unless isEmpty}}
{{#each participants}}
{{> "modules/video-view-manager/templates/participant-card.hbs"}}
{{> "modules/scrying-pool/templates/participant-card.hbs"}}
{{/each}}
{{else}}
<p class="directors-board__empty" role="listitem">
{{localize "video-view-manager.directorsBoard.empty"}}
{{localize "scrying-pool.directorsBoard.empty"}}
</p>
{{/unless}}
</section>
<div class="directors-board__bulk-bar">
<button type="button" class="directors-board__bulk-btn" data-action="show-all">
{{localize "video-view-manager.directorsBoard.bulk.showAll"}}
<button type="button" class="directors-board__bulk-btn" data-action="show-all"
data-tooltip="{{localize "scrying-pool.directorsBoard.bulk.showAll"}}">
<i class="fas fa-eye" aria-hidden="true"></i>
{{localize "scrying-pool.directorsBoard.bulk.showAll"}}
</button>
<button type="button" class="directors-board__bulk-btn" data-action="hide-all">
{{localize "video-view-manager.directorsBoard.bulk.hideAll"}}
<button type="button" class="directors-board__bulk-btn" data-action="hide-all"
data-tooltip="{{localize "scrying-pool.directorsBoard.bulk.hideAll"}}">
<i class="fas fa-eye-slash" aria-hidden="true"></i>
{{localize "scrying-pool.directorsBoard.bulk.hideAll"}}
</button>
{{#if hasUndo}}
<button type="button" class="directors-board__bulk-btn directors-board__bulk-btn--undo" data-action="undo">
{{localize "video-view-manager.directorsBoard.bulk.undo"}}
<button type="button" class="directors-board__bulk-btn directors-board__bulk-btn--undo" data-action="undo"
data-tooltip="{{localize "scrying-pool.directorsBoard.bulk.undo"}}">
<i class="fas fa-undo" aria-hidden="true"></i>
{{localize "scrying-pool.directorsBoard.bulk.undo"}}
</button>
{{/if}}
{{#if hasRestore}}
<button type="button" class="directors-board__bulk-btn directors-board__bulk-btn--restore" data-action="restore-spotlight">
{{localize "video-view-manager.directorsBoard.bulk.restore"}}
<button type="button" class="directors-board__bulk-btn directors-board__bulk-btn--restore" data-action="restore-spotlight"
data-tooltip="{{localize "scrying-pool.directorsBoard.bulk.restore"}}">
<i class="fas fa-star" aria-hidden="true"></i>
{{localize "scrying-pool.directorsBoard.bulk.restore"}}
</button>
{{/if}}
<button type="button" class="directors-board__help-btn" data-action="open-shortcut-panel" aria-label="{{localize "video-view-manager.directorsBoard.shortcuts.openPanel"}}">?</button>
<button type="button" class="directors-board__help-btn" data-action="open-shortcut-panel"
aria-label="{{localize "scrying-pool.directorsBoard.shortcuts.openPanel"}}"
data-tooltip="{{localize "scrying-pool.directorsBoard.shortcuts.openPanel"}}">?</button>
</div>
<footer class="directors-board__footer">
<button type="button" class="directors-board__footer-btn" data-action="save-preset">
{{localize "video-view-manager.directorsBoard.footer.savePreset"}}
</button>
<button type="button" class="directors-board__footer-btn" data-action="load-preset" {{#unless hasPresets}}disabled{{/unless}}>
{{localize "video-view-manager.directorsBoard.footer.loadPreset"}}
</button>
<button type="button" class="directors-board__footer-btn" data-action="export-presets">
{{localize "video-view-manager.directorsBoard.footer.exportPresets"}}
</button>
<button type="button" class="directors-board__footer-btn" data-action="import-presets">
{{localize "video-view-manager.directorsBoard.footer.importPresets"}}
</button>
<button type="button" class="directors-board__footer-btn" data-action="toggle-preset-panel">
{{localize "video-view-manager.directorsBoard.footer.autoApplySettings"}}
</button>
<div class="directors-board__footer-group directors-board__footer-group--presets">
<button type="button" class="directors-board__footer-btn" data-action="save-preset"
data-tooltip="{{localize "scrying-pool.directorsBoard.footer.savePreset"}}">
<i class="fas fa-save" aria-hidden="true"></i>
{{localize "scrying-pool.directorsBoard.footer.savePreset"}}
</button>
<button type="button" class="directors-board__footer-btn" data-action="load-preset"
data-tooltip="{{localize "scrying-pool.directorsBoard.footer.loadPreset"}}"
{{#unless hasPresets}}disabled{{/unless}}>
<i class="fas fa-folder-open" aria-hidden="true"></i>
{{localize "scrying-pool.directorsBoard.footer.loadPreset"}}
</button>
<button type="button" class="directors-board__footer-btn directors-board__footer-btn--secondary" data-action="export-presets"
data-tooltip="{{localize "scrying-pool.directorsBoard.footer.exportPresets"}}">
<i class="fas fa-file-export" aria-hidden="true"></i>
{{localize "scrying-pool.directorsBoard.footer.exportPresets"}}
</button>
<button type="button" class="directors-board__footer-btn directors-board__footer-btn--secondary" data-action="import-presets"
data-tooltip="{{localize "scrying-pool.directorsBoard.footer.importPresets"}}">
<i class="fas fa-file-import" aria-hidden="true"></i>
{{localize "scrying-pool.directorsBoard.footer.importPresets"}}
</button>
</div>
<div class="directors-board__footer-group directors-board__footer-group--controls">
<button type="button" class="directors-board__footer-btn directors-board__footer-btn--auto-apply" data-action="toggle-preset-panel"
data-tooltip="{{localize "scrying-pool.directorsBoard.footer.autoApplySettings"}}">
<i class="fas fa-magic" aria-hidden="true"></i>
{{localize "scrying-pool.directorsBoard.footer.autoApplySettings"}}
</button>
<div class="directors-board__footer-sep" role="separator" aria-hidden="true"></div>
<button type="button" class="directors-board__footer-btn directors-board__footer-btn--av{{#if avModeEnabled}} directors-board__footer-btn--av-active{{/if}}" data-action="toggle-av-mode"
data-tooltip="{{#if avModeEnabled}}{{localize "scrying-pool.directorsBoard.footer.avModeDisable"}}{{else}}{{localize "scrying-pool.directorsBoard.footer.avModeEnable"}}{{/if}}">
{{#if avModeEnabled}}
<i class="fas fa-video-slash" aria-hidden="true"></i>
{{localize "scrying-pool.directorsBoard.footer.avModeDisable"}}
{{else}}
<i class="fas fa-video" aria-hidden="true"></i>
{{localize "scrying-pool.directorsBoard.footer.avModeEnable"}}
{{/if}}
</button>
<button type="button" class="directors-board__footer-btn directors-board__footer-btn--av-config" data-action="open-av-config"
data-tooltip="{{localize "scrying-pool.directorsBoard.footer.avConfigTitle"}}">
<i class="fas fa-sliders-h" aria-hidden="true"></i>
{{localize "scrying-pool.directorsBoard.footer.avConfig"}}
</button>
</div>
</footer>
{{!-- Scene Preset Panel - rendered via JavaScript, not Handlebars --}}
+1
View File
@@ -29,6 +29,7 @@
data-user-id="{{userId}}"
role="button"
aria-label="{{toggleAriaLabel}}"
data-tooltip="{{toggleAriaLabel}}"
tabindex="-1">
<i class="fas {{#if isHidden}}fa-eye{{else}}fa-eye-slash{{/if}}" aria-hidden="true"></i>
</button>
+14 -8
View File
@@ -1,9 +1,5 @@
{{!-- Player Privacy Panel --}}
<div class="player-privacy-panel__container">
<header class="player-privacy-panel__header">
<h2 class="player-privacy-panel__title">{{title}}</h2>
</header>
<div class="player-privacy-panel__body">
{{#if isReadOnly}}
<div class="player-privacy-panel__notice player-privacy-panel__notice--readonly">
@@ -15,7 +11,7 @@
<h3 class="player-privacy-panel__section-header">{{sectionHeader}}</h3>
<p class="player-privacy-panel__section-description">
{{SCRYING_POOL.PrivacyPanel.sectionDescription}}
{{localize "SCRYING_POOL.PrivacyPanel.sectionDescription"}}
</p>
<div class="player-privacy-panel__effects-list">
@@ -24,18 +20,22 @@
<div class="player-privacy-panel__effect-header">
<h4 class="player-privacy-panel__effect-label">{{label}}</h4>
<div class="player-privacy-panel__toggle">
<label class="player-privacy-panel__toggle-label">
<label class="player-privacy-panel__toggle-label"
data-tooltip="{{description}}">
<input
type="checkbox"
{{#if enabled}}checked{{/if}}
{{#if ../isReadOnly}}disabled{{/if}}
data-setting="{{settingKey}}"
class="player-privacy-panel__toggle-input"
aria-label="{{label}}"
>
<span class="player-privacy-panel__toggle-text">
{{#if enabled}}
<i class="fas fa-check" aria-hidden="true"></i>
{{../toggleOnLabel}}
{{else}}
<i class="fas fa-times" aria-hidden="true"></i>
{{../toggleOffLabel}}
{{/if}}
</span>
@@ -64,7 +64,10 @@
{{#unless isReadOnly}}
<div class="player-privacy-panel__portrait-actions">
<button type="button" class="player-privacy-panel__portrait-choose sp-btn sp-btn--primary">
<button type="button"
class="player-privacy-panel__portrait-choose sp-btn sp-btn--primary"
data-tooltip="{{chooseImageLabel}}">
<i class="fas fa-image" aria-hidden="true"></i>
{{chooseImageLabel}}
</button>
<input
@@ -74,7 +77,10 @@
style="display: none;"
>
{{#if hasCustomPortrait}}
<button type="button" class="player-privacy-panel__portrait-remove sp-btn sp-btn--secondary">
<button type="button"
class="player-privacy-panel__portrait-remove sp-btn sp-btn--secondary"
data-tooltip="{{removeImageLabel}}">
<i class="fas fa-trash-alt" aria-hidden="true"></i>
{{removeImageLabel}}
</button>
{{/if}}
+26 -24
View File
@@ -1,29 +1,31 @@
<div class="sp-dialog-content">
<p class="sp-export-description">
{{localize "video-view-manager.presetExport.description"}}
</p>
<div class="sp-preset-export-dialog">
<div class="sp-dialog-content">
<p class="sp-export-description">
{{localize "scrying-pool.presetExport.description"}}
</p>
<div class="sp-export-info">
<span class="sp-info-label">{{localize "video-view-manager.presetExport.scene"}}:</span>
<span class="sp-info-value">{{sceneName}}</span>
<div class="sp-export-info">
<span class="sp-info-label">{{localize "scrying-pool.presetExport.scene"}}:</span>
<span class="sp-info-value">{{sceneName}}</span>
</div>
<div class="sp-export-info">
<span class="sp-info-label">{{localize "scrying-pool.presetExport.presetCount"}}:</span>
<span class="sp-info-value">{{presetCount}}</span>
</div>
<div class="sp-export-info">
<span class="sp-info-label">{{localize "scrying-pool.presetExport.filename"}}:</span>
<span class="sp-info-value sp-filename">{{filename}}</span>
</div>
</div>
<div class="sp-export-info">
<span class="sp-info-label">{{localize "video-view-manager.presetExport.presetCount"}}:</span>
<span class="sp-info-value">{{presetCount}}</span>
</div>
<div class="sp-export-info">
<span class="sp-info-label">{{localize "video-view-manager.presetExport.filename"}}:</span>
<span class="sp-info-value sp-filename">{{filename}}</span>
<div class="sp-dialog-buttons">
<button type="button" class="sp-btn sp-btn-primary sp-export-btn">
<i class="fas fa-download"></i> {{localize "scrying-pool.presetExport.export"}}
</button>
<button type="button" class="sp-btn sp-btn-secondary" data-action="close">
{{localize "scrying-pool.presetExport.cancel"}}
</button>
</div>
</div>
<div class="sp-dialog-buttons">
<button type="button" class="sp-btn sp-btn-primary sp-export-btn">
<i class="fas fa-download"></i> {{localize "video-view-manager.presetExport.export"}}
</button>
<button type="button" class="sp-btn sp-btn-secondary" data-action="close">
{{localize "video-view-manager.presetExport.cancel"}}
</button>
</div>
+84 -82
View File
@@ -1,90 +1,92 @@
<div class="sp-dialog-content">
<p class="sp-import-description">
{{localize "video-view-manager.presetImport.description"}}
</p>
<div class="sp-preset-import-dialog">
<div class="sp-dialog-content">
<p class="sp-import-description">
{{localize "scrying-pool.presetImport.description"}}
</p>
{{#if hasExistingPresets}}
<div class="sp-warning-box">
<i class="fas fa-exclamation-triangle"></i>
<span>{{localize "video-view-manager.presetImport.existingPresetsWarning" existingPresetCount=existingPresetCount}}</span>
</div>
{{/if}}
{{!-- File Selection --}}
<div class="sp-form-group">
<label class="sp-form-label">{{localize "video-view-manager.presetImport.selectFile"}}</label>
<div class="sp-file-upload">
<input type="file" class="sp-file-input" accept=".json" />
<label class="sp-file-label">
<i class="fas fa-upload"></i>
<span class="sp-file-text">{{localize "video-view-manager.presetImport.chooseFile"}}</span>
</label>
{{#if hasExistingPresets}}
<div class="sp-warning-box">
<i class="fas fa-exclamation-triangle"></i>
<span>{{localize "scrying-pool.presetImport.existingPresetsWarning" existingPresetCount=existingPresetCount}}</span>
</div>
{{#if selectedFileName}}
<div class="sp-file-selected">
<i class="fas fa-check-circle"></i>
<span>{{selectedFileName}}</span>
{{/if}}
{{!-- File Selection --}}
<div class="sp-form-group">
<label class="sp-form-label">{{localize "scrying-pool.presetImport.selectFile"}}</label>
<div class="sp-file-upload">
<input type="file" class="sp-file-input" accept=".json" />
<label class="sp-file-label">
<i class="fas fa-upload"></i>
<span class="sp-file-text">{{localize "scrying-pool.presetImport.chooseFile"}}</span>
</label>
</div>
{{#if selectedFileName}}
<div class="sp-file-selected">
<i class="fas fa-check-circle"></i>
<span>{{selectedFileName}}</span>
</div>
{{/if}}
</div>
{{!-- Mode Selection --}}
<div class="sp-form-group">
<label class="sp-form-label">{{localize "scrying-pool.presetImport.importMode"}}</label>
<div class="sp-radio-group">
<label class="sp-radio-label">
<input type="radio" name="import-mode" class="sp-mode-merge" value="merge" {{checked (eq mode "merge")}} />
<span class="sp-radio-text">{{mergeLabel}}</span>
<span class="sp-radio-hint">{{localize "scrying-pool.presetImport.importModeMergeHint"}}</span>
</label>
<label class="sp-radio-label">
<input type="radio" name="import-mode" class="sp-mode-replace" value="replace" {{checked (eq mode "replace")}} />
<span class="sp-radio-text">{{replaceLabel}}</span>
<span class="sp-radio-hint">{{localize "scrying-pool.presetImport.importModeReplaceHint"}}</span>
</label>
</div>
</div>
{{!-- Preview Section --}}
{{#if previewItems.length}}
<div class="sp-preview-section">
<h3 class="sp-preview-title">{{localize "scrying-pool.presetImport.previewTitle"}}</h3>
<ul class="sp-preview-list">
{{#each previewItems as |item|}}
<li class="sp-preview-item {{unless item.valid 'sp-preview-item--invalid'}}">
<i class="fas {{if item.valid 'fa-check-circle sp-valid' 'fa-exclamation-circle sp-invalid'}}"></i>
<span class="sp-preview-name">{{item.name}}</span>
{{#if item.error}}
<span class="sp-preview-error" title="{{item.error}}">{{item.error}}</span>
{{/if}}
</li>
{{/each}}
</ul>
</div>
{{/if}}
{{!-- Confirmation Section (shown for replace mode) --}}
{{#if requiresConfirmation}}
<div class="sp-confirmation-section">
<div class="sp-confirmation-warning">
<i class="fas fa-exclamation-triangle"></i>
<span>{{localize "scrying-pool.presetImport.replaceConfirmation" existingPresetCount=existingPresetCount}}</span>
</div>
</div>
{{/if}}
</div>
{{!-- Mode Selection --}}
<div class="sp-form-group">
<label class="sp-form-label">{{localize "video-view-manager.presetImport.importMode"}}</label>
<div class="sp-radio-group">
<label class="sp-radio-label">
<input type="radio" name="import-mode" class="sp-mode-merge" value="merge" {{checked (eq mode "merge")}} />
<span class="sp-radio-text">{{mergeLabel}}</span>
<span class="sp-radio-hint">{{localize "video-view-manager.presetImport.importModeMergeHint"}}</span>
</label>
<label class="sp-radio-label">
<input type="radio" name="import-mode" class="sp-mode-replace" value="replace" {{checked (eq mode "replace")}} />
<span class="sp-radio-text">{{replaceLabel}}</span>
<span class="sp-radio-hint">{{localize "video-view-manager.presetImport.importModeReplaceHint"}}</span>
</label>
</div>
<div class="sp-dialog-buttons">
{{#unless requiresConfirmation}}
<button type="button" class="sp-btn sp-btn-primary sp-import-btn" {{disabled (not previewItems.length) }}>
<i class="fas fa-file-import"></i> {{localize "scrying-pool.presetImport.import"}}
</button>
{{else}}
<button type="button" class="sp-btn sp-btn-danger sp-confirm-btn">
<i class="fas fa-check"></i> {{localize "scrying-pool.presetImport.confirmReplace"}}
</button>
{{/unless}}
<button type="button" class="sp-btn sp-btn-secondary sp-cancel-btn">
{{localize "scrying-pool.presetImport.cancel"}}
</button>
</div>
{{!-- Preview Section --}}
{{#if previewItems.length}}
<div class="sp-preview-section">
<h3 class="sp-preview-title">{{localize "video-view-manager.presetImport.previewTitle"}}</h3>
<ul class="sp-preview-list">
{{#each previewItems as |item|}}
<li class="sp-preview-item {{unless item.valid 'sp-preview-item--invalid'}}">
<i class="fas {{if item.valid 'fa-check-circle sp-valid' 'fa-exclamation-circle sp-invalid'}}"></i>
<span class="sp-preview-name">{{item.name}}</span>
{{#if item.error}}
<span class="sp-preview-error" title="{{item.error}}">{{item.error}}</span>
{{/if}}
</li>
{{/each}}
</ul>
</div>
{{/if}}
{{!-- Confirmation Section (shown for replace mode) --}}
{{#if requiresConfirmation}}
<div class="sp-confirmation-section">
<div class="sp-confirmation-warning">
<i class="fas fa-exclamation-triangle"></i>
<span>{{localize "video-view-manager.presetImport.replaceConfirmation" existingPresetCount=existingPresetCount}}</span>
</div>
</div>
{{/if}}
</div>
<div class="sp-dialog-buttons">
{{#unless requiresConfirmation}}
<button type="button" class="sp-btn sp-btn-primary sp-import-btn" {{disabled (not previewItems.length) }}>
<i class="fas fa-file-import"></i> {{localize "video-view-manager.presetImport.import"}}
</button>
{{else}}
<button type="button" class="sp-btn sp-btn-danger sp-confirm-btn">
<i class="fas fa-check"></i> {{localize "video-view-manager.presetImport.confirmReplace"}}
</button>
{{/unless}}
<button type="button" class="sp-btn sp-btn-secondary sp-cancel-btn">
{{localize "video-view-manager.presetImport.cancel"}}
</button>
</div>
+2 -4
View File
@@ -1,8 +1,5 @@
{{!-- Load Scene Preset Dialog --}}
{{!-- Load Camera Layout Dialog --}}
<div class="preset-load-dialog__content">
<header class="preset-load-dialog__header">
<h2 class="preset-load-dialog__title">{{title}}</h2>
</header>
<div class="preset-load-dialog__body">
{{#if hasPresets}}
@@ -15,6 +12,7 @@
data-action="load"
data-preset-name="{{name}}"
>
<i class="fas fa-layer-group" aria-hidden="true"></i>
{{name}}
</button>
</li>
+8 -4
View File
@@ -1,8 +1,10 @@
{{!-- Save Scene Preset Dialog --}}
{{!-- Save Camera Layout Dialog --}}
<form class="preset-save-dialog__form">
<header class="preset-save-dialog__header">
<h2 class="preset-save-dialog__title">{{title}}</h2>
</header>
<div class="preset-save-dialog__header">
<i class="fas fa-bookmark preset-save-dialog__header-icon"></i>
<p class="preset-save-dialog__description">{{descriptionHint}}</p>
</div>
<div class="preset-save-dialog__body">
<div class="preset-save-dialog__field">
@@ -25,9 +27,11 @@
<footer class="preset-save-dialog__footer">
<button type="button" class="preset-save-dialog__btn preset-save-dialog__btn--cancel" data-action="cancel">
<i class="fas fa-times"></i>
{{cancelLabel}}
</button>
<button type="submit" class="preset-save-dialog__btn preset-save-dialog__btn--save">
<i class="fas fa-bookmark"></i>
{{saveLabel}}
</button>
</footer>
+26 -12
View File
@@ -3,6 +3,16 @@
role="complementary"
aria-label="Scrying Pool">
{{!-- Drag grip (top bar, replaces window header drag affordance) --}}
<div class="sp-strip__grip" data-action="drag-grip" aria-hidden="true">
<i class="fas fa-grip-lines"></i>
</div>
{{!-- Lightweight close button (top-right corner, replaces window header) --}}
<button class="sp-strip__close-btn" data-action="close-strip"
aria-label="Close Scrying Pool"
data-tooltip="Close">×</button>
{{!-- First-open tip (right-click affordance) --}}
{{#if showFirstOpenTip}}
<p class="sp-strip__first-tip">
@@ -11,19 +21,22 @@
</p>
{{/if}}
{{!-- Expand/collapse toggle --}}
<button class="sp-strip__toggle" data-action="toggle-expanded"
aria-label="{{#if isExpanded}}Collapse Scrying Pool{{else}}Expand Scrying Pool{{/if}}"
aria-expanded="{{isExpanded}}">
<i class="fas fa-chevron-{{#if isExpanded}}left{{else}}right{{/if}}"></i>
</button>
{{!-- Toolbar row: toggle + Director's Board side by side --}}
<div class="sp-strip__toolbar">
<button class="sp-strip__toggle" data-action="toggle-expanded"
aria-label="{{#if isExpanded}}Collapse Scrying Pool{{else}}Expand Scrying Pool{{/if}}"
aria-expanded="{{isExpanded}}"
data-tooltip="{{#if isExpanded}}Collapse{{else}}Expand{{/if}}">
<i class="fas fa-chevron-{{#if isExpanded}}left{{else}}right{{/if}}"></i>
</button>
{{!-- Director's Board CTA button (fallback when sidebar API unavailable) --}}
<button class="sp-strip__directors-board-cta" data-action="open-directors-board"
aria-label="Open Director's Board">
<i class="fas fa-border-all" aria-hidden="true"></i>
<span>Director's Board</span>
</button>
<button class="sp-strip__directors-board-cta" data-action="open-directors-board"
aria-label="Open Director's Board"
data-tooltip="Director's Board">
<i class="fas fa-border-all" aria-hidden="true"></i>
<span>Director's Board</span>
</button>
</div>
{{!-- Participant list --}}
<ul class="sp-strip__participants" role="list">
@@ -42,6 +55,7 @@
data-action="open-popover"
role="button"
aria-label="{{name}}{{stateLabel}}"
data-tooltip="{{name}}{{stateLabel}}"
aria-pressed="false">
{{!-- Video container for stream-access mode (full AV replacement) --}}
+11 -11
View File
@@ -1,6 +1,6 @@
{{!-- Scene Preset Panel - per-scene auto-apply configuration --}}
{{!-- Camera Layout Auto-Apply Panel - per-scene configuration --}}
<div class="directors-board__preset-panel-header">
<h3 class="directors-board__preset-panel-title">{{localize "video-view-manager.scenePresetPanel.title"}}</h3>
<h3 class="directors-board__preset-panel-title">{{localize "scrying-pool.scenePresetPanel.title"}}</h3>
</div>
{{#if hasScene}}
@@ -12,20 +12,20 @@
data-action="toggle-auto-apply"
{{#if enabled}}checked{{/if}}
role="switch"
aria-label="{{localize 'video-view-manager.scenePresetPanel.enableAutoApply'}}">
{{localize "video-view-manager.scenePresetPanel.enableAutoApply"}}
aria-label="{{localize 'scrying-pool.scenePresetPanel.enableAutoApply'}}">
{{localize "scrying-pool.scenePresetPanel.enableAutoApply"}}
</label>
</div>
<div class="directors-board__preset-panel-row">
<label class="directors-board__preset-panel-label">
{{localize "video-view-manager.scenePresetPanel.preset"}}
{{localize "scrying-pool.scenePresetPanel.preset"}}
<select class="directors-board__preset-panel-select"
data-action="select-preset"
{{#unless hasPresets}}disabled{{/unless}}
aria-label="{{localize 'video-view-manager.scenePresetPanel.selectPreset'}}">
aria-label="{{localize 'scrying-pool.scenePresetPanel.selectPreset'}}">
<option value="" {{#unless presetName}}selected{{/unless}}>
{{localize "video-view-manager.scenePresetPanel.selectPreset"}}
{{localize "scrying-pool.scenePresetPanel.selectPreset"}}
</option>
{{#each presets}}
<option value="{{this.name}}" {{#if (eq this.name ../presetName)}}selected{{/if}}>
@@ -38,7 +38,7 @@
<div class="directors-board__preset-panel-row">
<label class="directors-board__preset-panel-label">
{{localize "video-view-manager.scenePresetPanel.preDelay"}}
{{localize "scrying-pool.scenePresetPanel.preDelay"}}
<span class="directors-board__preset-panel-delay-value">{{preDelay}}ms</span>
<input type="range"
class="directors-board__preset-panel-slider"
@@ -47,7 +47,7 @@
max="5000"
value="{{preDelay}}"
step="100"
aria-label="{{localize 'video-view-manager.scenePresetPanel.preDelay'}}"
aria-label="{{localize 'scrying-pool.scenePresetPanel.preDelay'}}"
aria-valuemin="0"
aria-valuemax="5000"
aria-valuenow="{{preDelay}}">
@@ -55,9 +55,9 @@
</div>
<div class="directors-board__preset-panel-row directors-board__preset-panel-row--hint">
<span>{{localize "video-view-manager.scenePresetPanel.globalSettingsHint"}}</span>
<span>{{localize "scrying-pool.scenePresetPanel.globalSettingsHint"}}</span>
</div>
</div>
{{else}}
<p class="directors-board__preset-panel-message">{{localize "video-view-manager.scenePresetPanel.noScene"}}</p>
<p class="directors-board__preset-panel-message">{{localize "scrying-pool.scenePresetPanel.noScene"}}</p>
{{/if}}