Merge pull request #2534 from openchamber/feat/bc-38abb61a-bce6-4a01-a189-c569346927fa-33b6

fix(files): stop autosave data loss on load lag and binary files
This commit is contained in:
Serhii Dziupin
2026-07-30 16:21:59 +03:00
committed by GitHub
43 changed files with 778 additions and 80 deletions
@@ -1883,6 +1883,9 @@ export const settingsDict = {
'settings.openchamber.visual.field.promptNavigatorEnabled': 'Prompt Navigator',
'settings.openchamber.visual.field.expandedEditorToolbarAria': 'Always show editor toolbar',
'settings.openchamber.visual.field.expandedEditorToolbar': 'Always show editor toolbar (docked under the file tabs)',
'settings.openchamber.visual.field.autoSaveEnabledAria': 'Auto-save files',
'settings.openchamber.visual.field.autoSaveEnabled': 'Auto-save files',
'settings.openchamber.visual.field.autoSaveEnabledInfo': 'Automatically save file edits after you stop typing. Disable to require manual save.',
'settings.openchamber.visual.field.wideChatLayoutAria': 'Wide chat layout',
'settings.openchamber.visual.field.wideChatLayout': 'Wide Chat Layout',
'settings.openchamber.visual.field.codeBlockLineWrapAria': 'Wrap code block lines',
+2
View File
@@ -1247,6 +1247,8 @@ export const dict = {
'filesView.editor.showControlsAria': 'Show editor controls',
'filesView.editor.controlsTitle': 'Editor controls',
'filesView.editor.pickFileFromTree': 'Pick a file from the tree.',
'filesView.editor.cannotPreviewBinary': 'Cannot preview binary file',
'filesView.editor.binaryFileDescription': 'This file is binary and cannot be edited in OpenChamber. Download it to open with another app.',
'filesView.state.loading': 'Loading...',
'filesView.state.openingFileAtChange': 'Opening file at change...',
'filesView.tree.search.placeholder': 'Search files...',
@@ -1850,6 +1850,9 @@ export const settingsDict = {
"settings.openchamber.visual.field.promptNavigatorEnabled": "Navegador de prompts",
"settings.openchamber.visual.field.expandedEditorToolbarAria": "Mostrar siempre la barra de herramientas del editor",
"settings.openchamber.visual.field.expandedEditorToolbar": "Mostrar siempre la barra de herramientas del editor (anclada bajo las pestañas)",
"settings.openchamber.visual.field.autoSaveEnabledAria": "Guardado automático de archivos",
"settings.openchamber.visual.field.autoSaveEnabled": "Guardado automático de archivos",
"settings.openchamber.visual.field.autoSaveEnabledInfo": "Guarda automáticamente las ediciones del archivo después de dejar de escribir. Desactívalo para exigir un guardado manual.",
"settings.openchamber.visual.field.wideChatLayoutAria": "Diseño de chat ancho",
"settings.openchamber.visual.field.wideChatLayout": "Diseño de chat ancho",
"settings.openchamber.visual.field.showSplitAssistantMessageActionsAria": "Acciones en línea del asistente",
+2
View File
@@ -1213,6 +1213,8 @@ export const dict: Record<I18nKey, string> = {
"filesView.editor.showControlsAria": "Mostrar controles del editor",
"filesView.editor.controlsTitle": "Controles del editor",
"filesView.editor.pickFileFromTree": "Selecciona un archivo del árbol.",
"filesView.editor.cannotPreviewBinary": "No se puede previsualizar el archivo binario",
"filesView.editor.binaryFileDescription": "Este archivo es binario y no se puede editar en OpenChamber. Descárgalo para abrirlo con otra aplicación.",
"filesView.state.loading": "Cargando...",
"filesView.state.openingFileAtChange": "Abriendo archivo en cambio...",
"filesView.tree.search.placeholder": "Buscar archivos...",
@@ -1755,6 +1755,9 @@ export const settingsDict = {
'settings.openchamber.visual.field.promptNavigatorEnabled': 'Navigateur de prompts',
'settings.openchamber.visual.field.expandedEditorToolbarAria': 'Toujours afficher la barre d’outils de l’éditeur',
'settings.openchamber.visual.field.expandedEditorToolbar': 'Toujours afficher la barre d’outils de l’éditeur (ancrée sous les onglets de fichiers)',
'settings.openchamber.visual.field.autoSaveEnabledAria': 'Enregistrement automatique des fichiers',
'settings.openchamber.visual.field.autoSaveEnabled': 'Enregistrement automatique des fichiers',
'settings.openchamber.visual.field.autoSaveEnabledInfo': 'Enregistre automatiquement les modifications après l’arrêt de la saisie. Désactivez pour exiger un enregistrement manuel.',
'settings.openchamber.visual.field.wideChatLayoutAria': 'Large disposition de discussion',
'settings.openchamber.visual.field.wideChatLayout': 'Disposition de discussion large',
'settings.openchamber.visual.field.showSplitAssistantMessageActionsAria': 'Actions intégrées de l\'assistant',
+2
View File
@@ -1075,6 +1075,8 @@ export const dict = {
'filesView.editor.showControlsAria': 'Afficher les contrôles de l\'éditeur',
'filesView.editor.controlsTitle': 'Contrôles de l\'éditeur',
'filesView.editor.pickFileFromTree': 'Choisissez un fichier dans l\'arborescence.',
'filesView.editor.cannotPreviewBinary': 'Impossible de prévisualiser le fichier binaire',
'filesView.editor.binaryFileDescription': 'Ce fichier est binaire et ne peut pas être modifié dans OpenChamber. Téléchargez-le pour l’ouvrir avec une autre application.',
'filesView.state.loading': 'Chargement...',
'filesView.state.openingFileAtChange': 'Ouverture du fichier lors du changement...',
'filesView.tree.search.placeholder': 'Rechercher des fichiers...',
@@ -1883,6 +1883,9 @@ export const settingsDict = {
'settings.openchamber.visual.field.promptNavigatorEnabled': 'プロンプトナビゲーター',
'settings.openchamber.visual.field.expandedEditorToolbarAria': 'エディターツールバーを常に表示',
'settings.openchamber.visual.field.expandedEditorToolbar': 'エディターツールバーを常に表示(ファイルタブの下にドッキング)',
'settings.openchamber.visual.field.autoSaveEnabledAria': 'ファイルの自動保存',
'settings.openchamber.visual.field.autoSaveEnabled': 'ファイルの自動保存',
'settings.openchamber.visual.field.autoSaveEnabledInfo': '入力を止めた後にファイルの編集内容を自動保存します。無効にすると手動保存が必要になります。',
'settings.openchamber.visual.field.wideChatLayoutAria': 'ワイドチャットレイアウト',
'settings.openchamber.visual.field.wideChatLayout': 'ワイドチャットレイアウト',
'settings.openchamber.visual.field.showSplitAssistantMessageActionsAria': 'インラインアシスタントアクション',
+2
View File
@@ -1243,6 +1243,8 @@ export const dict: Record<I18nKey, string> = {
'filesView.editor.showControlsAria': 'エディターコントロールを表示',
'filesView.editor.controlsTitle': 'エディターコントロール',
'filesView.editor.pickFileFromTree': 'ツリーからファイルを選択してください。',
'filesView.editor.cannotPreviewBinary': 'バイナリファイルはプレビューできません',
'filesView.editor.binaryFileDescription': 'このファイルはバイナリのため、OpenChamberでは編集できません。別のアプリで開くにはダウンロードしてください。',
'filesView.state.loading': '読み込み中...',
'filesView.state.openingFileAtChange': '変更箇所のファイルを開いています...',
'filesView.tree.search.placeholder': 'ファイルを検索...',
@@ -1850,6 +1850,9 @@ export const settingsDict = {
'settings.openchamber.visual.field.promptNavigatorEnabled': '프롬프트 탐색기',
'settings.openchamber.visual.field.expandedEditorToolbarAria': 'Always show editor toolbar',
'settings.openchamber.visual.field.expandedEditorToolbar': 'Always show editor toolbar (docked under the file tabs)',
'settings.openchamber.visual.field.autoSaveEnabledAria': '파일 자동 저장',
'settings.openchamber.visual.field.autoSaveEnabled': '파일 자동 저장',
'settings.openchamber.visual.field.autoSaveEnabledInfo': '입력을 멈춘 후 파일 편집 내용을 자동으로 저장합니다. 끄면 수동으로 저장해야 합니다.',
'settings.openchamber.visual.field.wideChatLayoutAria': '넓은 채팅 레이아웃',
'settings.openchamber.visual.field.wideChatLayout': '넓은 채팅 레이아웃',
'settings.openchamber.visual.field.showSplitAssistantMessageActionsAria': '인라인 어시스턴트 작업',
+2
View File
@@ -1250,6 +1250,8 @@ export const dict: Record<I18nKey, string> = {
'filesView.editor.showControlsAria': '편집기 컨트롤 표시',
'filesView.editor.controlsTitle': '편집기 컨트롤',
'filesView.editor.pickFileFromTree': '트리에서 파일을 선택하세요.',
'filesView.editor.cannotPreviewBinary': '바이너리 파일을 미리볼 수 없음',
'filesView.editor.binaryFileDescription': '이 파일은 바이너리이므로 OpenChamber에서 편집할 수 없습니다. 다른 앱으로 열려면 다운로드하세요.',
'filesView.state.loading': '로드 중…',
'filesView.state.openingFileAtChange': '변경 위치에서 파일 여는 중…',
'filesView.tree.search.placeholder': '파일 검색…',
@@ -1090,6 +1090,9 @@ export const settingsDict = {
'settings.openchamber.visual.field.promptNavigatorEnabled': 'Nawigator promptów',
'settings.openchamber.visual.field.expandedEditorToolbarAria': 'Always show editor toolbar',
'settings.openchamber.visual.field.expandedEditorToolbar': 'Always show editor toolbar (docked under the file tabs)',
'settings.openchamber.visual.field.autoSaveEnabledAria': 'Autozapis plików',
'settings.openchamber.visual.field.autoSaveEnabled': 'Autozapis plików',
'settings.openchamber.visual.field.autoSaveEnabledInfo': 'Automatycznie zapisuje edycje pliku po zatrzymaniu pisania. Wyłącz, aby wymagać ręcznego zapisu.',
'settings.openchamber.visual.field.terminalFontSize': 'Rozmiar czcionki terminala',
'settings.openchamber.visual.field.terminalShell': 'Powłoka terminala',
'settings.openchamber.visual.field.terminalShellAria': 'Wybierz powłokę terminala',
+2
View File
@@ -1728,6 +1728,8 @@ export const dict: Record<I18nKey, string> = {
'filesView.editor.openFilesAria': 'Otwarte pliki',
'filesView.editor.openInDesktopApp': 'Otwórz w aplikacji desktopowej',
'filesView.editor.pickFileFromTree': 'Wybierz plik z drzewa.',
'filesView.editor.cannotPreviewBinary': 'Nie można podglądać pliku binarnego',
'filesView.editor.binaryFileDescription': 'Ten plik jest binarny i nie można go edytować w OpenChamber. Pobierz go, aby otworzyć w innej aplikacji.',
'filesView.editor.refreshApps': 'Odśwież aplikacje',
'filesView.editor.saveAria': 'Zapisz ({shortcut})',
'filesView.editor.saveFile': 'Zapisz plik',
@@ -1850,6 +1850,9 @@ export const settingsDict = {
"settings.openchamber.visual.field.promptNavigatorEnabled": "Navegador de prompts",
"settings.openchamber.visual.field.expandedEditorToolbarAria": "Mostrar sempre a barra de ferramentas do editor",
"settings.openchamber.visual.field.expandedEditorToolbar": "Mostrar sempre a barra de ferramentas do editor (ancorada sob as abas)",
"settings.openchamber.visual.field.autoSaveEnabledAria": "Salvamento automático de arquivos",
"settings.openchamber.visual.field.autoSaveEnabled": "Salvamento automático de arquivos",
"settings.openchamber.visual.field.autoSaveEnabledInfo": "Salva automaticamente as edições do arquivo depois que você parar de digitar. Desative para exigir salvamento manual.",
"settings.openchamber.visual.field.wideChatLayoutAria": "Layout de chat amplo",
"settings.openchamber.visual.field.wideChatLayout": "Layout de chat amplo",
"settings.openchamber.visual.field.showSplitAssistantMessageActionsAria": "Ações inline do assistente",
@@ -1213,6 +1213,8 @@ export const dict: Record<I18nKey, string> = {
"filesView.editor.showControlsAria": "Mostrar controles do editor",
"filesView.editor.controlsTitle": "Controles do editor",
"filesView.editor.pickFileFromTree": "Selecione um arquivo na árvore.",
"filesView.editor.cannotPreviewBinary": "Não é possível pré-visualizar o arquivo binário",
"filesView.editor.binaryFileDescription": "Este arquivo é binário e não pode ser editado no OpenChamber. Baixe-o para abrir em outro aplicativo.",
"filesView.state.loading": "Carregando...",
"filesView.state.openingFileAtChange": "Abrindo arquivo na alteração...",
"filesView.tree.search.placeholder": "Pesquisar arquivos...",
@@ -1850,6 +1850,9 @@ export const settingsDict = {
"settings.openchamber.visual.field.promptNavigatorEnabled": "Навігатор промптів",
"settings.openchamber.visual.field.expandedEditorToolbarAria": "Завжди показувати панель інструментів редактора",
"settings.openchamber.visual.field.expandedEditorToolbar": "Завжди показувати панель інструментів редактора (закріплена під вкладками)",
"settings.openchamber.visual.field.autoSaveEnabledAria": "Автозбереження файлів",
"settings.openchamber.visual.field.autoSaveEnabled": "Автозбереження файлів",
"settings.openchamber.visual.field.autoSaveEnabledInfo": "Автоматично зберігати зміни у файлі після того, як ви припините друкувати. Вимкніть, щоб зберігати лише вручну.",
"settings.openchamber.visual.field.wideChatLayoutAria": "Широкий макет чату",
"settings.openchamber.visual.field.wideChatLayout": "Широкий макет чату",
"settings.openchamber.visual.field.showSplitAssistantMessageActionsAria": "Вбудовані дії асистента",
+2
View File
@@ -1213,6 +1213,8 @@ export const dict: Record<I18nKey, string> = {
"filesView.editor.showControlsAria": "Показати елементи керування редактора",
"filesView.editor.controlsTitle": "Елементи керування редактора",
"filesView.editor.pickFileFromTree": "Вибрати файл із дерева.",
"filesView.editor.cannotPreviewBinary": "Неможливо попередньо переглянути бінарний файл",
"filesView.editor.binaryFileDescription": "Цей файл є бінарним і його не можна редагувати в OpenChamber. Завантажте його, щоб відкрити в іншій програмі.",
"filesView.state.loading": "Завантаження...",
"filesView.state.openingFileAtChange": "Відкриття файлу на зміні...",
"filesView.tree.search.placeholder": "Пошук файлів...",
@@ -1850,6 +1850,9 @@ export const settingsDict = {
'settings.openchamber.visual.field.promptNavigatorEnabled': '提示词导航',
'settings.openchamber.visual.field.expandedEditorToolbarAria': 'Always show editor toolbar',
'settings.openchamber.visual.field.expandedEditorToolbar': 'Always show editor toolbar (docked under the file tabs)',
'settings.openchamber.visual.field.autoSaveEnabledAria': '自动保存文件',
'settings.openchamber.visual.field.autoSaveEnabled': '自动保存文件',
'settings.openchamber.visual.field.autoSaveEnabledInfo': '停止输入后自动保存文件编辑内容。关闭后需手动保存。',
'settings.openchamber.visual.field.wideChatLayoutAria': '宽聊天布局',
'settings.openchamber.visual.field.wideChatLayout': '宽聊天布局',
'settings.openchamber.visual.field.showSplitAssistantMessageActionsAria': '内联助手操作',
@@ -1213,6 +1213,8 @@ export const dict: Record<I18nKey, string> = {
'filesView.editor.showControlsAria': '显示编辑器控制项',
'filesView.editor.controlsTitle': '编辑器控制项',
'filesView.editor.pickFileFromTree': '请从文件树中选择一个文件。',
'filesView.editor.cannotPreviewBinary': '无法预览二进制文件',
'filesView.editor.binaryFileDescription': '此文件为二进制文件,无法在 OpenChamber 中编辑。请下载后使用其他应用打开。',
'filesView.state.loading': '加载中...',
'filesView.state.openingFileAtChange': '正在打开变更处的文件...',
'filesView.tree.search.placeholder': '搜索文件...',
@@ -1756,6 +1756,9 @@
'settings.openchamber.visual.field.promptNavigatorEnabled': '提示詞導覽',
'settings.openchamber.visual.field.expandedEditorToolbarAria': 'Always show editor toolbar',
'settings.openchamber.visual.field.expandedEditorToolbar': 'Always show editor toolbar (docked under the file tabs)',
'settings.openchamber.visual.field.autoSaveEnabledAria': '自動儲存檔案',
'settings.openchamber.visual.field.autoSaveEnabled': '自動儲存檔案',
'settings.openchamber.visual.field.autoSaveEnabledInfo': '停止輸入後自動儲存檔案編輯內容。關閉後需手動儲存。',
'settings.openchamber.visual.field.wideChatLayoutAria': '寬聊天佈局',
'settings.openchamber.visual.field.wideChatLayout': '寬聊天佈局',
'settings.openchamber.visual.field.showSplitAssistantMessageActionsAria': '行內助理操作',
@@ -1224,6 +1224,8 @@ export const dict: Record<I18nKey, string> = {
'filesView.editor.showControlsAria': '顯示編輯器控制項',
'filesView.editor.controlsTitle': '編輯器控制項',
'filesView.editor.pickFileFromTree': '請從檔案樹中選擇一個檔案。',
'filesView.editor.cannotPreviewBinary': '無法預覽二進位檔案',
'filesView.editor.binaryFileDescription': '此檔案為二進位檔案,無法在 OpenChamber 中編輯。請下載後使用其他應用程式開啟。',
'filesView.state.loading': '載入中...',
'filesView.state.openingFileAtChange': '正在開啟變更處的檔案...',
'filesView.tree.search.placeholder': '搜尋檔案...',