Prompt composer and preview (#48) #100
No reviewers
Labels
No labels
bug
duplicate
enhancement
help wanted
invalid
needs-info
needs-triage
question
ready-for-agent
ready-for-human
wayfinder:grilling
wayfinder:map
wayfinder:prototype
wayfinder:research
wayfinder:task
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
crowmaki/ai-studio!100
Loading…
Reference in a new issue
No description provided.
Delete branch "issue-48-prompt-composer"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #48.
The app writes H3's six-field prompt for every Shot from its current inputs and its filled Slot lists, and shows it read-only on the Shot (User Stories 93–98 and 102–103, decisions in #9). The override and reconcile (#49) and the job builder (#51) read
shot_prompt.What changed
Composer (
prompt.rs).loadgathers a Shot's inputs, andcomposeis a pure function of those inputs plus the filledShotSlots. It writessubject_definitions,summary,retention_analysis,detailed_description,overall_soundscapeandnon_diegetic_musicin this order. An empty field isN/A, and music is alwaysN/A. There is exactly one[Shot 1]and noid=header.Tags.
<Subject N>: numbered by first appearance in the action text (mentions and dialogue speakers), then the Setup's other subjects, then anyone a Board symbol is about.<Prop N>: numbered in first-mention order, the same order the slot budget attaches Props.<Environment>: the Scene's Location.<Picture N>/<Audio N>: taken from the filled Slot lists, so an excluded or over-budget reference is never named.subject_definitions.
<Environment>is the description, then the lighting note (the set note, else the Lighting's phrase), then "shown in".<Prop N>is the description, then "shown in".retention_analysis. One entry per sent image, in wired order, per the spec table:
attribute_transfer.weak_reference: tiled or one picture per Panel. A clean-sketch Board drops the arrows clause.Then
newly_generatedfor every seen subject whose Atlas row is not sent, then one entry per Voice reference.detailed_description. The framing note, then the Notation read-backs as sentences in panel order (no "storyboard" or "panel" wording, and freehand arrows add nothing), then the action text. Dialogue chips expand as follows:
<Subject N> says: <d>[Language] <tag> text</d>, with parentheticals as inline tags.overall_soundscape. The Location's Ambience plus the Scene's Ambience addition, written as one sentence.
Schema v20.
project.spoken_language: defaults to English, and a blank value is refused.scene.ambience_addition.Both have undoable setters (
set_spoken_language,set_scene_ambience) and are onProjectView/SceneViewand their DTOs. CONTEXT.md now defines Spoken language and notes the Scene addition under Ambience.Adapter.
shot_prompt,set_spoken_languageandset_scene_ambienceare new commands, and the bindings are regenerated.UI.
changedevents while open.Tests
tests/prompt_composer.rs(11 tests, all throughProjectSession):notation.rs's schema rewind drops the two new columns.cargo test --workspace --all-features,bun test src(123) andsvelte-checkall pass. Clippy shows only the existingtype_complexitywarning inapi.rs.Notes for review