From 0fb7a1130ed07b5b6974e9c71563cb5066cf97b5 Mon Sep 17 00:00:00 2001 From: Moviw <1973559479@qq.com> Date: Thu, 18 Jun 2026 22:10:46 +0900 Subject: [PATCH] fix: safely copy text without Clipboard API --- .../agents/connect-agents-empty.tsx | 21 ++-- .../go/web/components/chat/chat-message.tsx | 3 +- .../layout/workspace-switcher-menu.tsx | 15 ++- .../go/web/hooks/use-copy-to-clipboard.ts | 7 +- packages/go/web/lib/clipboard.test.ts | 98 +++++++++++++++++++ packages/go/web/lib/clipboard.ts | 25 +++++ .../src/renderer/components/chat/Markdown.tsx | 3 +- .../components/credentials/CredentialCard.tsx | 3 +- .../launcher/src/renderer/lib/clipboard.ts | 25 +++++ .../install/detail/detail-quick-start.tsx | 3 +- .../detail/detail-unmanaged-notice.tsx | 3 +- .../pages/install/detail/use-agent-detail.ts | 3 +- .../src/renderer/pages/logs/index.tsx | 4 +- .../settings/sections/runtime-section.tsx | 3 +- .../src/renderer/pages/workspaces/index.tsx | 3 +- sdk/studio/src/components/chat/CodeBlock.tsx | 15 +-- sdk/studio/src/hooks/use-copy-to-clipboard.ts | 7 +- .../src/pages/admin/ConnectionGuide.tsx | 15 +-- .../src/pages/admin/TransportConfig.tsx | 11 ++- .../dashboard/NetworkStatusPanel.tsx | 14 +-- .../components/ServiceAgentDetail.tsx | 3 +- sdk/studio/src/stores/llmLogStore.ts | 16 +-- .../src/utils/__tests__/clipboard.test.ts | 90 +++++++++++++++++ sdk/studio/src/utils/clipboard.ts | 25 +++++ .../frontend/components/chat/chat-message.tsx | 3 +- .../frontend/components/chat/empty-state.tsx | 11 ++- .../components/connect/connect-agent-view.tsx | 13 ++- .../components/knowledge/knowledge-view.tsx | 3 +- .../frontend/components/layout/user-menu.tsx | 16 +-- .../frontend/hooks/use-copy-to-clipboard.ts | 7 +- workspace/frontend/lib/clipboard.ts | 25 +++++ 31 files changed, 382 insertions(+), 111 deletions(-) create mode 100644 packages/go/web/lib/clipboard.test.ts create mode 100644 packages/go/web/lib/clipboard.ts create mode 100644 packages/launcher/src/renderer/lib/clipboard.ts create mode 100644 sdk/studio/src/utils/__tests__/clipboard.test.ts create mode 100644 sdk/studio/src/utils/clipboard.ts create mode 100644 workspace/frontend/lib/clipboard.ts diff --git a/packages/go/web/components/agents/connect-agents-empty.tsx b/packages/go/web/components/agents/connect-agents-empty.tsx index 3d186893c..2ade643d1 100644 --- a/packages/go/web/components/agents/connect-agents-empty.tsx +++ b/packages/go/web/components/agents/connect-agents-empty.tsx @@ -10,6 +10,7 @@ import { useState } from 'react'; import { Cpu, Copy, Check, Eye, EyeOff, RefreshCw, ArrowUpRight, Download } from 'lucide-react'; import { Button } from '@/components/ui/button'; import { useWorkspace } from '@/lib/workspace-context'; +import { copyTextToClipboard } from '@/lib/clipboard'; // Public download page for the desktop Launcher (placeholder — point at the // real release page before shipping). @@ -120,10 +121,12 @@ function StepCard({ function CommandRow({ command }: { command: string }) { const [copied, setCopied] = useState(false); - const copy = () => { - navigator.clipboard.writeText(command); - setCopied(true); - setTimeout(() => setCopied(false), 1400); + const copy = async () => { + try { + await copyTextToClipboard(command); + setCopied(true); + setTimeout(() => setCopied(false), 1400); + } catch {} }; return (