From 2eeec15f9c991e23e76ee8475b6a085473f2884f Mon Sep 17 00:00:00 2001 From: anti Date: Mon, 27 Apr 2026 17:42:21 -0400 Subject: [PATCH] feat(orchestrator-ui): mark file-edit events with an EDIT badge MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit FileAction and EditAction both write kind="file" — the discriminator is action="file:create" vs "file:edit". The dashboard timeline used to render both identically; now an EDIT sub-chip surfaces edits without widening the kind enum (which doubles as the bus topic family). No schema or API change. Polish only. --- decnet_web/src/components/Orchestrator.tsx | 15 +++++++++++++++ .../src/components/OrchestratorInspector.tsx | 10 ++++++++++ 2 files changed, 25 insertions(+) diff --git a/decnet_web/src/components/Orchestrator.tsx b/decnet_web/src/components/Orchestrator.tsx index 39352152..d6c41c54 100644 --- a/decnet_web/src/components/Orchestrator.tsx +++ b/decnet_web/src/components/Orchestrator.tsx @@ -259,6 +259,12 @@ const Orchestrator: React.FC = () => { r.kind === 'traffic' || r.kind === 'file' || r.kind === 'email' ? r.kind : ''; const isEmail = r.kind === 'email'; + // FileAction and EditAction both write kind="file"; the + // discriminator lives in `action` ("file:create" vs + // "file:edit"). Surface the difference visually without + // widening the kind enum (which doubles as the bus + // topic family). + const isEdit = r.kind === 'file' && r.action?.startsWith('file:edit'); return ( { {timeAgo(r.ts)} {r.kind} + {isEdit && ( + + EDIT + + )} {isEmail && r.language && ( diff --git a/decnet_web/src/components/OrchestratorInspector.tsx b/decnet_web/src/components/OrchestratorInspector.tsx index 918906a3..4e652094 100644 --- a/decnet_web/src/components/OrchestratorInspector.tsx +++ b/decnet_web/src/components/OrchestratorInspector.tsx @@ -65,6 +65,7 @@ const OrchestratorInspector: React.FC = ({ event, onClose }) => { event.kind === 'traffic' || event.kind === 'file' || event.kind === 'email' ? event.kind : ''; const isEmail = event.kind === 'email'; + const isEdit = event.kind === 'file' && event.action?.startsWith('file:edit'); const srcSrc = sourceTag(event.src_decky_uuid); const dstSrc = sourceTag(event.dst_decky_uuid); const isLive = event.uuid.startsWith('live-'); @@ -84,6 +85,15 @@ const OrchestratorInspector: React.FC = ({ event, onClose }) => { {event.kind.toUpperCase()} + {isEdit && ( + + EDIT + + )}