diff --git a/.changeset/vast-oranges-fail.md b/.changeset/vast-oranges-fail.md
new file mode 100644
index 0000000000..5471ebeb2f
--- /dev/null
+++ b/.changeset/vast-oranges-fail.md
@@ -0,0 +1,5 @@
+---
+"@workflow/web-shared": patch
+---
+
+Support in-line decryption for data inspector on the detail panel
diff --git a/packages/web-shared/src/components/sidebar/attribute-panel.tsx b/packages/web-shared/src/components/sidebar/attribute-panel.tsx
index 04ac416f9b..57ae04d2f5 100644
--- a/packages/web-shared/src/components/sidebar/attribute-panel.tsx
+++ b/packages/web-shared/src/components/sidebar/attribute-panel.tsx
@@ -4,6 +4,7 @@ import { parseStepName, parseWorkflowName } from '@workflow/utils/parse-name';
import type { Event, Hook, Step, WorkflowRun } from '@workflow/world';
import type { ModelMessage } from 'ai';
import { Lock } from 'lucide-react';
+import { Spinner } from '../ui/spinner';
import type { KeyboardEvent, ReactNode } from 'react';
import { useCallback, useContext, useMemo, useState } from 'react';
import { isEncryptedMarker, isExpiredMarker } from '../../lib/hydration';
@@ -197,13 +198,7 @@ function EncryptedFieldBlock() {
title="Click to decrypt"
>
{ctx.isDecrypting ? (
-
+
) : (
)}
diff --git a/packages/web-shared/src/components/sidebar/entity-detail-panel.tsx b/packages/web-shared/src/components/sidebar/entity-detail-panel.tsx
index d2defbb172..833d8b342b 100644
--- a/packages/web-shared/src/components/sidebar/entity-detail-panel.tsx
+++ b/packages/web-shared/src/components/sidebar/entity-detail-panel.tsx
@@ -6,6 +6,7 @@ import { Send, Zap } from 'lucide-react';
import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
import { useToast } from '../../lib/toast';
import { isEncryptedMarker } from '../../lib/hydration';
+import { DecryptClickContext } from '../ui/data-inspector';
import { DecryptButton } from '../ui/decrypt-button';
import { AttributePanel } from './attribute-panel';
import { EventsList } from './events-list';
@@ -405,103 +406,107 @@ export function EntityDetailPanel({
-
- {hasPendingActions && (
-
-
+
+ {hasPendingActions && (
+
- Actions
-
-
- {/* Wake up button for pending sleep calls */}
- {resource === 'sleep' && canWakeUp && (
-
- )}
-
- {/* Resolve hook button for pending hooks */}
- {resource === 'hook' && canResolveHook && (
-
- )}
+
+ Actions
+
+
+ {/* Wake up button for pending sleep calls */}
+ {resource === 'sleep' && canWakeUp && (
+
+ )}
+
+ {/* Resolve hook button for pending hooks */}
+ {resource === 'hook' && canResolveHook && (
+
+ )}
+
-
- )}
+ )}
-
-
-
- {resource !== 'run' && rawEvents && (
+
- )}
+
+ {resource !== 'run' && rawEvents && (
+
+ )}
+
-
+
{/* Resolve Hook Modal */}
{ctx.isDecrypting ? (
-
+
) : (