feat(kanban): card detail modal and rich agent-run console
- RunEventList: grouped activity timeline. Assistant text becomes chat bubbles (auto-collapsing long messages); tool_start/tool_end pair into entries with spinners and expandable input/result blocks; bevy output rolls into a live console; relative timestamps on a left rail - AgentRunBar: redesigned as a mission console. Live stats header (elapsed time, tool count, events), animated status banner with sweep/glow while running, clearer action bar. All controls preserved (run/steer/stop, diff/merge/bevy) so the human-only merge/complete safety model holds - tailwind.css: vn-flow, vn-sweep, vn-dots, vn-spin keyframes - CardModal: full card overlay (orchestrator, references, tags, comments) - DiffModal: branch-diff review (commits, stat, capped patch) - useOrchestrator: background polling + bevy status sync + ref-counted SSE - KanbanCard: pulsing agent/bevy running badge on collapsed cards
This commit is contained in:
@@ -24,7 +24,6 @@ interface UseKanbanBoard {
|
||||
ref: { label: string; type: ReferenceType; href: string },
|
||||
) => Promise<void>;
|
||||
removeReference: (cardId: string, href: string) => Promise<void>;
|
||||
reset: () => Promise<void>;
|
||||
}
|
||||
|
||||
export function useKanbanBoard(): UseKanbanBoard {
|
||||
@@ -208,16 +207,6 @@ export function useKanbanBoard(): UseKanbanBoard {
|
||||
[run],
|
||||
);
|
||||
|
||||
const reset = useCallback(async () => {
|
||||
setError(null);
|
||||
try {
|
||||
await kanbanApi.reset();
|
||||
await reload();
|
||||
} catch (e) {
|
||||
setError(e instanceof Error ? e.message : 'Reset failed');
|
||||
}
|
||||
}, [reload]);
|
||||
|
||||
return {
|
||||
board,
|
||||
pages,
|
||||
@@ -231,6 +220,5 @@ export function useKanbanBoard(): UseKanbanBoard {
|
||||
removeTag,
|
||||
addReference,
|
||||
removeReference,
|
||||
reset,
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user