add image-viewer card + clide image show verb

Drives an image inline into the Claude conversation log over the same
bus-publish path as ui.toast/ui.open, keeping the dispatcher handler
Flutter-free. The card is display-only per D-78; the verb registers a
CommandSchema so it surfaces in clide capabilities for T-248 discovery.

Closes T-249.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-06 10:22:38 +02:00
co-authored by Claude Opus 4.8
parent 3cf77f40ed
commit b446bd024d
13 changed files with 515 additions and 2 deletions
@@ -71,6 +71,15 @@ class ConversationController extends ChangeNotifier {
bool get isEmpty => _items.isEmpty;
/// Append a locally-produced item that did not come from the transcript
/// stream — e.g. an image card driven by `clide image show` (T-249). It
/// lands in arrival order and notifies listeners exactly like a streamed
/// item, so the view renders it inline. No-op once disposed.
void inject(ConversationItem item) {
if (_disposed) return;
_onItem(item);
}
void _onItem(ConversationItem item) {
// Track AssistantToolUse items by toolUseId for result-card pairing (T-168).
if (item is AssistantToolUse) {