{onBack ? (
@@ -697,6 +702,6 @@ export function TaskDetail({
)}
) : null}
-
+
);
}
diff --git a/src/i18n/en.ts b/src/i18n/en.ts
index e603e02..05bd34a 100644
--- a/src/i18n/en.ts
+++ b/src/i18n/en.ts
@@ -1,6 +1,7 @@
export const en = {
"app.error.title": "SpireCode could not start",
"app.error.reload": "Reload",
+ "contextMenu.copy": "Copy",
"tasks.overview": "Overview",
"tasks.currentExecution": "Current execution",
"tasks.requirements": "Requirements",
diff --git a/src/i18n/zh-CN.ts b/src/i18n/zh-CN.ts
index fa921cf..b92e297 100644
--- a/src/i18n/zh-CN.ts
+++ b/src/i18n/zh-CN.ts
@@ -3,6 +3,7 @@ import type { TranslationKey } from "./en";
export const zhCN = {
"app.error.title": "SpireCode 无法启动",
"app.error.reload": "重新加载",
+ "contextMenu.copy": "复制",
"tasks.overview": "概览",
"tasks.currentExecution": "当前执行",
"tasks.requirements": "任务需求",
diff --git a/src/styles/index.css b/src/styles/index.css
index 14c089a..d3c5e35 100644
--- a/src/styles/index.css
+++ b/src/styles/index.css
@@ -4596,6 +4596,35 @@ details[open] > summary > .chat-disclosure-icon {
outline: none;
background: var(--interactive-hover);
}
+.selection-copy-menu {
+ position: fixed;
+ z-index: 90;
+ min-width: 142px;
+ padding: 4px;
+ border: 1px solid var(--border-default);
+ border-radius: 7px;
+ background: var(--surface-popover);
+ box-shadow: 0 8px 24px var(--shadow);
+}
+.selection-copy-menu button {
+ width: 100%;
+ min-height: 27px;
+ padding: 0 8px;
+ border: 0;
+ border-radius: 4px;
+ display: flex;
+ align-items: center;
+ background: transparent;
+ color: var(--text-default);
+ font-size: 11px;
+ text-align: left;
+ cursor: pointer;
+}
+.selection-copy-menu button:hover,
+.selection-copy-menu button:focus-visible {
+ outline: none;
+ background: var(--interactive-hover);
+}
.chat-history-item[aria-current="true"] {
background: var(--accent-soft);
}