diff --git a/src/components/terminal/terminal.js b/src/components/terminal/terminal.js index dca6f15b44..9c502e65ac 100644 --- a/src/components/terminal/terminal.js +++ b/src/components/terminal/terminal.js @@ -80,7 +80,13 @@ export default class TerminalComponent { this.lastRequestedServerSize = null; // Lifecycle flags so exit/disconnect/error don't race into zombie tabs this.intentionalClose = false; + this._reconnectPromise = null; this.processExited = false; + // Reconnect state for transient WebSocket drops (app backgrounded, etc.) + this.isReconnecting = false; + this.reconnectAttempts = 0; + this.maxReconnectAttempts = 5; + this._openSocket = null; this.init(); } @@ -824,6 +830,19 @@ export default class TerminalComponent { } this.pid = pid; + await this.openSocket(pid); + } + + /** + * Open (or re-open) the WebSocket for an existing terminal PID. + * Used for first connect and for transparent reconnects after a drop. + * @param {string} pid + * @returns {Promise} + */ + async openSocket(pid) { + if (this.intentionalClose || this.processExited) { + throw new Error("Terminal is closed"); + } const wsUrl = `ws://127.0.0.1:${this.options.port}/terminals/${pid}`; @@ -833,6 +852,7 @@ export default class TerminalComponent { let settled = false; let hasOpened = false; + this._openSocket = websocket; this.websocket = websocket; const rejectInitialConnect = (message, error) => { @@ -853,10 +873,39 @@ export default class TerminalComponent { websocket.onopen = () => { clearTimeout(connectionTimeout); + // Terminal closed while this socket was connecting — drop it. + if (this.intentionalClose || this.processExited) { + if (this._openSocket === websocket) { + this._openSocket = null; + this.websocket = null; + } + try { + websocket.close(); + } catch {} + if (!settled) { + settled = true; + reject(new Error("Terminal is closed")); + } + return; + } + hasOpened = true; this.isConnected = true; + this.isReconnecting = false; + this.reconnectAttempts = 0; this.onConnect?.(); + // Dispose the previous attach addon so stale socket listeners + // do not accumulate across reconnects. + if (this.attachAddon) { + try { + this.attachAddon.dispose(); + } catch { + // Already disposed + } + this.attachAddon = null; + } + // Load attach addon after connection this.attachAddon = new AttachAddon(websocket); this.terminal.loadAddon(this.attachAddon); @@ -894,6 +943,9 @@ export default class TerminalComponent { websocket.onclose = (event) => { clearTimeout(connectionTimeout); + // Ignore close events from a superseded socket during reconnect + if (this._openSocket && this._openSocket !== websocket) return; + this.isConnected = false; if (!hasOpened) { @@ -914,6 +966,8 @@ export default class TerminalComponent { }; websocket.onerror = (error) => { + if (this._openSocket && this._openSocket !== websocket) return; + if (!hasOpened) { clearTimeout(connectionTimeout); rejectInitialConnect( @@ -932,6 +986,103 @@ export default class TerminalComponent { }); } + /** + * Attempt to re-establish the WebSocket after a transient drop. + * Returns true when the socket is open again. + * @returns {Promise} + */ + async reconnect() { + if (this.intentionalClose || this.processExited) return false; + if (!this.serverMode || this.remoteSsh) return false; + if (!this.pid) return false; + if (this.isConnected && this.websocket?.readyState === WebSocket.OPEN) { + return true; + } + // Share the in-flight attempt so concurrent callers (resume + + // visibilitychange, drop + resume) await the same result instead of + // counting "already reconnecting" as a failed try. + if (this._reconnectPromise) return this._reconnectPromise; + + this._reconnectPromise = this._performReconnect(); + try { + return await this._reconnectPromise; + } finally { + this._reconnectPromise = null; + } + } + + async _performReconnect() { + this.isReconnecting = true; + this.reconnectAttempts += 1; + + try { + // Tear down the dead socket without marking the session intentional + const previous = this._openSocket || this.websocket; + this._openSocket = null; + this.websocket = null; + this.isConnected = false; + if (previous) { + try { + previous.onclose = null; + previous.onerror = null; + previous.onmessage = null; + previous.close(); + } catch { + // Already closed + } + } + + // Confirm AXS (the PTY server) is still alive before reconnecting + if (typeof Terminal !== "undefined" && Terminal.isAxsRunning) { + const alive = await Terminal.isAxsRunning(); + // The terminal may have been closed/disposed while awaiting. + if (this.intentionalClose || this.processExited) { + this.isReconnecting = false; + return false; + } + if (!alive) { + this.isReconnecting = false; + return false; + } + } + + if (this.intentionalClose || this.processExited) { + this.isReconnecting = false; + return false; + } + + this.onReconnecting?.(this.reconnectAttempts); + await this.openSocket(this.pid); + + if (this.intentionalClose || this.processExited) { + const socket = this._openSocket || this.websocket; + this._openSocket = null; + this.websocket = null; + this.isConnected = false; + if (socket) { + try { + socket.onclose = null; + socket.onerror = null; + socket.onmessage = null; + socket.close(); + } catch {} + } + this.isReconnecting = false; + return false; + } + + this.onReconnected?.(); + return true; + } catch (error) { + console.warn( + `Terminal ${this.pid} reconnect attempt ${this.reconnectAttempts} failed:`, + error, + ); + this.isReconnecting = false; + return false; + } + } + /** * Connect xterm to an interactive Maverick SSH shell. */ @@ -1421,8 +1572,19 @@ export default class TerminalComponent { */ async terminate() { this.intentionalClose = true; + this._openSocket = null; + this.isReconnecting = false; + this._reconnectPromise = null; this.remoteInputDisposable?.dispose?.(); this.remoteInputDisposable = null; + if (this.attachAddon) { + try { + this.attachAddon.dispose(); + } catch { + // Already disposed + } + this.attachAddon = null; + } if (this.remoteShellId) { const shellID = this.remoteShellId; @@ -1436,11 +1598,13 @@ export default class TerminalComponent { if (this.websocket) { try { - this.websocket.close(); + const socket = this.websocket; + this.websocket = null; + this._openSocket = null; + socket.close(); } catch { // Already closed } - this.websocket = null; } if (this.pid && this.serverMode) { @@ -1510,6 +1674,8 @@ export default class TerminalComponent { onTitleChange(title) {} onBell() {} onProcessExit(exitData) {} + onReconnecting(_attempt) {} + onReconnected() {} } // Internal helpers for WebGL renderer lifecycle diff --git a/src/components/terminal/terminalManager.js b/src/components/terminal/terminalManager.js index 63f05d44a0..259bd4e9e6 100644 --- a/src/components/terminal/terminalManager.js +++ b/src/components/terminal/terminalManager.js @@ -23,6 +23,67 @@ class TerminalManager { constructor() { this.terminals = new Map(); this.terminalCounter = 0; + this._lifecycleBound = false; + this._bindLifecycle(); + } + + /** + * Keep terminal processes alive while the app is backgrounded and + * re-establish WebSocket sessions when the app returns to the foreground. + */ + _bindLifecycle() { + if (this._lifecycleBound || typeof document === "undefined") return; + this._lifecycleBound = true; + + document.addEventListener("pause", () => { + this.handleAppPause(); + }); + document.addEventListener("resume", () => { + this.handleAppResume(); + }); + document.addEventListener("visibilitychange", () => { + if (document.visibilityState === "visible") { + this.handleAppResume(); + } + }); + } + + /** + * App went to background: promote the executor service so Android is less + * likely to kill PTYs/servers, and avoid stopping it. + */ + handleAppPause() { + if (!this.terminals.size) return; + try { + // Keep the foreground notification so background processes survive + Executor.moveToForeground?.()?.catch?.(() => {}); + } catch (error) { + console.warn("Failed to keep terminal service in foreground:", error); + } + } + + /** + * App returned to foreground: transparently reconnect any dropped sockets + * instead of tearing the sessions down with a "connection lost" error. + */ + handleAppResume() { + if (!this.terminals.size) return; + this.terminals.forEach((terminal) => { + const component = terminal?.component; + if (!component || component.intentionalClose || component.processExited) { + return; + } + // Remote SSH uses a different transport; local WS reconnect + // always refuses it and would only burn retries + show a warning. + if (component.remoteSsh || !component.serverMode) return; + if ( + component.isConnected && + component.websocket?.readyState === WebSocket.OPEN + ) { + return; + } + void this.reconnectTerminal(component, terminal.id); + }); } extractTerminalNumber(name) { @@ -806,29 +867,72 @@ class TerminalManager { console.log(`Terminal ${terminalId} connected`); }; + terminalComponent.onReconnecting = (attempt) => { + console.log(`Terminal ${terminalId} reconnecting (attempt ${attempt})`); + try { + terminalComponent.write( + `\r\n\x1b[33m${strings["terminal-reconnecting"] || "Reconnecting terminal…"}\x1b[0m\r\n`, + ); + } catch { + // Best-effort status line + } + }; + + terminalComponent.onReconnected = () => { + console.log(`Terminal ${terminalId} reconnected`); + }; + terminalComponent.onDisconnect = (info = {}) => { console.log(`Terminal ${terminalId} disconnected`, info); // User/tab close and dispose intentionally close the socket. if (info.intentional) return; - // Exit message already drove finishTerminalSession (or is about to). - // Still call finish so a race can't leave the tab open; it's idempotent. - const message = info.processExited ? null : "Terminal session ended"; - void finishTerminalSession({ - message, - showToast: !info.processExited, - }); + // Process really exited: there is nothing to reconnect to. + if (info.processExited) { + void finishTerminalSession({ + message: null, + showToast: false, + }); + return; + } + + // Transient drop (app backgrounded, network blip): try to reconnect + // before declaring the session dead. This keeps servers/PTYs alive. + void this.reconnectTerminal(terminalComponent, terminalId).then( + (reconnected) => { + if (reconnected) return; + void finishTerminalSession({ + message: + strings["terminal-reconnect-failed"] || + "Terminal connection lost. Could not reconnect.", + showToast: true, + }); + }, + ); }; terminalComponent.onError = (error) => { console.error(`Terminal ${terminalId} error:`, error); - const errorMessage = error?.message || "Connection lost"; - void finishTerminalSession({ - showToast: false, - errorAlert: `Terminal connection error: ${errorMessage}`, - }); + if ( + terminalComponent.intentionalClose || + terminalComponent.processExited + ) { + return; + } + + // Prefer silent reconnect over an immediate "connection lost" alert. + void this.reconnectTerminal(terminalComponent, terminalId).then( + (reconnected) => { + if (reconnected) return; + const errorMessage = error?.message || "Connection lost"; + void finishTerminalSession({ + showToast: false, + errorAlert: `Terminal connection error: ${errorMessage}`, + }); + }, + ); }; terminalComponent.onTitleChange = async (title) => { @@ -926,6 +1030,70 @@ class TerminalManager { terminalFile.setCustomTitle(getTerminalTitle); } + /** + * Reconnect a dropped terminal socket with bounded retries. + * @param {object} terminalComponent + * @param {string} terminalId + * @returns {Promise} Whether the session is connected again + */ + async reconnectTerminal(terminalComponent, terminalId) { + if (!terminalComponent) return false; + if (terminalComponent.intentionalClose || terminalComponent.processExited) { + return false; + } + if ( + terminalComponent.serverMode && + !terminalComponent.remoteSsh && + terminalComponent.isConnected && + terminalComponent.websocket?.readyState === WebSocket.OPEN + ) { + return true; + } + // Competing callers (onDisconnect, onError, resume) must share one + // retry loop so a second caller never burns attempts on "in progress". + if (terminalComponent._reconnectLoopPromise) { + return terminalComponent._reconnectLoopPromise; + } + + terminalComponent._reconnectLoopPromise = this._runReconnectLoop( + terminalComponent, + terminalId, + ); + try { + return await terminalComponent._reconnectLoopPromise; + } finally { + terminalComponent._reconnectLoopPromise = null; + } + } + + async _runReconnectLoop(terminalComponent, terminalId) { + const maxAttempts = terminalComponent.maxReconnectAttempts || 5; + const baseDelay = 400; + + for (let attempt = 1; attempt <= maxAttempts; attempt++) { + if ( + terminalComponent.intentionalClose || + terminalComponent.processExited + ) { + return false; + } + + const connected = await terminalComponent.reconnect(); + if (connected) { + console.log(`Terminal ${terminalId} reconnected on attempt ${attempt}`); + return true; + } + + if (attempt < maxAttempts) { + const delay = Math.min(baseDelay * 2 ** (attempt - 1), 4000); + await new Promise((resolve) => setTimeout(resolve, delay)); + } + } + + console.warn(`Terminal ${terminalId} failed to reconnect after retries`); + return false; + } + /** * Close a terminal session * @param {string} terminalId - Terminal ID @@ -939,6 +1107,8 @@ class TerminalManager { try { if (terminal.component) { terminal.component.intentionalClose = true; + terminal.component._reconnectPromise = null; + terminal.component._reconnectLoopPromise = null; } if ( @@ -977,7 +1147,13 @@ class TerminalManager { } if (this.getAllTerminals().size <= 0) { - Executor.stopService(); + // Only stop the service when nothing (terminals) needs it anymore. + // Keep it running otherwise so background servers are not aborted. + try { + Executor.stopService(); + } catch (error) { + console.warn("Failed to stop terminal service:", error); + } } console.log(`Terminal ${terminalId} closed`); diff --git a/src/lang/ar-ye.json b/src/lang/ar-ye.json index 67b21b3d7c..a622a42af0 100644 --- a/src/lang/ar-ye.json +++ b/src/lang/ar-ye.json @@ -702,7 +702,21 @@ "settings-info-main-remove-ads": "فتح وصول دائم خالٍ من الإعلانات.", "settings-info-main-reset": "إعادة تعيين Acode إلى الإعدادات الافتراضية.", "settings-info-main-sponsors": "دعم تطوير Acode المستمر.", + "settings-info-main-support": "Open tickets, report bugs, and contact support.", "settings-info-main-terminal-settings": "سمة الطرفية، الخط، المؤشر، وسلوك الجلسة.", + "support-new-ticket": "Open a support ticket", + "support-new-ticket-info": "Report a bug or request a feature on GitHub.", + "support-view-tickets": "View existing tickets", + "support-view-tickets-info": "Browse open and closed issues on GitHub.", + "support-feature-request": "Request a feature", + "support-feature-request-info": "Suggest an improvement for Acode.", + "support-question": "Ask a question", + "support-question-info": "Get help from the community and maintainers.", + "support-contact": "Contact support", + "support-contact-info": "Email the team for private or account issues.", + "terminal-reconnecting": "Reconnecting terminal…", + "terminal-reconnect-failed": "Terminal connection lost. Could not reconnect.", + "terminal-session-ended": "Terminal session ended", "settings-info-main-theme": "سمة التطبيق، التباين، والألوان المخصصة.", "settings-info-preview-disable-cache": "إعادة تحميل المحتوى دائماً في المتصفح الداخلي.", "settings-info-preview-host": "اسم المضيف المستخدم عند فتح رابط المعاينة.", diff --git a/src/lang/az-az.json b/src/lang/az-az.json index 6285bb588a..a5f101e746 100644 --- a/src/lang/az-az.json +++ b/src/lang/az-az.json @@ -758,7 +758,21 @@ "settings-info-main-remove-ads": "Daimi reklamsız istifadə imkanı əldə et.", "settings-info-main-reset": "Acode-un parametrlərini sıfırlayaraq standart konfiqurasiyasını bərpa et.", "settings-info-main-sponsors": "Acode-un davamlı inkişafına dəstək ol.", + "settings-info-main-support": "Open tickets, report bugs, and contact support.", "settings-info-main-terminal-settings": "Terminalın teması, şrifti, kursoru və seans davranışı.", + "support-new-ticket": "Open a support ticket", + "support-new-ticket-info": "Report a bug or request a feature on GitHub.", + "support-view-tickets": "View existing tickets", + "support-view-tickets-info": "Browse open and closed issues on GitHub.", + "support-feature-request": "Request a feature", + "support-feature-request-info": "Suggest an improvement for Acode.", + "support-question": "Ask a question", + "support-question-info": "Get help from the community and maintainers.", + "support-contact": "Contact support", + "support-contact-info": "Email the team for private or account issues.", + "terminal-reconnecting": "Reconnecting terminal…", + "terminal-reconnect-failed": "Terminal connection lost. Could not reconnect.", + "terminal-session-ended": "Terminal session ended", "settings-info-main-theme": "Tətbiqin teması, kontrast və fərdi rənglər.", "settings-info-preview-disable-cache": "Tətbiqdaxili brauzerdə məzmunu həmişə yenidən yüklə.", "settings-info-preview-host": "Önbaxış URL ünvanını açarkən istifadə olunan host adı.", diff --git a/src/lang/be-by.json b/src/lang/be-by.json index 98601603c2..657dd980ac 100644 --- a/src/lang/be-by.json +++ b/src/lang/be-by.json @@ -702,7 +702,21 @@ "settings-info-main-remove-ads": "Unlock permanent ad-free access.", "settings-info-main-reset": "Reset Acode to its default configuration.", "settings-info-main-sponsors": "Support ongoing Acode development.", + "settings-info-main-support": "Open tickets, report bugs, and contact support.", "settings-info-main-terminal-settings": "Terminal theme, font, cursor, and session behavior.", + "support-new-ticket": "Open a support ticket", + "support-new-ticket-info": "Report a bug or request a feature on GitHub.", + "support-view-tickets": "View existing tickets", + "support-view-tickets-info": "Browse open and closed issues on GitHub.", + "support-feature-request": "Request a feature", + "support-feature-request-info": "Suggest an improvement for Acode.", + "support-question": "Ask a question", + "support-question-info": "Get help from the community and maintainers.", + "support-contact": "Contact support", + "support-contact-info": "Email the team for private or account issues.", + "terminal-reconnecting": "Reconnecting terminal…", + "terminal-reconnect-failed": "Terminal connection lost. Could not reconnect.", + "terminal-session-ended": "Terminal session ended", "settings-info-main-theme": "App theme, contrast, and custom colors.", "settings-info-preview-disable-cache": "Always reload content in the in-app browser.", "settings-info-preview-host": "Hostname used when opening the preview URL.", diff --git a/src/lang/bn-bd.json b/src/lang/bn-bd.json index c439ccecdc..f557b5b5be 100644 --- a/src/lang/bn-bd.json +++ b/src/lang/bn-bd.json @@ -702,7 +702,21 @@ "settings-info-main-remove-ads": "Unlock permanent ad-free access.", "settings-info-main-reset": "Reset Acode to its default configuration.", "settings-info-main-sponsors": "Support ongoing Acode development.", + "settings-info-main-support": "Open tickets, report bugs, and contact support.", "settings-info-main-terminal-settings": "Terminal theme, font, cursor, and session behavior.", + "support-new-ticket": "Open a support ticket", + "support-new-ticket-info": "Report a bug or request a feature on GitHub.", + "support-view-tickets": "View existing tickets", + "support-view-tickets-info": "Browse open and closed issues on GitHub.", + "support-feature-request": "Request a feature", + "support-feature-request-info": "Suggest an improvement for Acode.", + "support-question": "Ask a question", + "support-question-info": "Get help from the community and maintainers.", + "support-contact": "Contact support", + "support-contact-info": "Email the team for private or account issues.", + "terminal-reconnecting": "Reconnecting terminal…", + "terminal-reconnect-failed": "Terminal connection lost. Could not reconnect.", + "terminal-session-ended": "Terminal session ended", "settings-info-main-theme": "App theme, contrast, and custom colors.", "settings-info-preview-disable-cache": "Always reload content in the in-app browser.", "settings-info-preview-host": "Hostname used when opening the preview URL.", diff --git a/src/lang/cs-cz.json b/src/lang/cs-cz.json index f33b46844d..919d8bfb58 100644 --- a/src/lang/cs-cz.json +++ b/src/lang/cs-cz.json @@ -702,7 +702,21 @@ "settings-info-main-remove-ads": "Unlock permanent ad-free access.", "settings-info-main-reset": "Reset Acode to its default configuration.", "settings-info-main-sponsors": "Support ongoing Acode development.", + "settings-info-main-support": "Open tickets, report bugs, and contact support.", "settings-info-main-terminal-settings": "Terminal theme, font, cursor, and session behavior.", + "support-new-ticket": "Open a support ticket", + "support-new-ticket-info": "Report a bug or request a feature on GitHub.", + "support-view-tickets": "View existing tickets", + "support-view-tickets-info": "Browse open and closed issues on GitHub.", + "support-feature-request": "Request a feature", + "support-feature-request-info": "Suggest an improvement for Acode.", + "support-question": "Ask a question", + "support-question-info": "Get help from the community and maintainers.", + "support-contact": "Contact support", + "support-contact-info": "Email the team for private or account issues.", + "terminal-reconnecting": "Reconnecting terminal…", + "terminal-reconnect-failed": "Terminal connection lost. Could not reconnect.", + "terminal-session-ended": "Terminal session ended", "settings-info-main-theme": "App theme, contrast, and custom colors.", "settings-info-preview-disable-cache": "Always reload content in the in-app browser.", "settings-info-preview-host": "Hostname used when opening the preview URL.", diff --git a/src/lang/de-de.json b/src/lang/de-de.json index c19f4e6f56..7fb0f39125 100644 --- a/src/lang/de-de.json +++ b/src/lang/de-de.json @@ -702,7 +702,21 @@ "settings-info-main-remove-ads": "Unlock permanent ad-free access.", "settings-info-main-reset": "Reset Acode to its default configuration.", "settings-info-main-sponsors": "Support ongoing Acode development.", + "settings-info-main-support": "Open tickets, report bugs, and contact support.", "settings-info-main-terminal-settings": "Terminal theme, font, cursor, and session behavior.", + "support-new-ticket": "Open a support ticket", + "support-new-ticket-info": "Report a bug or request a feature on GitHub.", + "support-view-tickets": "View existing tickets", + "support-view-tickets-info": "Browse open and closed issues on GitHub.", + "support-feature-request": "Request a feature", + "support-feature-request-info": "Suggest an improvement for Acode.", + "support-question": "Ask a question", + "support-question-info": "Get help from the community and maintainers.", + "support-contact": "Contact support", + "support-contact-info": "Email the team for private or account issues.", + "terminal-reconnecting": "Reconnecting terminal…", + "terminal-reconnect-failed": "Terminal connection lost. Could not reconnect.", + "terminal-session-ended": "Terminal session ended", "settings-info-main-theme": "App theme, contrast, and custom colors.", "settings-info-preview-disable-cache": "Always reload content in the in-app browser.", "settings-info-preview-host": "Hostname used when opening the preview URL.", diff --git a/src/lang/en-us.json b/src/lang/en-us.json index 2869c6c2c2..a117d3e1ae 100644 --- a/src/lang/en-us.json +++ b/src/lang/en-us.json @@ -758,7 +758,21 @@ "settings-info-main-remove-ads": "Unlock permanent ad-free access.", "settings-info-main-reset": "Reset Acode to its default configuration.", "settings-info-main-sponsors": "Support ongoing Acode development.", + "settings-info-main-support": "Open tickets, report bugs, and contact support.", "settings-info-main-terminal-settings": "Terminal theme, font, cursor, and session behavior.", + "support-new-ticket": "Open a support ticket", + "support-new-ticket-info": "Report a bug or request a feature on GitHub.", + "support-view-tickets": "View existing tickets", + "support-view-tickets-info": "Browse open and closed issues on GitHub.", + "support-feature-request": "Request a feature", + "support-feature-request-info": "Suggest an improvement for Acode.", + "support-question": "Ask a question", + "support-question-info": "Get help from the community and maintainers.", + "support-contact": "Contact support", + "support-contact-info": "Email the team for private or account issues.", + "terminal-reconnecting": "Reconnecting terminal…", + "terminal-reconnect-failed": "Terminal connection lost. Could not reconnect.", + "terminal-session-ended": "Terminal session ended", "settings-info-main-theme": "App theme, contrast, and custom colors.", "settings-info-preview-disable-cache": "Always reload content in the in-app browser.", "settings-info-preview-host": "Hostname used when opening the preview URL.", diff --git a/src/lang/es-sv.json b/src/lang/es-sv.json index a65e2b8622..7c75b1a0fd 100644 --- a/src/lang/es-sv.json +++ b/src/lang/es-sv.json @@ -702,7 +702,7 @@ "settings-info-main-remove-ads": "Desbloquea la experiencia sin anuncios de forma permanente.", "settings-info-main-reset": "Reiniciar Acode a su configuración por defecto.", "settings-info-main-sponsors": "Apoyar al desarrollo continuo de Acode.", - "settings-info-main-terminal-settings": "Tema de la terminal, fuente, cursor y comportamiento de la sesión.", + "settings-info-main-terminal-settings": "Tema, fuente, cursor y comportamiento de las sesiones de la terminal.", "settings-info-main-theme": "Tema de la aplicación, contraste y colores personalizados.", "settings-info-preview-disable-cache": "Siempre recargar el contenido en el navegador de la aplicación.", "settings-info-preview-host": "Nombre de host usado al abrir la URL de la vista previa.", @@ -887,5 +887,19 @@ "settings-info-editor-wrapping-indent": "Elige si las líneas ajustadas comienzan desde el borde izquierdo, mantienen la indentación de la línea original o se indentan más. Cada nivel extra usa el tamaño del tabulador.", "icon pack": "Paquete de Íconos", "settings-info-icon-pack": "Elige el paquete de iconos usado para archivos y carpetas en el explorador y listas de archivos en la aplicación.", - "unavailable": "no disponible" + "unavailable": "no disponible", + "settings-info-main-support": "Abre tickets, informa de errores y contacta con soporte.", + "support-new-ticket": "Abrir un ticket de soporte", + "support-new-ticket-info": "Informa de un error o solicita una función en GitHub.", + "support-view-tickets": "Ver tickets existentes", + "support-view-tickets-info": "Consulta los issues abiertos y cerrados en GitHub.", + "support-feature-request": "Solicitar una función", + "support-feature-request-info": "Sugiere una mejora para Acode.", + "support-question": "Hacer una pregunta", + "support-question-info": "Obtén ayuda de la comunidad y de los mantenedores.", + "support-contact": "Contactar con soporte", + "support-contact-info": "Escribe al equipo para asuntos privados o relacionados con tu cuenta.", + "terminal-reconnecting": "Reconectando la terminal…", + "terminal-reconnect-failed": "Se perdió la conexión con la terminal. No se pudo reconectar.", + "terminal-session-ended": "La sesión de la terminal ha finalizado" } diff --git a/src/lang/fr-fr.json b/src/lang/fr-fr.json index 5fc53c6f1d..b5fc12fc19 100644 --- a/src/lang/fr-fr.json +++ b/src/lang/fr-fr.json @@ -702,7 +702,21 @@ "settings-info-main-remove-ads": "Unlock permanent ad-free access.", "settings-info-main-reset": "Reset Acode to its default configuration.", "settings-info-main-sponsors": "Support ongoing Acode development.", + "settings-info-main-support": "Open tickets, report bugs, and contact support.", "settings-info-main-terminal-settings": "Terminal theme, font, cursor, and session behavior.", + "support-new-ticket": "Open a support ticket", + "support-new-ticket-info": "Report a bug or request a feature on GitHub.", + "support-view-tickets": "View existing tickets", + "support-view-tickets-info": "Browse open and closed issues on GitHub.", + "support-feature-request": "Request a feature", + "support-feature-request-info": "Suggest an improvement for Acode.", + "support-question": "Ask a question", + "support-question-info": "Get help from the community and maintainers.", + "support-contact": "Contact support", + "support-contact-info": "Email the team for private or account issues.", + "terminal-reconnecting": "Reconnecting terminal…", + "terminal-reconnect-failed": "Terminal connection lost. Could not reconnect.", + "terminal-session-ended": "Terminal session ended", "settings-info-main-theme": "App theme, contrast, and custom colors.", "settings-info-preview-disable-cache": "Always reload content in the in-app browser.", "settings-info-preview-host": "Hostname used when opening the preview URL.", diff --git a/src/lang/he-il.json b/src/lang/he-il.json index 358b04abc6..57b1bba83c 100644 --- a/src/lang/he-il.json +++ b/src/lang/he-il.json @@ -702,7 +702,21 @@ "settings-info-main-remove-ads": "Unlock permanent ad-free access.", "settings-info-main-reset": "Reset Acode to its default configuration.", "settings-info-main-sponsors": "Support ongoing Acode development.", + "settings-info-main-support": "Open tickets, report bugs, and contact support.", "settings-info-main-terminal-settings": "Terminal theme, font, cursor, and session behavior.", + "support-new-ticket": "Open a support ticket", + "support-new-ticket-info": "Report a bug or request a feature on GitHub.", + "support-view-tickets": "View existing tickets", + "support-view-tickets-info": "Browse open and closed issues on GitHub.", + "support-feature-request": "Request a feature", + "support-feature-request-info": "Suggest an improvement for Acode.", + "support-question": "Ask a question", + "support-question-info": "Get help from the community and maintainers.", + "support-contact": "Contact support", + "support-contact-info": "Email the team for private or account issues.", + "terminal-reconnecting": "Reconnecting terminal…", + "terminal-reconnect-failed": "Terminal connection lost. Could not reconnect.", + "terminal-session-ended": "Terminal session ended", "settings-info-main-theme": "App theme, contrast, and custom colors.", "settings-info-preview-disable-cache": "Always reload content in the in-app browser.", "settings-info-preview-host": "Hostname used when opening the preview URL.", diff --git a/src/lang/hi-in.json b/src/lang/hi-in.json index 6aa97f71a1..bc23baa810 100644 --- a/src/lang/hi-in.json +++ b/src/lang/hi-in.json @@ -702,7 +702,21 @@ "settings-info-main-remove-ads": "Unlock permanent ad-free access.", "settings-info-main-reset": "Reset Acode to its default configuration.", "settings-info-main-sponsors": "Support ongoing Acode development.", + "settings-info-main-support": "Open tickets, report bugs, and contact support.", "settings-info-main-terminal-settings": "Terminal theme, font, cursor, and session behavior.", + "support-new-ticket": "Open a support ticket", + "support-new-ticket-info": "Report a bug or request a feature on GitHub.", + "support-view-tickets": "View existing tickets", + "support-view-tickets-info": "Browse open and closed issues on GitHub.", + "support-feature-request": "Request a feature", + "support-feature-request-info": "Suggest an improvement for Acode.", + "support-question": "Ask a question", + "support-question-info": "Get help from the community and maintainers.", + "support-contact": "Contact support", + "support-contact-info": "Email the team for private or account issues.", + "terminal-reconnecting": "Reconnecting terminal…", + "terminal-reconnect-failed": "Terminal connection lost. Could not reconnect.", + "terminal-session-ended": "Terminal session ended", "settings-info-main-theme": "App theme, contrast, and custom colors.", "settings-info-preview-disable-cache": "Always reload content in the in-app browser.", "settings-info-preview-host": "Hostname used when opening the preview URL.", diff --git a/src/lang/hu-hu.json b/src/lang/hu-hu.json index f2865688a2..a4d8dc7e2a 100644 --- a/src/lang/hu-hu.json +++ b/src/lang/hu-hu.json @@ -702,7 +702,21 @@ "settings-info-main-remove-ads": "Teljesen reklámmentes hozzáférés feloldása.", "settings-info-main-reset": "Az Acode visszaállítása az alapértelmezett konfigurációra.", "settings-info-main-sponsors": "Az Acode folyamatos fejlesztésének támogatása.", + "settings-info-main-support": "Open tickets, report bugs, and contact support.", "settings-info-main-terminal-settings": "Terminál-téma, betűtípus, kurzor és munkamenet viselkedése.", + "support-new-ticket": "Open a support ticket", + "support-new-ticket-info": "Report a bug or request a feature on GitHub.", + "support-view-tickets": "View existing tickets", + "support-view-tickets-info": "Browse open and closed issues on GitHub.", + "support-feature-request": "Request a feature", + "support-feature-request-info": "Suggest an improvement for Acode.", + "support-question": "Ask a question", + "support-question-info": "Get help from the community and maintainers.", + "support-contact": "Contact support", + "support-contact-info": "Email the team for private or account issues.", + "terminal-reconnecting": "Reconnecting terminal…", + "terminal-reconnect-failed": "Terminal connection lost. Could not reconnect.", + "terminal-session-ended": "Terminal session ended", "settings-info-main-theme": "Alkalmazás-téma, kontraszt és egyéni színek.", "settings-info-preview-disable-cache": "A tartalom mindig töltődjön be újra az alkalmazáson belüli böngészőben.", "settings-info-preview-host": "Az előnézeti webcím megnyitásakor használt gépnév.", diff --git a/src/lang/id-id.json b/src/lang/id-id.json index e21a315901..8584130ffb 100644 --- a/src/lang/id-id.json +++ b/src/lang/id-id.json @@ -702,7 +702,21 @@ "settings-info-main-remove-ads": "Buka akses permanen bebas iklan.", "settings-info-main-reset": "Atur ulang Acode ke konfigurasi bawaannya.", "settings-info-main-sponsors": "Dukung pengembangan Acode secara berkelanjutan.", + "settings-info-main-support": "Open tickets, report bugs, and contact support.", "settings-info-main-terminal-settings": "Tema Terminal, font, kursor, dan perilaku sesi.", + "support-new-ticket": "Open a support ticket", + "support-new-ticket-info": "Report a bug or request a feature on GitHub.", + "support-view-tickets": "View existing tickets", + "support-view-tickets-info": "Browse open and closed issues on GitHub.", + "support-feature-request": "Request a feature", + "support-feature-request-info": "Suggest an improvement for Acode.", + "support-question": "Ask a question", + "support-question-info": "Get help from the community and maintainers.", + "support-contact": "Contact support", + "support-contact-info": "Email the team for private or account issues.", + "terminal-reconnecting": "Reconnecting terminal…", + "terminal-reconnect-failed": "Terminal connection lost. Could not reconnect.", + "terminal-session-ended": "Terminal session ended", "settings-info-main-theme": "Tema aplikasi, kontras, dan warna kustom.", "settings-info-preview-disable-cache": "Selalu muat ulang konten di dalam peramban-dalam-aplikasi.", "settings-info-preview-host": "Nama host yang digunakan ketika membuka URL pratinjau.", diff --git a/src/lang/index.d.ts b/src/lang/index.d.ts index 8434189934..9056a57308 100644 --- a/src/lang/index.d.ts +++ b/src/lang/index.d.ts @@ -2,895 +2,909 @@ // Do not edit manually declare type LangStrings = { - lang: string; - about: string; - "active files": string; - alert: string; - "app theme": string; - autocorrect: string; - autosave: string; - cancel: string; - "change language": string; - "choose color": string; - clear: string; - "close app": string; - "commit message": string; - console: string; - "conflict error": string; - copy: string; - "create folder error": string; - cut: string; - delete: string; - dependencies: string; - delay: string; - "editor settings": string; - "editor theme": string; - "enter file name": string; - "enter folder name": string; - "empty folder message": string; - "enter line number": string; - error: string; - failed: string; - "file already exists": string; - "file already exists force": string; - "file already exists force named": string; - "file changed": string; - "file deleted": string; - "file is not supported": string; - "file not supported": string; - "file too large": string; - "file renamed": string; - "file saved": string; - "folder added": string; - "folder already added": string; - "font size": string; - goto: string; - "icons definition": string; - info: string; - "invalid value": string; - "language changed": string; - linting: string; - logout: string; - loading: string; - "my profile": string; - "new file": string; - "new folder": string; - no: string; - "no editor message": string; - "not set": string; - "unsaved files close app": string; - notice: string; - "open file": string; - "open files and folders": string; - "open folder": string; - "open recent": string; - ok: string; - overwrite: string; - paste: string; - "preview mode": string; - "read only file": string; - reload: string; - rename: string; - "new name": string; - "enter new name": string; - "code actions": string; - replace: string; - required: string; - "run your web app": string; - save: string; - saving: string; - "save as": string; - "save file to run": string; - search: string; - "see logs and errors": string; - "select folder": string; - settings: string; - "settings saved": string; - "show line numbers": string; - "show hidden files": string; - "show share button": string; - "show spaces": string; - "soft tab": string; - "sort by name": string; - success: string; - "tab size": string; - "text wrap": string; - "wrapped line indent": string; - "wrap-indent-same": string; - "wrap-indent-indent": string; - "wrap-indent-deep": string; - "settings-info-editor-wrapping-indent": string; - theme: string; - "title-listfiles": string; - "ui zoom": string; - "unable to delete file": string; - "document plugin required": string; - "shared files unavailable": string; - "invalid shared file": string; - "unable to open file": string; - "unable to open folder": string; - "unable to save file": string; - "unable to rename": string; - "unsaved file": string; - warning: string; - "use emmet": string; - "use quick tools": string; - yes: string; - encoding: string; - "syntax highlighting": string; - "read only": string; - "select all": string; - "select branch": string; - "create new branch": string; - "use branch": string; - "new branch": string; - branch: string; - "key bindings": string; - edit: string; - reset: string; - color: string; - "select word": string; - "quick tools": string; - select: string; - "editor font": string; - "new project": string; - format: string; - "project name": string; - "unsupported device": string; - "vibrate on tap": string; - "copy command is not supported by ftp.": string; - "support title": string; - fullscreen: string; - animation: string; - backup: string; - restore: string; - "backup successful": string; - "invalid backup file": string; - "add path": string; - "live autocompletion": string; - "local word completion": string; - "language package completion": string; - "recommend extensions": string; - "auto close tags": string; - "auto rename tags": string; - "file properties": string; - path: string; - type: string; - "word count": string; - "line count": string; - "last modified": string; - size: string; - share: string; - "show print margin": string; - login: string; - "scrollbar size": string; - "scrollbar height": string; - "cursor controller size": string; - full: string; - "scroll past end": string; - "settings-info-scroll-past-end": string; - none: string; - small: string; - large: string; - "confirm on exit": string; - "show console": string; - image: string; - "insert file": string; - "insert color": string; - "powersave mode warning": string; - exit: string; - custom: string; - "reset warning": string; - "theme type": string; - light: string; - dark: string; - "file browser": string; - "icon pack": string; - "settings-info-icon-pack": string; - unavailable: string; - "operation not permitted": string; - "no such file or directory": string; - "input/output error": string; - "permission denied": string; - "bad address": string; - "file exists": string; - "not a directory": string; - "is a directory": string; - "invalid argument": string; - "too many open files in system": string; - "too many open files": string; - "text file busy": string; - "no space left on device": string; - "read-only file system": string; - "file name too long": string; - "too many users": string; - "connection timed out": string; - "connection refused": string; - "owner died": string; - "an error occurred": string; - "add ftp": string; - "add sftp": string; - "save file": string; - "save file as": string; - files: string; - help: string; - "file has been deleted": string; - "feature not available": string; - "feature available in paid version": string; - "deleted file": string; - "line height": string; - "preview info": string; - "manage all files": string; - "close file": string; - "reset connections": string; - "check file changes": string; - "open in browser": string; - "desktop mode": string; - "toggle console": string; - "new line mode": string; - "add a storage": string; - "rate acode": string; - support: string; - "downloading file": string; - "downloading...": string; - "folder name": string; - "keyboard mode": string; - normal: string; - "app settings": string; - "disable in-app-browser caching": string; - "copied to clipboard": string; - "clipboard not available": string; - "remember opened files": string; - "remember opened folders": string; - "no suggestions": string; - "no suggestions aggressive": string; - install: string; - installing: string; - plugins: string; - "recently used": string; - update: string; - uninstall: string; - "download acode pro": string; - "loading plugins": string; - faqs: string; - feedback: string; - header: string; - sidebar: string; - inapp: string; - browser: string; - "diagonal scrolling": string; - "reverse scrolling": string; - formatter: string; - "format on save": string; - "remove ads": string; - fast: string; - slow: string; - "scroll settings": string; - "scroll speed": string; - "loading...": string; - "no plugins found": string; - name: string; - username: string; - optional: string; - hostname: string; - password: string; - "security type": string; - "connection mode": string; - port: string; - "key file": string; - "select key file": string; - passphrase: string; - "connecting...": string; - "type filename": string; - "unable to load files": string; - "preview port": string; - "find file": string; - system: string; - "please select a formatter": string; - "case sensitive": string; - "regular expression": string; - "whole word": string; - "edit with": string; - "open with": string; - "no app found to handle this file": string; - "restore default settings": string; - "server port": string; - "preview settings": string; - "preview settings note": string; - "backup/restore note": string; - host: string; - "retry ftp/sftp when fail": string; - more: string; - "thank you :)": string; - "purchase pending": string; - cancelled: string; - local: string; - remote: string; - "show console toggler": string; - "binary file": string; - "relative line numbers": string; - "elastic tabstops": string; - "line based rtl switching": string; - "hard wrap": string; - spellcheck: string; - "wrap method": string; - "use textarea for ime": string; - "invalid plugin": string; - "type command": string; - plugin: string; - "quicktools trigger mode": string; - "print margin": string; - "touch move threshold": string; - "info-retryremotefsafterfail": string; - "info-fullscreen": string; - "info-checkfiles": string; - "info-console": string; - "info-keyboardmode": string; - "info-rememberfiles": string; - "info-rememberfolders": string; - "info-floatingbutton": string; - "info-openfilelistpos": string; - "info-touchmovethreshold": string; - "info-scroll-settings": string; - "info-animation": string; - "info-quicktoolstriggermode": string; - "info-checkForAppUpdates": string; - "info-quickTools": string; - "info-showHiddenFiles": string; - "info-listFiles": string; - "info-all_file_access": string; - "info-fontSize": string; - "info-fontFamily": string; - "info-theme": string; - "info-cursorStyle": string; - "info-cursorInactiveStyle": string; - "info-fontWeight": string; - "info-cursorBlink": string; - "info-scrollback": string; - "info-terminal-show-scrollbar": string; - "info-tabStopWidth": string; - "info-letterSpacing": string; - "info-imageSupport": string; - "info-fontLigatures": string; - "info-confirmTabClose": string; - "info-backup": string; - "info-restore": string; - "info-uninstall": string; - owned: string; - api_error: string; - installed: string; - all: string; - medium: string; - refund: string; - "product not available": string; - "no-product-info": string; - close: string; - explore: string; - "key bindings updated": string; - "search in files": string; - "exclude files": string; - "include files": string; - "search result": string; - "invalid regex": string; - bottom: string; - "save all": string; - "close all": string; - "unsaved files warning": string; - "save all warning": string; - "save all changes warning": string; - "close all warning": string; - refresh: string; - "shortcut buttons": string; - "no result": string; - "searching...": string; - "quicktools:ctrl-key": string; - "quicktools:tab-key": string; - "quicktools:shift-key": string; - "quicktools:undo": string; - "quicktools:redo": string; - "quicktools:search": string; - "quicktools:save": string; - "quicktools:esc-key": string; - "quicktools:curlybracket": string; - "quicktools:squarebracket": string; - "quicktools:parentheses": string; - "quicktools:anglebracket": string; - "quicktools:left-arrow-key": string; - "quicktools:right-arrow-key": string; - "quicktools:up-arrow-key": string; - "quicktools:down-arrow-key": string; - "quicktools:moveline-up": string; - "quicktools:moveline-down": string; - "quicktools:copyline-up": string; - "quicktools:copyline-down": string; - "quicktools:semicolon": string; - "quicktools:quotation": string; - "quicktools:and": string; - "quicktools:bar": string; - "quicktools:equal": string; - "quicktools:slash": string; - "quicktools:exclamation": string; - "quicktools:alt-key": string; - "quicktools:meta-key": string; - "quicktools:search-prev": string; - "quicktools:search-next": string; - "quicktools:search-settings": string; - "quicktools:search-replace": string; - "quicktools:search-replace-all": string; - "info-quicktoolssettings": string; - "info-excludefolders": string; - "missed files": string; - remove: string; - "quicktools:command-palette": string; - "default file encoding": string; - "remove entry": string; - "delete entry": string; - "change encoding": string; - "reopen file": string; - "plugin min version": string; - "color preview": string; - confirm: string; - problems: string; - "show side buttons": string; - bug_report: string; - "verified publisher": string; - most_downloaded: string; - newly_added: string; - top_rated: string; - "rename not supported": string; - compress: string; - "copy uri": string; - "copying items": string; - "cannot paste folder into itself": string; - "folder already exists": string; - "delete entries": string; - "deleting items": string; - "import project zip": string; - changelog: string; - notifications: string; - no_unread_notifications: string; - should_use_current_file_for_preview: string; - "fade fold widgets": string; - "quicktools:home-key": string; - "quicktools:end-key": string; - "quicktools:pageup-key": string; - "quicktools:pagedown-key": string; - "quicktools:delete-key": string; - "quicktools:tilde": string; - "quicktools:backtick": string; - "quicktools:hash": string; - "quicktools:dollar": string; - "quicktools:modulo": string; - "quicktools:caret": string; - plugin_enabled: string; - plugin_disabled: string; - enable_plugin: string; - disable_plugin: string; - open_source: string; - "terminal settings": string; - "font ligatures": string; - "letter spacing": string; - "terminal:tab stop width": string; - "terminal:scrollback": string; - "terminal:show scrollbar": string; - "terminal:cursor blink": string; - "terminal:font weight": string; - "terminal:cursor inactive style": string; - "terminal:cursor style": string; - "terminal:font family": string; - "terminal:convert eol": string; - "terminal:confirm tab close": string; - "terminal:image support": string; - terminal: string; - "running processes": string; - "terminal not installed prompt": string; - "terminal first launch prompt": string; - "don't ask again": string; - allFileAccess: string; - fonts: string; - sponsor: string; - downloads: string; - reviews: string; - overview: string; - contributors: string; - "quicktools:hyphen": string; - "check for app updates": string; - "prompt update check consent message": string; - keywords: string; - author: string; - "filtered by": string; - "clean install state": string; - "backup created": string; - "restore completed": string; - "restore will include": string; - "restore warning": string; - "reload to apply": string; - "reload app": string; - "preparing backup": string; - "collecting settings": string; - "collecting key bindings": string; - "collecting plugins": string; - "creating backup": string; - "validating backup": string; - "restoring key bindings": string; - "restoring plugins": string; - "restoring settings": string; - "legacy backup warning": string; - "checksum mismatch": string; - "plugin not found": string; - "paid plugin skipped": string; - "source not found": string; - restored: string; - skipped: string; - "backup not valid object": string; - "backup no data": string; - "backup legacy warning": string; - "backup missing metadata": string; - "backup checksum mismatch": string; - "backup checksum verify failed": string; - "backup invalid settings": string; - "backup invalid keybindings": string; - "backup invalid plugins": string; - "issues found": string; - "error details": string; - "active tools": string; - recent: string; - "command palette": string; - "change theme": string; - documentation: string; - "open in terminal": string; - "developer mode": string; - "info-developermode": string; - "developer mode enabled": string; - "developer mode disabled": string; - "copy relative path": string; - "available tools": string; - "shortcut request sent": string; - "add to home screen": string; - "pin shortcuts not supported": string; - "save file before home shortcut": string; - terminal_required_message_for_lsp: string; - "shift click selection": string; - "earn ad-free time": string; - "indent guides": string; - "language servers": string; - "lint gutter": string; - "rainbow brackets": string; - "lsp-add-custom-server": string; - "lsp-binary-args": string; - "lsp-binary-command": string; - "lsp-binary-path-optional": string; - "lsp-check-command-optional": string; - "lsp-checking-installation-status": string; - "lsp-configured": string; - "lsp-custom-server-added": string; - "lsp-default": string; - "lsp-details-line": string; - "lsp-edit-initialization-options": string; - "lsp-empty": string; - "lsp-enabled": string; - "lsp-error-add-server-failed": string; - "lsp-error-args-must-be-array": string; - "lsp-error-binary-command-required": string; - "lsp-error-language-id-required": string; - "lsp-error-package-required": string; - "lsp-error-server-id-required": string; - "lsp-feature-completion": string; - "lsp-feature-completion-info": string; - "lsp-feature-diagnostics": string; - "lsp-feature-diagnostics-info": string; - "lsp-feature-formatting": string; - "lsp-feature-formatting-info": string; - "lsp-feature-hover": string; - "lsp-feature-hover-info": string; - "lsp-feature-inlay-hints": string; - "lsp-feature-inlay-hints-info": string; - "lsp-feature-signature": string; - "lsp-feature-signature-info": string; - "lsp-feature-state-toast": string; - "lsp-initialization-options": string; - "lsp-initialization-options-json": string; - "lsp-initialization-options-updated": string; - "lsp-install-command": string; - "lsp-install-command-unavailable": string; - "lsp-install-info-check-failed": string; - "lsp-install-info-missing": string; - "lsp-install-info-ready": string; - "lsp-install-info-unknown": string; - "lsp-install-info-version-available": string; - "lsp-install-notification": string; - "lsp-install-method-apk": string; - "lsp-install-method-cargo": string; - "lsp-install-method-manual": string; - "lsp-install-method-npm": string; - "lsp-install-method-pip": string; - "lsp-install-method-shell": string; - "lsp-install-method-title": string; - "lsp-install-repair": string; - "lsp-installation-status": string; - "lsp-installed": string; - "lsp-invalid-timeout": string; - "lsp-language-ids": string; - "lsp-packages-prompt": string; - "lsp-remove-custom-server": string; - "lsp-remove-custom-server-confirm": string; - "lsp-remove-installed-files": string; - "lsp-custom-server-removed": string; - "lsp-server-disabled-toast": string; - "lsp-server-enabled-toast": string; - "lsp-server-id": string; - "lsp-server-label": string; - "lsp-server-not-found": string; - "lsp-server-uninstalled": string; - "lsp-startup-timeout": string; - "lsp-startup-timeout-ms": string; - "lsp-startup-timeout-set": string; - "lsp-state-disabled": string; - "lsp-state-enabled": string; - "lsp-status": string; - "lsp-status-check-failed": string; - "lsp-status-installed": string; - "lsp-status-installed-version": string; - "lsp-status-line": string; - "lsp-status-not-installed": string; - "lsp-status-unknown": string; - "lsp-timeout-ms": string; - "lsp-transport-method-stdio": string; - "lsp-transport-method-websocket": string; - "lsp-uninstall-command-unavailable": string; - "lsp-uninstall-notification": string; - "lsp-uninstall-server": string; - "lsp-update-command-optional": string; - "lsp-update-command-unavailable": string; - "lsp-update-server": string; - "lsp-version-line": string; - "lsp-websocket-url": string; - "lsp-websocket-server-managed-externally": string; - "lsp-error-websocket-url-invalid": string; - "lsp-error-websocket-url-required": string; - "lsp-view-initialization-options": string; - "settings-category-about-acode": string; - "settings-category-discover-apps": string; - "settings-category-advanced": string; - "settings-category-assistance": string; - "settings-category-core": string; - "settings-category-cursor": string; - "settings-category-cursor-selection": string; - "settings-category-custom-servers": string; - "settings-category-customization": string; - "settings-category-display": string; - "settings-category-editing": string; - "settings-category-features": string; - "settings-category-files-sessions": string; - "settings-category-fonts": string; - "settings-category-general": string; - "settings-category-guides-indicators": string; - "settings-category-installation": string; - "settings-category-interface": string; - "settings-category-maintenance": string; - "settings-category-permissions": string; - "settings-category-preview": string; - "settings-category-scrolling": string; - "settings-category-server": string; - "settings-category-servers": string; - "settings-category-session": string; - "settings-category-support-acode": string; - "settings-category-text-layout": string; - "settings-category-tools": string; - "settings-info-app-animation": string; - "settings-info-app-check-files": string; - "settings-info-app-clean-install-state": string; - "settings-info-app-confirm-on-exit": string; - "settings-info-app-console": string; - "settings-info-app-default-file-encoding": string; - "settings-info-app-exclude-folders": string; - "apply exclusions when copying": string; - "settings-info-app-use-file-operation-exclusions": string; - "settings-info-app-floating-button": string; - "settings-info-app-font-manager": string; - "settings-info-app-fullscreen": string; - "settings-info-app-keybindings": string; - "settings-info-app-keyboard-mode": string; - "settings-info-app-language": string; - "settings-info-app-open-file-list-position": string; - "settings-info-app-quick-tools-settings": string; - "settings-info-app-quick-tools-trigger-mode": string; - "settings-info-app-remember-files": string; - "settings-info-app-remember-folders": string; - "settings-info-app-retry-remote-fs": string; - "settings-info-app-side-buttons": string; - "settings-info-app-sponsor-sidebar": string; - "settings-info-app-touch-move-threshold": string; - "settings-info-app-ui-zoom": string; - "settings-info-app-vibrate-on-tap": string; - "settings-info-editor-autosave": string; - "settings-info-editor-color-preview": string; - "settings-info-editor-fade-fold-widgets": string; - "settings-info-editor-font-family": string; - "settings-info-editor-font-size": string; - "settings-info-editor-format-on-save": string; - "settings-info-editor-hard-wrap": string; - "settings-info-editor-indent-guides": string; - "settings-info-editor-line-height": string; - "settings-info-editor-line-numbers": string; - "settings-info-editor-lint-gutter": string; - "settings-info-editor-live-autocomplete": string; - "settings-info-editor-local-word-completion": string; - "settings-info-editor-language-completion": string; - "settings-info-editor-recommend-extensions": string; - "extension recommendation title": string; - "extension recommendation message": string; - "extension request title": string; - "extension request message": string; - "search plugins": string; - "request plugin": string; - "settings-info-editor-auto-close-tags": string; - "settings-info-editor-auto-rename-tags": string; - "settings-info-editor-rainbow-brackets": string; - "settings-info-editor-relative-line-numbers": string; - "settings-info-editor-rtl-text": string; - "settings-info-editor-scroll-settings": string; - "settings-info-editor-shift-click-selection": string; - "settings-info-editor-show-share-button": string; - "settings-info-editor-show-spaces": string; - "settings-info-editor-soft-tab": string; - "settings-info-editor-tab-size": string; - "settings-info-editor-teardrop-size": string; - "settings-info-editor-text-wrap": string; - "settings-info-lsp-add-custom-server": string; - "settings-info-lsp-allow-non-terminal-workspace": string; - "settings-info-lsp-edit-init-options": string; - "settings-info-lsp-install-server": string; - "settings-info-lsp-remove-custom-server": string; - "settings-info-lsp-server-enabled": string; - "settings-info-lsp-startup-timeout": string; - "settings-info-lsp-uninstall-server": string; - "settings-info-lsp-update-server": string; - "settings-info-lsp-view-init-options": string; - "settings-info-main-ad-rewards": string; - "settings-info-main-app-settings": string; - "settings-info-main-backup-restore": string; - "settings-info-main-changelog": string; - "settings-info-main-edit-settings": string; - "settings-info-main-editor-settings": string; - "settings-info-main-formatter": string; - "settings-info-main-lsp-settings": string; - "settings-info-main-plugins": string; - "settings-info-main-preview-settings": string; - "settings-info-main-rateapp": string; - "settings-info-main-remove-ads": string; - "settings-info-main-reset": string; - "settings-info-main-sponsors": string; - "settings-info-main-terminal-settings": string; - "settings-info-main-theme": string; - "settings-info-preview-disable-cache": string; - "settings-info-preview-host": string; - "settings-info-preview-mode": string; - "settings-info-preview-preview-port": string; - "settings-info-preview-server-port": string; - "settings-info-preview-show-console-toggler": string; - "settings-info-preview-use-current-file": string; - "settings-info-terminal-convert-eol": string; - "settings-note-formatter-settings": string; - "settings-note-lsp-settings": string; - "lsp-allow-non-terminal-workspace": string; - "search result label singular": string; - "search result label plural": string; - "pin tab": string; - "unpin tab": string; - "pinned tab": string; - "unpin tab before closing": string; - "app font": string; - "app icon": string; - "app icon changed": string; - "app icon change warning": string; - "settings-info-app-font-family": string; - "settings-info-app-icon": string; - "unsaved selected tabs warning": string; - "save selected tabs": string; - "close selected tabs": string; - "save selected tabs warning": string; - "close selected tabs warning": string; - "close tabs to right": string; - "close tabs to left": string; - "close other tabs": string; - "plugin-not-supported": string; - "plugin-not-supported-info": string; - "login-to-view": string; - "iap-plugin-purchase-warning": string; - "iap-pro-purchase-warning": string; - "confirm-login": string; - "terminal:failsafe": string; - "terminal:failsafe-info": string; - compact: string; - off: string; - "quick tools height": string; - "quick tools toggler": string; - "terminal:block": string; - "terminal:underline": string; - "terminal:bar": string; - "terminal:inactive block": string; - "terminal:inactive underline": string; - "terminal:inactive bar": string; - "terminal:inactive none": string; - "terminal:normal": string; - "terminal:bold": string; - "quicktools-trigger:click": string; - "quicktools-trigger:touch": string; - "settings-info-terminal-uninstall": string; - "terminal:inactive outline": string; - "restored successfully": string; - "uninstalled successfully": string; - "enter plugin source": string; - "enter keywords": string; - "enter author name": string; - "update available": string; - "update available info": string; - "plugin updates": string; - "plugin updates singular": string; - "plugin updates plural": string; - "just now": string; - "day singular": string; - "hour singular": string; - "min singular": string; - "day plural": string; - "hour plural": string; - "min plural": string; - "settings-category-builtin-servers": string; - "settings-category-plugin-servers": string; - "active processes": string; - "total memory": string; - uptime: string; - note: string; - "acode main process": string; - "ppid parent": string; - unknown: string; - "just started": string; - "diff days": string; - "diff hr": string; - "diff min": string; - "diff sec": string; - command: string; - managed: string; - "acode service": string; - "horizontal scroll margin": string; - "settings-info-horizontal-scroll-margin": string; - "confirm app icon reward": string; - "rewarded ad unavailable": string; - "rewarded ad failed": string; - "rewarded ad incomplete": string; - "plugin-review:dialog-label": string; - "plugin-review:account-check-failed": string; - "plugin-review:sign-in": string; - "plugin-review:edit": string; - "plugin-review:add": string; - "plugin-review:placeholder": string; - "plugin-review:input-label": string; - "plugin-review:vote-group-label": string; - "plugin-review:thumbs-up": string; - "plugin-review:thumbs-down": string; - "plugin-review:delete": string; - "plugin-review:load-failed": string; - "plugin-review:retry": string; - "plugin-review:empty-title": string; - "plugin-review:empty-description": string; - "plugin-review:yours": string; - "plugin-review:community": string; - "plugin-review:no-other-reviews": string; - "plugin-review:login-incomplete": string; - "plugin-review:sign-in-failed": string; - "plugin-review:session-expired-review": string; - "plugin-review:save-failed": string; - "plugin-review:delete-confirmation": string; - "plugin-review:session-expired-continue": string; - "plugin-review:delete-failed": string; - "plugin-review:you": string; - "plugin-review:edit-action": string; - "plugin-review:recommended": string; - "plugin-review:error-max-length": string; - "plugin-review:error-downvote-comment": string; - "plugin-review:error-empty": string; - "plugin-review:unrated": string; + "lang": string; + "about": string; + "active files": string; + "alert": string; + "app theme": string; + "autocorrect": string; + "autosave": string; + "cancel": string; + "change language": string; + "choose color": string; + "clear": string; + "close app": string; + "commit message": string; + "console": string; + "conflict error": string; + "copy": string; + "create folder error": string; + "cut": string; + "delete": string; + "dependencies": string; + "delay": string; + "editor settings": string; + "editor theme": string; + "enter file name": string; + "enter folder name": string; + "empty folder message": string; + "enter line number": string; + "error": string; + "failed": string; + "file already exists": string; + "file already exists force": string; + "file already exists force named": string; + "file changed": string; + "file deleted": string; + "file is not supported": string; + "file not supported": string; + "file too large": string; + "file renamed": string; + "file saved": string; + "folder added": string; + "folder already added": string; + "font size": string; + "goto": string; + "icons definition": string; + "info": string; + "invalid value": string; + "language changed": string; + "linting": string; + "logout": string; + "loading": string; + "my profile": string; + "new file": string; + "new folder": string; + "no": string; + "no editor message": string; + "not set": string; + "unsaved files close app": string; + "notice": string; + "open file": string; + "open files and folders": string; + "open folder": string; + "open recent": string; + "ok": string; + "overwrite": string; + "paste": string; + "preview mode": string; + "read only file": string; + "reload": string; + "rename": string; + "new name": string; + "enter new name": string; + "code actions": string; + "replace": string; + "required": string; + "run your web app": string; + "save": string; + "saving": string; + "save as": string; + "save file to run": string; + "search": string; + "see logs and errors": string; + "select folder": string; + "settings": string; + "settings saved": string; + "show line numbers": string; + "show hidden files": string; + "show share button": string; + "show spaces": string; + "soft tab": string; + "sort by name": string; + "success": string; + "tab size": string; + "text wrap": string; + "wrapped line indent": string; + "wrap-indent-same": string; + "wrap-indent-indent": string; + "wrap-indent-deep": string; + "settings-info-editor-wrapping-indent": string; + "theme": string; + "title-listfiles": string; + "ui zoom": string; + "unable to delete file": string; + "document plugin required": string; + "shared files unavailable": string; + "invalid shared file": string; + "unable to open file": string; + "unable to open folder": string; + "unable to save file": string; + "unable to rename": string; + "unsaved file": string; + "warning": string; + "use emmet": string; + "use quick tools": string; + "yes": string; + "encoding": string; + "syntax highlighting": string; + "read only": string; + "select all": string; + "select branch": string; + "create new branch": string; + "use branch": string; + "new branch": string; + "branch": string; + "key bindings": string; + "edit": string; + "reset": string; + "color": string; + "select word": string; + "quick tools": string; + "select": string; + "editor font": string; + "new project": string; + "format": string; + "project name": string; + "unsupported device": string; + "vibrate on tap": string; + "copy command is not supported by ftp.": string; + "support title": string; + "fullscreen": string; + "animation": string; + "backup": string; + "restore": string; + "backup successful": string; + "invalid backup file": string; + "add path": string; + "live autocompletion": string; + "local word completion": string; + "language package completion": string; + "recommend extensions": string; + "auto close tags": string; + "auto rename tags": string; + "file properties": string; + "path": string; + "type": string; + "word count": string; + "line count": string; + "last modified": string; + "size": string; + "share": string; + "show print margin": string; + "login": string; + "scrollbar size": string; + "scrollbar height": string; + "cursor controller size": string; + "full": string; + "scroll past end": string; + "settings-info-scroll-past-end": string; + "none": string; + "small": string; + "large": string; + "confirm on exit": string; + "show console": string; + "image": string; + "insert file": string; + "insert color": string; + "powersave mode warning": string; + "exit": string; + "custom": string; + "reset warning": string; + "theme type": string; + "light": string; + "dark": string; + "file browser": string; + "icon pack": string; + "settings-info-icon-pack": string; + "unavailable": string; + "operation not permitted": string; + "no such file or directory": string; + "input/output error": string; + "permission denied": string; + "bad address": string; + "file exists": string; + "not a directory": string; + "is a directory": string; + "invalid argument": string; + "too many open files in system": string; + "too many open files": string; + "text file busy": string; + "no space left on device": string; + "read-only file system": string; + "file name too long": string; + "too many users": string; + "connection timed out": string; + "connection refused": string; + "owner died": string; + "an error occurred": string; + "add ftp": string; + "add sftp": string; + "save file": string; + "save file as": string; + "files": string; + "help": string; + "file has been deleted": string; + "feature not available": string; + "feature available in paid version": string; + "deleted file": string; + "line height": string; + "preview info": string; + "manage all files": string; + "close file": string; + "reset connections": string; + "check file changes": string; + "open in browser": string; + "desktop mode": string; + "toggle console": string; + "new line mode": string; + "add a storage": string; + "rate acode": string; + "support": string; + "downloading file": string; + "downloading...": string; + "folder name": string; + "keyboard mode": string; + "normal": string; + "app settings": string; + "disable in-app-browser caching": string; + "copied to clipboard": string; + "clipboard not available": string; + "remember opened files": string; + "remember opened folders": string; + "no suggestions": string; + "no suggestions aggressive": string; + "install": string; + "installing": string; + "plugins": string; + "recently used": string; + "update": string; + "uninstall": string; + "download acode pro": string; + "loading plugins": string; + "faqs": string; + "feedback": string; + "header": string; + "sidebar": string; + "inapp": string; + "browser": string; + "diagonal scrolling": string; + "reverse scrolling": string; + "formatter": string; + "format on save": string; + "remove ads": string; + "fast": string; + "slow": string; + "scroll settings": string; + "scroll speed": string; + "loading...": string; + "no plugins found": string; + "name": string; + "username": string; + "optional": string; + "hostname": string; + "password": string; + "security type": string; + "connection mode": string; + "port": string; + "key file": string; + "select key file": string; + "passphrase": string; + "connecting...": string; + "type filename": string; + "unable to load files": string; + "preview port": string; + "find file": string; + "system": string; + "please select a formatter": string; + "case sensitive": string; + "regular expression": string; + "whole word": string; + "edit with": string; + "open with": string; + "no app found to handle this file": string; + "restore default settings": string; + "server port": string; + "preview settings": string; + "preview settings note": string; + "backup/restore note": string; + "host": string; + "retry ftp/sftp when fail": string; + "more": string; + "thank you :)": string; + "purchase pending": string; + "cancelled": string; + "local": string; + "remote": string; + "show console toggler": string; + "binary file": string; + "relative line numbers": string; + "elastic tabstops": string; + "line based rtl switching": string; + "hard wrap": string; + "spellcheck": string; + "wrap method": string; + "use textarea for ime": string; + "invalid plugin": string; + "type command": string; + "plugin": string; + "quicktools trigger mode": string; + "print margin": string; + "touch move threshold": string; + "info-retryremotefsafterfail": string; + "info-fullscreen": string; + "info-checkfiles": string; + "info-console": string; + "info-keyboardmode": string; + "info-rememberfiles": string; + "info-rememberfolders": string; + "info-floatingbutton": string; + "info-openfilelistpos": string; + "info-touchmovethreshold": string; + "info-scroll-settings": string; + "info-animation": string; + "info-quicktoolstriggermode": string; + "info-checkForAppUpdates": string; + "info-quickTools": string; + "info-showHiddenFiles": string; + "info-listFiles": string; + "info-all_file_access": string; + "info-fontSize": string; + "info-fontFamily": string; + "info-theme": string; + "info-cursorStyle": string; + "info-cursorInactiveStyle": string; + "info-fontWeight": string; + "info-cursorBlink": string; + "info-scrollback": string; + "info-terminal-show-scrollbar": string; + "info-tabStopWidth": string; + "info-letterSpacing": string; + "info-imageSupport": string; + "info-fontLigatures": string; + "info-confirmTabClose": string; + "info-backup": string; + "info-restore": string; + "info-uninstall": string; + "owned": string; + "api_error": string; + "installed": string; + "all": string; + "medium": string; + "refund": string; + "product not available": string; + "no-product-info": string; + "close": string; + "explore": string; + "key bindings updated": string; + "search in files": string; + "exclude files": string; + "include files": string; + "search result": string; + "invalid regex": string; + "bottom": string; + "save all": string; + "close all": string; + "unsaved files warning": string; + "save all warning": string; + "save all changes warning": string; + "close all warning": string; + "refresh": string; + "shortcut buttons": string; + "no result": string; + "searching...": string; + "quicktools:ctrl-key": string; + "quicktools:tab-key": string; + "quicktools:shift-key": string; + "quicktools:undo": string; + "quicktools:redo": string; + "quicktools:search": string; + "quicktools:save": string; + "quicktools:esc-key": string; + "quicktools:curlybracket": string; + "quicktools:squarebracket": string; + "quicktools:parentheses": string; + "quicktools:anglebracket": string; + "quicktools:left-arrow-key": string; + "quicktools:right-arrow-key": string; + "quicktools:up-arrow-key": string; + "quicktools:down-arrow-key": string; + "quicktools:moveline-up": string; + "quicktools:moveline-down": string; + "quicktools:copyline-up": string; + "quicktools:copyline-down": string; + "quicktools:semicolon": string; + "quicktools:quotation": string; + "quicktools:and": string; + "quicktools:bar": string; + "quicktools:equal": string; + "quicktools:slash": string; + "quicktools:exclamation": string; + "quicktools:alt-key": string; + "quicktools:meta-key": string; + "quicktools:search-prev": string; + "quicktools:search-next": string; + "quicktools:search-settings": string; + "quicktools:search-replace": string; + "quicktools:search-replace-all": string; + "info-quicktoolssettings": string; + "info-excludefolders": string; + "missed files": string; + "remove": string; + "quicktools:command-palette": string; + "default file encoding": string; + "remove entry": string; + "delete entry": string; + "change encoding": string; + "reopen file": string; + "plugin min version": string; + "color preview": string; + "confirm": string; + "problems": string; + "show side buttons": string; + "bug_report": string; + "verified publisher": string; + "most_downloaded": string; + "newly_added": string; + "top_rated": string; + "rename not supported": string; + "compress": string; + "copy uri": string; + "copying items": string; + "cannot paste folder into itself": string; + "folder already exists": string; + "delete entries": string; + "deleting items": string; + "import project zip": string; + "changelog": string; + "notifications": string; + "no_unread_notifications": string; + "should_use_current_file_for_preview": string; + "fade fold widgets": string; + "quicktools:home-key": string; + "quicktools:end-key": string; + "quicktools:pageup-key": string; + "quicktools:pagedown-key": string; + "quicktools:delete-key": string; + "quicktools:tilde": string; + "quicktools:backtick": string; + "quicktools:hash": string; + "quicktools:dollar": string; + "quicktools:modulo": string; + "quicktools:caret": string; + "plugin_enabled": string; + "plugin_disabled": string; + "enable_plugin": string; + "disable_plugin": string; + "open_source": string; + "terminal settings": string; + "font ligatures": string; + "letter spacing": string; + "terminal:tab stop width": string; + "terminal:scrollback": string; + "terminal:show scrollbar": string; + "terminal:cursor blink": string; + "terminal:font weight": string; + "terminal:cursor inactive style": string; + "terminal:cursor style": string; + "terminal:font family": string; + "terminal:convert eol": string; + "terminal:confirm tab close": string; + "terminal:image support": string; + "terminal": string; + "running processes": string; + "terminal not installed prompt": string; + "terminal first launch prompt": string; + "don't ask again": string; + "allFileAccess": string; + "fonts": string; + "sponsor": string; + "downloads": string; + "reviews": string; + "overview": string; + "contributors": string; + "quicktools:hyphen": string; + "check for app updates": string; + "prompt update check consent message": string; + "keywords": string; + "author": string; + "filtered by": string; + "clean install state": string; + "backup created": string; + "restore completed": string; + "restore will include": string; + "restore warning": string; + "reload to apply": string; + "reload app": string; + "preparing backup": string; + "collecting settings": string; + "collecting key bindings": string; + "collecting plugins": string; + "creating backup": string; + "validating backup": string; + "restoring key bindings": string; + "restoring plugins": string; + "restoring settings": string; + "legacy backup warning": string; + "checksum mismatch": string; + "plugin not found": string; + "paid plugin skipped": string; + "source not found": string; + "restored": string; + "skipped": string; + "backup not valid object": string; + "backup no data": string; + "backup legacy warning": string; + "backup missing metadata": string; + "backup checksum mismatch": string; + "backup checksum verify failed": string; + "backup invalid settings": string; + "backup invalid keybindings": string; + "backup invalid plugins": string; + "issues found": string; + "error details": string; + "active tools": string; + "recent": string; + "command palette": string; + "change theme": string; + "documentation": string; + "open in terminal": string; + "developer mode": string; + "info-developermode": string; + "developer mode enabled": string; + "developer mode disabled": string; + "copy relative path": string; + "available tools": string; + "shortcut request sent": string; + "add to home screen": string; + "pin shortcuts not supported": string; + "save file before home shortcut": string; + "terminal_required_message_for_lsp": string; + "shift click selection": string; + "earn ad-free time": string; + "indent guides": string; + "language servers": string; + "lint gutter": string; + "rainbow brackets": string; + "lsp-add-custom-server": string; + "lsp-binary-args": string; + "lsp-binary-command": string; + "lsp-binary-path-optional": string; + "lsp-check-command-optional": string; + "lsp-checking-installation-status": string; + "lsp-configured": string; + "lsp-custom-server-added": string; + "lsp-default": string; + "lsp-details-line": string; + "lsp-edit-initialization-options": string; + "lsp-empty": string; + "lsp-enabled": string; + "lsp-error-add-server-failed": string; + "lsp-error-args-must-be-array": string; + "lsp-error-binary-command-required": string; + "lsp-error-language-id-required": string; + "lsp-error-package-required": string; + "lsp-error-server-id-required": string; + "lsp-feature-completion": string; + "lsp-feature-completion-info": string; + "lsp-feature-diagnostics": string; + "lsp-feature-diagnostics-info": string; + "lsp-feature-formatting": string; + "lsp-feature-formatting-info": string; + "lsp-feature-hover": string; + "lsp-feature-hover-info": string; + "lsp-feature-inlay-hints": string; + "lsp-feature-inlay-hints-info": string; + "lsp-feature-signature": string; + "lsp-feature-signature-info": string; + "lsp-feature-state-toast": string; + "lsp-initialization-options": string; + "lsp-initialization-options-json": string; + "lsp-initialization-options-updated": string; + "lsp-install-command": string; + "lsp-install-command-unavailable": string; + "lsp-install-info-check-failed": string; + "lsp-install-info-missing": string; + "lsp-install-info-ready": string; + "lsp-install-info-unknown": string; + "lsp-install-info-version-available": string; + "lsp-install-notification": string; + "lsp-install-method-apk": string; + "lsp-install-method-cargo": string; + "lsp-install-method-manual": string; + "lsp-install-method-npm": string; + "lsp-install-method-pip": string; + "lsp-install-method-shell": string; + "lsp-install-method-title": string; + "lsp-install-repair": string; + "lsp-installation-status": string; + "lsp-installed": string; + "lsp-invalid-timeout": string; + "lsp-language-ids": string; + "lsp-packages-prompt": string; + "lsp-remove-custom-server": string; + "lsp-remove-custom-server-confirm": string; + "lsp-remove-installed-files": string; + "lsp-custom-server-removed": string; + "lsp-server-disabled-toast": string; + "lsp-server-enabled-toast": string; + "lsp-server-id": string; + "lsp-server-label": string; + "lsp-server-not-found": string; + "lsp-server-uninstalled": string; + "lsp-startup-timeout": string; + "lsp-startup-timeout-ms": string; + "lsp-startup-timeout-set": string; + "lsp-state-disabled": string; + "lsp-state-enabled": string; + "lsp-status": string; + "lsp-status-check-failed": string; + "lsp-status-installed": string; + "lsp-status-installed-version": string; + "lsp-status-line": string; + "lsp-status-not-installed": string; + "lsp-status-unknown": string; + "lsp-timeout-ms": string; + "lsp-transport-method-stdio": string; + "lsp-transport-method-websocket": string; + "lsp-uninstall-command-unavailable": string; + "lsp-uninstall-notification": string; + "lsp-uninstall-server": string; + "lsp-update-command-optional": string; + "lsp-update-command-unavailable": string; + "lsp-update-server": string; + "lsp-version-line": string; + "lsp-websocket-url": string; + "lsp-websocket-server-managed-externally": string; + "lsp-error-websocket-url-invalid": string; + "lsp-error-websocket-url-required": string; + "lsp-view-initialization-options": string; + "settings-category-about-acode": string; + "settings-category-discover-apps": string; + "settings-category-advanced": string; + "settings-category-assistance": string; + "settings-category-core": string; + "settings-category-cursor": string; + "settings-category-cursor-selection": string; + "settings-category-custom-servers": string; + "settings-category-customization": string; + "settings-category-display": string; + "settings-category-editing": string; + "settings-category-features": string; + "settings-category-files-sessions": string; + "settings-category-fonts": string; + "settings-category-general": string; + "settings-category-guides-indicators": string; + "settings-category-installation": string; + "settings-category-interface": string; + "settings-category-maintenance": string; + "settings-category-permissions": string; + "settings-category-preview": string; + "settings-category-scrolling": string; + "settings-category-server": string; + "settings-category-servers": string; + "settings-category-session": string; + "settings-category-support-acode": string; + "settings-category-text-layout": string; + "settings-category-tools": string; + "settings-info-app-animation": string; + "settings-info-app-check-files": string; + "settings-info-app-clean-install-state": string; + "settings-info-app-confirm-on-exit": string; + "settings-info-app-console": string; + "settings-info-app-default-file-encoding": string; + "settings-info-app-exclude-folders": string; + "apply exclusions when copying": string; + "settings-info-app-use-file-operation-exclusions": string; + "settings-info-app-floating-button": string; + "settings-info-app-font-manager": string; + "settings-info-app-fullscreen": string; + "settings-info-app-keybindings": string; + "settings-info-app-keyboard-mode": string; + "settings-info-app-language": string; + "settings-info-app-open-file-list-position": string; + "settings-info-app-quick-tools-settings": string; + "settings-info-app-quick-tools-trigger-mode": string; + "settings-info-app-remember-files": string; + "settings-info-app-remember-folders": string; + "settings-info-app-retry-remote-fs": string; + "settings-info-app-side-buttons": string; + "settings-info-app-sponsor-sidebar": string; + "settings-info-app-touch-move-threshold": string; + "settings-info-app-ui-zoom": string; + "settings-info-app-vibrate-on-tap": string; + "settings-info-editor-autosave": string; + "settings-info-editor-color-preview": string; + "settings-info-editor-fade-fold-widgets": string; + "settings-info-editor-font-family": string; + "settings-info-editor-font-size": string; + "settings-info-editor-format-on-save": string; + "settings-info-editor-hard-wrap": string; + "settings-info-editor-indent-guides": string; + "settings-info-editor-line-height": string; + "settings-info-editor-line-numbers": string; + "settings-info-editor-lint-gutter": string; + "settings-info-editor-live-autocomplete": string; + "settings-info-editor-local-word-completion": string; + "settings-info-editor-language-completion": string; + "settings-info-editor-recommend-extensions": string; + "extension recommendation title": string; + "extension recommendation message": string; + "extension request title": string; + "extension request message": string; + "search plugins": string; + "request plugin": string; + "settings-info-editor-auto-close-tags": string; + "settings-info-editor-auto-rename-tags": string; + "settings-info-editor-rainbow-brackets": string; + "settings-info-editor-relative-line-numbers": string; + "settings-info-editor-rtl-text": string; + "settings-info-editor-scroll-settings": string; + "settings-info-editor-shift-click-selection": string; + "settings-info-editor-show-share-button": string; + "settings-info-editor-show-spaces": string; + "settings-info-editor-soft-tab": string; + "settings-info-editor-tab-size": string; + "settings-info-editor-teardrop-size": string; + "settings-info-editor-text-wrap": string; + "settings-info-lsp-add-custom-server": string; + "settings-info-lsp-allow-non-terminal-workspace": string; + "settings-info-lsp-edit-init-options": string; + "settings-info-lsp-install-server": string; + "settings-info-lsp-remove-custom-server": string; + "settings-info-lsp-server-enabled": string; + "settings-info-lsp-startup-timeout": string; + "settings-info-lsp-uninstall-server": string; + "settings-info-lsp-update-server": string; + "settings-info-lsp-view-init-options": string; + "settings-info-main-ad-rewards": string; + "settings-info-main-app-settings": string; + "settings-info-main-backup-restore": string; + "settings-info-main-changelog": string; + "settings-info-main-edit-settings": string; + "settings-info-main-editor-settings": string; + "settings-info-main-formatter": string; + "settings-info-main-lsp-settings": string; + "settings-info-main-plugins": string; + "settings-info-main-preview-settings": string; + "settings-info-main-rateapp": string; + "settings-info-main-remove-ads": string; + "settings-info-main-reset": string; + "settings-info-main-sponsors": string; + "settings-info-main-support": string; + "settings-info-main-terminal-settings": string; + "support-new-ticket": string; + "support-new-ticket-info": string; + "support-view-tickets": string; + "support-view-tickets-info": string; + "support-feature-request": string; + "support-feature-request-info": string; + "support-question": string; + "support-question-info": string; + "support-contact": string; + "support-contact-info": string; + "terminal-reconnecting": string; + "terminal-reconnect-failed": string; + "terminal-session-ended": string; + "settings-info-main-theme": string; + "settings-info-preview-disable-cache": string; + "settings-info-preview-host": string; + "settings-info-preview-mode": string; + "settings-info-preview-preview-port": string; + "settings-info-preview-server-port": string; + "settings-info-preview-show-console-toggler": string; + "settings-info-preview-use-current-file": string; + "settings-info-terminal-convert-eol": string; + "settings-note-formatter-settings": string; + "settings-note-lsp-settings": string; + "lsp-allow-non-terminal-workspace": string; + "search result label singular": string; + "search result label plural": string; + "pin tab": string; + "unpin tab": string; + "pinned tab": string; + "unpin tab before closing": string; + "app font": string; + "app icon": string; + "app icon changed": string; + "app icon change warning": string; + "settings-info-app-font-family": string; + "settings-info-app-icon": string; + "unsaved selected tabs warning": string; + "save selected tabs": string; + "close selected tabs": string; + "save selected tabs warning": string; + "close selected tabs warning": string; + "close tabs to right": string; + "close tabs to left": string; + "close other tabs": string; + "plugin-not-supported": string; + "plugin-not-supported-info": string; + "login-to-view": string; + "iap-plugin-purchase-warning": string; + "iap-pro-purchase-warning": string; + "confirm-login": string; + "terminal:failsafe": string; + "terminal:failsafe-info": string; + "compact": string; + "off": string; + "quick tools height": string; + "quick tools toggler": string; + "terminal:block": string; + "terminal:underline": string; + "terminal:bar": string; + "terminal:inactive block": string; + "terminal:inactive underline": string; + "terminal:inactive bar": string; + "terminal:inactive none": string; + "terminal:normal": string; + "terminal:bold": string; + "quicktools-trigger:click": string; + "quicktools-trigger:touch": string; + "settings-info-terminal-uninstall": string; + "terminal:inactive outline": string; + "restored successfully": string; + "uninstalled successfully": string; + "enter plugin source": string; + "enter keywords": string; + "enter author name": string; + "update available": string; + "update available info": string; + "plugin updates": string; + "plugin updates singular": string; + "plugin updates plural": string; + "just now": string; + "day singular": string; + "hour singular": string; + "min singular": string; + "day plural": string; + "hour plural": string; + "min plural": string; + "settings-category-builtin-servers": string; + "settings-category-plugin-servers": string; + "active processes": string; + "total memory": string; + "uptime": string; + "note": string; + "acode main process": string; + "ppid parent": string; + "unknown": string; + "just started": string; + "diff days": string; + "diff hr": string; + "diff min": string; + "diff sec": string; + "command": string; + "managed": string; + "acode service": string; + "horizontal scroll margin": string; + "settings-info-horizontal-scroll-margin": string; + "confirm app icon reward": string; + "rewarded ad unavailable": string; + "rewarded ad failed": string; + "rewarded ad incomplete": string; + "plugin-review:dialog-label": string; + "plugin-review:account-check-failed": string; + "plugin-review:sign-in": string; + "plugin-review:edit": string; + "plugin-review:add": string; + "plugin-review:placeholder": string; + "plugin-review:input-label": string; + "plugin-review:vote-group-label": string; + "plugin-review:thumbs-up": string; + "plugin-review:thumbs-down": string; + "plugin-review:delete": string; + "plugin-review:load-failed": string; + "plugin-review:retry": string; + "plugin-review:empty-title": string; + "plugin-review:empty-description": string; + "plugin-review:yours": string; + "plugin-review:community": string; + "plugin-review:no-other-reviews": string; + "plugin-review:login-incomplete": string; + "plugin-review:sign-in-failed": string; + "plugin-review:session-expired-review": string; + "plugin-review:save-failed": string; + "plugin-review:delete-confirmation": string; + "plugin-review:session-expired-continue": string; + "plugin-review:delete-failed": string; + "plugin-review:you": string; + "plugin-review:edit-action": string; + "plugin-review:recommended": string; + "plugin-review:error-max-length": string; + "plugin-review:error-downvote-comment": string; + "plugin-review:error-empty": string; + "plugin-review:unrated": string; }; declare var strings: LangStrings; diff --git a/src/lang/ir-fa.json b/src/lang/ir-fa.json index 07f6c056bc..1dbe4062a0 100644 --- a/src/lang/ir-fa.json +++ b/src/lang/ir-fa.json @@ -702,7 +702,21 @@ "settings-info-main-remove-ads": "Unlock permanent ad-free access.", "settings-info-main-reset": "Reset Acode to its default configuration.", "settings-info-main-sponsors": "Support ongoing Acode development.", + "settings-info-main-support": "Open tickets, report bugs, and contact support.", "settings-info-main-terminal-settings": "Terminal theme, font, cursor, and session behavior.", + "support-new-ticket": "Open a support ticket", + "support-new-ticket-info": "Report a bug or request a feature on GitHub.", + "support-view-tickets": "View existing tickets", + "support-view-tickets-info": "Browse open and closed issues on GitHub.", + "support-feature-request": "Request a feature", + "support-feature-request-info": "Suggest an improvement for Acode.", + "support-question": "Ask a question", + "support-question-info": "Get help from the community and maintainers.", + "support-contact": "Contact support", + "support-contact-info": "Email the team for private or account issues.", + "terminal-reconnecting": "Reconnecting terminal…", + "terminal-reconnect-failed": "Terminal connection lost. Could not reconnect.", + "terminal-session-ended": "Terminal session ended", "settings-info-main-theme": "App theme, contrast, and custom colors.", "settings-info-preview-disable-cache": "Always reload content in the in-app browser.", "settings-info-preview-host": "Hostname used when opening the preview URL.", diff --git a/src/lang/it-it.json b/src/lang/it-it.json index efe7c90e32..84e034b092 100644 --- a/src/lang/it-it.json +++ b/src/lang/it-it.json @@ -702,7 +702,21 @@ "settings-info-main-remove-ads": "Unlock permanent ad-free access.", "settings-info-main-reset": "Reset Acode to its default configuration.", "settings-info-main-sponsors": "Support ongoing Acode development.", + "settings-info-main-support": "Open tickets, report bugs, and contact support.", "settings-info-main-terminal-settings": "Terminal theme, font, cursor, and session behavior.", + "support-new-ticket": "Open a support ticket", + "support-new-ticket-info": "Report a bug or request a feature on GitHub.", + "support-view-tickets": "View existing tickets", + "support-view-tickets-info": "Browse open and closed issues on GitHub.", + "support-feature-request": "Request a feature", + "support-feature-request-info": "Suggest an improvement for Acode.", + "support-question": "Ask a question", + "support-question-info": "Get help from the community and maintainers.", + "support-contact": "Contact support", + "support-contact-info": "Email the team for private or account issues.", + "terminal-reconnecting": "Reconnecting terminal…", + "terminal-reconnect-failed": "Terminal connection lost. Could not reconnect.", + "terminal-session-ended": "Terminal session ended", "settings-info-main-theme": "App theme, contrast, and custom colors.", "settings-info-preview-disable-cache": "Always reload content in the in-app browser.", "settings-info-preview-host": "Hostname used when opening the preview URL.", diff --git a/src/lang/ja-jp.json b/src/lang/ja-jp.json index 27fd7b6033..eb74fd7a13 100644 --- a/src/lang/ja-jp.json +++ b/src/lang/ja-jp.json @@ -702,7 +702,21 @@ "settings-info-main-remove-ads": "Unlock permanent ad-free access.", "settings-info-main-reset": "Reset Acode to its default configuration.", "settings-info-main-sponsors": "Support ongoing Acode development.", + "settings-info-main-support": "Open tickets, report bugs, and contact support.", "settings-info-main-terminal-settings": "Terminal theme, font, cursor, and session behavior.", + "support-new-ticket": "Open a support ticket", + "support-new-ticket-info": "Report a bug or request a feature on GitHub.", + "support-view-tickets": "View existing tickets", + "support-view-tickets-info": "Browse open and closed issues on GitHub.", + "support-feature-request": "Request a feature", + "support-feature-request-info": "Suggest an improvement for Acode.", + "support-question": "Ask a question", + "support-question-info": "Get help from the community and maintainers.", + "support-contact": "Contact support", + "support-contact-info": "Email the team for private or account issues.", + "terminal-reconnecting": "Reconnecting terminal…", + "terminal-reconnect-failed": "Terminal connection lost. Could not reconnect.", + "terminal-session-ended": "Terminal session ended", "settings-info-main-theme": "App theme, contrast, and custom colors.", "settings-info-preview-disable-cache": "Always reload content in the in-app browser.", "settings-info-preview-host": "Hostname used when opening the preview URL.", diff --git a/src/lang/ko-kr.json b/src/lang/ko-kr.json index f331beb331..a41df928fe 100644 --- a/src/lang/ko-kr.json +++ b/src/lang/ko-kr.json @@ -702,7 +702,21 @@ "settings-info-main-remove-ads": "Unlock permanent ad-free access.", "settings-info-main-reset": "Reset Acode to its default configuration.", "settings-info-main-sponsors": "Support ongoing Acode development.", + "settings-info-main-support": "Open tickets, report bugs, and contact support.", "settings-info-main-terminal-settings": "Terminal theme, font, cursor, and session behavior.", + "support-new-ticket": "Open a support ticket", + "support-new-ticket-info": "Report a bug or request a feature on GitHub.", + "support-view-tickets": "View existing tickets", + "support-view-tickets-info": "Browse open and closed issues on GitHub.", + "support-feature-request": "Request a feature", + "support-feature-request-info": "Suggest an improvement for Acode.", + "support-question": "Ask a question", + "support-question-info": "Get help from the community and maintainers.", + "support-contact": "Contact support", + "support-contact-info": "Email the team for private or account issues.", + "terminal-reconnecting": "Reconnecting terminal…", + "terminal-reconnect-failed": "Terminal connection lost. Could not reconnect.", + "terminal-session-ended": "Terminal session ended", "settings-info-main-theme": "App theme, contrast, and custom colors.", "settings-info-preview-disable-cache": "Always reload content in the in-app browser.", "settings-info-preview-host": "Hostname used when opening the preview URL.", diff --git a/src/lang/ln-ln.json b/src/lang/ln-ln.json index 63d4e9ce7e..165e1ec2a4 100644 --- a/src/lang/ln-ln.json +++ b/src/lang/ln-ln.json @@ -697,7 +697,21 @@ "settings-info-main-remove-ads": "Fungola accès ya libela sans publicité.", "settings-info-main-reset": "Zongisa Acode na ba paramètres ya liboso.", "settings-info-main-sponsors": "Sunga bokoli ya Acode oyo ezali kokoba.", + "settings-info-main-support": "Open tickets, report bugs, and contact support.", "settings-info-main-terminal-settings": "Motó ya terminal, police, curseur mpe ndenge session esalaka.", + "support-new-ticket": "Open a support ticket", + "support-new-ticket-info": "Report a bug or request a feature on GitHub.", + "support-view-tickets": "View existing tickets", + "support-view-tickets-info": "Browse open and closed issues on GitHub.", + "support-feature-request": "Request a feature", + "support-feature-request-info": "Suggest an improvement for Acode.", + "support-question": "Ask a question", + "support-question-info": "Get help from the community and maintainers.", + "support-contact": "Contact support", + "support-contact-info": "Email the team for private or account issues.", + "terminal-reconnecting": "Reconnecting terminal…", + "terminal-reconnect-failed": "Terminal connection lost. Could not reconnect.", + "terminal-session-ended": "Terminal session ended", "settings-info-main-theme": "Motó ya application, contraste mpe ba langi oyo ebongisami.", "settings-info-preview-disable-cache": "Zongisa ntango nyonso makambo ya sika na navigateur ya kati ya application.", "settings-info-preview-host": "Nkombo ya hôte oyo esalelami ntango URL ya preview efungwami.", diff --git a/src/lang/ml-in.json b/src/lang/ml-in.json index 04db791635..26514791b0 100644 --- a/src/lang/ml-in.json +++ b/src/lang/ml-in.json @@ -702,7 +702,21 @@ "settings-info-main-remove-ads": "Unlock permanent ad-free access.", "settings-info-main-reset": "Reset Acode to its default configuration.", "settings-info-main-sponsors": "Support ongoing Acode development.", + "settings-info-main-support": "Open tickets, report bugs, and contact support.", "settings-info-main-terminal-settings": "Terminal theme, font, cursor, and session behavior.", + "support-new-ticket": "Open a support ticket", + "support-new-ticket-info": "Report a bug or request a feature on GitHub.", + "support-view-tickets": "View existing tickets", + "support-view-tickets-info": "Browse open and closed issues on GitHub.", + "support-feature-request": "Request a feature", + "support-feature-request-info": "Suggest an improvement for Acode.", + "support-question": "Ask a question", + "support-question-info": "Get help from the community and maintainers.", + "support-contact": "Contact support", + "support-contact-info": "Email the team for private or account issues.", + "terminal-reconnecting": "Reconnecting terminal…", + "terminal-reconnect-failed": "Terminal connection lost. Could not reconnect.", + "terminal-session-ended": "Terminal session ended", "settings-info-main-theme": "App theme, contrast, and custom colors.", "settings-info-preview-disable-cache": "Always reload content in the in-app browser.", "settings-info-preview-host": "Hostname used when opening the preview URL.", diff --git a/src/lang/mm-unicode.json b/src/lang/mm-unicode.json index 6411d5b9b1..79670b825f 100644 --- a/src/lang/mm-unicode.json +++ b/src/lang/mm-unicode.json @@ -702,7 +702,21 @@ "settings-info-main-remove-ads": "Unlock permanent ad-free access.", "settings-info-main-reset": "Reset Acode to its default configuration.", "settings-info-main-sponsors": "Support ongoing Acode development.", + "settings-info-main-support": "Open tickets, report bugs, and contact support.", "settings-info-main-terminal-settings": "Terminal theme, font, cursor, and session behavior.", + "support-new-ticket": "Open a support ticket", + "support-new-ticket-info": "Report a bug or request a feature on GitHub.", + "support-view-tickets": "View existing tickets", + "support-view-tickets-info": "Browse open and closed issues on GitHub.", + "support-feature-request": "Request a feature", + "support-feature-request-info": "Suggest an improvement for Acode.", + "support-question": "Ask a question", + "support-question-info": "Get help from the community and maintainers.", + "support-contact": "Contact support", + "support-contact-info": "Email the team for private or account issues.", + "terminal-reconnecting": "Reconnecting terminal…", + "terminal-reconnect-failed": "Terminal connection lost. Could not reconnect.", + "terminal-session-ended": "Terminal session ended", "settings-info-main-theme": "App theme, contrast, and custom colors.", "settings-info-preview-disable-cache": "Always reload content in the in-app browser.", "settings-info-preview-host": "Hostname used when opening the preview URL.", diff --git a/src/lang/mm-zawgyi.json b/src/lang/mm-zawgyi.json index dd8f456bf2..d72c208633 100644 --- a/src/lang/mm-zawgyi.json +++ b/src/lang/mm-zawgyi.json @@ -702,7 +702,21 @@ "settings-info-main-remove-ads": "Unlock permanent ad-free access.", "settings-info-main-reset": "Reset Acode to its default configuration.", "settings-info-main-sponsors": "Support ongoing Acode development.", + "settings-info-main-support": "Open tickets, report bugs, and contact support.", "settings-info-main-terminal-settings": "Terminal theme, font, cursor, and session behavior.", + "support-new-ticket": "Open a support ticket", + "support-new-ticket-info": "Report a bug or request a feature on GitHub.", + "support-view-tickets": "View existing tickets", + "support-view-tickets-info": "Browse open and closed issues on GitHub.", + "support-feature-request": "Request a feature", + "support-feature-request-info": "Suggest an improvement for Acode.", + "support-question": "Ask a question", + "support-question-info": "Get help from the community and maintainers.", + "support-contact": "Contact support", + "support-contact-info": "Email the team for private or account issues.", + "terminal-reconnecting": "Reconnecting terminal…", + "terminal-reconnect-failed": "Terminal connection lost. Could not reconnect.", + "terminal-session-ended": "Terminal session ended", "settings-info-main-theme": "App theme, contrast, and custom colors.", "settings-info-preview-disable-cache": "Always reload content in the in-app browser.", "settings-info-preview-host": "Hostname used when opening the preview URL.", diff --git a/src/lang/pl-pl.json b/src/lang/pl-pl.json index d5b418a9e0..424617e09b 100644 --- a/src/lang/pl-pl.json +++ b/src/lang/pl-pl.json @@ -702,7 +702,21 @@ "settings-info-main-remove-ads": "Unlock permanent ad-free access.", "settings-info-main-reset": "Reset Acode to its default configuration.", "settings-info-main-sponsors": "Support ongoing Acode development.", + "settings-info-main-support": "Open tickets, report bugs, and contact support.", "settings-info-main-terminal-settings": "Terminal theme, font, cursor, and session behavior.", + "support-new-ticket": "Open a support ticket", + "support-new-ticket-info": "Report a bug or request a feature on GitHub.", + "support-view-tickets": "View existing tickets", + "support-view-tickets-info": "Browse open and closed issues on GitHub.", + "support-feature-request": "Request a feature", + "support-feature-request-info": "Suggest an improvement for Acode.", + "support-question": "Ask a question", + "support-question-info": "Get help from the community and maintainers.", + "support-contact": "Contact support", + "support-contact-info": "Email the team for private or account issues.", + "terminal-reconnecting": "Reconnecting terminal…", + "terminal-reconnect-failed": "Terminal connection lost. Could not reconnect.", + "terminal-session-ended": "Terminal session ended", "settings-info-main-theme": "App theme, contrast, and custom colors.", "settings-info-preview-disable-cache": "Always reload content in the in-app browser.", "settings-info-preview-host": "Hostname used when opening the preview URL.", diff --git a/src/lang/pt-br.json b/src/lang/pt-br.json index aa6de4b0e2..7234064ee6 100644 --- a/src/lang/pt-br.json +++ b/src/lang/pt-br.json @@ -702,7 +702,21 @@ "settings-info-main-remove-ads": "Unlock permanent ad-free access.", "settings-info-main-reset": "Reset Acode to its default configuration.", "settings-info-main-sponsors": "Support ongoing Acode development.", + "settings-info-main-support": "Open tickets, report bugs, and contact support.", "settings-info-main-terminal-settings": "Terminal theme, font, cursor, and session behavior.", + "support-new-ticket": "Open a support ticket", + "support-new-ticket-info": "Report a bug or request a feature on GitHub.", + "support-view-tickets": "View existing tickets", + "support-view-tickets-info": "Browse open and closed issues on GitHub.", + "support-feature-request": "Request a feature", + "support-feature-request-info": "Suggest an improvement for Acode.", + "support-question": "Ask a question", + "support-question-info": "Get help from the community and maintainers.", + "support-contact": "Contact support", + "support-contact-info": "Email the team for private or account issues.", + "terminal-reconnecting": "Reconnecting terminal…", + "terminal-reconnect-failed": "Terminal connection lost. Could not reconnect.", + "terminal-session-ended": "Terminal session ended", "settings-info-main-theme": "App theme, contrast, and custom colors.", "settings-info-preview-disable-cache": "Always reload content in the in-app browser.", "settings-info-preview-host": "Hostname used when opening the preview URL.", diff --git a/src/lang/pu-in.json b/src/lang/pu-in.json index 05b389b8c7..878e9d6fd7 100644 --- a/src/lang/pu-in.json +++ b/src/lang/pu-in.json @@ -702,7 +702,21 @@ "settings-info-main-remove-ads": "Unlock permanent ad-free access.", "settings-info-main-reset": "Reset Acode to its default configuration.", "settings-info-main-sponsors": "Support ongoing Acode development.", + "settings-info-main-support": "Open tickets, report bugs, and contact support.", "settings-info-main-terminal-settings": "Terminal theme, font, cursor, and session behavior.", + "support-new-ticket": "Open a support ticket", + "support-new-ticket-info": "Report a bug or request a feature on GitHub.", + "support-view-tickets": "View existing tickets", + "support-view-tickets-info": "Browse open and closed issues on GitHub.", + "support-feature-request": "Request a feature", + "support-feature-request-info": "Suggest an improvement for Acode.", + "support-question": "Ask a question", + "support-question-info": "Get help from the community and maintainers.", + "support-contact": "Contact support", + "support-contact-info": "Email the team for private or account issues.", + "terminal-reconnecting": "Reconnecting terminal…", + "terminal-reconnect-failed": "Terminal connection lost. Could not reconnect.", + "terminal-session-ended": "Terminal session ended", "settings-info-main-theme": "App theme, contrast, and custom colors.", "settings-info-preview-disable-cache": "Always reload content in the in-app browser.", "settings-info-preview-host": "Hostname used when opening the preview URL.", diff --git a/src/lang/ru-ru.json b/src/lang/ru-ru.json index 79e83dddba..a18585259d 100644 --- a/src/lang/ru-ru.json +++ b/src/lang/ru-ru.json @@ -702,7 +702,21 @@ "settings-info-main-remove-ads": "Unlock permanent ad-free access.", "settings-info-main-reset": "Reset Acode to its default configuration.", "settings-info-main-sponsors": "Support ongoing Acode development.", + "settings-info-main-support": "Open tickets, report bugs, and contact support.", "settings-info-main-terminal-settings": "Terminal theme, font, cursor, and session behavior.", + "support-new-ticket": "Open a support ticket", + "support-new-ticket-info": "Report a bug or request a feature on GitHub.", + "support-view-tickets": "View existing tickets", + "support-view-tickets-info": "Browse open and closed issues on GitHub.", + "support-feature-request": "Request a feature", + "support-feature-request-info": "Suggest an improvement for Acode.", + "support-question": "Ask a question", + "support-question-info": "Get help from the community and maintainers.", + "support-contact": "Contact support", + "support-contact-info": "Email the team for private or account issues.", + "terminal-reconnecting": "Reconnecting terminal…", + "terminal-reconnect-failed": "Terminal connection lost. Could not reconnect.", + "terminal-session-ended": "Terminal session ended", "settings-info-main-theme": "App theme, contrast, and custom colors.", "settings-info-preview-disable-cache": "Always reload content in the in-app browser.", "settings-info-preview-host": "Hostname used when opening the preview URL.", diff --git a/src/lang/tl-ph.json b/src/lang/tl-ph.json index b5a5424fca..8733461a0f 100644 --- a/src/lang/tl-ph.json +++ b/src/lang/tl-ph.json @@ -702,7 +702,21 @@ "settings-info-main-remove-ads": "Unlock permanent ad-free access.", "settings-info-main-reset": "Reset Acode to its default configuration.", "settings-info-main-sponsors": "Support ongoing Acode development.", + "settings-info-main-support": "Open tickets, report bugs, and contact support.", "settings-info-main-terminal-settings": "Terminal theme, font, cursor, and session behavior.", + "support-new-ticket": "Open a support ticket", + "support-new-ticket-info": "Report a bug or request a feature on GitHub.", + "support-view-tickets": "View existing tickets", + "support-view-tickets-info": "Browse open and closed issues on GitHub.", + "support-feature-request": "Request a feature", + "support-feature-request-info": "Suggest an improvement for Acode.", + "support-question": "Ask a question", + "support-question-info": "Get help from the community and maintainers.", + "support-contact": "Contact support", + "support-contact-info": "Email the team for private or account issues.", + "terminal-reconnecting": "Reconnecting terminal…", + "terminal-reconnect-failed": "Terminal connection lost. Could not reconnect.", + "terminal-session-ended": "Terminal session ended", "settings-info-main-theme": "App theme, contrast, and custom colors.", "settings-info-preview-disable-cache": "Always reload content in the in-app browser.", "settings-info-preview-host": "Hostname used when opening the preview URL.", diff --git a/src/lang/tr-tr.json b/src/lang/tr-tr.json index 0d723b7ffd..cdc6b60c48 100644 --- a/src/lang/tr-tr.json +++ b/src/lang/tr-tr.json @@ -702,7 +702,21 @@ "settings-info-main-remove-ads": "Unlock permanent ad-free access.", "settings-info-main-reset": "Reset Acode to its default configuration.", "settings-info-main-sponsors": "Support ongoing Acode development.", + "settings-info-main-support": "Open tickets, report bugs, and contact support.", "settings-info-main-terminal-settings": "Terminal theme, font, cursor, and session behavior.", + "support-new-ticket": "Open a support ticket", + "support-new-ticket-info": "Report a bug or request a feature on GitHub.", + "support-view-tickets": "View existing tickets", + "support-view-tickets-info": "Browse open and closed issues on GitHub.", + "support-feature-request": "Request a feature", + "support-feature-request-info": "Suggest an improvement for Acode.", + "support-question": "Ask a question", + "support-question-info": "Get help from the community and maintainers.", + "support-contact": "Contact support", + "support-contact-info": "Email the team for private or account issues.", + "terminal-reconnecting": "Reconnecting terminal…", + "terminal-reconnect-failed": "Terminal connection lost. Could not reconnect.", + "terminal-session-ended": "Terminal session ended", "settings-info-main-theme": "App theme, contrast, and custom colors.", "settings-info-preview-disable-cache": "Always reload content in the in-app browser.", "settings-info-preview-host": "Hostname used when opening the preview URL.", diff --git a/src/lang/uk-ua.json b/src/lang/uk-ua.json index ab5da72106..4c97d6609d 100644 --- a/src/lang/uk-ua.json +++ b/src/lang/uk-ua.json @@ -702,7 +702,21 @@ "settings-info-main-remove-ads": "Unlock permanent ad-free access.", "settings-info-main-reset": "Reset Acode to its default configuration.", "settings-info-main-sponsors": "Support ongoing Acode development.", + "settings-info-main-support": "Open tickets, report bugs, and contact support.", "settings-info-main-terminal-settings": "Тема терміналу, шрифт, курсор та поведінка сеансу.", + "support-new-ticket": "Open a support ticket", + "support-new-ticket-info": "Report a bug or request a feature on GitHub.", + "support-view-tickets": "View existing tickets", + "support-view-tickets-info": "Browse open and closed issues on GitHub.", + "support-feature-request": "Request a feature", + "support-feature-request-info": "Suggest an improvement for Acode.", + "support-question": "Ask a question", + "support-question-info": "Get help from the community and maintainers.", + "support-contact": "Contact support", + "support-contact-info": "Email the team for private or account issues.", + "terminal-reconnecting": "Reconnecting terminal…", + "terminal-reconnect-failed": "Terminal connection lost. Could not reconnect.", + "terminal-session-ended": "Terminal session ended", "settings-info-main-theme": "Тема додатка, контрастність та власні кольори.", "settings-info-preview-disable-cache": "Завжди перезавантажуйте вміст у вбудованому браузері програми.", "settings-info-preview-host": "Hostname used when opening the preview URL.", diff --git a/src/lang/uz-uz.json b/src/lang/uz-uz.json index 986916b7e8..bb940e4b8d 100644 --- a/src/lang/uz-uz.json +++ b/src/lang/uz-uz.json @@ -702,7 +702,21 @@ "settings-info-main-remove-ads": "Unlock permanent ad-free access.", "settings-info-main-reset": "Reset Acode to its default configuration.", "settings-info-main-sponsors": "Support ongoing Acode development.", + "settings-info-main-support": "Open tickets, report bugs, and contact support.", "settings-info-main-terminal-settings": "Terminal theme, font, cursor, and session behavior.", + "support-new-ticket": "Open a support ticket", + "support-new-ticket-info": "Report a bug or request a feature on GitHub.", + "support-view-tickets": "View existing tickets", + "support-view-tickets-info": "Browse open and closed issues on GitHub.", + "support-feature-request": "Request a feature", + "support-feature-request-info": "Suggest an improvement for Acode.", + "support-question": "Ask a question", + "support-question-info": "Get help from the community and maintainers.", + "support-contact": "Contact support", + "support-contact-info": "Email the team for private or account issues.", + "terminal-reconnecting": "Reconnecting terminal…", + "terminal-reconnect-failed": "Terminal connection lost. Could not reconnect.", + "terminal-session-ended": "Terminal session ended", "settings-info-main-theme": "App theme, contrast, and custom colors.", "settings-info-preview-disable-cache": "Always reload content in the in-app browser.", "settings-info-preview-host": "Hostname used when opening the preview URL.", diff --git a/src/lang/vi-vn.json b/src/lang/vi-vn.json index 64441eb461..7aea928c4b 100644 --- a/src/lang/vi-vn.json +++ b/src/lang/vi-vn.json @@ -702,7 +702,21 @@ "settings-info-main-remove-ads": "Unlock permanent ad-free access.", "settings-info-main-reset": "Reset Acode to its default configuration.", "settings-info-main-sponsors": "Support ongoing Acode development.", + "settings-info-main-support": "Open tickets, report bugs, and contact support.", "settings-info-main-terminal-settings": "Terminal theme, font, cursor, and session behavior.", + "support-new-ticket": "Open a support ticket", + "support-new-ticket-info": "Report a bug or request a feature on GitHub.", + "support-view-tickets": "View existing tickets", + "support-view-tickets-info": "Browse open and closed issues on GitHub.", + "support-feature-request": "Request a feature", + "support-feature-request-info": "Suggest an improvement for Acode.", + "support-question": "Ask a question", + "support-question-info": "Get help from the community and maintainers.", + "support-contact": "Contact support", + "support-contact-info": "Email the team for private or account issues.", + "terminal-reconnecting": "Reconnecting terminal…", + "terminal-reconnect-failed": "Terminal connection lost. Could not reconnect.", + "terminal-session-ended": "Terminal session ended", "settings-info-main-theme": "App theme, contrast, and custom colors.", "settings-info-preview-disable-cache": "Always reload content in the in-app browser.", "settings-info-preview-host": "Hostname used when opening the preview URL.", diff --git a/src/lang/zh-cn.json b/src/lang/zh-cn.json index d6c1737b6d..617a0ed7ff 100644 --- a/src/lang/zh-cn.json +++ b/src/lang/zh-cn.json @@ -702,7 +702,21 @@ "settings-info-main-remove-ads": "解锁永久免广告。", "settings-info-main-reset": "将 Acode 重置为默认配置。", "settings-info-main-sponsors": "支持 Acode 的持续开发。", + "settings-info-main-support": "Open tickets, report bugs, and contact support.", "settings-info-main-terminal-settings": "终端主题、字体、光标和会话行为。", + "support-new-ticket": "Open a support ticket", + "support-new-ticket-info": "Report a bug or request a feature on GitHub.", + "support-view-tickets": "View existing tickets", + "support-view-tickets-info": "Browse open and closed issues on GitHub.", + "support-feature-request": "Request a feature", + "support-feature-request-info": "Suggest an improvement for Acode.", + "support-question": "Ask a question", + "support-question-info": "Get help from the community and maintainers.", + "support-contact": "Contact support", + "support-contact-info": "Email the team for private or account issues.", + "terminal-reconnecting": "Reconnecting terminal…", + "terminal-reconnect-failed": "Terminal connection lost. Could not reconnect.", + "terminal-session-ended": "Terminal session ended", "settings-info-main-theme": "应用主题、对比度和自定义颜色。", "settings-info-preview-disable-cache": "在预览中始终重新加载内容。", "settings-info-preview-host": "打开预览 URL 时使用的主机名。", diff --git a/src/lang/zh-hant.json b/src/lang/zh-hant.json index 6ad71367e6..2264e7da19 100644 --- a/src/lang/zh-hant.json +++ b/src/lang/zh-hant.json @@ -702,7 +702,21 @@ "settings-info-main-remove-ads": "解鎖永久免廣告。", "settings-info-main-reset": "將 Acode 重置為默認配置。", "settings-info-main-sponsors": "支持 Acode 的持續開發。", + "settings-info-main-support": "Open tickets, report bugs, and contact support.", "settings-info-main-terminal-settings": "終端主題、字體、光標和會話行為。", + "support-new-ticket": "Open a support ticket", + "support-new-ticket-info": "Report a bug or request a feature on GitHub.", + "support-view-tickets": "View existing tickets", + "support-view-tickets-info": "Browse open and closed issues on GitHub.", + "support-feature-request": "Request a feature", + "support-feature-request-info": "Suggest an improvement for Acode.", + "support-question": "Ask a question", + "support-question-info": "Get help from the community and maintainers.", + "support-contact": "Contact support", + "support-contact-info": "Email the team for private or account issues.", + "terminal-reconnecting": "Reconnecting terminal…", + "terminal-reconnect-failed": "Terminal connection lost. Could not reconnect.", + "terminal-session-ended": "Terminal session ended", "settings-info-main-theme": "應用主題、對比度和自定義顏色。", "settings-info-preview-disable-cache": "在預覽中始終重新加載內容。", "settings-info-preview-host": "打開預覽 URL 時使用的主機名。", diff --git a/src/lang/zh-tw.json b/src/lang/zh-tw.json index c814718a27..078b91ca45 100644 --- a/src/lang/zh-tw.json +++ b/src/lang/zh-tw.json @@ -702,7 +702,21 @@ "settings-info-main-remove-ads": "Unlock permanent ad-free access.", "settings-info-main-reset": "Reset Acode to its default configuration.", "settings-info-main-sponsors": "Support ongoing Acode development.", + "settings-info-main-support": "Open tickets, report bugs, and contact support.", "settings-info-main-terminal-settings": "Terminal theme, font, cursor, and session behavior.", + "support-new-ticket": "Open a support ticket", + "support-new-ticket-info": "Report a bug or request a feature on GitHub.", + "support-view-tickets": "View existing tickets", + "support-view-tickets-info": "Browse open and closed issues on GitHub.", + "support-feature-request": "Request a feature", + "support-feature-request-info": "Suggest an improvement for Acode.", + "support-question": "Ask a question", + "support-question-info": "Get help from the community and maintainers.", + "support-contact": "Contact support", + "support-contact-info": "Email the team for private or account issues.", + "terminal-reconnecting": "Reconnecting terminal…", + "terminal-reconnect-failed": "Terminal connection lost. Could not reconnect.", + "terminal-session-ended": "Terminal session ended", "settings-info-main-theme": "App theme, contrast, and custom colors.", "settings-info-preview-disable-cache": "Always reload content in the in-app browser.", "settings-info-preview-host": "Hostname used when opening the preview URL.", diff --git a/src/main.js b/src/main.js index cf91423da2..7ec2a999ff 100644 --- a/src/main.js +++ b/src/main.js @@ -996,12 +996,29 @@ function menuButtonHandler() { async function pauseHandler() { const { acode } = window; + try { + // Keep terminal/PTY processes alive while backgrounded so servers + // (and long-running commands) are not aborted by the OS. + const { TerminalManager } = await import( + /* webpackChunkName: "terminal" */ "components/terminal" + ); + TerminalManager.handleAppPause?.(); + } catch (error) { + console.warn("Terminal pause handling failed:", error); + } await window.editorManager?.flushCacheWrites?.(); acode?.exec("save-state"); } function resumeHandler() { adRewards.handleResume(); + import(/* webpackChunkName: "terminal" */ "components/terminal") + .then(({ TerminalManager }) => { + TerminalManager.handleAppResume?.(); + }) + .catch(() => { + // Terminal module may not be loaded; lifecycle is also bound in the manager. + }); if (!settings.value.checkFiles) return; checkFiles(); } diff --git a/src/settings/helpSettings.js b/src/settings/helpSettings.js index 5088e902ca..aa07ed118a 100644 --- a/src/settings/helpSettings.js +++ b/src/settings/helpSettings.js @@ -1,9 +1,103 @@ import settingsPage from "components/settingsPage"; import config from "lib/config"; +const BUG_TEMPLATE = "0_bug_report.yml"; +const FEATURE_TEMPLATE = "1_feature_request.yml"; +const DISCUSSIONS_URL = `${config.GITHUB_URL}/discussions`; +const CHOOSE_ISSUE_URL = `${config.GITHUB_URL}/issues/new/choose`; + +/** + * Build a GitHub issue URL that opens a repository issue-form template. + * Blank issues are disabled on this repo, so links must select a template. + * @param {string} template - Issue template file name under .github/ISSUE_TEMPLATE + * @param {Record} [fields] - Prefilled form fields (by id/title) + * @returns {string} + */ +export function buildTicketUrl(template, fields = {}) { + const params = new URLSearchParams({ template }); + for (const [key, value] of Object.entries(fields)) { + if (value) params.set(key, value); + } + return `${config.GITHUB_URL}/issues/new?${params.toString()}`; +} + +/** + * Device/app details appended to support tickets so maintainers can debug faster. + * @param {string} eol + * @returns {string} + */ +export function getTicketEnvironment(eol = "\n") { + const buildInfo = window.BuildInfo || {}; + const device = window.device || {}; + return [ + `Version: ${buildInfo.version || "?"} (${buildInfo.versionCode || "?"})`, + `Device: ${device.model || "unknown"}`, + `Manufacturer: ${device.manufacturer || "unknown"}`, + `Android: ${device.version || "unknown"}`, + ].join(eol); +} + export default function help() { - const title = strings.help; + const title = strings.support || "Support"; const items = [ + { + key: "new_ticket", + text: strings["support-new-ticket"] || "Open a support ticket", + info: + strings["support-new-ticket-info"] || + "Report a bug or request a feature on GitHub.", + link: CHOOSE_ISSUE_URL, + chevron: true, + }, + { + key: "bug_report", + text: strings.bug_report, + info: + strings["support-new-ticket-info"] || + "Report a bug or request a feature on GitHub.", + link: buildTicketUrl(BUG_TEMPLATE, { + environment: getTicketEnvironment("\n"), + }), + chevron: true, + }, + { + key: "feature_request", + text: strings["support-feature-request"] || "Request a feature", + info: + strings["support-feature-request-info"] || + "Suggest an improvement for Acode.", + link: buildTicketUrl(FEATURE_TEMPLATE), + chevron: true, + }, + { + key: "view_tickets", + text: strings["support-view-tickets"] || "View existing tickets", + info: + strings["support-view-tickets-info"] || + "Browse open and closed issues on GitHub.", + link: `${config.GITHUB_URL}/issues`, + chevron: true, + }, + { + key: "question", + text: strings["support-question"] || "Ask a question", + info: + strings["support-question-info"] || + "Get help from the community and maintainers.", + link: DISCUSSIONS_URL, + chevron: true, + }, + { + key: "contact_support", + text: strings["support-contact"] || "Contact support", + info: + strings["support-contact-info"] || + "Email the team for private or account issues.", + link: `mailto:${config.FEEDBACK_EMAIL}?subject=${encodeURIComponent( + "support - Acode editor", + )}&body=${encodeURIComponent(getTicketEnvironment("\n"))}`, + chevron: true, + }, { key: "docs", text: strings.documentation, @@ -22,17 +116,11 @@ export default function help() { link: `${config.BASE_URL}/faqs`, chevron: true, }, - { - key: "bug_report", - text: strings.bug_report, - link: `${config.GITHUB_URL}/issues`, - chevron: true, - }, ]; const page = settingsPage(title, items, () => {}, "separate", { preserveOrder: true, - pageClassName: "detail-settings-page", + pageClassName: "detail-settings-page support-settings-page", listClassName: "detail-settings-list", groupByDefault: true, }); diff --git a/src/settings/mainSettings.js b/src/settings/mainSettings.js index f65f4c8132..d5ca91ad2e 100644 --- a/src/settings/mainSettings.js +++ b/src/settings/mainSettings.js @@ -143,6 +143,16 @@ export default function mainSettings() { category: categories.maintenance, chevron: true, }, + { + key: "support", + text: strings.support || "Support", + icon: "help", + info: + strings["settings-info-main-support"] || + "Open tickets, report bugs, and contact support.", + category: categories.aboutAcode, + chevron: true, + }, { key: "about", text: strings.about, @@ -253,6 +263,14 @@ export default function mainSettings() { case "appIcon": return appIconSetting(); + case "support": + ( + await import( + /* webpackChunkName: "helpSettings" */ "settings/helpSettings" + ) + ).default(); + break; + case "about": About(); break;