diff --git a/packages/opencode/src/provider/transform.ts b/packages/opencode/src/provider/transform.ts index 009b8fbaf..c734de3be 100644 --- a/packages/opencode/src/provider/transform.ts +++ b/packages/opencode/src/provider/transform.ts @@ -228,6 +228,42 @@ function normalizeMessages( }) } + // VLLM and other OpenAI-compatible providers strictly require system messages + // at the beginning of the messages array. Reorder if a system message appears + // after any non-system message. When multiple system messages exist, merge them + // into a single message for maximum compatibility with stricter VLLM versions. + if ( + model.api.npm === "@ai-sdk/openai-compatible" || + model.api.npm?.includes("openai-compatible") + ) { + const systemMsgs = msgs.filter((msg) => msg.role === "system") + const nonSystemMsgs = msgs.filter((msg) => msg.role !== "system") + if (systemMsgs.length > 0 && nonSystemMsgs.length > 0) { + const firstNonSystemIdx = msgs.findIndex((msg) => msg.role !== "system") + const lastSystemIdx = + msgs.length - 1 - [...msgs].reverse().findIndex((msg) => msg.role === "system") + if (lastSystemIdx > firstNonSystemIdx) { + if (systemMsgs.length > 1) { + const extractText = (msg: ModelMessage) => + typeof msg.content === "string" + ? msg.content + : Array.isArray(msg.content) + ? msg.content + .filter((p: any) => p.type === "text") + .map((p: any) => p.text) + .join("\n") + : "" + const merged: ModelMessage = { + role: "system", + content: systemMsgs.map(extractText).join("\n\n"), + } + return [merged, ...nonSystemMsgs] + } + return [...systemMsgs, ...nonSystemMsgs] + } + } + } + return msgs } diff --git a/packages/opencode/src/tool/lsp.ts b/packages/opencode/src/tool/lsp.ts index c4165b75c..692d79726 100644 --- a/packages/opencode/src/tool/lsp.ts +++ b/packages/opencode/src/tool/lsp.ts @@ -5,6 +5,7 @@ import path from "path" import { LSP } from "../lsp" import DESCRIPTION from "./lsp.txt" import { Instance } from "../project/instance" +import { SessionCwd } from "./session-cwd" import { pathToFileURL } from "url" import { assertExternalDirectoryEffect } from "./external-directory" import { AppFileSystem } from "@mimo-ai/shared/filesystem" @@ -40,7 +41,7 @@ export const LspTool = Tool.define( ctx: Tool.Context, ) => Effect.gen(function* () { - const file = path.isAbsolute(args.filePath) ? args.filePath : path.join(Instance.directory, args.filePath) + const file = path.isAbsolute(args.filePath) ? args.filePath : path.join(SessionCwd.get(ctx.sessionID), args.filePath) yield* assertExternalDirectoryEffect(ctx, file) yield* ctx.ask({ permission: "lsp", patterns: ["*"], always: ["*"], metadata: {} }) diff --git a/packages/opencode/src/tool/multiedit.ts b/packages/opencode/src/tool/multiedit.ts index 004d3c870..2c3684ea2 100644 --- a/packages/opencode/src/tool/multiedit.ts +++ b/packages/opencode/src/tool/multiedit.ts @@ -39,7 +39,7 @@ export const MultiEditTool = Tool.define( for (const [, entry] of params.edits.entries()) { const result = yield* edit.execute( { - filePath: params.filePath, + filePath: entry.filePath || params.filePath, oldString: entry.oldString, newString: entry.newString, replaceAll: entry.replaceAll, diff --git a/packages/ui/src/i18n/ar.ts b/packages/ui/src/i18n/ar.ts index ea4d03ac6..dfad0082b 100644 --- a/packages/ui/src/i18n/ar.ts +++ b/packages/ui/src/i18n/ar.ts @@ -1,5 +1,7 @@ export const dict = { "ui.sessionReview.title": "تغييرات الجلسة", + "ui.sessionReview.title.git": "تغييرات Git", + "ui.sessionReview.title.branch": "تغييرات الفرع", "ui.sessionReview.title.lastTurn": "تغييرات آخر دور", "ui.sessionReview.diffStyle.unified": "موحد", "ui.sessionReview.diffStyle.split": "منقسم", @@ -38,6 +40,11 @@ export const dict = { "ui.sessionTurn.summary.response": "استجابة", "ui.sessionTurn.diff.showMore": "إظهار المزيد من التغييرات ({{count}})", + "ui.sessionTurn.diffs.changed": "تغيّر", + "ui.sessionTurn.diffs.showAll": "عرض الكل", + "ui.sessionTurn.diffs.showLess": "عرض أقل", + "ui.sessionTurn.diffs.more": "+{{count}} ملفات أخرى", + "ui.sessionTurn.retry.retrying": "إعادة المحاولة", "ui.sessionTurn.retry.inSeconds": "خلال {{seconds}} ثواني", "ui.sessionTurn.retry.attempt": "المحاولة رقم {{attempt}}", diff --git a/packages/ui/src/i18n/br.ts b/packages/ui/src/i18n/br.ts index e8aefd937..9ae85ea00 100644 --- a/packages/ui/src/i18n/br.ts +++ b/packages/ui/src/i18n/br.ts @@ -1,5 +1,7 @@ export const dict = { "ui.sessionReview.title": "Alterações da sessão", + "ui.sessionReview.title.git": "Alterações no Git", + "ui.sessionReview.title.branch": "Alterações na branch", "ui.sessionReview.title.lastTurn": "Alterações do último turno", "ui.sessionReview.diffStyle.unified": "Unificado", "ui.sessionReview.diffStyle.split": "Dividido", @@ -38,6 +40,11 @@ export const dict = { "ui.sessionTurn.summary.response": "Resposta", "ui.sessionTurn.diff.showMore": "Mostrar mais alterações ({{count}})", + "ui.sessionTurn.diffs.changed": "Alterado", + "ui.sessionTurn.diffs.showAll": "Mostrar tudo", + "ui.sessionTurn.diffs.showLess": "Mostrar menos", + "ui.sessionTurn.diffs.more": "+{{count}} arquivos a mais", + "ui.sessionTurn.retry.retrying": "tentando novamente", "ui.sessionTurn.retry.inSeconds": "em {{seconds}}s", "ui.sessionTurn.retry.attempt": "tentativa #{{attempt}}", diff --git a/packages/ui/src/i18n/bs.ts b/packages/ui/src/i18n/bs.ts index 4e8ce8042..a32f3bca1 100644 --- a/packages/ui/src/i18n/bs.ts +++ b/packages/ui/src/i18n/bs.ts @@ -4,6 +4,8 @@ type Keys = keyof typeof en export const dict = { "ui.sessionReview.title": "Promjene sesije", + "ui.sessionReview.title.git": "Git promjene", + "ui.sessionReview.title.branch": "Promjene grane", "ui.sessionReview.title.lastTurn": "Promjene u posljednjem potezu", "ui.sessionReview.diffStyle.unified": "Ujedinjeno", "ui.sessionReview.diffStyle.split": "Podijeljeno", @@ -42,6 +44,11 @@ export const dict = { "ui.sessionTurn.summary.response": "Odgovor", "ui.sessionTurn.diff.showMore": "Prikaži još izmjena ({{count}})", + "ui.sessionTurn.diffs.changed": "Promijenjeno", + "ui.sessionTurn.diffs.showAll": "Prikaži sve", + "ui.sessionTurn.diffs.showLess": "Sakrij", + "ui.sessionTurn.diffs.more": "+{{count}} datoteka više", + "ui.sessionTurn.retry.retrying": "ponovni pokušaj", "ui.sessionTurn.retry.inSeconds": "za {{seconds}}s", "ui.sessionTurn.retry.attempt": "pokušaj #{{attempt}}", diff --git a/packages/ui/src/i18n/da.ts b/packages/ui/src/i18n/da.ts index 846fb3eca..d940dec39 100644 --- a/packages/ui/src/i18n/da.ts +++ b/packages/ui/src/i18n/da.ts @@ -1,5 +1,7 @@ export const dict = { "ui.sessionReview.title": "Sessionsændringer", + "ui.sessionReview.title.git": "Git-ændringer", + "ui.sessionReview.title.branch": "Branch-ændringer", "ui.sessionReview.title.lastTurn": "Ændringer fra sidste tur", "ui.sessionReview.diffStyle.unified": "Samlet", "ui.sessionReview.diffStyle.split": "Opdelt", @@ -37,6 +39,11 @@ export const dict = { "ui.sessionTurn.summary.response": "Svar", "ui.sessionTurn.diff.showMore": "Vis flere ændringer ({{count}})", + "ui.sessionTurn.diffs.changed": "Ændret", + "ui.sessionTurn.diffs.showAll": "Vis alle", + "ui.sessionTurn.diffs.showLess": "Vis færre", + "ui.sessionTurn.diffs.more": "+{{count}} flere filer", + "ui.sessionTurn.retry.retrying": "prøver igen", "ui.sessionTurn.retry.inSeconds": "om {{seconds}}s", "ui.sessionTurn.retry.attempt": "forsøg #{{attempt}}", diff --git a/packages/ui/src/i18n/de.ts b/packages/ui/src/i18n/de.ts index c07ceade2..5d9ed7127 100644 --- a/packages/ui/src/i18n/de.ts +++ b/packages/ui/src/i18n/de.ts @@ -4,6 +4,8 @@ type Keys = keyof typeof en export const dict = { "ui.sessionReview.title": "Sitzungsänderungen", + "ui.sessionReview.title.git": "Git-Änderungen", + "ui.sessionReview.title.branch": "Branch-Änderungen", "ui.sessionReview.title.lastTurn": "Änderungen der letzten Runde", "ui.sessionReview.diffStyle.unified": "Vereinheitlicht", "ui.sessionReview.diffStyle.split": "Geteilt", @@ -43,6 +45,11 @@ export const dict = { "ui.sessionTurn.summary.response": "Antwort", "ui.sessionTurn.diff.showMore": "Weitere Änderungen anzeigen ({{count}})", + "ui.sessionTurn.diffs.changed": "Geändert", + "ui.sessionTurn.diffs.showAll": "Alle anzeigen", + "ui.sessionTurn.diffs.showLess": "Weniger anzeigen", + "ui.sessionTurn.diffs.more": "+{{count}} weitere Dateien", + "ui.sessionTurn.retry.retrying": "erneuter Versuch", "ui.sessionTurn.retry.inSeconds": "in {{seconds}}s", "ui.sessionTurn.retry.attempt": "Versuch #{{attempt}}", diff --git a/packages/ui/src/i18n/es.ts b/packages/ui/src/i18n/es.ts index 3f4475a39..15307dbdd 100644 --- a/packages/ui/src/i18n/es.ts +++ b/packages/ui/src/i18n/es.ts @@ -1,5 +1,7 @@ export const dict = { "ui.sessionReview.title": "Cambios de la sesión", + "ui.sessionReview.title.git": "Cambios de Git", + "ui.sessionReview.title.branch": "Cambios de rama", "ui.sessionReview.title.lastTurn": "Cambios del último turno", "ui.sessionReview.diffStyle.unified": "Unificado", "ui.sessionReview.diffStyle.split": "Dividido", @@ -38,6 +40,11 @@ export const dict = { "ui.sessionTurn.summary.response": "Respuesta", "ui.sessionTurn.diff.showMore": "Mostrar más cambios ({{count}})", + "ui.sessionTurn.diffs.changed": "Cambiado", + "ui.sessionTurn.diffs.showAll": "Mostrar todo", + "ui.sessionTurn.diffs.showLess": "Mostrar menos", + "ui.sessionTurn.diffs.more": "+{{count}} archivos más", + "ui.sessionTurn.retry.retrying": "reintentando", "ui.sessionTurn.retry.inSeconds": "en {{seconds}}s", "ui.sessionTurn.retry.attempt": "intento #{{attempt}}", diff --git a/packages/ui/src/i18n/fr.ts b/packages/ui/src/i18n/fr.ts index 9cf17d5e3..bf35bc8aa 100644 --- a/packages/ui/src/i18n/fr.ts +++ b/packages/ui/src/i18n/fr.ts @@ -1,5 +1,7 @@ export const dict = { "ui.sessionReview.title": "Modifications de la session", + "ui.sessionReview.title.git": "Modifications Git", + "ui.sessionReview.title.branch": "Modifications de branche", "ui.sessionReview.title.lastTurn": "Modifications du dernier tour", "ui.sessionReview.diffStyle.unified": "Unifié", "ui.sessionReview.diffStyle.split": "Divisé", @@ -38,6 +40,11 @@ export const dict = { "ui.sessionTurn.summary.response": "Réponse", "ui.sessionTurn.diff.showMore": "Afficher plus de modifications ({{count}})", + "ui.sessionTurn.diffs.changed": "Modifié", + "ui.sessionTurn.diffs.showAll": "Tout afficher", + "ui.sessionTurn.diffs.showLess": "Réduire", + "ui.sessionTurn.diffs.more": "+{{count}} fichiers supplémentaires", + "ui.sessionTurn.retry.retrying": "nouvelle tentative", "ui.sessionTurn.retry.inSeconds": "dans {{seconds}}s", "ui.sessionTurn.retry.attempt": "tentative n°{{attempt}}", diff --git a/packages/ui/src/i18n/ja.ts b/packages/ui/src/i18n/ja.ts index 5bb7f1376..06dcd3054 100644 --- a/packages/ui/src/i18n/ja.ts +++ b/packages/ui/src/i18n/ja.ts @@ -1,5 +1,7 @@ export const dict = { "ui.sessionReview.title": "セッションの変更", + "ui.sessionReview.title.git": "Git の変更", + "ui.sessionReview.title.branch": "ブランチの変更", "ui.sessionReview.title.lastTurn": "前回ターンの変更", "ui.sessionReview.diffStyle.unified": "Unified", "ui.sessionReview.diffStyle.split": "Split", @@ -37,6 +39,11 @@ export const dict = { "ui.sessionTurn.summary.response": "応答", "ui.sessionTurn.diff.showMore": "さらに変更を表示 ({{count}})", + "ui.sessionTurn.diffs.changed": "変更済み", + "ui.sessionTurn.diffs.showAll": "すべて表示", + "ui.sessionTurn.diffs.showLess": "表示を減らす", + "ui.sessionTurn.diffs.more": "+{{count}} 件のファイル", + "ui.sessionTurn.retry.retrying": "再試行中", "ui.sessionTurn.retry.inSeconds": "{{seconds}}秒後", "ui.sessionTurn.retry.attempt": "{{attempt}}回目", diff --git a/packages/ui/src/i18n/ko.ts b/packages/ui/src/i18n/ko.ts index 088a2865a..2291ba273 100644 --- a/packages/ui/src/i18n/ko.ts +++ b/packages/ui/src/i18n/ko.ts @@ -1,5 +1,7 @@ export const dict = { "ui.sessionReview.title": "세션 변경 사항", + "ui.sessionReview.title.git": "Git 변경", + "ui.sessionReview.title.branch": "브랜치 변경", "ui.sessionReview.title.lastTurn": "마지막 턴 변경 사항", "ui.sessionReview.diffStyle.unified": "통합 보기", "ui.sessionReview.diffStyle.split": "분할 보기", @@ -38,6 +40,11 @@ export const dict = { "ui.sessionTurn.summary.response": "응답", "ui.sessionTurn.diff.showMore": "변경 사항 더 보기 ({{count}})", + "ui.sessionTurn.diffs.changed": "변경됨", + "ui.sessionTurn.diffs.showAll": "모두 표시", + "ui.sessionTurn.diffs.showLess": "접기", + "ui.sessionTurn.diffs.more": "+{{count}}개 파일 더 보기", + "ui.sessionTurn.retry.retrying": "재시도 중", "ui.sessionTurn.retry.inSeconds": "{{seconds}}초 후", "ui.sessionTurn.retry.attempt": "{{attempt}}번째", diff --git a/packages/ui/src/i18n/no.ts b/packages/ui/src/i18n/no.ts index af6e399ea..9baf7ab81 100644 --- a/packages/ui/src/i18n/no.ts +++ b/packages/ui/src/i18n/no.ts @@ -3,6 +3,8 @@ type Keys = keyof typeof en export const dict: Record = { "ui.sessionReview.title": "Sesjonsendringer", + "ui.sessionReview.title.git": "Git-endringer", + "ui.sessionReview.title.branch": "Grenseendringer", "ui.sessionReview.title.lastTurn": "Endringer i siste tur", "ui.sessionReview.diffStyle.unified": "Samlet", "ui.sessionReview.diffStyle.split": "Delt", @@ -41,6 +43,11 @@ export const dict: Record = { "ui.sessionTurn.summary.response": "Svar", "ui.sessionTurn.diff.showMore": "Vis flere endringer ({{count}})", + "ui.sessionTurn.diffs.changed": "Endret", + "ui.sessionTurn.diffs.showAll": "Vis alle", + "ui.sessionTurn.diffs.showLess": "Vis færre", + "ui.sessionTurn.diffs.more": "+{{count}} flere filer", + "ui.sessionTurn.retry.retrying": "Prøver igjen", "ui.sessionTurn.retry.inSeconds": "om {{seconds}}s", "ui.sessionTurn.retry.attempt": "forsøk #{{attempt}}", diff --git a/packages/ui/src/i18n/pl.ts b/packages/ui/src/i18n/pl.ts index 2385edfeb..d15e68357 100644 --- a/packages/ui/src/i18n/pl.ts +++ b/packages/ui/src/i18n/pl.ts @@ -1,5 +1,7 @@ export const dict = { "ui.sessionReview.title": "Zmiany w sesji", + "ui.sessionReview.title.git": "Zmiany Git", + "ui.sessionReview.title.branch": "Zmiany gałęzi", "ui.sessionReview.title.lastTurn": "Zmiany z ostatniej tury", "ui.sessionReview.diffStyle.unified": "Ujednolicony", "ui.sessionReview.diffStyle.split": "Podzielony", @@ -37,6 +39,11 @@ export const dict = { "ui.sessionTurn.summary.response": "Odpowiedź", "ui.sessionTurn.diff.showMore": "Pokaż więcej zmian ({{count}})", + "ui.sessionTurn.diffs.changed": "Zmienione", + "ui.sessionTurn.diffs.showAll": "Pokaż wszystko", + "ui.sessionTurn.diffs.showLess": "Pokaż mniej", + "ui.sessionTurn.diffs.more": "+{{count}} więcej plików", + "ui.sessionTurn.retry.retrying": "ponawianie", "ui.sessionTurn.retry.inSeconds": "za {{seconds}}s", "ui.sessionTurn.retry.attempt": "próba #{{attempt}}", diff --git a/packages/ui/src/i18n/ru.ts b/packages/ui/src/i18n/ru.ts index f78bd5c14..7aa814f1c 100644 --- a/packages/ui/src/i18n/ru.ts +++ b/packages/ui/src/i18n/ru.ts @@ -1,5 +1,7 @@ export const dict = { "ui.sessionReview.title": "Изменения сессии", + "ui.sessionReview.title.git": "Изменения Git", + "ui.sessionReview.title.branch": "Изменения ветки", "ui.sessionReview.title.lastTurn": "Изменения последнего хода", "ui.sessionReview.diffStyle.unified": "Объединённый", "ui.sessionReview.diffStyle.split": "Разделённый", @@ -37,6 +39,11 @@ export const dict = { "ui.sessionTurn.summary.response": "Ответ", "ui.sessionTurn.diff.showMore": "Показать ещё изменений ({{count}})", + "ui.sessionTurn.diffs.changed": "Изменено", + "ui.sessionTurn.diffs.showAll": "Показать все", + "ui.sessionTurn.diffs.showLess": "Свернуть", + "ui.sessionTurn.diffs.more": "+{{count}} файлов ещё", + "ui.sessionTurn.retry.retrying": "повтор", "ui.sessionTurn.retry.inSeconds": "через {{seconds}}с", "ui.sessionTurn.retry.attempt": "попытка №{{attempt}}", diff --git a/packages/ui/src/i18n/th.ts b/packages/ui/src/i18n/th.ts index a49fc2e52..2f086b6f0 100644 --- a/packages/ui/src/i18n/th.ts +++ b/packages/ui/src/i18n/th.ts @@ -1,5 +1,7 @@ export const dict = { "ui.sessionReview.title": "การเปลี่ยนแปลงเซสชัน", + "ui.sessionReview.title.git": "การเปลี่ยนแปลง Git", + "ui.sessionReview.title.branch": "การเปลี่ยนแปลงสาขา", "ui.sessionReview.title.lastTurn": "การเปลี่ยนแปลงของเทิร์นล่าสุด", "ui.sessionReview.diffStyle.unified": "แบบรวม", "ui.sessionReview.diffStyle.split": "แบบแยก", @@ -39,6 +41,11 @@ export const dict = { "ui.sessionTurn.summary.response": "การตอบสนอง", "ui.sessionTurn.diff.showMore": "แสดงการเปลี่ยนแปลงเพิ่มเติม ({{count}})", + "ui.sessionTurn.diffs.changed": "เปลี่ยนแปลงแล้ว", + "ui.sessionTurn.diffs.showAll": "แสดงทั้งหมด", + "ui.sessionTurn.diffs.showLess": "แสดงน้อยลง", + "ui.sessionTurn.diffs.more": "+{{count}} ไฟล์เพิ่มเติม", + "ui.sessionTurn.retry.retrying": "กำลังลองใหม่", "ui.sessionTurn.retry.inSeconds": "ใน {{seconds}}วิ", "ui.sessionTurn.retry.attempt": "ครั้งที่ {{attempt}}", diff --git a/packages/ui/src/i18n/tr.ts b/packages/ui/src/i18n/tr.ts index e6b50c1c0..81ebf819a 100644 --- a/packages/ui/src/i18n/tr.ts +++ b/packages/ui/src/i18n/tr.ts @@ -4,6 +4,8 @@ type Keys = keyof typeof en export const dict = { "ui.sessionReview.title": "Oturum değişiklikleri", + "ui.sessionReview.title.git": "Git değişiklikleri", + "ui.sessionReview.title.branch": "Dal değişiklikleri", "ui.sessionReview.title.lastTurn": "Son tur değişiklikleri", "ui.sessionReview.diffStyle.unified": "Birleşik", "ui.sessionReview.diffStyle.split": "Bölünmüş", @@ -44,6 +46,10 @@ export const dict = { "ui.sessionTurn.summary.response": "Yanıt", "ui.sessionTurn.diff.showMore": "Daha fazla değişiklik göster ({{count}})", + "ui.sessionTurn.diffs.changed": "Değiştirildi", + "ui.sessionTurn.diffs.showAll": "Tümünü göster", + "ui.sessionTurn.diffs.showLess": "Daha az göster", + "ui.sessionTurn.diffs.more": "+{{count}} dosya daha", "ui.sessionTurn.retry.retrying": "yeniden deneniyor", "ui.sessionTurn.retry.inSeconds": "{{seconds}}sn içinde", "ui.sessionTurn.retry.attempt": "deneme #{{attempt}}", diff --git a/packages/ui/src/i18n/zh.ts b/packages/ui/src/i18n/zh.ts index 577975437..5299b7f37 100644 --- a/packages/ui/src/i18n/zh.ts +++ b/packages/ui/src/i18n/zh.ts @@ -4,6 +4,8 @@ type Keys = keyof typeof en export const dict = { "ui.sessionReview.title": "会话变更", + "ui.sessionReview.title.git": "Git 变更", + "ui.sessionReview.title.branch": "分支变更", "ui.sessionReview.title.lastTurn": "上一轮变更", "ui.sessionReview.diffStyle.unified": "统一", "ui.sessionReview.diffStyle.split": "拆分", @@ -42,6 +44,11 @@ export const dict = { "ui.sessionTurn.summary.response": "回复", "ui.sessionTurn.diff.showMore": "显示更多更改({{count}})", + "ui.sessionTurn.diffs.changed": "已变更", + "ui.sessionTurn.diffs.showAll": "显示全部", + "ui.sessionTurn.diffs.showLess": "收起", + "ui.sessionTurn.diffs.more": "+{{count}} 个更多文件", + "ui.sessionTurn.retry.retrying": "重试中", "ui.sessionTurn.retry.inSeconds": "{{seconds}} 秒后", "ui.sessionTurn.retry.attempt": "第 {{attempt}} 次", diff --git a/packages/ui/src/i18n/zht.ts b/packages/ui/src/i18n/zht.ts index 2d433b57a..811ee4817 100644 --- a/packages/ui/src/i18n/zht.ts +++ b/packages/ui/src/i18n/zht.ts @@ -4,6 +4,8 @@ type Keys = keyof typeof en export const dict = { "ui.sessionReview.title": "工作階段變更", + "ui.sessionReview.title.git": "Git 變更", + "ui.sessionReview.title.branch": "分支變更", "ui.sessionReview.title.lastTurn": "上一輪變更", "ui.sessionReview.diffStyle.unified": "整合", "ui.sessionReview.diffStyle.split": "拆分", @@ -42,6 +44,11 @@ export const dict = { "ui.sessionTurn.summary.response": "回覆", "ui.sessionTurn.diff.showMore": "顯示更多變更 ({{count}})", + "ui.sessionTurn.diffs.changed": "已變更", + "ui.sessionTurn.diffs.showAll": "顯示全部", + "ui.sessionTurn.diffs.showLess": "收合", + "ui.sessionTurn.diffs.more": "+{{count}} 個更多檔案", + "ui.sessionTurn.retry.retrying": "重試中", "ui.sessionTurn.retry.inSeconds": "{{seconds}} 秒後", "ui.sessionTurn.retry.attempt": "第 {{attempt}} 次",