From 6023b5ea24b4e98bd083c6ed4972533daf7810f9 Mon Sep 17 00:00:00 2001 From: Developer Date: Fri, 12 Jun 2026 00:51:42 +0200 Subject: [PATCH] =?UTF-8?q?fix(v2):=20reviewer=20bugfixes=20=E2=80=94=20sc?= =?UTF-8?q?roll,=20block-status,=20NaN=20guard,=20dead=20code=20cleanup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dashboard/v2/AgentDetailModal.vue | 780 ++++++++++++++++++ .../src/components/dashboard/v2/AgentNode.vue | 5 + .../src/components/dashboard/v2/AlertBar.vue | 2 +- .../components/dashboard/v2/FlowCanvas.vue | 5 +- .../src/components/dashboard/v2/IrisChat.vue | 28 +- frontend/src/components/dashboard/v2/types.ts | 24 + frontend/src/views/Dashboard/FlowBoard.vue | 119 ++- 7 files changed, 941 insertions(+), 22 deletions(-) create mode 100644 frontend/src/components/dashboard/v2/AgentDetailModal.vue diff --git a/frontend/src/components/dashboard/v2/AgentDetailModal.vue b/frontend/src/components/dashboard/v2/AgentDetailModal.vue new file mode 100644 index 0000000..565890a --- /dev/null +++ b/frontend/src/components/dashboard/v2/AgentDetailModal.vue @@ -0,0 +1,780 @@ + + + + + diff --git a/frontend/src/components/dashboard/v2/AgentNode.vue b/frontend/src/components/dashboard/v2/AgentNode.vue index 86afe6d..7d3d992 100644 --- a/frontend/src/components/dashboard/v2/AgentNode.vue +++ b/frontend/src/components/dashboard/v2/AgentNode.vue @@ -114,6 +114,11 @@ defineEmits<{ box-shadow: 0 0 0 1px rgba(52, 214, 245, 0.2), 0 0 26px -6px rgba(52, 214, 245, 0.55); } +.node.is-block .ncard { + border-color: rgba(251, 113, 133, 0.45); + box-shadow: 0 0 0 1px rgba(251, 113, 133, 0.2), 0 0 26px -6px rgba(251, 113, 133, 0.55); +} + .node.is-iris .ncard { border-color: rgba(124, 108, 255, 0.55); box-shadow: var(--glow); diff --git a/frontend/src/components/dashboard/v2/AlertBar.vue b/frontend/src/components/dashboard/v2/AlertBar.vue index 301d9cd..74d61c8 100644 --- a/frontend/src/components/dashboard/v2/AlertBar.vue +++ b/frontend/src/components/dashboard/v2/AlertBar.vue @@ -62,7 +62,7 @@ defineEmits<{ @click="$emit('blockerClick')" > - {{ blockerCount }} {{ blockerCount === 1 ? 'Blocker' : 'Blocker' }} + {{ blockerCount }} Blocker diff --git a/frontend/src/components/dashboard/v2/FlowCanvas.vue b/frontend/src/components/dashboard/v2/FlowCanvas.vue index 9e7e18b..014fb87 100644 --- a/frontend/src/components/dashboard/v2/FlowCanvas.vue +++ b/frontend/src/components/dashboard/v2/FlowCanvas.vue @@ -291,7 +291,7 @@ function handleReset() { Reset - @@ -305,7 +305,6 @@ function handleReset() { > -
diff --git a/frontend/src/components/dashboard/v2/IrisChat.vue b/frontend/src/components/dashboard/v2/IrisChat.vue index 8c13e9d..00424ac 100644 --- a/frontend/src/components/dashboard/v2/IrisChat.vue +++ b/frontend/src/components/dashboard/v2/IrisChat.vue @@ -12,7 +12,7 @@ * send(text) – Nachricht absenden */ -import { ref, nextTick, watch } from 'vue' +import { ref, computed, nextTick, watch } from 'vue' import { icons } from '../../../composables/icons' import type { ChatMessage } from './types' @@ -28,13 +28,13 @@ const emit = defineEmits<{ /* ── Input ────────────────────────────────────────── */ const inputText = ref('') const msgContainer = ref(null) +const inputRef = ref(null) function handleSend() { const text = inputText.value.trim() if (!text) return emit('send', text) inputText.value = '' - // Focus bleibt im Input } function onKeydown(e: KeyboardEvent) { @@ -44,23 +44,20 @@ function onKeydown(e: KeyboardEvent) { } } -/* ── Auto-scroll nach unten ───────────────────────── */ +/* ── Reversed messages (newest first in DOM for column-reverse) ── */ +const reversedMessages = computed(() => [...props.messages].reverse()) + +/* ── Auto-scroll: column-reverse means scrollTop=0 = bottom (newest) ── */ watch( () => props.messages.length, () => { nextTick(() => { if (msgContainer.value) { - msgContainer.value.scrollTop = msgContainer.value.scrollHeight + msgContainer.value.scrollTop = 0 } }) } ) - -/* ── Format timestamp ─────────────────────────────── */ -function formatTs(ts: string): string { - // Expects "HH:MM" or "HH:MM:SS" - return ts -}