Build terminal chat UIs with TUI4J - Elm Architecture chat client for AI agent demos with Spring Boot integration
90
90%
Does it follow best practices?
Impact
94%
1.38xAverage score across 3 eval scenarios
Advisory
Suggest reviewing before use
{
"context": "Tests whether the agent correctly configures Textarea and Viewport components with the expected settings, applies the correct ANSI color codes via Lipgloss for message styling, composes the view correctly, handles quit key bindings, and uses width-constrained rendering.",
"type": "weighted_checklist",
"checklist": [
{
"name": "Textarea prompt char",
"description": "Textarea.setPrompt() is called with the value \"┃ \" (box-drawing vertical bar followed by space)",
"max_score": 8
},
{
"name": "Textarea char limit",
"description": "Textarea.setCharLimit(500) is called — exactly 500",
"max_score": 8
},
{
"name": "Textarea line numbers off",
"description": "Textarea.setShowLineNumbers(false) is called",
"max_score": 8
},
{
"name": "Textarea focused",
"description": "textarea.focus() is called during initialization",
"max_score": 6
},
{
"name": "Viewport gotoBottom",
"description": "viewport.gotoBottom() is called after setting new content (auto-scroll to latest)",
"max_score": 8
},
{
"name": "User message color",
"description": "User/agent messages styled with Color.color(\"12\") for blue foreground",
"max_score": 8
},
{
"name": "Response message color",
"description": "Customer/response messages styled with Color.color(\"10\") for green foreground",
"max_score": 8
},
{
"name": "Status/dim color",
"description": "Waiting/status indicator styled with Color.color(\"8\") for gray foreground",
"max_score": 8
},
{
"name": "Width-constrained render",
"description": "Content passed to viewport uses Style.newStyle().width(w).render(content) for wrapping",
"max_score": 8
},
{
"name": "View composition order",
"description": "view() returns viewport output, then newline, then status, then newline, then textarea output (viewport first, textarea last)",
"max_score": 12
},
{
"name": "Quit key bindings",
"description": "Both \"ctrl+c\" and \"esc\" key presses return QuitMessage::new to exit",
"max_score": 10
},
{
"name": "Component update forwarding",
"description": "update() calls both textarea.update(msg) and viewport.update(msg)",
"max_score": 8
}
]
}