diff --git a/electron-builder.yml b/electron-builder.yml index 536e6553..3302c5dd 100644 --- a/electron-builder.yml +++ b/electron-builder.yml @@ -63,4 +63,7 @@ electronDownload: afterSign: scripts/notarize.js releaseInfo: releaseNotes: | - 修复删除助手会导致应用崩溃的问题 + 修复快捷键设置错误导致的无法启动问题 + 修复翻译按钮无法正常输出内容问题 + 修复检测更新按钮逻辑错误 + 没有语言标识的代码块支持复制 diff --git a/src/renderer/src/context/SyntaxHighlighterProvider.tsx b/src/renderer/src/context/SyntaxHighlighterProvider.tsx index bb017ae2..40d600af 100644 --- a/src/renderer/src/context/SyntaxHighlighterProvider.tsx +++ b/src/renderer/src/context/SyntaxHighlighterProvider.tsx @@ -56,7 +56,7 @@ export const SyntaxHighlighterProvider: React.FC = ({ childre try { if (!highlighter.getLoadedLanguages().includes(language as BundledLanguage)) { - if (language in bundledLanguages) { + if (language in bundledLanguages || language === 'text') { await highlighter.loadLanguage(language as BundledLanguage) console.log(`Loaded language: ${language}`) } else { diff --git a/src/renderer/src/pages/home/Markdown/Markdown.tsx b/src/renderer/src/pages/home/Markdown/Markdown.tsx index 0448b94e..b33dda59 100644 --- a/src/renderer/src/pages/home/Markdown/Markdown.tsx +++ b/src/renderer/src/pages/home/Markdown/Markdown.tsx @@ -2,7 +2,7 @@ import 'katex/dist/katex.min.css' import { useSettings } from '@renderer/hooks/useSettings' import { Message } from '@renderer/types' -import { escapeBrackets } from '@renderer/utils/formula' +import { addPlaintextToCodeBlock, escapeBrackets } from '@renderer/utils/formula' import { isEmpty } from 'lodash' import { FC, useMemo } from 'react' import { useTranslation } from 'react-i18next' @@ -35,7 +35,7 @@ const Markdown: FC = ({ message }) => { const empty = isEmpty(message.content) const paused = message.status === 'paused' const content = empty && paused ? t('message.chat.completion.paused') : message.content - return escapeBrackets(content) + return escapeBrackets(addPlaintextToCodeBlock(content)) }, [message.content, message.status, t]) const rehypePlugins = useMemo(() => { diff --git a/src/renderer/src/utils/formula.ts b/src/renderer/src/utils/formula.ts index f8d50b7c..373776a0 100644 --- a/src/renderer/src/utils/formula.ts +++ b/src/renderer/src/utils/formula.ts @@ -43,3 +43,17 @@ export function extractTitle(html: string): string | null { return null } + +export function addPlaintextToCodeBlock(markdown: string): string { + // 修改正则表达式以匹配代码块的开始和结束,包括前后的换行符 + const codeBlockRegex = /(^|\n)```([\w]*)\n([\s\S]*?)\n```/g + + return markdown.replace(codeBlockRegex, (match, newline, language, code) => { + // 如果没有指定语言,使用 text + if (!language) { + return `${newline}\`\`\`text\n${code}\n\`\`\`` + } + // 如果指定了语言,保持原样 + return match + }) +}