Edit workspace files directly on web (#2270)
* feat(files): edit workspace files on web Keep source buffers synchronized with host file changes and require an explicit overwrite or reload when revisions diverge. * feat(panels): surface and protect modified tabs Expose tooltip and modification state through the generic panel boundary so tabs can show stable metadata and guard every close route consistently. * fix(tests): use portable fake timeout handle * fix(files): harden editor conflict handling Preserve modified panel state across tab eviction, use precise revisions for optimistic writes, coalesce concurrent file watchers, and localize the editor interface. * fix(files): close editor concurrency gaps Coalesce clean reloads, preserve subscriber identities and file permissions, suspend pending saves during close confirmation, and carry precise revisions through file reads. * test(files): expect read revision metadata
This commit is contained in:
@@ -466,6 +466,7 @@ export const ar: TranslationResources = {
|
||||
},
|
||||
tabs: {
|
||||
loading: "تحميل...",
|
||||
modified: "تغييرات غير محفوظة",
|
||||
loadingAgentTitle: "جارٍ تحميل عنوان الوكيل",
|
||||
emptyPane: "لا توجد علامات تبويب في هذا الجزء.",
|
||||
fallback: {
|
||||
@@ -532,6 +533,13 @@ export const ar: TranslationResources = {
|
||||
failedToReloadAgent: "فشل في إعادة تحميل الوكيل",
|
||||
},
|
||||
confirmations: {
|
||||
unsavedTitle: "تغييرات غير محفوظة",
|
||||
unsavedMessage:
|
||||
"تحتوي علامة التبويب هذه على تغييرات غير محفوظة. سيؤدي إغلاقها إلى تجاهل المسودة.",
|
||||
closeWithoutSaving: "إغلاق بدون حفظ",
|
||||
closePaneTitle: "إغلاق اللوحة؟",
|
||||
bulkUnsaved:
|
||||
"تحتوي {{count}} علامة تبويب على تغييرات غير محفوظة. سيؤدي الإغلاق إلى تجاهل المسودات.",
|
||||
close: "يغلق",
|
||||
cancel: "يلغي",
|
||||
archive: "أرشيف",
|
||||
@@ -1445,6 +1453,25 @@ export const ar: TranslationResources = {
|
||||
binaryPreviewUnavailable: "المعاينة الثنائية غير متاحة",
|
||||
failedToLoad: "فشل تحميل الملف",
|
||||
failedToLoadPreview: "فشل تحميل معاينة الملف",
|
||||
editor: {
|
||||
fileSize: "حجم الملف {{size}}",
|
||||
lines: "{{count}} سطر",
|
||||
editorStatus: "حالة المحرر {{status}}",
|
||||
unsavedChanges: "تغييرات غير محفوظة",
|
||||
saving: "جارٍ الحفظ...",
|
||||
saveFailed: "فشل الحفظ",
|
||||
changedOnDisk: "تغيّر على القرص",
|
||||
vimMode: "وضع Vim {{mode}}",
|
||||
cursor: "السطر {{line}}، العمود {{column}}",
|
||||
preview: "معاينة",
|
||||
source: "المصدر",
|
||||
unavailableTitle: "الملف غير متاح على القرص",
|
||||
conflictDescription: "تم الاحتفاظ بالمحتوى المحلي. اختر الإصدار الذي تريد إبقاءه.",
|
||||
overwrite: "استبدال",
|
||||
reload: "إعادة تحميل",
|
||||
reloadTitle: "إعادة التحميل من القرص؟",
|
||||
reloadMessage: "ستفقد تغييراتك المحلية.",
|
||||
},
|
||||
},
|
||||
diff: {
|
||||
changesLabel: "التغييرات",
|
||||
@@ -1540,12 +1567,18 @@ export const ar: TranslationResources = {
|
||||
sections: {
|
||||
general: "عام",
|
||||
appearance: "مظهر",
|
||||
editor: "المحرر",
|
||||
shortcuts: "الاختصارات",
|
||||
integrations: "التكامل",
|
||||
permissions: "الأذونات",
|
||||
diagnostics: "التشخيص",
|
||||
about: "عن",
|
||||
},
|
||||
editor: {
|
||||
title: "المحرر",
|
||||
vimKeybindings: "اختصارات Vim",
|
||||
vimHint: "تنطبق على ملفات المصدر في الويب وسطح المكتب.",
|
||||
},
|
||||
hostSections: {
|
||||
connections: "اتصالات",
|
||||
agents: "Agents",
|
||||
|
||||
Reference in New Issue
Block a user