feat: open Changes as a workspace tab (#2298)

Open the complete working comparison in a desktop workspace tab while preserving inline sidebar diffs when the tab is closed.

Working and commit comparisons share one diff panel, and workspace layout is the sole owner of live tab persistence and identity.

Refs #1520
This commit is contained in:
nikuscs
2026-07-22 20:57:18 +02:00
committed by GitHub
parent 76a5edb020
commit 512c9b31a8
61 changed files with 1581 additions and 2012 deletions
+4
View File
@@ -758,6 +758,8 @@ export const ar: TranslationResources = {
},
},
diff: {
openChangesTab: "فتح علامة تبويب التغييرات",
closeChangesTab: "إغلاق علامة تبويب التغييرات",
binaryFile: "ملف ثنائي",
tooLarge: "الفرق كبير جدًا بحيث لا يمكن عرضه",
unified: "الفرق الموحدة",
@@ -1494,6 +1496,8 @@ export const ar: TranslationResources = {
changesLabel: "التغييرات",
changesSubtitle: "فروقات شجرة العمل",
commitSubtitle: "فروقات الالتزام",
uncommittedSubtitle: "تغييرات غير ملتزم بها",
baseSubtitle: "مقارنة مع {{baseRef}}",
directoryMissing: "لم يتم العثور على دليل Workspace.",
empty: "لا توجد تغييرات",
loadError: "فشل تحميل الفروقات",
+4
View File
@@ -768,6 +768,8 @@ export const en = {
},
},
diff: {
openChangesTab: "Open Changes tab",
closeChangesTab: "Close Changes tab",
binaryFile: "Binary file",
tooLarge: "Diff too large to display",
unified: "Unified diff",
@@ -1505,6 +1507,8 @@ export const en = {
changesLabel: "Changes",
changesSubtitle: "Working tree diff",
commitSubtitle: "Commit diff",
uncommittedSubtitle: "Uncommitted changes",
baseSubtitle: "Compared with {{baseRef}}",
directoryMissing: "Workspace directory not found.",
empty: "No changes",
loadError: "Failed to load diff",
+4
View File
@@ -789,6 +789,8 @@ export const es: TranslationResources = {
},
},
diff: {
openChangesTab: "Abrir la pestaña Cambios",
closeChangesTab: "Cerrar la pestaña Cambios",
binaryFile: "archivo binario",
tooLarge: "La diferencia es demasiado grande para mostrarse",
unified: "Diferencia unificada",
@@ -1537,6 +1539,8 @@ export const es: TranslationResources = {
changesLabel: "Cambios",
changesSubtitle: "Diferencias del árbol de trabajo",
commitSubtitle: "Diferencias del commit",
uncommittedSubtitle: "Cambios sin confirmar",
baseSubtitle: "Comparado con {{baseRef}}",
directoryMissing: "No se encontró el directorio de Workspace.",
empty: "Sin cambios",
loadError: "No se pudieron cargar las diferencias",
+4
View File
@@ -788,6 +788,8 @@ export const fr: TranslationResources = {
},
},
diff: {
openChangesTab: "Ouvrir l'onglet Modifications",
closeChangesTab: "Fermer l'onglet Modifications",
binaryFile: "Fichier binaire",
tooLarge: "Diff trop grand pour être affiché",
unified: "Différentiel unifié",
@@ -1540,6 +1542,8 @@ export const fr: TranslationResources = {
changesLabel: "Modifications",
changesSubtitle: "Différences de l'arbre de travail",
commitSubtitle: "Différences du commit",
uncommittedSubtitle: "Modifications non validées",
baseSubtitle: "Comparé à {{baseRef}}",
directoryMissing: "Répertoire Workspace introuvable.",
empty: "Aucune modification",
loadError: "Échec du chargement des différences",
+4
View File
@@ -769,6 +769,8 @@ export const ja: TranslationResources = {
},
},
diff: {
openChangesTab: "変更タブを開く",
closeChangesTab: "変更タブを閉じる",
binaryFile: "バイナリファイル",
tooLarge: "差分が大きすぎて表示できません",
unified: "ユニファイド差分",
@@ -1510,6 +1512,8 @@ export const ja: TranslationResources = {
changesLabel: "変更",
changesSubtitle: "作業ツリーの差分",
commitSubtitle: "コミット差分",
uncommittedSubtitle: "未コミットの変更",
baseSubtitle: "{{baseRef}} との比較",
directoryMissing: "ワークスペースディレクトリが見つかりません。",
empty: "変更はありません",
loadError: "差分の読み込みに失敗しました",
+4
View File
@@ -780,6 +780,8 @@ export const ptBR: TranslationResources = {
},
},
diff: {
openChangesTab: "Abrir a aba Alterações",
closeChangesTab: "Fechar a aba Alterações",
binaryFile: "Arquivo binário",
tooLarge: "Diff grande demais para exibir",
unified: "Diff unificado",
@@ -1523,6 +1525,8 @@ export const ptBR: TranslationResources = {
changesLabel: "Alterações",
changesSubtitle: "Diff da árvore de trabalho",
commitSubtitle: "Diff do commit",
uncommittedSubtitle: "Alterações não commitadas",
baseSubtitle: "Comparado com {{baseRef}}",
directoryMissing: "Diretório do workspace não encontrado.",
empty: "Nenhuma alteração",
loadError: "Falha ao carregar diff",
+4
View File
@@ -780,6 +780,8 @@ export const ru: TranslationResources = {
},
},
diff: {
openChangesTab: "Открыть вкладку «Изменения»",
closeChangesTab: "Закрыть вкладку «Изменения»",
binaryFile: "Бинарный файл",
tooLarge: "Разница слишком велика для отображения",
unified: "Единый дифференциал",
@@ -1528,6 +1530,8 @@ export const ru: TranslationResources = {
changesLabel: "Изменения",
changesSubtitle: "Различия рабочего дерева",
commitSubtitle: "Различия коммита",
uncommittedSubtitle: "Незафиксированные изменения",
baseSubtitle: "Сравнение с {{baseRef}}",
directoryMissing: "Каталог Workspace не найден.",
empty: "Нет изменений",
loadError: "Не удалось загрузить различия",
+4
View File
@@ -750,6 +750,8 @@ export const zhCN: TranslationResources = {
},
},
diff: {
openChangesTab: "打开“更改”标签页",
closeChangesTab: "关闭“更改”标签页",
binaryFile: "二进制文件",
tooLarge: "Diff 过大,无法显示",
unified: "Unified diff",
@@ -1475,6 +1477,8 @@ export const zhCN: TranslationResources = {
changesLabel: "更改",
changesSubtitle: "工作区差异",
commitSubtitle: "提交差异",
uncommittedSubtitle: "未提交的更改",
baseSubtitle: "与 {{baseRef}} 比较",
directoryMissing: "未找到 workspace 目录。",
empty: "没有更改",
loadError: "加载差异失败",