feat(chat): add Mermaid diagram zoom controls (#2100)

* feat(chat): add mermaid diagram zoom controls

* fix(chat): handle malformed mermaid data urls

* fix(chat): preserve mermaid load error stack

---------

Co-authored-by: Bohdan Triapitsyn <artmore@protonmail.com>
This commit is contained in:
Carson
2026-07-08 20:43:23 +03:00
committed by GitHub
co-authored by Bohdan Triapitsyn
parent dfed121bf1
commit 3d32ac7989
18 changed files with 1069 additions and 115 deletions
+10
View File
@@ -1962,6 +1962,11 @@ export const dict = {
'chat.toolOutputDialog.image.closeAria': 'Close image preview',
'chat.toolOutputDialog.mermaid.missingSource': 'Missing Mermaid source URL.',
'chat.toolOutputDialog.mermaid.loadFailed': 'Unable to load Mermaid diagram.',
'chat.toolOutputDialog.mermaid.dataUrlMalformed': 'The Mermaid data URL is malformed.',
'chat.toolOutputDialog.mermaid.invalidLocalPath': 'The local Mermaid file path is invalid.',
'chat.toolOutputDialog.mermaid.readFileFailedWithStatus': 'Unable to read Mermaid file. Status: {status}.',
'chat.toolOutputDialog.mermaid.unsupportedUrlProtocol': 'The Mermaid URL protocol is unsupported.',
'chat.toolOutputDialog.mermaid.loadFailedWithStatus': 'Unable to load Mermaid diagram. Status: {status}.',
'chat.toolOutputDialog.mermaid.closeAria': 'Close diagram preview',
'chat.toolOutputDialog.mermaid.loading': 'Loading diagram...',
'chat.toolOutputDialog.mermaid.renderFailed': 'Unable to render Mermaid diagram.',
@@ -2669,6 +2674,8 @@ export const dict = {
'mainLayout.mobile.closeDrawerAria': 'Close drawer',
'sortableTabsStrip.aria.tabs': 'Tabs',
'openChamberLogo.aria.logo': 'OpenChamber logo',
'markdownRenderer.code.actions.copyTitle': 'Copy code',
'markdownRenderer.code.actions.copiedTitle': 'Copied',
'markdownRenderer.table.actions.copyTitle': 'Copy table',
'markdownRenderer.code.actions.enableWrapTitle': 'Enable line wrap',
'markdownRenderer.code.actions.disableWrapTitle': 'Disable line wrap',
@@ -2677,6 +2684,9 @@ export const dict = {
'markdownRenderer.mermaid.actions.copyTitle': 'Copy',
'markdownRenderer.mermaid.actions.copySourceTitle': 'Copy source',
'markdownRenderer.mermaid.actions.downloadSvgTitle': 'Download SVG',
'markdownRenderer.mermaid.actions.zoomInTitle': 'Zoom in',
'markdownRenderer.mermaid.actions.zoomOutTitle': 'Zoom out',
'markdownRenderer.mermaid.actions.resetViewTitle': 'Reset view',
'markdownRenderer.mermaid.toast.downloadFailed': 'Failed to download diagram',
'common.date.today': 'Today',
'common.date.yesterday': 'Yesterday',
+10
View File
@@ -1928,6 +1928,11 @@ export const dict: Record<I18nKey, string> = {
"chat.toolOutputDialog.image.closeAria": "Cerrar vista previa de imagen",
"chat.toolOutputDialog.mermaid.missingSource": "Falta la URL de origen de Mermaid.",
"chat.toolOutputDialog.mermaid.loadFailed": "No se pudo cargar el diagrama de Mermaid.",
"chat.toolOutputDialog.mermaid.dataUrlMalformed": "La URL de datos de Mermaid no tiene un formato válido.",
"chat.toolOutputDialog.mermaid.invalidLocalPath": "La ruta del archivo local de Mermaid no es válida.",
"chat.toolOutputDialog.mermaid.readFileFailedWithStatus": "No se pudo leer el archivo de Mermaid. Estado: {status}.",
"chat.toolOutputDialog.mermaid.unsupportedUrlProtocol": "El protocolo de la URL de Mermaid no es compatible.",
"chat.toolOutputDialog.mermaid.loadFailedWithStatus": "No se pudo cargar el diagrama de Mermaid. Estado: {status}.",
"chat.toolOutputDialog.mermaid.closeAria": "Cerrar vista previa del diagrama",
"chat.toolOutputDialog.mermaid.loading": "Cargando diagrama...",
"chat.toolOutputDialog.mermaid.renderFailed": "No se pudo renderizar el diagrama de Mermaid.",
@@ -2635,6 +2640,8 @@ export const dict: Record<I18nKey, string> = {
"mainLayout.mobile.closeDrawerAria": "Cerrar drawer",
"sortableTabsStrip.aria.tabs": "Pestañas",
"openChamberLogo.aria.logo": "Logo de OpenChamber",
"markdownRenderer.code.actions.copyTitle": "Copiar código",
"markdownRenderer.code.actions.copiedTitle": "Copiado",
"markdownRenderer.table.actions.copyTitle": "Copiar tabla",
"markdownRenderer.code.actions.enableWrapTitle": "Activar ajuste de línea",
"markdownRenderer.code.actions.disableWrapTitle": "Desactivar ajuste de línea",
@@ -2643,6 +2650,9 @@ export const dict: Record<I18nKey, string> = {
"markdownRenderer.mermaid.actions.copyTitle": "Copiar",
"markdownRenderer.mermaid.actions.copySourceTitle": "Copiar fuente",
"markdownRenderer.mermaid.actions.downloadSvgTitle": "Descargar SVG",
"markdownRenderer.mermaid.actions.zoomInTitle": "Acercar",
"markdownRenderer.mermaid.actions.zoomOutTitle": "Alejar",
"markdownRenderer.mermaid.actions.resetViewTitle": "Restablecer vista",
"markdownRenderer.mermaid.toast.downloadFailed": "No se pudo descargar el diagrama",
"contextPanel.preview.title": "Vista previa",
"contextPanel.preview.description": "Usa Acciones del proyecto o el botón Preview del terminal para abrir una vista previa.",
+10
View File
@@ -1749,6 +1749,11 @@ export const dict = {
'chat.toolOutputDialog.image.closeAria': 'Fermer l\'aperçu de l\'image',
'chat.toolOutputDialog.mermaid.missingSource': 'URL de source Mermaid manquante.',
'chat.toolOutputDialog.mermaid.loadFailed': 'Impossible de charger le diagramme Mermaid.',
'chat.toolOutputDialog.mermaid.dataUrlMalformed': 'L\'URL de données Mermaid est mal formée.',
'chat.toolOutputDialog.mermaid.invalidLocalPath': 'Le chemin du fichier Mermaid local est invalide.',
'chat.toolOutputDialog.mermaid.readFileFailedWithStatus': 'Impossible de lire le fichier Mermaid. Statut : {status}.',
'chat.toolOutputDialog.mermaid.unsupportedUrlProtocol': 'Le protocole de l\'URL Mermaid n\'est pas pris en charge.',
'chat.toolOutputDialog.mermaid.loadFailedWithStatus': 'Impossible de charger le diagramme Mermaid. Statut : {status}.',
'chat.toolOutputDialog.mermaid.closeAria': 'Fermer l\'aperçu du diagramme',
'chat.toolOutputDialog.mermaid.loading': 'Diagramme de chargement...',
'chat.toolOutputDialog.mermaid.renderFailed': 'Impossible d\'afficher le diagramme Mermaid.',
@@ -2439,6 +2444,8 @@ export const dict = {
'mainLayout.mobile.closeDrawerAria': 'Fermer le tiroir',
'sortableTabsStrip.aria.tabs': 'Onglets',
'openChamberLogo.aria.logo': 'Logo OpenChamber',
'markdownRenderer.code.actions.copyTitle': 'Copier le code',
'markdownRenderer.code.actions.copiedTitle': 'Copié',
'markdownRenderer.table.actions.copyTitle': 'Copier le tableau',
'markdownRenderer.code.actions.enableWrapTitle': 'Activer le retour à la ligne',
'markdownRenderer.code.actions.disableWrapTitle': 'Désactiver le retour à la ligne',
@@ -2447,6 +2454,9 @@ export const dict = {
'markdownRenderer.mermaid.actions.copyTitle': 'Copie',
'markdownRenderer.mermaid.actions.copySourceTitle': 'Copier la source',
'markdownRenderer.mermaid.actions.downloadSvgTitle': 'Télécharger SVG',
'markdownRenderer.mermaid.actions.zoomInTitle': 'Zoom avant',
'markdownRenderer.mermaid.actions.zoomOutTitle': 'Zoom arrière',
'markdownRenderer.mermaid.actions.resetViewTitle': 'Réinitialiser la vue',
'markdownRenderer.mermaid.toast.downloadFailed': 'Échec du téléchargement du diagramme',
'common.date.today': 'Aujourdhui',
'common.date.yesterday': 'Hier',
+10
View File
@@ -1961,6 +1961,11 @@ export const dict: Record<I18nKey, string> = {
'chat.toolOutputDialog.image.closeAria': '画像プレビューを閉じる',
'chat.toolOutputDialog.mermaid.missingSource': 'MermaidソースURLがありません。',
'chat.toolOutputDialog.mermaid.loadFailed': 'Mermaidダイアグラムを読み込めません。',
'chat.toolOutputDialog.mermaid.dataUrlMalformed': 'MermaidのデータURLの形式が正しくありません。',
'chat.toolOutputDialog.mermaid.invalidLocalPath': 'Mermaidのローカルファイルパスが無効です。',
'chat.toolOutputDialog.mermaid.readFileFailedWithStatus': 'Mermaidファイルを読み込めません。ステータス: {status}。',
'chat.toolOutputDialog.mermaid.unsupportedUrlProtocol': 'Mermaid URLのプロトコルはサポートされていません。',
'chat.toolOutputDialog.mermaid.loadFailedWithStatus': 'Mermaidダイアグラムを読み込めません。ステータス: {status}。',
'chat.toolOutputDialog.mermaid.closeAria': 'ダイアグラムプレビューを閉じる',
'chat.toolOutputDialog.mermaid.loading': 'ダイアグラムを読み込み中...',
'chat.toolOutputDialog.mermaid.renderFailed': 'Mermaidダイアグラムをレンダリングできません。',
@@ -2665,6 +2670,8 @@ export const dict: Record<I18nKey, string> = {
'mainLayout.mobile.closeDrawerAria': 'ドロワーを閉じる',
'sortableTabsStrip.aria.tabs': 'タブ',
'openChamberLogo.aria.logo': 'OpenChamberロゴ',
'markdownRenderer.code.actions.copyTitle': 'コードをコピー',
'markdownRenderer.code.actions.copiedTitle': 'コピーしました',
'markdownRenderer.table.actions.copyTitle': 'テーブルをコピー',
'markdownRenderer.code.actions.enableWrapTitle': '行折り返しを有効にする',
'markdownRenderer.code.actions.disableWrapTitle': '行折り返しを無効にする',
@@ -2673,6 +2680,9 @@ export const dict: Record<I18nKey, string> = {
'markdownRenderer.mermaid.actions.copyTitle': 'コピー',
'markdownRenderer.mermaid.actions.copySourceTitle': 'ソースをコピー',
'markdownRenderer.mermaid.actions.downloadSvgTitle': 'SVGをダウンロード',
'markdownRenderer.mermaid.actions.zoomInTitle': '拡大',
'markdownRenderer.mermaid.actions.zoomOutTitle': '縮小',
'markdownRenderer.mermaid.actions.resetViewTitle': '表示をリセット',
'markdownRenderer.mermaid.toast.downloadFailed': 'ダイアグラムのダウンロードに失敗しました',
'common.date.today': '今日',
'common.date.yesterday': '昨日',
+10
View File
@@ -1962,6 +1962,11 @@ export const dict: Record<I18nKey, string> = {
'chat.toolOutputDialog.image.closeAria': '이미지 미리보기 닫기',
'chat.toolOutputDialog.mermaid.missingSource': 'Mermaid 소스 URL이 없습니다.',
'chat.toolOutputDialog.mermaid.loadFailed': 'Mermaid 다이어그램을 불러올 수 없습니다',
'chat.toolOutputDialog.mermaid.dataUrlMalformed': 'Mermaid 데이터 URL 형식이 올바르지 않습니다.',
'chat.toolOutputDialog.mermaid.invalidLocalPath': 'Mermaid 로컬 파일 경로가 올바르지 않습니다.',
'chat.toolOutputDialog.mermaid.readFileFailedWithStatus': 'Mermaid 파일을 읽을 수 없습니다. 상태: {status}.',
'chat.toolOutputDialog.mermaid.unsupportedUrlProtocol': 'Mermaid URL 프로토콜은 지원되지 않습니다.',
'chat.toolOutputDialog.mermaid.loadFailedWithStatus': 'Mermaid 다이어그램을 불러올 수 없습니다. 상태: {status}.',
'chat.toolOutputDialog.mermaid.closeAria': '다이어그램 미리보기 닫기',
'chat.toolOutputDialog.mermaid.loading': '다이어그램 로드 중…',
'chat.toolOutputDialog.mermaid.renderFailed': 'Mermaid 다이어그램을 렌더링할 수 없습니다.',
@@ -2669,6 +2674,8 @@ export const dict: Record<I18nKey, string> = {
'mainLayout.mobile.closeDrawerAria': '드로어 닫기',
'sortableTabsStrip.aria.tabs': '탭',
'openChamberLogo.aria.logo': 'OpenChamber 로고',
'markdownRenderer.code.actions.copyTitle': '코드 복사',
'markdownRenderer.code.actions.copiedTitle': '복사됨',
'markdownRenderer.table.actions.copyTitle': '표 복사',
'markdownRenderer.code.actions.enableWrapTitle': '줄 바꿈 켜기',
'markdownRenderer.code.actions.disableWrapTitle': '줄 바꿈 끄기',
@@ -2677,6 +2684,9 @@ export const dict: Record<I18nKey, string> = {
'markdownRenderer.mermaid.actions.copyTitle': '복사',
'markdownRenderer.mermaid.actions.copySourceTitle': '소스 복사',
'markdownRenderer.mermaid.actions.downloadSvgTitle': 'SVG 다운로드',
'markdownRenderer.mermaid.actions.zoomInTitle': '확대',
'markdownRenderer.mermaid.actions.zoomOutTitle': '축소',
'markdownRenderer.mermaid.actions.resetViewTitle': '보기 초기화',
'markdownRenderer.mermaid.toast.downloadFailed': '다이어그램 다운로드 실패',
'common.date.today': 'Today',
'common.date.yesterday': 'Yesterday',
+10
View File
@@ -1281,6 +1281,11 @@ export const dict: Record<I18nKey, string> = {
'chat.toolOutputDialog.image.previousAria': 'Poprzedni obraz',
'chat.toolOutputDialog.mermaid.closeAria': 'Zamknij podgląd diagramu',
'chat.toolOutputDialog.mermaid.loadFailed': 'Nie udało się wczytać diagramu Mermaid.',
'chat.toolOutputDialog.mermaid.dataUrlMalformed': 'Adres URL danych Mermaid ma nieprawidłowy format.',
'chat.toolOutputDialog.mermaid.invalidLocalPath': 'Lokalna ścieżka pliku Mermaid jest nieprawidłowa.',
'chat.toolOutputDialog.mermaid.readFileFailedWithStatus': 'Nie udało się odczytać pliku Mermaid. Status: {status}.',
'chat.toolOutputDialog.mermaid.unsupportedUrlProtocol': 'Protokół adresu URL Mermaid nie jest obsługiwany.',
'chat.toolOutputDialog.mermaid.loadFailedWithStatus': 'Nie udało się wczytać diagramu Mermaid. Status: {status}.',
'chat.toolOutputDialog.mermaid.loading': 'Ładowanie diagramu...',
'chat.toolOutputDialog.mermaid.missingSource': 'Brakuje adresu URL źródła Mermaid.',
'chat.toolOutputDialog.mermaid.renderFailed': 'Nie udało się wyrenderować diagramu Mermaid.',
@@ -2159,7 +2164,12 @@ export const dict: Record<I18nKey, string> = {
'markdownRenderer.mermaid.actions.copySourceTitle': 'Kopiuj źródło',
'markdownRenderer.mermaid.actions.copyTitle': 'Kopiuj',
'markdownRenderer.mermaid.actions.downloadSvgTitle': 'Pobierz SVG',
'markdownRenderer.mermaid.actions.zoomInTitle': 'Powiększ',
'markdownRenderer.mermaid.actions.zoomOutTitle': 'Pomniejsz',
'markdownRenderer.mermaid.actions.resetViewTitle': 'Resetuj widok',
'markdownRenderer.mermaid.toast.downloadFailed': 'Nie udało się pobrać diagramu',
'markdownRenderer.code.actions.copyTitle': 'Kopiuj kod',
'markdownRenderer.code.actions.copiedTitle': 'Skopiowano',
'markdownRenderer.table.actions.copyTitle': 'Kopiuj tabelę',
'markdownRenderer.code.actions.enableWrapTitle': 'Włącz zawijanie wierszy',
'markdownRenderer.code.actions.disableWrapTitle': 'Wyłącz zawijanie wierszy',
@@ -1928,6 +1928,11 @@ export const dict: Record<I18nKey, string> = {
"chat.toolOutputDialog.image.closeAria": "Fechar prévia de imagem",
"chat.toolOutputDialog.mermaid.missingSource": "Falta a URL de origem do Mermaid.",
"chat.toolOutputDialog.mermaid.loadFailed": "Não foi possível carregar o diagrama de Mermaid.",
"chat.toolOutputDialog.mermaid.dataUrlMalformed": "A URL de dados do Mermaid está malformada.",
"chat.toolOutputDialog.mermaid.invalidLocalPath": "O caminho do arquivo local do Mermaid é inválido.",
"chat.toolOutputDialog.mermaid.readFileFailedWithStatus": "Não foi possível ler o arquivo Mermaid. Status: {status}.",
"chat.toolOutputDialog.mermaid.unsupportedUrlProtocol": "O protocolo da URL do Mermaid não é compatível.",
"chat.toolOutputDialog.mermaid.loadFailedWithStatus": "Não foi possível carregar o diagrama Mermaid. Status: {status}.",
"chat.toolOutputDialog.mermaid.closeAria": "Fechar prévia do diagrama",
"chat.toolOutputDialog.mermaid.loading": "Carregando diagrama...",
"chat.toolOutputDialog.mermaid.renderFailed": "Não foi possível renderizar o diagrama de Mermaid.",
@@ -2635,6 +2640,8 @@ export const dict: Record<I18nKey, string> = {
"mainLayout.mobile.closeDrawerAria": "Fechar gaveta",
"sortableTabsStrip.aria.tabs": "Abas",
"openChamberLogo.aria.logo": "Logo do OpenChamber",
"markdownRenderer.code.actions.copyTitle": "Copiar código",
"markdownRenderer.code.actions.copiedTitle": "Copiado",
"markdownRenderer.table.actions.copyTitle": "Copiar tabela",
"markdownRenderer.code.actions.enableWrapTitle": "Ativar quebra de linha",
"markdownRenderer.code.actions.disableWrapTitle": "Desativar quebra de linha",
@@ -2643,6 +2650,9 @@ export const dict: Record<I18nKey, string> = {
"markdownRenderer.mermaid.actions.copyTitle": "Copiar",
"markdownRenderer.mermaid.actions.copySourceTitle": "Copiar origem",
"markdownRenderer.mermaid.actions.downloadSvgTitle": "Baixar SVG",
"markdownRenderer.mermaid.actions.zoomInTitle": "Aumentar zoom",
"markdownRenderer.mermaid.actions.zoomOutTitle": "Diminuir zoom",
"markdownRenderer.mermaid.actions.resetViewTitle": "Redefinir visualização",
"markdownRenderer.mermaid.toast.downloadFailed": "Não foi possível baixar o diagrama",
"contextPanel.preview.title": "Visualização",
"contextPanel.preview.description": "Use Ações do projeto ou o botão Preview do terminal para abrir uma visualização.",
+10
View File
@@ -1928,6 +1928,11 @@ export const dict: Record<I18nKey, string> = {
"chat.toolOutputDialog.image.closeAria": "Закрити попередній перегляд зображення",
"chat.toolOutputDialog.mermaid.missingSource": "Відсутнє джерело Mermaid URL.",
"chat.toolOutputDialog.mermaid.loadFailed": "Не вдалося завантажити діаграму Mermaid.",
"chat.toolOutputDialog.mermaid.dataUrlMalformed": "URL даних Mermaid має неправильний формат.",
"chat.toolOutputDialog.mermaid.invalidLocalPath": "Локальний шлях до файлу Mermaid недійсний.",
"chat.toolOutputDialog.mermaid.readFileFailedWithStatus": "Не вдалося прочитати файл Mermaid. Статус: {status}.",
"chat.toolOutputDialog.mermaid.unsupportedUrlProtocol": "Протокол URL Mermaid не підтримується.",
"chat.toolOutputDialog.mermaid.loadFailedWithStatus": "Не вдалося завантажити діаграму Mermaid. Статус: {status}.",
"chat.toolOutputDialog.mermaid.closeAria": "Закрити попередній перегляд діаграми",
"chat.toolOutputDialog.mermaid.loading": "Завантаження діаграми...",
"chat.toolOutputDialog.mermaid.renderFailed": "Неможливо відобразити діаграму Mermaid.",
@@ -2635,6 +2640,8 @@ export const dict: Record<I18nKey, string> = {
"mainLayout.mobile.closeDrawerAria": "Закрити панель",
"sortableTabsStrip.aria.tabs": "Вкладки",
"openChamberLogo.aria.logo": "Логотип OpenChamber",
"markdownRenderer.code.actions.copyTitle": "Скопіювати код",
"markdownRenderer.code.actions.copiedTitle": "Скопійовано",
"markdownRenderer.table.actions.copyTitle": "Скопіювати таблицю",
"markdownRenderer.code.actions.enableWrapTitle": "Увімкнути перенесення рядків",
"markdownRenderer.code.actions.disableWrapTitle": "Вимкнути перенесення рядків",
@@ -2643,6 +2650,9 @@ export const dict: Record<I18nKey, string> = {
"markdownRenderer.mermaid.actions.copyTitle": "Копіювати",
"markdownRenderer.mermaid.actions.copySourceTitle": "Копіювати джерело",
"markdownRenderer.mermaid.actions.downloadSvgTitle": "Завантажити SVG",
"markdownRenderer.mermaid.actions.zoomInTitle": "Збільшити",
"markdownRenderer.mermaid.actions.zoomOutTitle": "Зменшити",
"markdownRenderer.mermaid.actions.resetViewTitle": "Скинути вигляд",
"markdownRenderer.mermaid.toast.downloadFailed": "Не вдалося завантажити діаграму",
"contextPanel.preview.title": "Попередній перегляд",
"contextPanel.preview.description": "Використайте дії проєкту або кнопку Preview у терміналі, щоб відкрити перегляд.",
@@ -1928,6 +1928,11 @@ export const dict: Record<I18nKey, string> = {
'chat.toolOutputDialog.image.closeAria': '关闭图片预览',
'chat.toolOutputDialog.mermaid.missingSource': '缺少 Mermaid 源 URL。',
'chat.toolOutputDialog.mermaid.loadFailed': '无法加载 Mermaid 图表。',
'chat.toolOutputDialog.mermaid.dataUrlMalformed': 'Mermaid 数据 URL 格式不正确。',
'chat.toolOutputDialog.mermaid.invalidLocalPath': 'Mermaid 本地文件路径无效。',
'chat.toolOutputDialog.mermaid.readFileFailedWithStatus': '无法读取 Mermaid 文件。状态:{status}。',
'chat.toolOutputDialog.mermaid.unsupportedUrlProtocol': '不支持该 Mermaid URL 协议。',
'chat.toolOutputDialog.mermaid.loadFailedWithStatus': '无法加载 Mermaid 图表。状态:{status}。',
'chat.toolOutputDialog.mermaid.closeAria': '关闭图表预览',
'chat.toolOutputDialog.mermaid.loading': '正在加载图表...',
'chat.toolOutputDialog.mermaid.renderFailed': '无法渲染 Mermaid 图表。',
@@ -2635,6 +2640,8 @@ export const dict: Record<I18nKey, string> = {
'mainLayout.mobile.closeDrawerAria': '关闭抽屉',
'sortableTabsStrip.aria.tabs': '标签页',
'openChamberLogo.aria.logo': 'OpenChamber 标志',
'markdownRenderer.code.actions.copyTitle': '复制代码',
'markdownRenderer.code.actions.copiedTitle': '已复制',
'markdownRenderer.table.actions.copyTitle': '复制表格',
'markdownRenderer.code.actions.enableWrapTitle': '启用自动换行',
'markdownRenderer.code.actions.disableWrapTitle': '禁用自动换行',
@@ -2643,6 +2650,9 @@ export const dict: Record<I18nKey, string> = {
'markdownRenderer.mermaid.actions.copyTitle': '复制',
'markdownRenderer.mermaid.actions.copySourceTitle': '复制源码',
'markdownRenderer.mermaid.actions.downloadSvgTitle': '下载 SVG',
'markdownRenderer.mermaid.actions.zoomInTitle': '放大',
'markdownRenderer.mermaid.actions.zoomOutTitle': '缩小',
'markdownRenderer.mermaid.actions.resetViewTitle': '重置视图',
'markdownRenderer.mermaid.toast.downloadFailed': '下载图表失败',
'contextPanel.preview.title': '预览',
'contextPanel.preview.description': '使用项目操作或终端 Preview 按钮打开预览。',
@@ -1932,6 +1932,11 @@ export const dict: Record<I18nKey, string> = {
'chat.toolOutputDialog.image.closeAria': '關閉圖片預覽',
'chat.toolOutputDialog.mermaid.missingSource': '缺少 Mermaid 來源 URL。',
'chat.toolOutputDialog.mermaid.loadFailed': '無法載入 Mermaid 圖表。',
'chat.toolOutputDialog.mermaid.dataUrlMalformed': 'Mermaid 資料 URL 格式不正確。',
'chat.toolOutputDialog.mermaid.invalidLocalPath': 'Mermaid 本機檔案路徑無效。',
'chat.toolOutputDialog.mermaid.readFileFailedWithStatus': '無法讀取 Mermaid 檔案。狀態:{status}。',
'chat.toolOutputDialog.mermaid.unsupportedUrlProtocol': '不支援此 Mermaid URL 通訊協定。',
'chat.toolOutputDialog.mermaid.loadFailedWithStatus': '無法載入 Mermaid 圖表。狀態:{status}。',
'chat.toolOutputDialog.mermaid.closeAria': '關閉圖表預覽',
'chat.toolOutputDialog.mermaid.loading': '正在載入圖表...',
'chat.toolOutputDialog.mermaid.renderFailed': '無法渲染 Mermaid 圖表。',
@@ -2632,6 +2637,8 @@ export const dict: Record<I18nKey, string> = {
'mainLayout.mobile.closeDrawerAria': '關閉抽屜',
'sortableTabsStrip.aria.tabs': '分頁',
'openChamberLogo.aria.logo': 'OpenChamber 標誌',
'markdownRenderer.code.actions.copyTitle': '複製程式碼',
'markdownRenderer.code.actions.copiedTitle': '已複製',
'markdownRenderer.table.actions.copyTitle': '複製表格',
'markdownRenderer.code.actions.enableWrapTitle': '啟用自動換行',
'markdownRenderer.code.actions.disableWrapTitle': '停用自動換行',
@@ -2640,6 +2647,9 @@ export const dict: Record<I18nKey, string> = {
'markdownRenderer.mermaid.actions.copyTitle': '複製',
'markdownRenderer.mermaid.actions.copySourceTitle': '複製原始碼',
'markdownRenderer.mermaid.actions.downloadSvgTitle': '下載 SVG',
'markdownRenderer.mermaid.actions.zoomInTitle': '放大',
'markdownRenderer.mermaid.actions.zoomOutTitle': '縮小',
'markdownRenderer.mermaid.actions.resetViewTitle': '重置檢視',
'markdownRenderer.mermaid.toast.downloadFailed': '下載圖表失敗',
'contextPanel.preview.title': '預覽',
'contextPanel.preview.description': '使用專案操作或終端機 Preview 按鈕開啟預覽。',