From e4416a1d8df8c77e926e3e57335b8218aa285abc Mon Sep 17 00:00:00 2001 From: Simon Klee Date: Tue, 7 Jul 2026 08:14:31 +0200 Subject: [PATCH] tui: report clipboard copy delivery status --- packages/tui/src/component/dialog-debug.tsx | 20 +++++++++++++++----- packages/tui/src/routes/session/index.tsx | 11 +++++++++-- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/packages/tui/src/component/dialog-debug.tsx b/packages/tui/src/component/dialog-debug.tsx index 21554aac957..3798850675c 100644 --- a/packages/tui/src/component/dialog-debug.tsx +++ b/packages/tui/src/component/dialog-debug.tsx @@ -9,6 +9,7 @@ import { useClipboard } from "../context/clipboard" import { useToast } from "../ui/toast" import { useBindings } from "../keymap" import { describeOS, describeTerminal } from "../util/system" +import { formatClipboardWriteNotification } from "../clipboard" export function DialogDebug() { const { theme } = useTheme() @@ -37,13 +38,22 @@ export function DialogDebug() { const text = entries() .map((entry) => `${entry.label}: ${entry.value}`) .join("\n") + setCopied(false) void clipboard - .write?.(text) - .then(() => { - setCopied(true) - toast.show({ message: "Debug info copied to clipboard", variant: "info" }) + .write(text) + .then((outcome) => { + setCopied(outcome.delivery === "confirmed") + toast.show( + formatClipboardWriteNotification(outcome, { + message: "Debug info copied to clipboard", + variant: "info", + }), + ) + }) + .catch((error) => { + setCopied(false) + toast.error(error) }) - .catch(toast.error) } useBindings(() => ({ diff --git a/packages/tui/src/routes/session/index.tsx b/packages/tui/src/routes/session/index.tsx index b9b3576d765..2f914dbf042 100644 --- a/packages/tui/src/routes/session/index.tsx +++ b/packages/tui/src/routes/session/index.tsx @@ -469,8 +469,15 @@ export function Session() { run: async () => { const copy = (url: string) => clipboard - .write?.(url) - .then(() => toast.show({ message: "Share URL copied to clipboard!", variant: "success" })) + .write(url) + .then((outcome) => + toast.show( + formatClipboardWriteNotification(outcome, { + message: "Share URL copied to clipboard!", + variant: "success", + }), + ), + ) .catch(() => toast.show({ message: "Failed to copy URL to clipboard", variant: "error" })) const url = session()?.share?.url if (url) {