The Prompt history page takes the approved mock's heading and summary
surface (docs/concepts/workspace/app.js renderHistory a591-598, #249 F1):
- Heading description is "Prompt history · one positive, one shared
gallery"; the actions stay "← Prompt library", "Edit metadata" and
button.send "Send to ComfyUI" (aria-label "Send prompt pair to ComfyUI:
<title>"), on one row at 1600. Send is disabled only while the selected
pair's roles are loading (D24).
- The summary is article.surface > span.chip category, the positive and
selected negative prompt blocks, then .card-meta "N tracked runs · N
images · N negative variants". Tracked runs come from the recorded
history window's recorded_run_count (hidden until a read completes,
kept while a refresh is in flight); images and variants from the
saved positive's image_count and variant_count.
- The summary's copy/send actions are named after the prompt, as in the
concept ("Copy positive prompt: <title>"); mountPromptBlocks gains
setTitle so an in-place metadata edit renames them without a remount.
- mountRecordedHistory gains an optional onRecordedCount callback.
Selector mapping:
- .library-surface (history summary) -> .library-history article.surface
- .library-surface .library-chip -> article.surface > span.chip
- "Copy|Send <role> prompt[ to ComfyUI]" in "Saved prompt texts"
-> "...: <title>"
- heading p.muted "One positive prompt. Reusable negative variants. One
shared gallery." -> "Prompt history · one positive, one shared gallery"
- Unchanged: region "Saved prompt texts", .library-variants,
.library-shared-gallery, .recorded-history (still .library-surface).
Tests: workspace-history "history heading actions stay on one row at 1600
and are enabled after load" and "summary meta uses recorded runs" (both
failed before), a prompt-blocks setTitle unit, and the mapped selectors in
workspace-visual, workspace-library-editor and the canonical comparison.