feat: add workspace files to chat from Files and Changes

* feat(app): open changed files from context menu

* fix(app): preserve changed-file row behavior

* feat(app): add changed files to open chats

* feat(app): share file actions across explorer and changes

* feat(app): attach workspace files to focused chat

* feat(app): drag workspace files into chat

* refactor(app): use file actions menu for changed files

* fix(app): open changed-file actions on right click

* test(app): cover direct file attachment flow

* fix(app): enable add to chat on native

* fix(app): align workspace file pane rows

* refactor(app): simplify workspace file attachments

* fix(app): preserve uploaded file draft attachments

---------

Co-authored-by: Mohamed Boudra <boudra.moha@gmail.com>
This commit is contained in:
nikuscs
2026-07-22 15:58:24 +02:00
committed by GitHub
co-authored by Mohamed Boudra
parent 42ee5a5949
commit bd937850b3
42 changed files with 1665 additions and 342 deletions
+7 -2
View File
@@ -366,6 +366,13 @@ export const ar: TranslationResources = {
copyBranchName: "نسخ اسم الفرع",
copied: "تم النسخ",
},
fileActions: {
openFile: "افتح الملف",
copyPath: "نسخ المسار",
download: "تحميل",
addToChat: "إضافة إلى الدردشة…",
moreActions: "المزيد من الإجراءات",
},
fileExplorer: {
sort: {
name: "اسم",
@@ -375,8 +382,6 @@ export const ar: TranslationResources = {
context: {
size: "مقاس",
modified: "معدل",
copyPath: "نسخ المسار",
download: "تحميل",
},
actions: {
back: "خلف",
+7 -2
View File
@@ -365,6 +365,13 @@ export const en = {
copyBranchName: "Copy branch name",
copied: "Copied",
},
fileActions: {
openFile: "Open file",
copyPath: "Copy path",
download: "Download",
addToChat: "Add to chat…",
moreActions: "More actions",
},
fileExplorer: {
sort: {
name: "Name",
@@ -374,8 +381,6 @@ export const en = {
context: {
size: "Size",
modified: "Modified",
copyPath: "Copy path",
download: "Download",
},
actions: {
back: "Back",
+7 -2
View File
@@ -370,6 +370,13 @@ export const es: TranslationResources = {
copyBranchName: "Copiar nombre de rama",
copied: "Copiado",
},
fileActions: {
openFile: "Abrir archivo",
copyPath: "Copiar ruta",
download: "Descargar",
addToChat: "Añadir al chat…",
moreActions: "Más acciones",
},
fileExplorer: {
sort: {
name: "Nombre",
@@ -379,8 +386,6 @@ export const es: TranslationResources = {
context: {
size: "Tamaño",
modified: "Modificado",
copyPath: "Copiar ruta",
download: "Descargar",
},
actions: {
back: "Atrás",
+7 -2
View File
@@ -370,6 +370,13 @@ export const fr: TranslationResources = {
copyBranchName: "Copier le nom de la branche",
copied: "Copié",
},
fileActions: {
openFile: "Ouvrir le fichier",
copyPath: "Copier le chemin",
download: "Télécharger",
addToChat: "Ajouter au chat…",
moreActions: "Plus de propositions",
},
fileExplorer: {
sort: {
name: "Nom",
@@ -379,8 +386,6 @@ export const fr: TranslationResources = {
context: {
size: "Taille",
modified: "Modifié",
copyPath: "Copier le chemin",
download: "Télécharger",
},
actions: {
back: "Dos",
+7 -2
View File
@@ -370,6 +370,13 @@ export const ja: TranslationResources = {
copyBranchName: "ブランチ名をコピー",
copied: "コピーしました",
},
fileActions: {
openFile: "ファイルを開く",
copyPath: "パスをコピー",
download: "ダウンロード",
addToChat: "チャットに追加…",
moreActions: "その他のアクション",
},
fileExplorer: {
sort: {
name: "名前",
@@ -379,8 +386,6 @@ export const ja: TranslationResources = {
context: {
size: "サイズ",
modified: "更新日時",
copyPath: "パスをコピー",
download: "ダウンロード",
},
actions: {
back: "戻る",
+7 -2
View File
@@ -370,6 +370,13 @@ export const ptBR: TranslationResources = {
copyBranchName: "Copiar nome da branch",
copied: "Copiado",
},
fileActions: {
openFile: "Abrir arquivo",
copyPath: "Copiar caminho",
download: "Baixar",
addToChat: "Adicionar ao chat…",
moreActions: "Mais ações",
},
fileExplorer: {
sort: {
name: "Nome",
@@ -379,8 +386,6 @@ export const ptBR: TranslationResources = {
context: {
size: "Tamanho",
modified: "Modificado",
copyPath: "Copiar caminho",
download: "Baixar",
},
actions: {
back: "Voltar",
+7 -2
View File
@@ -369,6 +369,13 @@ export const ru: TranslationResources = {
copyBranchName: "Копировать имя ветки",
copied: "Скопировано",
},
fileActions: {
openFile: "Открыть файл",
copyPath: "Копировать путь",
download: "Скачать",
addToChat: "Добавить в чат…",
moreActions: "Дополнительные действия",
},
fileExplorer: {
sort: {
name: "Имя",
@@ -378,8 +385,6 @@ export const ru: TranslationResources = {
context: {
size: "Размер",
modified: "Модифицированный",
copyPath: "Копировать путь",
download: "Скачать",
},
actions: {
back: "Назад",
+7 -2
View File
@@ -366,6 +366,13 @@ export const zhCN: TranslationResources = {
copyBranchName: "复制分支名称",
copied: "已复制",
},
fileActions: {
openFile: "打开文件",
copyPath: "复制路径",
download: "下载",
addToChat: "添加到聊天…",
moreActions: "更多操作",
},
fileExplorer: {
sort: {
name: "名称",
@@ -375,8 +382,6 @@ export const zhCN: TranslationResources = {
context: {
size: "大小",
modified: "修改时间",
copyPath: "复制路径",
download: "下载",
},
actions: {
back: "返回",