feat: add copy action to AI responses
Completed AI responses now expose a bottom copy action that copies their Markdown source without reasoning, tool logs, or citation metadata. Clipboard writes use a validated Preload/Main bridge so sandboxed Electron sessions no longer fail with a renderer clipboard permission error; full-conversation copy uses the same path. Release note: AI 回复底部现在可以直接复制 Markdown 原文,并修复了沙箱环境下回复和完整会话可能无法写入剪贴板的问题。
This commit is contained in:
@@ -5,10 +5,23 @@ import {
|
||||
browserNavigateRequestSchema,
|
||||
browserStopLoadingRequestSchema,
|
||||
builtinEmbeddingConnectionId,
|
||||
clipboardTextSchema,
|
||||
legacyEmbeddingConnectionId,
|
||||
runtimeSettingsInputSchema
|
||||
} from './contracts'
|
||||
|
||||
describe('clipboard text contract', () => {
|
||||
it('accepts text and rejects non-text input', () => {
|
||||
expect(clipboardTextSchema.parse('Markdown response')).toBe(
|
||||
'Markdown response'
|
||||
)
|
||||
expect(clipboardTextSchema.parse('')).toBe('')
|
||||
expect(clipboardTextSchema.safeParse({ text: 'no' }).success).toBe(
|
||||
false
|
||||
)
|
||||
})
|
||||
})
|
||||
|
||||
describe('browser control contracts', () => {
|
||||
it('requires authoritative toolbar metadata and accepts committed URLs up to 8192 characters', () => {
|
||||
const base = {
|
||||
|
||||
Reference in New Issue
Block a user