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
+
+ )}
|