#* The ThoughtFrame chat transcript, rendered to one HTML document. SCI-FI EDITION. Values (all plain data): $turns list of { role: user|agent|system, body: string } $background hex rgb, workbench widget background $foreground hex rgb, workbench widget foreground $code hex rgb, code/tint background $dim hex rgb, label colour $scrollToBottom whether the document should jump to the end on load $markdown MarkdownTool; Velocity cannot parse markdown itself Design notes (read before changing): A mission-log HUD, not a chat. Chrome is monospace and uppercase. The palette is FIXED and deliberately NOT the workbench colours - it is a dark HUD that sits in any Eclipse theme. Two inks: --tf-prose for reading (neutral), --tf-ink for chrome/accents (cyan). The $background/$foreground/$code/$dim values are still passed in but no longer drive colour; they are kept for the StyledText fallback path. Effects are additive: strip the scanlines, glow, clip-paths and animation and the layout still reads (older SWT browsers simply ignore what they cannot parse). VELOCITY GOTCHA: never write #{ ... } and never a literal hex - always #$var or #${var}XX. *#
ThoughtFrame Transcript ${turns.size()} turns
#if($turns.isEmpty())
Engine Ready
ThoughtFrame
#end #foreach($turn in $turns)
#if($foreach.count < 10)0#end$foreach.count #if($turn.role == "user") You #elseif($turn.role == "agent") ThoughtFrame #else System #end
#if($turn.role == "user")
$markdown.escape($turn.body)
#elseif($turn.role == "agent")
$markdown.toHtml($turn.body)
#else
$markdown.escape($turn.body)
#end
#end