fix(ui): enable sidebar markdown code copying

Summary:
- Add the existing delegated markdown code-block copy handler to the Control UI chat sidebar container.
- Fix sidebar-rendered markdown code copy buttons that previously emitted no clipboard write because `.chat-sidebar` sits outside `.chat-thread`.

Verification:
- Unpatched current `origin/main` (`b24a6d2cbd636b0b39b732c962d58e574c748abe`) + temporary regression assertion: `pnpm test ui/src/ui/views/chat.test.ts -t "chat sidebar markdown copy"` failed with 0 `navigator.clipboard.writeText` calls.
- PR patch applied onto current `origin/main` + same temporary regression assertion: `pnpm test ui/src/ui/views/chat.test.ts -t "chat sidebar markdown copy"` passed, 1 test passed and 32 skipped.
- Live PR state before merge: `MERGEABLE`, `CLEAN`, head `2e04e981e992b32920476edc648009ddff7976d0`.
- Duplicate sweep found no same-failure duplicate PR/issue.
- Security check clear: UI event binding only; no dependency, workflow, auth, secret, network, or command-execution surface changes.

Known proof gap:
- No full browser walkthrough was run; the focused jsdom proof covers the exact DOM delegation boundary.

Thanks @tikitoki.
This commit is contained in:
tikitoki
2026-05-15 15:05:04 +08:00
committed by GitHub
parent b24a6d2cbd
commit e1d69bc433

View File

@@ -1313,7 +1313,7 @@ export function renderChat(props: ChatProps) {
.label=${t("nav.resize")}
@resize=${(e: CustomEvent) => props.onSplitRatioChange?.(e.detail.splitRatio)}
></resizable-divider>
<div class="chat-sidebar">
<div class="chat-sidebar" @click=${handleCodeBlockCopy}>
${renderMarkdownSidebar({
content: props.sidebarContent ?? null,
error: props.sidebarError ?? null,