From a36fa356ae6d065877e3ef5e60e506285577d853 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Padez?= Date: Sun, 23 Aug 2026 15:48:45 +0000 Subject: [PATCH] the panel names the earlier migration missed (181 -> 171) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Terminal's metas are in index.tsx and the migration globbed index.ts, so its three translatable names were never keyed. Found by diffing the remainder against FileBrowser rather than by reading the glob. The product names — Tmux, Neovim, Claude Code, Minesweeper, SendOff, and the three system-monitor scopes, which name bTop, pm2 and docker themselves — carry i18n-exempt markers now. They were correct as plain strings but the scanner counted them, so the area could not have reached zero either way. Everything outside FileBrowser is now thrown Errors only. --- .../officerdev/src/apps/Minesweeper/index.ts | 1 + src/workspaces/officerdev/src/apps/SendOff/index.ts | 1 + .../officerdev/src/apps/SystemMonitor/shared.ts | 4 ++++ src/workspaces/officerdev/src/apps/Terminal/index.tsx | 10 +++++++--- src/workspaces/officerdev/src/locales/en-GB.json | 3 ++- src/workspaces/officerdev/src/locales/pt-PT.json | 3 ++- 6 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/workspaces/officerdev/src/apps/Minesweeper/index.ts b/src/workspaces/officerdev/src/apps/Minesweeper/index.ts index 467f104f..92c92559 100644 --- a/src/workspaces/officerdev/src/apps/Minesweeper/index.ts +++ b/src/workspaces/officerdev/src/apps/Minesweeper/index.ts @@ -9,5 +9,6 @@ export { RfbClient } from './rfb'; // rather than a vendored noVNC, because we control the server and need two encodings out of ten. export const appRegistryMetas: AppRegistryMeta[] = [ + // i18n-exempt: product name { key: 'minesweeper', name: 'Minesweeper', icon: Bomb, component: MinesweeperPanel }, ]; diff --git a/src/workspaces/officerdev/src/apps/SendOff/index.ts b/src/workspaces/officerdev/src/apps/SendOff/index.ts index f30b418a..cc2de29b 100644 --- a/src/workspaces/officerdev/src/apps/SendOff/index.ts +++ b/src/workspaces/officerdev/src/apps/SendOff/index.ts @@ -6,5 +6,6 @@ export { SendOffPanel } from './SendOffPanel'; export { useSendOff, useSendOffSenders, useSendOffTargets } from './useSendOff'; export const appRegistryMetas: AppRegistryMeta[] = [ + // i18n-exempt: product name { key: 'sendoff', name: 'SendOff', icon: Send, component: SendOffPanel }, ]; diff --git a/src/workspaces/officerdev/src/apps/SystemMonitor/shared.ts b/src/workspaces/officerdev/src/apps/SystemMonitor/shared.ts index 943984e5..570f648c 100644 --- a/src/workspaces/officerdev/src/apps/SystemMonitor/shared.ts +++ b/src/workspaces/officerdev/src/apps/SystemMonitor/shared.ts @@ -6,9 +6,13 @@ import { useParams } from 'react-router'; // on whatever you last clicked in some other tab. export type MonitorScope = 'btop' | 'pm2' | 'docker'; +// Each label names the tool the scope shows, so all three are product names and stay as they are. export const SCOPES: { id: MonitorScope; label: string }[] = [ + // i18n-exempt: product names — bTop, pm2 and docker are the tools themselves { id: 'btop', label: 'bTop' }, + // i18n-exempt: product names — bTop, pm2 and docker are the tools themselves { id: 'pm2', label: 'pm2 processes' }, + // i18n-exempt: product names — bTop, pm2 and docker are the tools themselves { id: 'docker', label: 'dockers' }, ]; diff --git a/src/workspaces/officerdev/src/apps/Terminal/index.tsx b/src/workspaces/officerdev/src/apps/Terminal/index.tsx index 2457bbb6..1b45f02f 100644 --- a/src/workspaces/officerdev/src/apps/Terminal/index.tsx +++ b/src/workspaces/officerdev/src/apps/Terminal/index.tsx @@ -5,6 +5,7 @@ import { HostTerminalWrapper } from './HostTerminalWrapper'; import { CommandTerminalWrapper } from './CommandTerminalWrapper'; import { TerminalHeader, HostTerminalHeader, TmuxHeader, NvimHeader, ClaudeCodeHeader } from './Headers'; import { RunningShells } from './RunningShells'; +import { panelName } from '../../locales'; export { TerminalView, type TerminalViewProps, type TerminalConnectionState } from './Terminal'; @@ -40,7 +41,7 @@ const ClaudeCodeWrapper = ({ panelId }: { panelId: string }) => ( export const appRegistryMetas: AppRegistryMeta[] = [ { key: 'officerdev/terminal', - name: 'Terminal', + name: panelName('panelName.terminal'), icon: TerminalSquare, component: TerminalWrapper, header: TerminalHeader, @@ -48,7 +49,7 @@ export const appRegistryMetas: AppRegistryMeta[] = [ }, { key: 'officerdev/terminal-host', - name: 'Host Terminal', + name: panelName('panelName.hostTerminal'), icon: Monitor, component: HostTerminalWrapper, header: HostTerminalHeader, @@ -57,6 +58,7 @@ export const appRegistryMetas: AppRegistryMeta[] = [ }, { key: 'officerdev/tmux', + // i18n-exempt: product name name: 'Tmux', icon: Columns2, component: TmuxWrapper, @@ -65,6 +67,7 @@ export const appRegistryMetas: AppRegistryMeta[] = [ }, { key: 'officerdev/nvim', + // i18n-exempt: product name name: 'Neovim', icon: PenLine, component: NvimWrapper, @@ -73,12 +76,13 @@ export const appRegistryMetas: AppRegistryMeta[] = [ }, { key: 'officerdev/running-shells', - name: 'Running Shells', + name: panelName('panelName.runningShells'), icon: ListTree, component: RunningShells, }, { key: 'officerdev/claude-code', + // i18n-exempt: product name name: 'Claude Code', icon: Sparkles, component: ClaudeCodeWrapper, diff --git a/src/workspaces/officerdev/src/locales/en-GB.json b/src/workspaces/officerdev/src/locales/en-GB.json index 7e710025..cc07201b 100644 --- a/src/workspaces/officerdev/src/locales/en-GB.json +++ b/src/workspaces/officerdev/src/locales/en-GB.json @@ -72,7 +72,8 @@ "name": "Name", "status": "Status", "mem": "Mem", - "uptime": "Uptime" + "uptime": "Uptime", + "scopeDockers": "dockers" }, "codeEditor": { "closeFile": "Close {{name}}", diff --git a/src/workspaces/officerdev/src/locales/pt-PT.json b/src/workspaces/officerdev/src/locales/pt-PT.json index 39c521de..65221e51 100644 --- a/src/workspaces/officerdev/src/locales/pt-PT.json +++ b/src/workspaces/officerdev/src/locales/pt-PT.json @@ -72,7 +72,8 @@ "name": "Nome", "status": "Estado", "mem": "Mem", - "uptime": "Tempo ativo" + "uptime": "Tempo ativo", + "scopeDockers": "dockers" }, "codeEditor": { "closeFile": "Fechar {{name}}",