diff --git a/components/studio2/PromptControls.vue b/components/studio2/PromptControls.vue
index 20ee753..b6ae571 100644
--- a/components/studio2/PromptControls.vue
+++ b/components/studio2/PromptControls.vue
@@ -4,7 +4,8 @@
-
+
+
@@ -17,6 +18,7 @@
import {cameraMoves,soundscapeOptions,normalizeBeat,toggleMove} from '~/shared/studio2/prompt.mjs'
const model=defineModel({required:true}),active=ref(0)
const current=computed(()=>model.value.cameraBeats[active.value])
+const isHold=computed(()=>!!current.value?.moves?.includes?.('hold'))
function addBeat(){const last=model.value.cameraBeats.at(-1);if(last?.durationSec==null&&last)last.durationSec=2;model.value.cameraBeats.push(normalizeBeat());active.value=model.value.cameraBeats.length-1}
function toggleSound(sound:string){const chips=model.value.soundscapeChips;model.value.soundscapeChips=chips.includes(sound)?chips.filter((s:string)=>s!==sound):[...chips,sound]}
diff --git a/shared/studio2/prompt.mjs b/shared/studio2/prompt.mjs
index 1b761b8..eaeef1a 100644
--- a/shared/studio2/prompt.mjs
+++ b/shared/studio2/prompt.mjs
@@ -28,7 +28,11 @@ export function sectionsFrom(value = {}) {
export function compileSections(value) {
const s = sectionsFrom(value)
const camera = s.cameraBeats.length ? ['One continuous take.', ...s.cameraBeats.map((b,i) => {
- const move = b.moves[0] === 'hold' ? 'hold the camera locked on a tripod' : b.moves.map(m=>m.replaceAll('-',' ')).join(' and ') + (b.moves.length > 1 ? ' simultaneously' : '')
+ const hold = b.moves[0] === 'hold' || b.moves.includes('hold')
+ if (hold) {
+ return `${i ? 'Then' : 'First'}, hold the camera locked on a tripod.`
+ }
+ const move = b.moves.map(m=>m.replaceAll('-',' ')).join(' and ') + (b.moves.length > 1 ? ' simultaneously' : '')
const timing = b.durationSec == null ? 'through the end of the remaining clip' : i === 0 ? `for the first ${b.durationSec} seconds` : `for ${b.durationSec} seconds`
return `${i ? 'Then' : 'First'}, ${move}, ${{subtle:'small',moderate:'medium',large:'large'}[b.amplitude]} amplitude, ${b.speed} speed, ${timing}.`
}), 'No cuts. No new setup.'].join(' ') : s.camera