返回 DeepSeek-Reasonix
en.ts
1 // English UI strings — the canonical dictionary. Keys are dotted by area; values
2 // may contain {placeholders} filled at call time (see lib/i18n.tsx). zh.ts must
3 // mirror this key set exactly (its `Record<DictKey, string>` annotation enforces
4 // it at compile time), so adding a key here makes the build fail until zh has it.
5
6 export const en = {
7 "chat.syncing": "Synchronizing conversation…",
8 "chat.turnCounts": "{samples} samples · {tools} tools",
9 "chat.disconnected": "Connection interrupted. Task status is awaiting synchronization.",
10 "chat.turnNavigation.label": "Conversation turns",
11 "chat.turnNavigation.jump": "Jump to turn {turn}",
12 "chat.turnNavigation.retry": "Reload conversation turns",
13 "chat.turnNavigation.retryJump": "Try that jump again",
14 "chat.turnNavigation.cancel": "Stop loading",
15 "chat.turnNavigation.truncated": "Only part of the conversation is indexed",
16 "chat.turnNavigation.reasonExpired": "The transcript snapshot changed while loading",
17 "chat.turnNavigation.reasonBudget": "That turn is too far back to load in one go",
18 "chat.turnNavigation.reasonUnavailable": "That turn has no content to scroll to",
19 "chat.turnNavigation.unavailable": "That turn has no content to scroll to.",
20 "chat.process": "View process",
21 "chat.expandLines": "Show {count} more lines",
22 "chat.files": "{count} files",
23 "chat.done": "Done",
24 "chat.noOutput": "No output",
25 "chat.process.tools": "{count} tool calls",
26 "chat.process.messages": "{count} messages",
27 "chat.process.subagents": "{count} subagents",
28 "chat.process.failures": "{count} failed calls",
29 "chat.activity": "Activity",
30 "chat.decision": "Permission recorded",
31 "chat.record": "Record",
32 "chat.notice": "System notice",
33 "chat.stopped": "Stopped",
34 "chat.timedOut": "Timed out",
35 "chat.notRun": "Not executed",
36 "chat.background": "Running in background",
37 "chat.unknown": "Result unavailable",
38 "chat.submissionUnknown": "Delivery not yet confirmed; reconnecting to check. Do not resend yet",
39 "chat.failed": "Failed",
40 "chat.tool.search": "Web search",
41 "chat.tool.web": "Web fetch",
42 "chat.tool.input": "IN",
43 "chat.tool.output": "OUT",
44 "chat.tool.preview": "Preview only. Open details to load or copy the full result.",
45 "chat.parseFailed": "Formatting failed. Original text is shown below.",
46 "chat.details": "Details",
47 "chat.details.result": "Result",
48 "chat.details.parameters": "Parameters",
49 "chat.details.children": "Subcalls",
50 "chat.details.raw": "Raw record",
51 "chat.details.parent": "Parent call",
52 "chat.compaction": "Context compacted",
53 "chat.reasoning": "Thinking",
54 "chat.loadFailed": "Loading failed. Retry",
55 "chat.fileActionFailed": "Could not open the file: {error}",
56 "chat.svgPreview": "Preview",
57 "chat.svgSource": "Source",
58 "chat.svgCopy": "Copy SVG",
59 "chat.svgPreviewBlocked": "Showing source: this SVG is too large or malformed to preview",
60 "chat.loading": "Loading…",
61 "chat.loadFull": "Load full content",
62 "chat.copyFull": "Copy full content",
63 "chat.branch": "Branch into a new conversation",
64 "chat.branchLoading": "Checking which turns can start a branch…",
65 "chat.branchTurnOpen": "This turn has not finished yet, so it has no boundary to branch from.",
66 "chat.branchUnverifiable": "This turn has no verifiable branch boundary in the session's records.",
67 "chat.branchActiveAuthority": "This turn ended while a question or approval, or a tool action, was still open, so it cannot start a branch.",
68 "chat.branchStaleSource": "The session changed after this branch point was shown. Refresh and try again.",
69 "chat.branchReadOnly": "This session does not allow creating a child conversation.",
70 "chat.branchUnsupported": "This server's version cannot create a branch without switching the current session.",
71 "chat.branchCreating": "Creating the branch…",
72 "chat.branchFailed": "Branching failed.",
73 "chat.branchFailedDetail": "Branching failed. {detail}",
74 "chat.branchRecoverChild": "The branched session {session} was created, but its tab could not open. Open it from session history.",
75 "chat.turnUsage": "Usage {total}",
76 "chat.turnUsageTitle": "Turn usage",
77 "chat.turnUsageModel": "Provider / model",
78 "chat.turnUsageCacheHit": "Cache hit",
79 "chat.turnUsageInput": "Uncached input",
80 "chat.turnUsageCacheRead": "Cache read",
81 "chat.turnUsageOutput": "Output",
82 "chat.turnUsageReasoning": "(reasoning {tokens})",
83 "chat.turnTime": "Ran for {duration}",
84 "chat.turnTimeTitle": "Turn time and speed",
85 "chat.turnTimeDuration": "Total run time",
86 "chat.turnTimeSpeed": "Tokens per second (TPS)",
87 "chat.tokensPerSecond": "{tps} tok/s",
88 "chat.running": "Working…",
89 "chat.turns": "Conversation turns",
90 "chat.toLatest": "Return to latest",
91 "chat.loadOlder": "Load earlier messages",
92 "chat.loadNewer": "Load newer messages",
93 "chat.loadMoreTools": "Load {count} more calls",
94 "chat.loadMoreBlocks": "Load {count} more blocks",
95 "chat.historyRange": "Turns {start}–{end} of {total}",
96 "chat.historySelectionBlocked": "Finish or clear the current text selection before changing the history window.",
97 "chat.expandCode": "Show all code",
98 "chat.collapseCode": "Collapse code",
99 "present.files": "Presented files",
100 "present.modifiedFiles": "Files changed this turn",
101 "present.written": "Written",
102 "present.modified": "Modified",
103 "present.toolTitle": "Present files",
104 "present.presenting": "Presenting {count} files",
105 "present.presented": "Presented {count} files",
106 "present.failed": "Could not present files",
107 "present.open": "Open",
108 "present.more": "More file actions",
109 "present.showAll": "Show all {count}",
110 "present.collapse": "Collapse",
111 "present.browser": "Open in built-in browser",
112 "present.revealTree": "Reveal in file tree",
113 "present.source": "View source",
114 "present.copyPath": "Copy path",
115 "present.copyFailed": "Could not copy the path",
116 "present.openNative": "Open in system app",
117 "present.revealNative": "Show in file manager",
118 "present.saveCopy": "Save a copy",
119 "remote.legacyTranscriptSync": "This older remote version has limited sync. Reconnecting may leave missing or repeated content.",
120 "notice.historicalChecks": "Historical checks remain unfinished. The old quality policy is retired and does not block this task. Use /continue-checks to check again.",
121 "completion.historicalAssessment": "Historical quality assessment",
122 "completion.modelDeclarations": "Model verification declarations",
123 "notice.goalModelComplete": "Model reported the goal complete. Execution results are recorded separately.",
124 "remote.legacyExecutionPolicy": "This remote still applies an older execution or acceptance policy. Upgrade the service to remove it; its actual state and recovery actions remain available.",
125 "remote.legacyDeliveryPolicy": "This remote service still applies the retired Delivery policy. Upgrade the service to remove it; its current checks and recovery state remain available.",
126 "toolRecovery.title": "Interrupted tool needs review",
127 "toolRecovery.unknown": "Outcome not confirmed",
128 "toolRecovery.retired": "Historical record from the retired recovery mechanism. It does not block new tools; check external state before repeating an operation with side effects.",
129 "toolRecovery.historicalTitle": "Historical recovery record",
130 "toolRecovery.details": "View action details",
131 "toolRecovery.inspect": "Inspect current state",
132 "toolRecovery.confirm": "I verified the effect happened",
133 "toolRecovery.reject": "Do not retry",
134 "toolRecovery.retry": "Retry safely",
135 "toolRecovery.resume": "Continue task",
136 "toolRecovery.resumePrompt": "Continue the interrupted task, preserving completed work and checking uncertain effects before any further writes.",
137 "toolRecovery.present": "The current effect or file postcondition is present. This does not establish the original execution result.",
138 "toolRecovery.absent": "The tool verified the effect is absent and the previous attempt cannot commit.",
139 "toolRecovery.unproven": "Automatic inspection cannot establish the outcome. Check the affected workspace or external service before confirming.",
140 "toolRecovery.rejected": "Retry declined. The uncertain effect remains recorded and continues to block further writes.",
141 // shared verbs / chrome
142 "common.close": "Close",
143 "settings.providerProtocolMismatch": "The endpoint does not match the selected API format.",
144 "settings.imageInputLabel": "Image input",
145 "settings.imageInputModeAria": "Image input mode for {model}",
146 "settings.imageInputAuto": "Auto",
147 "settings.imageInputOn": "On",
148 "settings.imageInputOff": "Off",
149 "settings.imageInputManualOn": "Manually enabled",
150 "settings.imageInputManualOff": "Manually disabled",
151 "settings.imageInputLegacy": "Auto · using existing configuration",
152 "settings.imageInputSupported": "Image supported",
153 "settings.imageInputProtocolBadge": "Protocol limit",
154 "settings.imageInputProtocolBlocked": "This official endpoint does not accept images for this model.",
155 "settings.imageInputUnknownHint": "This connection did not provide image capability information. Choose On if your provider confirms image support.",
156 "common.moreActions": "More actions",
157 "common.cancel": "Cancel",
158 "common.confirm": "Confirm",
159 "common.save": "Save",
160 "common.edit": "Edit",
161 "common.delete": "Delete",
162 "common.add": "Add",
163 "common.submit": "Submit",
164 "common.copy": "Copy",
165 "selection.actions": "Selected text actions",
166 "selection.addToChat": "Add to Chat",
167 "common.cut": "Cut",
168 "common.paste": "Paste",
169 "common.selectAll": "Select all",
170 "common.retry": "Retry",
171 "common.expand": "Expand",
172 "common.collapse": "Collapse",
173 "common.none": "none",
174 "common.auto": "auto",
175 "common.loading": "Loading…",
176 "composer.readOnlyChannel": "Channel conversation is read-only",
177 "composer.workspaceStarting": "Workspace is still starting",
178 "app.splashSubtitle": "Agent Workspace",
179
180 // top bar
181 "topbar.settings": "Settings",
182 "topbar.newSession": "New session",
183 "topbar.startupError": "startup error: {msg}",
184
185 // app chrome
186 "tabBar.closeTab": "Close tab",
187 "tabBar.closeOtherTabs": "Close other tabs",
188 "tabBar.closeTabsToRight": "Close tabs to right",
189 "tabBar.newSession": "New session",
190 "tabBar.tabActions": "Tab actions",
191 "tabBar.commandSearch": "Search · Command · Open file",
192 "tabBar.commandSearchCompact": "Search",
193
194 // sidebar
195 "sidebar.trash": "Trash",
196 "sidebar.automation": "Automation",
197 "sidebar.navigation": "Reasonix navigation",
198 "sidebar.utilityActions": "Sidebar tools",
199 "summary.session": "Session summary",
200 "summary.tasks": "Tasks",
201 "summary.refresh": "Refresh",
202 "summary.close": "Close session summary",
203 "summary.noTasks": "No background tasks in this workspace",
204 "summary.taskLabel": "Task {id} — {state}",
205 "summary.taskId": "Task ID",
206 "summary.sessionId": "Session",
207 "summary.state": "State",
208 "summary.runtime": "Runtime",
209 "summary.updated": "Updated",
210 "summary.errorCode": "Error code",
211 "summary.detail": "Summary",
212 "summary.recentEvents": "Recent events",
213 "summary.loadingEvents": "Loading events…",
214 "summary.noEvents": "No events yet",
215 "summary.stop": "Stop",
216 "summary.requeue": "Requeue",
217 "summary.openSession": "Open session",
218 "summary.confirmStop": "Stop this task?",
219 "summary.keep": "Keep running",
220 "task.error": "Error",
221 "task.event.error": "Error: {code}",
222 "task.event.stateChange": "State → {state} · Runtime → {runtime}",
223 "task.runtime.live": "Live",
224 "task.runtime.exited": "Exited",
225 "task.runtime.unknown": "Runtime unknown",
226 "task.state.queued": "Queued",
227 "task.state.running": "Running",
228 "task.state.waiting": "Waiting",
229 "task.state.succeeded": "Succeeded",
230 "task.state.failed": "Failed",
231 "task.state.cancelled": "Cancelled",
232 "task.state.stale": "Stale",
233 "sidebar.collapse": "Collapse navigation",
234 "sidebar.expand": "Expand navigation",
235 "sidebar.resize": "Resize navigation",
236 "sidebar.im": "Bots",
237 "remoteSurface.connecting": "Connecting to the remote session…",
238 "remoteSurface.reconnect": "Reconnect",
239 "sessionRecovery.connectionLost": "Connection interrupted",
240 "sessionRecovery.connectionHint": "This session is unavailable. You can still edit your draft.",
241 "sessionRecovery.historyFailed": "Unable to load this session",
242 "sessionRecovery.historyHint": "History could not be loaded. Retry to continue.",
243 "sessionRecovery.loadingHistory": "Loading session history…",
244 "sessionRecovery.retryHistory": "Retry loading",
245 "sessionRecovery.retryFailed": "Recovery failed. Check the details and try again.",
246 "sessionRecovery.details": "Details",
247 "sessionRecovery.sendAfterRecovery": "Send after recovery",
248 "sessionRecovery.contentAfterRecovery": "Session content will appear after recovery",
249 "takeover.bannerButton": "Take over session",
250 "takeover.title": "Take over this session",
251 "takeover.descRemote": "Held by the remote connection to this machine. Taking over makes this window the speaker; the remote side keeps watching read-only.",
252 "takeover.running": "A turn is still running on the remote side.",
253 "takeover.idle": "The remote side is idle.",
254 "takeover.takeWait": "Take over (wait for the running turn)",
255 "takeover.takeIdle": "Take over",
256 "takeover.takeInterrupt": "Take over (cancel the running turn)",
257 "takeover.cancel": "Cancel",
258 "takeover.busy": "Taking over…",
259 "takeover.querying": "Checking who holds this session…",
260 "takeover.noHolder": "no resident serve on this machine holds it",
261 "takeover.unavailable": "Takeover unavailable: {reason}",
262 "takeover.remoteBanner": "This session was taken over by a local Reasonix window on the remote machine; it is read-only here.",
263 "takeover.reclaimTitle": "Take the session back",
264 "takeover.reclaimConfirm": "The remote machine's local window owns this session now; taking it back makes that side read-only.",
265 "takeover.reclaimConfirmButton": "Confirm take back",
266 "takeover.reclaim": "Take back",
267 "takeover.reclaiming": "Taking back…",
268
269 "remoteWizard.title": "Remote connection",
270 "remoteWizard.stepConfig": "Connection",
271 "remoteWizard.stepConnecting": "Connecting",
272 "remoteWizard.stepWorkspace": "Choose remote directory",
273 "remoteWizard.mergedProject": "This directory overlaps an existing project group; merged into {path} and opened a new session there",
274 "remoteWizard.authMethod": "Authentication",
275 "remoteWizard.authPassword": "Password",
276 "remoteWizard.authKey": "Key file",
277 "remoteWizard.downloadMethod": "CLI download method",
278 "remoteWizard.downloadRemote": "Download on remote",
279 "remoteWizard.downloadUpload": "Download locally & upload",
280 "remoteWizard.suggestions": "Saved SSH connections",
281 "remoteWizard.required": "{fields} cannot be empty",
282 "remoteWizard.requiredJoin": "/",
283 "remoteWizard.identityFileShort": "key file",
284 "remoteWizard.userShort": "username",
285 "remoteWizard.hostPlaceholder": "Host or IP, e.g. 192.168.1.100",
286 "remoteWizard.userPlaceholder": "Username, e.g. root",
287 "remoteWizard.passwordPlaceholder": "Login password",
288 "remoteWizard.identityPlaceholder": "Identity file path, e.g. ~/.ssh/id_ed25519",
289 "remoteWizard.passphrasePlaceholder": "Key passphrase (optional)",
290 "remoteWizard.pickIdentityFile": "Choose identity file",
291 "remoteWizard.next": "Next",
292 "remoteWizard.backToEdit": "Back to edit",
293 "remoteWizard.retry": "Retry",
294 "remoteWizard.path": "Remote path",
295 "remoteWizard.workspaceIntro": "Once connected, choose the directory to open in this window.",
296 "remoteWizard.workspaceReady": "Connection ready — pick the directory to open.",
297 "remoteWizard.browseFolder": "Browse folders",
298 "remoteWizard.go": "Go",
299 "remoteWizard.toggleHidden": "Show hidden",
300 "remoteWizard.toggleHiddenOn": "Hide hidden",
301 "remoteWizard.emptyDir": "Empty directory",
302 "remoteWizard.finish": "Connect and open",
303 "remoteWizard.logConnecting": "Connecting to {target}…",
304 "remoteWizard.logDetecting": "Detecting remote environment…",
305 "remoteWizard.logConnected": "SSH connection established",
306 "remoteWizard.logPrepare": "Preparing remote session environment…",
307 "remoteWizard.logFailed": "Connection failed: {error}",
308 "remoteWizard.connecting": "Connecting remote server…",
309 "remoteWizard.back": "Back",
310 "creation.reasoningLabel": "Deep thinking",
311 "creation.toolCallsLabel": "Tool calls",
312 "creation.toolGroup.explore": "Explored",
313 "creation.toolGroup.modify": "Modified",
314 "creation.toolGroup.delegate": "Delegated",
315 "creation.toolGroup.shell": "Shell",
316 "creation.toolStat.read": "{n} reads",
317 "creation.toolStat.search": "{n} searches",
318 "creation.toolStat.write": "{n} writes",
319 "creation.toolStat.edit": "{n} edits",
320 "creation.toolStat.move": "{n} moves",
321 "creation.toolStat.delete": "{n} deletes",
322 "creation.toolStat.task": "{n} tasks",
323 "creation.toolStat.command": "{n} commands",
324 "creation.toolStat.check": "{n} checks",
325 "creation.toolStat.stop": "{n} stops",
326 "creation.toolStat.other": "{n} others",
327 "sidebar.imConnected": "Connected",
328 "sidebar.imDisconnected": "Disconnected",
329 "sidebar.imDisabled": "Disabled",
330 "sidebar.imPending": "Connecting",
331 "sidebar.imError": "Error",
332 "sidebar.imWaiting": "{name} has not received an IM conversation yet",
333 "sidebar.imOpenFailed": "Could not open {name}'s local conversation",
334 "botDetail.title": "{name}",
335 "botDetail.subtitle": "IM connection details",
336 "botDetail.summary": "Connection summary",
337 "botDetail.close": "Close details",
338 "botDetail.manage": "Manage settings",
339 "botDetail.openSession": "Open linked session",
340 "botDetail.openDisabled": "Waiting for the first channel conversation",
341 "botDetail.remoteId": "Remote ID",
342 "botDetail.localTopic": "Local topic",
343 "botDetail.readOnlyChannel": "Read-only channel",
344 "botDetail.scope": "Scope",
345 "botDetail.access": "Access",
346 "botDetail.accessMode": "Mode",
347 "botDetail.accessCurrentUser": "Current sender ID",
348 "botDetail.accessStatus": "Match status",
349 "botDetail.accessAllowAll": "Everyone allowed",
350 "botDetail.accessWhitelist": "Allowlist only",
351 "botDetail.accessDisabled": "Allowlist disabled",
352 "botDetail.accessOpen": "Open access",
353 "botDetail.accessMatched": "In allowlist",
354 "botDetail.accessMissing": "Not in allowlist",
355 "botDetail.accessUnknown": "Waiting for sender ID",
356 "botDetail.channelAllowlistUsers": "Current channel allowlist users",
357 "botDetail.emptyAllowlistUsers": "No user IDs yet",
358 "botDetail.copyRemoteId": "Copy ID",
359 "botDetail.manageAllowlist": "Manage allowlist",
360 "botDetail.scopeGlobal": "Global",
361 "botDetail.scopeProject": "Project · {name}",
362 "botDetail.noSession": "Waiting for first message",
363 "drawer.resize": "Resize drawer",
364
365 // right dock
366 "rightDock.resize": "Resize workspace panel",
367 "rightDock.expand": "Expand workspace",
368 "rightDock.collapse": "Collapse workspace",
369 "rightDock.workbench": "Workspace panel",
370 "rightDock.views": "Workspace views",
371 "rightDock.overview": "Overview",
372 "rightDock.browser": "Browser",
373 "rightDock.remote": "Remote",
374 "rightDock.terminal": "Terminal",
375 "rightDock.launcher": "Open workspace panel",
376 "rightDock.launcherTitle": "Workspace",
377 "rightDock.showLauncher": "Show workspace menu",
378 "rightDock.hideLauncher": "Hide workspace menu",
379 "rightDock.addTab": "Add tab",
380 "rightDock.closeTab": "Close tab",
381 "rightDock.fileTabMenu": "File tab menu",
382 "rightDock.openTab": "Open tab",
383 "rightDock.openTabHint": "Choose a tab to open in the workspace panel.",
384 "rightDock.tabOverview": "Search tabs",
385 "rightDock.searchTabs": "Search tabs...",
386 "rightDock.openTabs": "Open tabs",
387 "rightDock.recentlyClosedTabs": "Recently closed tabs",
388 "rightDock.noTabsFound": "No tabs found.",
389 "rightDock.closeCurrentTab": "Close tab",
390 "rightDock.closeOtherTabs": "Close other tabs",
391 "rightDock.closeAllTabs": "Close all tabs",
392 "rightDock.openedRelativeTime": "Opened {time}",
393 "rightDock.closedRelativeTime": "Closed {time}",
394 "rightDock.time.justNow": "just now",
395 "rightDock.time.minutesAgo": "{count}m ago",
396 "rightDock.time.hoursAgo": "{count}h ago",
397 "rightDock.time.daysAgo": "{count}d ago",
398 "rightDock.switchBranch": "Switch branch",
399 "rightDock.branchMenuLoading": "Loading branches…",
400 "rightDock.branchSearchPlaceholder": "Search branches",
401 "rightDock.branchSection": "Branches",
402 "rightDock.partialStats": "Estimated changes (count incomplete)",
403 "rightDock.branchNoMatch": "No matching branches",
404 "rightDock.branchCreate": "Create and check out new branch…",
405 "composer.workspace.context": "Current work context",
406 "composer.workspace.switchProject": "Switch project",
407 "composer.workspace.search": "Search workspaces",
408 "composer.workspace.openFolder": "Open folder",
409 "composer.workspace.workWithoutProject": "Work without a project",
410 "composer.workspace.noProject": "No project",
411 "composer.workspace.newBranchPlaceholder": "New branch name",
412 "composer.workspace.gitGraph": "Git graph",
413 "composer.workspace.refreshHistory": "Refresh Git graph",
414 "composer.workspace.graph": "Graph",
415 "composer.workspace.date": "Date",
416 "composer.workspace.commit": "Commit",
417 "composer.workspace.noHistory": "No Git history found",
418
419 // topic bar
420 "topicBar.renameSession": "Rename session",
421 "topicBar.copyAll": "Copy session",
422 "topicBar.export": "Export session",
423 "topicBar.exportMarkdown": "Export Markdown",
424 "topicBar.exportJson": "Export JSON",
425 "topicBar.exportPdf": "Export PDF",
426 "topicBar.exportImage": "Export Image",
427 "topicBar.exportCancel": "Cancel export",
428 "topicBar.exportClipboardTooLarge": "Too large for the clipboard. Export to a file instead.",
429 "topicBar.exportPhase.preparing": "Preparing snapshot",
430 "topicBar.exportPhase.reading": "Reading content",
431 "topicBar.exportPhase.rendering": "Generating files",
432 "topicBar.exportPhase.saving": "Saving files",
433 "topicBar.exportPhase.complete": "Complete",
434 "topicBar.exportPhase.cancelled": "Cancelled",
435 "tool.statusUnknown": "Execution status pending sync",
436 "topicBar.exportDiagnostic": "Export Session Diagnostics",
437 "topicBar.exportSuccess": "Exported {count} file(s).",
438 "topicBar.exportImageParts": "This conversation is long, so it was exported as {count} numbered PNG files.",
439 "topicBar.exportFailed": "Export failed: {error}",
440 "externalOpener.openIn": "Open in {name}",
441 "externalOpener.openDefault": "Open with default application",
442 "externalOpener.reveal": "Reveal in file manager",
443 "externalOpener.choose": "Choose application",
444 "externalOpener.failed": "Could not open {name}: {error}",
445 "externalOpener.openWith": "Open with",
446 "externalOpener.saveAs": "Save as…",
447 "externalOpener.saved": "Saved to {path}",
448 "externalOpener.persistFailed": "Opened, but could not save {name} as default: {error}",
449 "richLink.menuAriaLabel": "Link actions",
450 "richLink.openInBrowser": "Open in browser",
451 "richLink.composeEmail": "Compose email",
452 "richLink.copyLink": "Copy link",
453 "richLink.copyReference": "Copy reference",
454 "richLink.copyEmail": "Copy email address",
455 "richLink.copied": "Copied",
456 "richLink.copyFailed": "Could not copy",
457
458 // scope labels
459 "scope.global": "Scope: Global",
460 "scope.project": "Project · {name}",
461
462 // workspace panel
463 "workspace.title": "Workspace",
464 "workspace.open": "Open workspace panel",
465 "workspace.close": "Close workspace panel",
466 "workspace.maximize": "Maximize workspace panel",
467 "workspace.restore": "Restore workspace panel",
468 "workspace.hideTree": "Hide file tree",
469 "workspace.showTree": "Show file tree",
470 "workspace.resizeTree": "Resize file tree",
471 "workspace.currentFile": "Current file",
472 "workspace.previewMode": "Preview",
473 "workspace.sourceMode": "Source",
474 "workspace.recentFiles": "Recent files",
475 "workspace.openFiles": "Open files",
476 "workspace.fileUpdated": "File updated on disk. The current preview was kept.",
477 "workspace.reload": "Reload",
478 "workspace.closePreview": "Close preview",
479 "workspace.filter": "Filter files…",
480 "workspace.filterChanges": "Filter changes…",
481 "workspace.filterReferencedFiles": "Filter dependency files…",
482 "workspace.filterExternalFiles": "Filter external files…",
483 "workspace.externalFiles": "External files",
484 "workspace.clearFileScope": "Show full file tree",
485 "workspace.clearChangeScope": "Show all changes",
486 "workspace.noFile": "No file selected",
487 "workspace.pickFile": "Choose a file from the tree.",
488 "workspace.loading": "Loading file…",
489 "workspace.binary": "Binary file preview is not available.",
490 "workspace.truncated": "Preview truncated to the first 2 MiB.",
491 "workspace.loadMore": "Load more",
492 "workspace.fullFileLoaded": "Full file loaded",
493 "workspace.searchPlaceholder": "Find",
494 "workspace.searchCount": "{current} of {total}",
495 "workspace.searchPrevious": "Previous match",
496 "workspace.searchNext": "Next match",
497 "workspace.searchMatchCase": "Match case",
498 "workspace.searchWholeWord": "Match whole word",
499 "workspace.searchRegex": "Use regular expression",
500 "workspace.searchRegexInvalid": "Invalid expression",
501 "workspace.searchRegexTooLong": "Expression too long",
502 "workspace.searchRegexSourceTooLarge": "File too large for regex",
503 "workspace.searchRegexZeroLength": "Zero-length matches unsupported",
504 "workspace.searchRegexMultiline": "Multiline matches unsupported",
505 "workspace.searchRegexTimeout": "Expression timed out",
506 "workspace.searchRegexUnavailable": "Regex search unavailable",
507 "workspace.searchClose": "Close search",
508 "workspace.searchNoResults": "No results",
509 "workspace.codeLine": "Line {line}",
510 "workspace.addSelectionToChat": "Add to Chat",
511 "workspace.addFileReferenceToChat": "Add file reference",
512 "workspace.addFolderReferenceToChat": "Add folder reference",
513 "workspace.addFileContentToChat": "Add file contents",
514 "workspace.pinFileToContext": "Pin to Session Context",
515 "workspace.unpinFileFromContext": "Unpin from Context",
516 "pinnedFiles.shelfTitle": "Pinned Context Files",
517 "pinnedFiles.unpin": "Unpin file",
518 "workspace.copyRelativePath": "Copy relative path",
519 "workspace.copyFileContent": "Copy file content",
520 "workspace.fileContentCopied": "File content copied",
521 "workspace.copyAbsolutePath": "Copy absolute path",
522 "workspace.viewMode": "Workspace view",
523 "workspace.filesTab": "Files",
524 "workspace.changedTab": "Changes",
525 "workspace.revertSessionFile": "Revert this file to its state before Reasonix edited it",
526 "workspace.revertSessionFileShort": "Revert",
527 "workspace.revertSessionFileConflict": "This file has changed since Reasonix last wrote it.\n\n{path}\n\n{conflicts}\n\nOverwrite with the session checkpoint version?",
528 "workspace.workingChanges": "Uncommitted workspace changes",
529 "workspace.currentChanges": "Current changes",
530 "workspace.currentChangesSourceGit": "Git HEAD to current workspace",
531 "workspace.currentChangesSourceSession": "Before the session's first edit to current file",
532 "workspace.changeDetailUnavailable": "Current changes could not be loaded",
533 "workspace.changeDetailTooLarge": "The current diff is too large to display.",
534 "workspace.binaryChange": "The current change contains binary content and has no text diff.",
535 "workspace.noCurrentDiff": "This file has no text diff to display.",
536 "workspace.commitHistory": "Commit history",
537 "workspace.commitHistoryMeta": "{count} commits",
538 "workspace.noCommitHistory": "No commit history for this file.",
539 "workspace.noCommitDetail": "No commit details available.",
540 "workspace.treeMenu": "File tree actions",
541 "workspace.refreshTree": "Refresh file tree",
542 "workspace.refreshChanges": "Refresh changes",
543 "workspace.watchDegraded": "Live workspace watching is limited; refresh visible resources manually if needed.",
544 "workspace.watchUnavailable": "Live workspace watching is unavailable; use Refresh to check the workspace.",
545 "workspace.loadingChanges": "Loading changes…",
546 "workspace.changesUnavailable": "Workspace changes could not be loaded",
547 "workspace.historyUnavailable": "Commit history could not be loaded",
548 "workspace.noChanges": "No changed files",
549 "workspace.gitUnavailable": "Git status is unavailable for this workspace.",
550 "workspace.gitStatusAdded": "Added",
551 "workspace.gitStatusCopied": "Copied",
552 "workspace.gitStatusDeleted": "Deleted",
553 "workspace.gitStatusModified": "Modified",
554 "workspace.gitStatusRenamed": "Renamed",
555 "workspace.gitStatusUnmerged": "Conflict",
556 "workspace.gitStatusUntracked": "Untracked",
557 "workspace.gitChangesUnknown": "Changed files could not be determined.",
558 "workspace.fileDeleted": "This file was deleted from the workspace.",
559 "workspace.revealInFileManager": "Show in file manager",
560 "workspace.openWithDefaultApp": "Open with default app",
561 "workspace.openInTerminal": "Open in integrated terminal",
562 "terminal.title": "Terminal",
563 "terminal.sessions": "Terminal sessions",
564 "terminal.shell": "Shell",
565 "terminal.defaultShell": "Default shell",
566 "terminal.newSession": "New terminal session",
567 "terminal.closeSession": "Close terminal session",
568 "terminal.loading": "Loading terminal…",
569 "terminal.retry": "Retry",
570 "terminal.outputIncomplete": "Some terminal output may be missing after reconnection. Start a new terminal for a complete output stream.",
571 "terminal.dismissError": "Dismiss terminal error",
572 "terminal.resize": "Resize terminal height",
573 "terminal.empty": "Start a shell in this workspace.",
574 "terminal.readOnly": "This channel is read-only.",
575 "terminal.addOutput": "Add terminal output to chat",
576 "terminal.noOutput": "This terminal has no output yet.",
577
578 // mcp & skills drawer
579 "caps.title": "MCP & Skills",
580 "caps.loading": "Loading…",
581 "caps.summary": "{connected} connected · {failed} issues · {skills} skills",
582 "caps.mcpSummary": "{connected} servers connected · {failed} server issues · {tools} tools · {unavailable} unavailable",
583 "caps.connectorsTab": "MCP servers",
584 "caps.skillsTab": "Agent skills",
585 "caps.noServers": "No MCP servers configured. Add one with /mcp add.",
586 "caps.availableServers": "Available MCPs",
587 "caps.failureTitle": "{failed} MCP startup issues",
588 "caps.failureHint": "Collapsed by default and does not block usable MCPs; expand when troubleshooting.",
589 "caps.failureGroups": "Issue types",
590 "caps.showFailureDetails": "View details",
591 "caps.hideFailureDetails": "Hide details",
592 "caps.retryAll": "Retry all",
593 "caps.bulkActions": "Bulk actions",
594 "caps.removeInvalid": "Clean up {count} invalid",
595 "caps.confirmRemoveInvalid": "Remove {count}",
596 "caps.failureGroupAuth": "{count} need auth",
597 "caps.failureGroupMissingCommand": "{count} missing command",
598 "caps.failureGroupCommandUnavailable": "{count} command unavailable",
599 "caps.failureGroupNetwork": "{count} network/auth issue",
600 "caps.failureGroupOther": "{count} other issue",
601 "caps.showLog": "Show log",
602 "caps.rawLog": "Raw log",
603 "caps.copyLog": "Copy log",
604 "caps.counts": "{tools} tools · {prompts} prompts · {resources} resources",
605 "caps.schemaIssues": "{count} unavailable",
606 "caps.connected": "connected",
607 "caps.failed": "failed to connect",
608 "caps.tools": "Tools",
609 "caps.skills": "Skills",
610 "caps.skillImplicitInvocation": "Allow automatic skill invocation",
611 "caps.skillImplicitInvocationHint": "When off, skills remain available through /skill but are hidden from the model's automatic index and tools.",
612 "caps.noSkills": "No skills found.",
613 "caps.skillsSummaryAvailable": "{skills} available",
614 "caps.skillsSummaryMatches": "{matched} matches · {total} total",
615 "caps.skillsSummaryBuiltin": "{count} builtin",
616 "caps.skillsSummaryProject": "{count} project",
617 "caps.skillsSummaryCustom": "{count} custom",
618 "caps.skillsSummaryGlobal": "{count} global",
619 "caps.showSkills": "View skills",
620 "caps.hideSkills": "Hide skills",
621 "caps.skillScopeBuiltin": "Builtin",
622 "caps.skillScopeProject": "Project",
623 "caps.skillScopeCustom": "Custom",
624 "caps.skillScopeGlobal": "Global",
625 "caps.skillDisabled": "Disabled",
626 "caps.disableSkill": "Disable skill",
627 "caps.enableSkill": "Enable skill",
628 "caps.subagent": "Subagent",
629 "caps.addServer": "Add server",
630 "caps.browseRegistry": "Browse registry",
631 "caps.registryTitle": "MCP Registry",
632 "caps.registryHint": "Find installable servers in the official MCP Registry. Registry access only happens while this page is open.",
633 "caps.searchRegistry": "Search the MCP Registry…",
634 "caps.search": "Search",
635 "caps.install": "Install",
636 "caps.manualSetup": "Manual setup",
637 "caps.registryCached": "Showing cached results because the registry is unavailable.",
638 "caps.noRegistryMatches": "No registry servers matched.",
639 "caps.searchServers": "Search MCP servers…",
640 "caps.noServerMatches": "No matching MCP servers.",
641 "caps.projectServers": "This project",
642 "caps.projectServersHint": "Declared by this project and available automatically.",
643 "caps.installedServers": "Global MCP",
644 "caps.installedServersHint": "Install once and use automatically in every Reasonix project.",
645 "caps.pluginServers": "Plugin servers",
646 "caps.pluginServersHint": "Managed by their plugins. Open a server to inspect its tools.",
647 "caps.serverToolSummary": "{tools} tools",
648 "caps.backToServers": "Back to MCP servers",
649 "caps.serverDetailsHint": "Connection details, diagnostics, and tools.",
650 "caps.addServerTitle": "Add MCP server",
651 "caps.addServerHint": "Configure a local command or remote MCP endpoint.",
652 "caps.installDefinition": "Command, URL, or JSON",
653 "caps.installDefinitionPlaceholder": "npx -y chrome-devtools-mcp@latest\n\nor https://example.com/mcp",
654 "caps.installDefinitionHint": "Paste a command, URL, or JSON definition. Switch to Manual setup when you need a custom name, environment variables, or headers.",
655 "caps.quickBenefitsLabel": "Automatic install flow",
656 "caps.quickDetectTransport": "Detect transport automatically",
657 "caps.quickVerifyConnection": "Verify after install",
658 "caps.quickEnableTools": "Make every tool available",
659 "caps.editServerTitle": "Edit {name}",
660 "caps.editServerHint": "Update the connection. Existing secret values remain unchanged when left blank.",
661 "caps.editorMode": "Configuration editor",
662 "caps.quickMode": "Quick install",
663 "caps.formMode": "Manual setup",
664 "caps.jsonMode": "JSON",
665 "caps.advancedOptions": "Advanced options",
666 "caps.hideAdvancedOptions": "Hide advanced options",
667 "caps.jsonConfig": "Complete configuration",
668 "caps.jsonPasteHint": "Accepts {\"server-name\": {...}} or {\"mcpServers\": {\"server-name\": {...}}}.",
669 "caps.jsonUnsupported": "This JSON contains fields that Reasonix does not support.",
670 "caps.jsonInvalid": "Enter valid JSON. Environment variables and headers must contain string values.",
671 "caps.jsonSingleServer": "The JSON must contain exactly one MCP server.",
672 "caps.jsonNameMismatch": "Renaming an existing MCP server is not supported.",
673 "caps.jsonRequired": "Provide a command for stdio, or a URL for HTTP and SSE.",
674 "caps.switchBusy": "This setting cannot change yet. Stop the current answer, handle pending prompts, or wait for background jobs to finish.",
675 "caps.switchBusyRunning": "This setting cannot change while the current answer is running. Stop it first.",
676 "caps.switchBusyPrompt": "This setting cannot change while a confirmation is waiting. Handle it first.",
677 "caps.switchBusyJobs": "This setting cannot change while background work is active. Active jobs: {n}. Stop them first.",
678 "caps.add": "Add",
679 "caps.addAndConnect": "Add and connect",
680 "caps.namePlaceholder": "name (e.g. github)",
681 "caps.name": "Name",
682 "caps.transport": "Transport",
683 "caps.commandPlaceholder": "command (e.g. npx -y @modelcontextprotocol/server-github)",
684 "caps.urlPlaceholder": "url (https://…)",
685 "caps.envLabel": "Environment (optional)",
686 "caps.envPlaceholder": "KEY=VALUE, one per line",
687 "caps.headersLabel": "Headers (optional)",
688 "caps.headersPlaceholder": "Header=Value, one per line",
689 "caps.status": "Status",
690 "caps.refresh": "Refresh MCP status",
691 "caps.reconnect": "Reconnect",
692 "caps.command": "Command",
693 "caps.url": "URL",
694 "caps.envKeys": "Environment",
695 "caps.headerKeys": "Headers",
696 "caps.connectNow": "Connect now",
697 "caps.editConfig": "Edit config",
698 "caps.showTools": "View tools",
699 "caps.hideTools": "Hide tools",
700 "caps.saveConfig": "Save config",
701 "caps.envPreserveHint": "Secret values are not shown. Leave this blank to keep existing environment variables; enter KEY=VALUE lines to replace them.",
702 "caps.headersPreserveHint": "Secret values are not shown. Leave this blank to keep existing headers; enter Header=Value lines to replace them.",
703 "caps.remove": "Remove server",
704 "caps.confirmRemove": "Confirm remove",
705 "caps.retry": "Retry",
706 "caps.reauthorize": "Sign in",
707 "caps.checkCommand": "Check command",
708 "caps.builtIn": "Built-in",
709 "caps.projectServerBadge": "Project",
710 "caps.serverSource": "Source",
711 "caps.sourceProject": "Current project",
712 "caps.sourceProjectConfig": "Current project · {config}",
713 "caps.sourceUser": "Global",
714 "caps.sourcePlugin": "Plugin",
715 "caps.sourceBuiltin": "Built-in",
716 "caps.managedByPlugin": "Managed by plugin {plugin}",
717 "caps.auth": "Auth",
718 "caps.authRequired": "sign-in required",
719 "caps.authRequiredSummary": "Sign in to this MCP server before it can connect.",
720 "caps.authPossible": "sign-in may be required",
721 "caps.authPossibleShort": "sign-in may be required",
722 "caps.clearAuth": "Clear auth",
723 "caps.confirmClearAuth": "Confirm clear",
724 "caps.deferred": "available · starts on demand",
725 "caps.projectAuthChanged": "connection needs attention",
726 "caps.initializing": "connecting to MCP; tools will appear when ready",
727 "caps.disabled": "disabled (off this session)",
728 "caps.disabledAutoStart": "disabled (does not connect when the session starts)",
729 "caps.enable": "Enable for this session",
730 "caps.disable": "Disable for this session",
731 "caps.expandDetails": "Expand details",
732 "caps.collapseDetails": "Collapse details",
733 "caps.noToolDetails": "This connection did not return tool details.",
734 "caps.toolUnavailable": "Unavailable",
735 "caps.searchSkills": "Search skills…",
736 "caps.noSkillMatches": "No matching skills.",
737 "caps.pluginRefresh": "Refresh plugins",
738 "caps.pluginInstallTitle": "Install plugin",
739 "caps.pluginInstallHint": "Add a local plugin folder or install from a Git repository.",
740 "caps.pluginInstallMethod": "Plugin install method",
741 "caps.pluginInstallLocal": "Local folder",
742 "caps.pluginInstallGit": "Git repository",
743 "caps.pluginSource": "Plugin source",
744 "caps.pluginGitSource": "Git repository URL",
745 "caps.pluginSourcePlaceholder": "git:github.com/obra/superpowers",
746 "caps.pluginChooseLocalFolder": "Choose plugin folder",
747 "caps.pluginLocalFolder": "Local plugin folder",
748 "caps.pluginNoLocalFolder": "No folder selected",
749 "caps.pluginInstallName": "Install name (optional)",
750 "caps.pluginInstallNamePlaceholder": "install name (optional)",
751 "caps.pluginLink": "Developer mode: link source folder",
752 "caps.pluginLinkHint": "Do not copy the plugin; use the selected folder directly. Useful for plugin debugging. Moving or deleting the folder breaks the plugin.",
753 "caps.pluginReplace": "Overwrite same-name plugin",
754 "caps.pluginReplaceHint": "When a plugin with the same name already exists, allow this source to replace it.",
755 "caps.pluginPreview": "Preview",
756 "caps.pluginInstall": "Install plugin",
757 "caps.noPluginsTitle": "No plugins installed",
758 "caps.noPluginsHint": "Install a plugin package from Git or a local path to add skills, hooks, and MCP servers through one managed unit.",
759 "caps.installedPlugins": "Installed plugins",
760 "caps.pluginsSummary": "{enabled} enabled · {total} installed · {issues} issues",
761 "caps.pluginCounts": "{skills} skills · {agents} agents · {commands} commands · {hooks} hooks · {mcps} MCPs",
762 "caps.pluginCompatibilityFull": "Fully compatible",
763 "caps.pluginCompatibilityPartial": "Partially compatible",
764 "caps.pluginCompatibilityNone": "Incompatible",
765 "caps.pluginMappedCapabilities": "Mapped: {capabilities}",
766 "caps.pluginSkippedCapability": "Skipped {capability}: {reason}",
767 "caps.pluginNoCapabilities": "No exported capabilities",
768 "caps.pluginWarnings": "{count} warnings",
769 "caps.pluginEnable": "Enable plugin",
770 "caps.pluginDisable": "Disable plugin",
771 "caps.pluginEnabled": "Enabled",
772 "caps.pluginDisabled": "Disabled",
773 "caps.pluginVersion": "Version",
774 "caps.pluginRoot": "Install path",
775 "caps.pluginUpdate": "Update",
776 "caps.pluginDoctor": "Doctor",
777 "caps.pluginRemove": "Remove plugin",
778 "caps.pluginConfirmRemove": "Confirm remove",
779 "caps.pluginPlanError": "Install check failed",
780 "caps.pluginPlanReady": "Install plan",
781 "caps.pluginAction": "Action",
782 "caps.pluginPlanStatus": "Plugin operation: {status}",
783 "caps.pluginPlanComplete": "Plugin operation complete",
784 "caps.pluginPlanInstalled": "Plugin installed. Expand it below to inspect its skills, agents, hooks, and MCP servers.",
785 "caps.pluginRuntimeFullTrust": "FULL TRUST runtime",
786 "caps.pluginRuntimeCommand": "Command",
787 "caps.pluginRuntimeIntercepts": "Intercepts",
788 "caps.pluginRuntimeReplaces": "Replaces",
789 "caps.pluginRuntimeCapabilities": "Capabilities",
790 "caps.pluginRuntimeRisk": "This plugin runs a code extension inside Reasonix: it can read the full session and environment, bypass permissions, and operate this machine directly.",
791 "caps.pluginUsageTitle": "How to use",
792 "caps.pluginUsageEnabledHint": "Enabled plugins load into new sessions. Skills and agents can be invoked by qualified name; hooks run automatically, while imported MCP servers connect on demand.",
793 "caps.pluginUsageDisabledHint": "Enable this plugin before its skills, hooks, or MCP servers can participate in sessions.",
794 "caps.pluginNoCapabilityDetails": "No detailed capability inventory is available for this plugin.",
795 "caps.pluginSkillsTitle": "Skills",
796 "caps.pluginSkillsHint": "Browse with /skills and invoke the shown qualified name. An unambiguous short name remains accepted for compatibility.",
797 "caps.pluginAgentsTitle": "Agents",
798 "caps.pluginAgentsHint": "Claude agents are imported as manually invoked subagent profiles.",
799 "caps.pluginCommandsTitle": "Commands",
800 "caps.pluginCommandsHint": "Slash-command prompt templates; type /<plugin>:<name> to run one.",
801 "caps.pluginCommandShadowed": "overridden",
802 "caps.pluginCommandQualifiedOccupiedByPlugin": "Its qualified name is occupied by plugin {plugin}.",
803 "caps.pluginCommandQualifiedOccupiedByCustom": "Its qualified name is occupied by a user or project command.",
804 "caps.pluginHooksTitle": "Hooks",
805 "caps.pluginHooksHint": "Hooks trigger automatically on matching lifecycle events.",
806 "caps.pluginMCPTitle": "MCP servers",
807 "caps.pluginMCPHint": "Imported Claude MCP servers connect on demand so they do not change the tool schema at startup.",
808 "caps.pluginMCPAutoStart": "auto start",
809 "caps.pluginMCPOnDemand": "on demand",
810 "caps.pluginNoDescription": "No description",
811 "caps.pluginHookNoTarget": "No hook target",
812 "caps.pluginMCPNoTarget": "No launch target",
813 "caps.sources": "Sources",
814 "caps.sourcesSummaryActive": "{active} active",
815 "caps.sourcesSummaryMissing": "{missing} missing",
816 "caps.sourcesSummaryEmpty": "{empty} empty",
817 "caps.sourcesSummaryDisabled": "{disabled} disabled",
818 "caps.sourcesSummaryNone": "No sources",
819 "caps.addSkillFolder": "Add folder",
820 "caps.refreshSkills": "Rescan",
821 "caps.noSkillRoots": "No skill sources found.",
822 "caps.skillRootCount": "{skills} skills",
823 "caps.skillRootConfigured": "Configured",
824 "caps.skillRootDisable": "Disable",
825 "caps.skillRootEnable": "Enable",
826 "caps.skillRootDisabled": "disabled",
827 "caps.skillRootActive": "active",
828 "caps.skillRootEmpty": "empty",
829 "caps.skillRootBuiltinPath": "Built-in path",
830 "caps.skillRootUserConfigured": "User configured",
831 "caps.skillRootConfiguredPath": "Configured path",
832 "caps.skillRootMissing": "Directory missing",
833 "caps.skillRootShowAllSkills": "View all {count}",
834
835 // subagent profiles (settings > Subagents)
836 "subagents.tabHint": "Built-in + your own agent profiles",
837 "subagents.search": "Search subagents...",
838 "subagents.new": "+ New",
839 "subagents.builtinTitle": "Built-in subagents",
840 "subagents.builtinHint": "Built-in prompts and tool access are fixed; you can override their model and effort.",
841 "subagents.builtinReadOnlyHint": "Overrides this built-in's model/effort only — its playbook can't be edited here.",
842 "subagents.builtinExploreDescription": "Survey the codebase in an isolated subagent and return one distilled answer.",
843 "subagents.builtinResearchDescription": "Combine web research and code reading in an isolated subagent.",
844 "subagents.builtinReviewDescription": "Review pending changes for correctness, security, and missing tests. Read-only.",
845 "subagents.builtinSecurityReviewDescription": "Inspect pending changes for security vulnerabilities. Read-only.",
846 "subagents.model": "Model",
847 "subagents.effort": "Reasoning effort",
848 "subagents.inheritDefault": "Inherit default",
849 "subagents.effectiveValue": "Effective: {value}",
850 "subagents.overridden": "Overridden",
851 "subagents.inherited": "Inherited",
852 "subagents.resetOverride": "Restore default",
853 "subagents.customTitle": "Your subagents",
854 "subagents.customHint": "Subagent profiles you created or loaded; editable profiles can be managed here.",
855 "subagents.noCustom": "No custom subagents yet.",
856 "subagents.noMatches": "No matching subagents.",
857 "subagents.externalManaged": "Managed in Skills",
858 "subagents.externalManagedHint": "This profile comes from a configured custom skill path. Manage it from the Skills page so its external source stays intact.",
859 "subagents.allTools": "All available tools",
860 "subagents.toolCount": "{n} tools",
861 "subagents.name": "Name",
862 "subagents.namePlaceholder": "code-reviewer",
863 "subagents.color": "Color tag",
864 "subagents.description": "Description",
865 "subagents.descriptionPlaceholder": "Short summary shown to the model",
866 "subagents.tools": "Available tools",
867 "subagents.allToolsOption": "Inherit all available tools (default)",
868 "subagents.customToolsOption": "Custom available tools",
869 "subagents.allToolsHint": "Inherits every tool available to this session; approvals, sandboxing, and safety policies still apply.",
870 "subagents.customToolsHint": "Further limits which available tools this subagent can call.",
871 "subagents.selectedToolCount": "{n}/{total} selected",
872 "subagents.selectAllTools": "Select all",
873 "subagents.clearTools": "Clear",
874 "subagents.selectAtLeastOneTool": "Select at least one available tool.",
875 "subagents.backToList": "Back to subagent list",
876 "subagents.systemPrompt": "System prompt",
877 "subagents.systemPromptPlaceholder": "Describe this subagent's role, boundaries, and rules...",
878 "subagents.scope": "Scope",
879 "subagents.confirmDelete": "Confirm delete",
880 "subagents.manualInvocationHint": "Runs as an isolated subagent when invoked with /{name} <task> in chat — the model never picks it on its own.",
881 "subagents.nameInvalid": "Use letters, digits, '_', '-', '.' only.",
882 "subagents.nameTaken": "That name is already in use by another subagent, skill, or command.",
883 "subagents.newTitle": "New subagent",
884 "subagents.editTitle": "Edit subagent",
885 "subagents.tryIt": "Try it",
886 "subagents.tryItPlaceholder": "Give it a one-off task — runs isolated and read-only…",
887 "subagents.run": "Run",
888 "subagents.cancelRun": "Cancel run",
889 "subagents.invocationLabel": "Invoke in chat",
890 "subagents.invocationExample": "/{name} <task>",
891 "subagents.copyInvocation": "Copy command",
892 "subagents.useInChat": "Use in chat",
893
894 // welcome / empty state
895 "welcome.title": "A coding agent",
896 "welcome.tagline": "Describe a task, or ask anything.",
897 "welcome.hintCommands": "commands",
898 "welcome.hintFiles": "reference files",
899 "welcome.hintSend": "send",
900 "welcome.ex1": "Explain this codebase's architecture",
901 "welcome.ex2": "Summarize the recent git changes",
902 "welcome.ex3": "Where is the agent run loop, and what does it do?",
903 "welcome.ex4": "Find and fix a bug in this project",
904 "welcome.creation.title": "Hey, start creating today!",
905
906 // composer
907 "composer.placeholder": "Message Reasonix… ( / commands · @ files · ! shell )",
908 "composer.inputActions": "Message input actions",
909 "composer.goalInputPlaceholder": "Enter a goal…",
910 "composer.planInputPlaceholder": "Describe your task to create a plan…",
911 "composer.goalInputRequired": "Enter a goal",
912 "composer.subagentTaskRequired": "Enter a task for the subagent",
913 "composer.intentMenuTitle": "Execution method",
914 "composer.taskModeDirect": "Standard · Work as you go",
915 "composer.taskModeDirectShort": "Standard",
916 "composer.taskModePlan": "Plan · Confirm first",
917 "composer.taskModePlanShort": "Plan",
918 "composer.taskModePlanDesc": "Draft the plan first; tool use follows current permissions and sandbox settings.",
919 "composer.taskModeGoal": "Goal · Keep progressing",
920 "composer.taskModeGoalShort": "Goal",
921 "composer.qualityFloor": "Verification",
922 "composer.taskModeStopGoal": "End goal",
923 "composer.taskModePauseGoal": "Pause goal",
924 "composer.taskModeEditGoal": "Edit goal",
925 "composer.goalEditObjective": "Edit the complete goal objective",
926 "composer.goalEditMaxRounds": "Maximum automatic rounds (leave blank for unlimited)",
927 "composer.goalEditInvalidRounds": "Maximum rounds must be a positive whole number.",
928 "composer.taskModeResumeGoal": "Resume goal",
929 "composer.goalPaused": "Goal paused",
930 "composer.goalBlocked": "Goal blocked — resume to continue",
931 "composer.goalRunning": "Goal is running",
932 "composer.goalWaitingNext": "Goal is active — waiting for the next round",
933 "composer.goalWaitingResume": "Goal is unfinished — waiting for resume",
934 "composer.goalComplete": "Goal complete",
935 "composer.goalRuntimeLine": "turns {turnsUsed} · requests {requestsUsed} · tokens {tokensUsed} · work time {workTime}",
936 "composer.permissionReadOnly": "Read only",
937 "composer.permissionReadOnlyDesc": "Read files; changes and external actions require your approval",
938 "composer.permissionWorkspaceWrite": "Workspace access",
939 "composer.permissionWorkspaceWriteDesc": "Read and write this workspace; access outside it requires your approval",
940 "composer.permissionWorkspaceWriteDescWindows": "File tools stay inside this workspace and ask before writing elsewhere; shell commands run as the current OS user without a sandbox",
941 "composer.permissionRecommended": "Recommended",
942 "composer.permissionFullAccess": "Full access",
943 "composer.permissionFullAccessDesc": "Run as the current OS user without filesystem or network sandboxing",
944 "permission.fullAccessConfirm.title": "Enable Full access?",
945 "permission.fullAccessConfirm.currentDescription": "Once enabled, Reasonix skips routine permission prompts and runs commands as the current OS user without filesystem or network sandboxing. Explicit host deny rules still apply before launch, but Reasonix no longer limits the locations or network available to the launched process. Enable it only when you trust this task and its contents.",
946 "permission.fullAccessConfirm.futureDescription": "Once enabled, new sessions skip routine permission prompts by default and run commands as the current OS user without filesystem or network sandboxing. Explicit host deny rules still apply before launch, but Reasonix no longer limits the locations or network available to the launched process. Enable it only when you trust future tasks.",
947 "permission.fullAccessConfirm.currentAcknowledge": "I understand the risks and trust this task",
948 "permission.fullAccessConfirm.futureAcknowledge": "I understand the risks and accept Full access as the default for new sessions",
949 "permission.fullAccessConfirm.enable": "Enable Full access",
950 "composer.accessFull": "Full access",
951 "composer.accessFullDesc": "Skips ordinary tool permission prompts; deny rules and fresh reviews still apply, while ask questions and plan confirmations still wait.",
952 "composer.contentMenuTitle": "Add content",
953 "composer.contentAddAttachment": "Add file or image",
954 "composer.contentReferenceFiles": "Reference file or folder",
955 "composer.contentReferenceSessions": "Reference recent session",
956 "composer.contentUseCommands": "Use command or Skill",
957 "composer.contentUseCommandsEmptyOnly": "Available when the input is empty — commands replace the whole message",
958 "composer.contentCloseSessions": "Close recent sessions",
959 "composer.pastChatsLoading": "Loading recent sessions…",
960 "composer.pastChatsEmpty": "No recent sessions",
961 "composer.pastChatsSearch": "Search recent sessions…",
962 "composer.pastChatsNoMatches": "No matching sessions",
963 "composer.sessionTurns": "{n} turns",
964 "composer.backToFiles": "← Back to files",
965 "composer.removeSessionReference": "Remove session reference",
966 "composer.sessionContextHeader": "The user referenced the following earlier session context:",
967 "composer.sessionContextFooter": "Current user request:",
968 "composer.sessionContextSession": "Session: {title}",
969 "composer.sessionContextUser": "User",
970 "composer.sessionContextAssistant": "Assistant",
971 "composer.sessionContextTruncated": "Note: This session is long, so only its most recent messages are included.",
972 "composer.sessionContextEmpty": "Note: This session has no user or assistant messages that can be referenced.",
973 "composer.sessionContextReadFailed": "Note: This session could not be read and was skipped.",
974 "composer.resize": "Drag to resize composer, double-click to reset",
975 "composer.send": "Send ({combo})",
976 "composer.queueGuidance": "Add to guidance queue ({combo})",
977 "composer.steer": "Add guidance to current turn (Enter)",
978 "composer.steerPlaceholder": "Running — type guidance, {combo} adds it to the queue",
979 "composer.runWaitingApproval": "Waiting for your approval — {tool}",
980 "composer.runWaitingAsk": "Waiting for your answer",
981 "composer.runAnnounceRunning": "Reasonix is working",
982 "composer.readStatusReading": "Reading {file}…",
983 "notice.readPauseTitle": "Reading is not complete",
984 "notice.readPauseBody": "The current response and completed work are preserved. Specify a reading range or adjust your request in the composer to continue. The response does not establish a completed full review.",
985 "notice.readPauseCovered": "Read lines {range}",
986 "notice.readPauseMissing": "Still needed: lines {range}",
987 "notice.readPauseOmitted": "Reading remains incomplete for {count} additional files.",
988 "composer.readStatusCovered": "Reading {file} · lines {range} delivered",
989 "composer.readStatusDone": "Read {file} · lines {range}",
990 "composer.readStatusPaused": "Read paused: {file}",
991 "composer.readStatusBudget": "Automatic reading reached its available budget.",
992 "composer.readStatusSource": "The remaining content could not be verified.",
993 "composer.readStatusStalled": "Repeated reads returned no new content.",
994 "composer.readStatusRecovery": "Read a smaller range or continue independent work; the full review remains incomplete.",
995 "composer.turnPhaseWorking": "Working",
996 "composer.turnPhaseChecking": "Checking",
997 "composer.turnPhaseVerifying": "Verifying",
998 "composer.turnPhaseReviewing": "Reviewing",
999 "composer.runStripEstimateHint": "Streaming estimates based on character count. Final values are reported after each request and may differ.",
1000 "composer.guidanceQueue": "Queued guidance",
1001 "composer.guidanceCount": "Queued guidance {n}",
1002 "composer.guidanceRemaining": "{n} more queued",
1003 "composer.guidanceCollapse": "Collapse",
1004 "composer.guidanceMode": "Guide",
1005 "composer.guidanceSendMode": "Send",
1006 "composer.guidanceSend": "Send this guidance to the transcript",
1007 "composer.guidanceWaiting": "Waiting for earlier queued guidance",
1008 "composer.guidanceInFlight": "Guidance is already being applied",
1009 "composer.guidanceRetryMode": "Retry",
1010 "composer.guidanceRetry": "Retry this guidance",
1011 "composer.guidanceDismiss": "Dismiss queued guidance",
1012 "composer.guidanceEdit": "Edit this queued guidance",
1013 "composer.guidanceSaveEdit": "Save guidance edits",
1014 "composer.guidanceCancelEdit": "Cancel guidance edits",
1015 "composer.guidanceEmptyPreview": "No preview text",
1016 "composer.stop": "Stop (Esc)",
1017 "composer.pastedLabel": "[Pasted text #{id} · {lines} lines]",
1018 "composer.pastedShowPreview": "Preview pasted text",
1019 "composer.pastedHidePreview": "Hide pasted text preview",
1020 "composer.pastedExpand": "Expand",
1021 "composer.pastedRemove": "Remove pasted text",
1022 "composer.removeImage": "Remove image",
1023 "imageViewer.clickToPreview": "Click to preview",
1024 "imageViewer.closePreview": "Close preview",
1025 "imageViewer.title": "Image preview",
1026 "composer.attachImageFailed": "Image paste failed",
1027 "composer.attachFileFailed": "File attach failed",
1028 "composer.attachDropFailed": "Dropped file attach failed",
1029 "composer.pasteImageFailed": "Could not read clipboard image",
1030 "composer.imageInputUnsupported": "The current model does not receive images directly. Configure an image-understanding model in Settings, switch to an image-capable model, or use an OCR/vision MCP tool to inspect the attachment path.",
1031 "composer.contextItems": "Context items",
1032 "composer.selectedText": "Chat selection",
1033 "composer.selectedCode": "Code selection",
1034 "composer.selectedTerminal": "Terminal selection",
1035 "composer.removeSelectedText": "Remove selected text",
1036 "composer.selectedTextTruncated": "The selection was shortened to keep the prompt within a safe size.",
1037 "composer.selectedInvocation": "Selected skill or subagent",
1038 "composer.removeInvocation": "Remove selected skill or subagent",
1039 "composer.removeInvocationNamed": "Remove {name}",
1040 "composer.removeReference": "Remove reference",
1041
1042 // status bar
1043 "status.connecting": "connecting…",
1044 "status.ctxLabel": "ctx",
1045 "status.ctxTitle": "Share of the context window currently used by this session",
1046 "status.sessionTurnsLabel": "session",
1047 "status.sessionTurnsTitle": "Current session turns",
1048 "status.sessionTokensLabel": "session tokens",
1049 "status.sessionTokensTitle": "Model tokens spent in this session; not the current context-window usage.",
1050 "status.turnTokensLabel": "turn tokens",
1051 "status.turnTokensTitle": "Model tokens spent in the current or most recent turn.",
1052 "status.tpsLabel": "tps",
1053 "status.tpsTitle": "Output token throughput for the most recent request (completion + reasoning tokens per second).",
1054 "status.turnTpsLabel": "turn tps",
1055 "status.turnTpsTitle": "Turn-cumulative output throughput (completion + reasoning tokens): settled values for completed requests plus a character-density estimate while streaming.",
1056 "status.turnOutputTokensLabel": "turn output tokens",
1057 "status.turnOutputTokensTitle": "Model output tokens for this turn, including reasoning but excluding input. Estimated while streaming.",
1058 "status.outputTokensLabel": "out",
1059 "status.outputTokensTitle": "Completion tokens generated in the most recent request.",
1060 "status.cacheTokensLabel": "cache",
1061 "status.cacheTokensTitle": "Prompt cache hit and miss token counts for the latest request.",
1062 "status.cacheHitShort": "hit",
1063 "status.cacheMissShort": "miss",
1064 "status.turnCostLabel": "turn cost",
1065 "status.turnCostTitle": "Estimated billable spend in the current or most recent turn.",
1066 "billing.rateBand.peak": "peak",
1067 "billing.rateBand.offPeak": "off-peak",
1068 "billing.rateBand.mixed": "mixed rates",
1069 "billing.rateBand.tooltip": "Rated at request completion. Beijing peak hours: 09:00–12:00 and 14:00–18:00.",
1070 "status.compactLabel": "compact at",
1071 "status.compactTitle": "Auto-compact is attempted when context reaches this share of the window",
1072 "status.cacheLabel": "turn hit",
1073 "status.cacheTitle": "Prompt cache hit rate for the latest request",
1074 "status.cacheAvgLabel": "avg hit",
1075 "status.cacheAvgTitle": "Session-average prompt cache hit rate",
1076 "status.costLabel": "session cost",
1077 "status.balanceLabel": "balance",
1078 "status.plan": "PLAN",
1079 "providerUI.image": "Images",
1080 "providerUI.manageModels": "Manage models",
1081 "modelSwitcher.searchPlaceholder": "Search models or providers…",
1082 "modelSwitcher.noMatches": "No matching models",
1083 "modelSwitcher.favorites": "Favorites",
1084 "modelSwitcher.allModels": "All models",
1085 "modelSwitcher.filters": "Model filters",
1086 "modelSwitcher.modelList": "Available models",
1087 "modelSwitcher.noFavorites": "No favorite models yet",
1088 "modelSwitcher.currentModel": "Current model",
1089 "modelSwitcher.addFavorite": "Add {model} to favorites",
1090 "modelSwitcher.removeFavorite": "Remove {model} from favorites",
1091 "modelSwitcher.configureModels": "Configure models",
1092 "status.noModels": "no switchable models",
1093 "status.modelSwitchBusy": "The model cannot change yet. Stop the current answer, handle pending prompts, or wait for background jobs to finish.",
1094 "status.modelSwitchBusyRunning": "The model cannot change while the current answer is running. Stop it first.",
1095 "status.modelSwitchBusyPrompt": "The model cannot change while a prompt is waiting for your response. Handle it first.",
1096 "status.modelSwitchBusyJobs": "The model cannot change while background work is active. Active jobs: {n}. Open Background jobs in the status bar to stop them.",
1097 "status.modelSwitchLeaseHeld": "This session is open in another Reasonix window or still running in the background. Close that window, stop the background run, or open a copy before changing models.",
1098 "status.modelSwitchStarting": "This session is still starting. Try changing models again in a moment.",
1099 "status.modelSwitchStartupFailed": "This session did not start, so the model cannot change: {err}",
1100 "status.modelSwitchRetry": "The current session changed while switching models. Try once more.",
1101 "status.modelSwitchUnknown": "Unknown model {model}.",
1102 "status.modelSwitchProviderUnavailable": "Model {model} is unavailable because provider {provider} is not added.",
1103 "status.modelSwitchFailed": "Model switch failed: {err}",
1104 "status.modelFallbackSwitched": "Model {model} is no longer available; switched to {fallback}.",
1105 "status.effortSwitchBusy": "Reasoning effort cannot change yet. Stop the current answer, handle pending prompts, or wait for background jobs to finish.",
1106 "status.effortSwitchBusyRunning": "Reasoning effort cannot change while the current answer is running. Stop it first.",
1107 "status.effortSwitchBusyPrompt": "Reasoning effort cannot change while a prompt is waiting for your response. Handle it first.",
1108 "status.effortSwitchBusyJobs": "Reasoning effort cannot change while background work is active. Active jobs: {n}. Open Background jobs in the status bar to stop them.",
1109 "status.effortSwitchLeaseHeld": "This session is open in another Reasonix window or still running in the background. Close that window, stop the background run, or open a copy before changing effort.",
1110 "status.effortSwitchStarting": "This session is still starting. Try changing reasoning effort again in a moment.",
1111 "status.effortSwitchStartupFailed": "This session did not start, so reasoning effort cannot change: {err}",
1112 "status.effortSwitchRetry": "The current session changed while switching reasoning effort. Try once more.",
1113 "status.effortSwitchFailed": "Reasoning effort switch failed: {err}",
1114 "status.sessionAutosaveFailed": "Session autosave failed: {err}",
1115 "status.sessionSaveFailedBefore": "Session save failed before {action}: {err}",
1116 "status.actionChangingModel": "changing models",
1117 "status.actionChangingEffort": "changing reasoning effort",
1118 "status.actionRebuildingSettings": "refreshing settings",
1119 "status.actionSwitchingSessions": "switching sessions",
1120 "status.actionSwitchingTabs": "switching tabs",
1121 "status.actionAutosave": "autosave",
1122 "status.actionCurrentSession": "saving the current session",
1123 "status.effort": "effort {level}",
1124 "status.effortTitle": "Reasoning effort",
1125 "status.tokens": "tokens",
1126 "status.recoveryNetwork": "network unavailable",
1127 "status.recoveryProvider": "service unavailable",
1128 "status.recoveryWaiting": "Waiting for provider ({phase}); next attempt in {seconds}s. Stop to cancel.",
1129 "status.recoveryWaitTitleNetwork": "Waiting for the network to recover",
1130 "status.recoveryWaitTitleProvider": "Waiting for the provider to recover",
1131 "status.recoveryWaitNext": "Next attempt in {seconds}s",
1132 "status.recoveryWaitProgress": "Waited {waited} min of {budget} min",
1133 "status.recoveryWaitHint": "Retries continue until the wait budget runs out, then the turn fails. Check your network, proxy, or provider status, or stop now.",
1134 "status.recoveryWaitStop": "Stop waiting",
1135 "status.retrying": "retrying ({attempt}/{max})…",
1136 "status.balanceTitle": "Wallet balance",
1137 "status.spendTitle": "Estimated billable spend in this session, including model, subagent, and helper calls",
1138
1139 // ── Heartbeat ──
1140 "heartbeat.title": "Heartbeat Tasks",
1141 "heartbeat.scheduler": "Scheduled Tasks",
1142 "heartbeat.addTask": "Add task",
1143 "heartbeat.delete": "Delete",
1144 "heartbeat.runNow": "Run now",
1145 "heartbeat.fieldTitle": "Title",
1146 "heartbeat.titlePlaceholder": "e.g. Daily standup check",
1147 "heartbeat.promptPlaceholder": "e.g. Check for any new issues on GitHub and summarize them.",
1148 "heartbeat.fieldInterval": "Frequency",
1149 "heartbeat.status": "Status",
1150 "heartbeat.optional": "Optional",
1151 "heartbeat.save": "Save",
1152 "heartbeat.add": "Add",
1153 "heartbeat.untitled": "(untitled)",
1154 "heartbeat.confirmDelete": "Confirm delete?",
1155 "heartbeat.scopeGlobal": "Global",
1156 "heartbeat.scopeProject": "Project",
1157 "heartbeat.noProjects": "No projects found",
1158 "heartbeat.currentWorkspace": "current",
1159 "heartbeat.freqInterval": "Interval",
1160 "heartbeat.freqEvery": "Every",
1161 "heartbeat.unitSec": "sec",
1162 "heartbeat.unitMin": "min",
1163 "heartbeat.unitHour": "h",
1164 "heartbeat.timeWindow": "Time window",
1165 "heartbeat.cycleDaily": "Daily",
1166 "heartbeat.cycleWeekly": "Weekly",
1167 "heartbeat.cycleBiweekly": "Bi-weekly",
1168 "heartbeat.cycleMonthly": "Monthly",
1169 "heartbeat.cycleYearly": "Yearly",
1170 "heartbeat.justNow": "just now",
1171 "heartbeat.due": "due soon",
1172 "heartbeat.removeTimeWindow": "Remove time window",
1173 "heartbeat.openTopic": "Open topic",
1174 "heartbeat.filterAll": "All",
1175 "heartbeat.filterEnabled": "Enabled",
1176 "heartbeat.filterDisabled": "Paused",
1177 "heartbeat.searchPlaceholder": "Search tasks…",
1178 "heartbeat.filterAllProjects": "All projects",
1179 "heartbeat.noMatchingTasks": "No matching tasks",
1180 "heartbeat.weekdayMon": "Mon",
1181 "heartbeat.weekdayTue": "Tue",
1182 "heartbeat.weekdayWed": "Wed",
1183 "heartbeat.weekdayThu": "Thu",
1184 "heartbeat.weekdayFri": "Fri",
1185 "heartbeat.weekdaySat": "Sat",
1186 "heartbeat.weekdaySun": "Sun",
1187 "heartbeat.monthOption": "Month {n}",
1188 "heartbeat.dayOption": "Day {n}",
1189 "heartbeat.fieldApprovalMode": "Approval mode",
1190 "heartbeat.permissionReadOnly": "Read only",
1191 "heartbeat.permissionWorkspaceWrite": "Workspace access",
1192 "heartbeat.permissionFullAccess": "Full access",
1193 "heartbeat.permissionReadOnlyHint": "Read files; changes and external actions require your approval",
1194 "heartbeat.permissionWorkspaceWriteHint": "Read and write the task workspace; access outside it requires your approval",
1195 "heartbeat.permissionFullAccessHint": "Access other locations on this computer; ordinary actions do not ask",
1196 "heartbeat.notifyChannels": "Push to bot channels",
1197 "heartbeat.notifyChannelsOn": "On",
1198 "heartbeat.notifyChannelsOff": "Off",
1199 "heartbeat.notifyChannelsOnHint": "AI output is streamed to connected Feishu/QQ bots",
1200 "heartbeat.notifyChannelsOffHint": "Only create a desktop conversation; do not push to bots",
1201 "heartbeat.fieldNewConversation": "Conversation mode",
1202 "heartbeat.newConversationEachRunOn": "New conversation each run",
1203 "heartbeat.newConversationEachRunOff": "Reuse same conversation",
1204
1205 "status.jobs": "{n} running",
1206 "status.jobsTitle": "Background jobs",
1207 "status.extensionTitle": "Extension status",
1208 "status.jobStop": "Stop",
1209 "status.jobStopping": "Stopping…",
1210 "status.jobStopFailed": "Failed to stop the background job.",
1211 "status.jobOpenTask": "Open task",
1212 "status.runtimeRunning": "Turn running",
1213 "status.runtimePendingPrompt": "Waiting for input",
1214 "runtime.workspaceConflictTitle": "This workspace is busy",
1215 "runtime.workspaceConflictBadge": "Workspace writer",
1216 "runtime.workspaceConflictLocal": "{title}: {label}",
1217 "runtime.workspaceConflictExternal": "Another Reasonix window is currently writing to this workspace.",
1218 "runtime.workspaceConflictNote": "This task resumes after the conflicting file or workspace-wide write.",
1219 "runtime.unknownTask": "Another task",
1220 "runtime.otherConversation": "Another conversation",
1221 "runtime.backgroundQuestion": "{title} is waiting for your answer",
1222 "runtime.backgroundApproval": "{title} is waiting for your approval",
1223 "runtime.revealWriter": "Open writing task",
1224 "runtime.revealWriterDesc": "Switch to the exact task that currently owns the workspace writer.",
1225 "runtime.openWorktree": "Continue in a worktree",
1226 "runtime.openWorktreeDesc": "Cancel this wait and continue safely in an isolated worktree.",
1227 "runtime.cancelWait": "Stop waiting",
1228 "runtime.cancelWaitDesc": "Cancel this turn without affecting the task that owns the workspace.",
1229 "runtime.closeTitle": "Handle active work before closing",
1230 "runtime.closeMeta": "This task still has background jobs and may also have a running turn or pending prompt.",
1231 "runtime.returnToTask": "Return to task",
1232 "runtime.closeCancelDesc": "Return to the task without changing anything.",
1233 "runtime.keepRunning": "Close and move to background",
1234 "runtime.keepRunningDesc": "Close the tab and keep its jobs running under Background jobs.",
1235 "runtime.stopAndClose": "Stop all activity and close",
1236 "runtime.stopAndCloseDesc": "Wait for the turn and processes to exit, then close the tab.",
1237 "runtime.closeFailed": "The task could not be closed because active work has not stopped.",
1238 "status.workspaceTitle": "Current workspace",
1239 "status.gitBranchTitle": "Current Git branch",
1240 "status.yolo": "Full access",
1241 "status.yoloTitle": "Full access — runs as the current OS user without Reasonix filesystem or network sandboxing",
1242
1243 // approval modal
1244 "approval.planReady": "Plan ready",
1245 "approval.planReadyHint": "Review the plan above",
1246 "approval.startExecution": "Start execution",
1247 "approval.startExecutionDesc": "Leave plan mode and begin executing the plan.",
1248 "approval.revisePlan": "Revise plan",
1249 "approval.revisePlanDesc": "Tell Reasonix what should change before execution.",
1250 "approval.exitPlanWithoutExecution": "Exit without executing",
1251 "approval.exitPlanWithoutExecutionDesc": "Leave plan mode without running the current plan or changing the workspace.",
1252 "approval.revisePlanPlaceholder": "Tell me what should be updated in the plan...",
1253 "approval.sendRevision": "Send update",
1254 "approval.toolPending": "Allow tool call",
1255 "approval.recoveryPending": "Action needs confirmation",
1256 "approval.recoveryPlanChangePending": "The execution plan needs your decision",
1257 "approval.recoveryDecisionScope": "Scope choice",
1258 "approval.recoveryDecisionStrategy": "Strategy choice",
1259 "approval.recoveryAdoptPlan": "Adopt the new plan and continue",
1260 "approval.recoveryAdoptPlanDesc": "Accept the plan changes below and let Auto continue from the new plan.",
1261 "approval.recoveryAdjustPlan": "Do not adopt; tell Auto how to adjust",
1262 "approval.recoveryAdjustPlanDesc": "Open a feedback field. Nothing changes until you submit your guidance.",
1263 "approval.recoveryPlanDeltaLabel": "Plan changes",
1264 "approval.recoveryPlanRemoved": "Removed from the previous plan",
1265 "approval.recoveryPlanAdded": "Added to the new plan",
1266 "approval.recoveryPlanGuidanceSubmit": "Submit adjustment guidance",
1267 "approval.recoveryContinue": "Continue once",
1268 "approval.recoveryContinueDesc": "Run this action once. Similar actions will still ask.",
1269 "approval.recoveryContinueTask": "Continue and remember for this task",
1270 "approval.recoveryContinueTaskDesc": "Run this action and reuse the exact authorization shown below during this task.",
1271 "approval.recoveryTaskGrant": "Remember this kind of action for this task",
1272 "approval.recoveryTaskGrantDesc": "Only the same operation type and target boundary are reused. Broader or higher-risk actions still ask.",
1273 "approval.recoveryTaskGrantScope": "Will allow:",
1274 "approval.recoveryRevise": "Try another approach (recommended)",
1275 "approval.recoveryReviseDesc": "Skip this action and let Auto keep working another way.",
1276 "approval.recoveryGuidanceTrigger": "Have specific requirements? Tell Auto",
1277 "approval.recoveryGuidanceLabel": "Requirements for another approach",
1278 "approval.recoveryGuidancePlaceholder": "For example: only edit the current file and do not push to a remote.",
1279 "approval.recoveryGuidanceSubmit": "Try with these requirements",
1280 "approval.recoveryReasonRisk": "This action may affect an external system or be difficult to undo, so Auto paused.",
1281 "approval.recoveryReasonScope": "This action would expand the change scope, so Auto paused.",
1282 "approval.recoveryReasonStrategy": "Reasonix is about to try a different approach.",
1283 "approval.recoveryReasonUncertain": "Reasonix cannot confirm this action is safe, so it paused for your choice.",
1284 "approval.recoverySummaryLabel": "Action summary",
1285 "approval.recoveryTechnicalDetails": "Technical details",
1286 "approval.recoveryHideTechnicalDetails": "Hide technical details",
1287 "approval.recoveryFailed": "Failed: {summary}",
1288 "approval.recoveryDiagnosis": "Diagnosis: {diagnosis}",
1289 "approval.recoveryNext": "Next: {action}",
1290 "approval.recoveryWhy": "Why confirm: {why}",
1291 "approval.recoverySource": "Source: {agent}",
1292 "approval.recoveryFailedLabel": "Failure",
1293 "approval.recoveryDiagnosisLabel": "Diagnosis",
1294 "approval.recoveryWhyLabel": "Why confirm",
1295 "approval.recoverySourceLabel": "Source",
1296 "approval.recoveryNextLabel": "Will run",
1297 "approval.modeSwitchPendingHint": "Approval mode was relaxed — this pending request still needs your decision.",
1298 "approval.toolLabelExitPlan": "Plan approval",
1299 "approval.allowOnceDesc": "Allow this call only; the next one asks again.",
1300 "approval.allowRuleSessionDesc": "Allow matching calls until this session ends; resets on restart.",
1301 "approval.denyDesc": "Reject this call; the model sees the refusal and continues.",
1302 "approval.allowSandboxEscapeSessionDesc": "Run follow-up commands in the real environment for the rest of this session.",
1303 "approval.allowConfigWriteSessionDesc": "Allow future writes to Reasonix-managed config files for the rest of this session.",
1304 "approval.details": "Details",
1305 "approval.hideDetails": "Hide",
1306 "approval.deny": "Deny",
1307 "approval.allowOnce": "Allow once",
1308 "approval.writeAccessPending": "Extend write access",
1309 "approval.submitFailed": "The action could not be submitted. Try again, or stop the task.",
1310 "approval.writeAccessOnce": "Allow once",
1311 "approval.writeAccessOnceDesc": "Allow this write for this call only. The next one asks again.",
1312 "approval.writeAccessSession": "Allow these directories this session",
1313 "approval.writeAccessSessionDesc": "Keep these directories writable until this session ends.",
1314 "approval.writeAccessHomeWarning": "This grants write access to your entire home directory. Reasonix session and runtime-state files stay protected.",
1315 "approval.writeAccessMergedHint": "This choice also authorizes the current matching tool operation.",
1316 "approval.writeAccessDirsLabel": "Directories",
1317 "approval.writeAccessJustificationLabel": "Why",
1318 "approval.allowRuleSession": "Allow matching for this session",
1319 "decision.confirm": "Confirm",
1320 "decision.selectHint": "↑↓ or number to select · Enter to confirm",
1321 "decision.stopTask": "Stop task",
1322 "decision.showFullDescription": "View full description",
1323 "decision.hideFullDescription": "Collapse full description",
1324 "approval.allowSandboxEscapeSession": "Use real environment for this session",
1325 "approval.allowConfigWriteSession": "Allow Reasonix config writes this session",
1326 "approval.toolLabelBash": "bash",
1327 "approval.toolLabelEditFile": "edit file",
1328 "approval.toolLabelWriteFile": "write file",
1329 "approval.toolLabelMultiEdit": "multi edit",
1330 "approval.toolLabelMoveFile": "move file",
1331 "approval.toolLabelWebFetch": "web fetch",
1332 "approval.toolLabelRunSkill": "run skill",
1333 "approval.toolLabelRemember": "remember",
1334 "approval.toolLabelForget": "forget",
1335 "approval.toolLabelSandboxEscape": "bash sandbox escape",
1336 "approval.toolLabelPlanModeReadOnly": "plan-mode read-only command",
1337 "approval.memorySaveUpdate": "Save/update memory",
1338 "approval.memoryBodyLabel": "body",
1339 "approval.memoryArchivePrefix": "Archive memory ",
1340 "approval.planModeBashTrustSubject": "Trust {prefix} as a read-only command prefix while planning\nCommand: {command}",
1341 "approval.planModeBashTrustReason": "This command requests access outside the active permission preset. Confirm only the precise scope required for this operation.",
1342 "approval.dynamicBashReason": "This command requests access outside the active permission preset. Review the target and approve only the precise scope required.",
1343 "approval.matchedPermissionRule": "Matched permission rule: {rule}.",
1344 "approval.sandboxEscapeSubjectFallback": "run shell command unconfined once",
1345 "approval.sandboxEscapeSubjectPrefix": "run unconfined once: ",
1346 "approval.sandboxEscapeWrapReason": "Windows does not provide an OS-level Bash sandbox for this command. Run it unconfined one time? This bypasses OS isolation for this command only.",
1347 "approval.sandboxEscapeRuntimeReason": "The OS sandbox could not start this command. Run it unconfined one time? This bypasses OS isolation for this command only.",
1348 "approval.toolLabelConfigWrite": "Reasonix config write",
1349 "approval.configWriteSubjectPrefix": "write Reasonix config: ",
1350 "approval.configWriteReason": "This write targets a Reasonix-managed configuration file outside the workspace. It can change providers, sandbox rules, permissions, and MCP servers for future sessions, so it needs your explicit approval.",
1351
1352 // ask card
1353 "ask.title": "Need your decision",
1354 "ask.questionProgress": "Question {progress}",
1355 "ask.back": "Back",
1356 "ask.next": "Next",
1357 "ask.customAnswer": "Other answer",
1358 "ask.customPlaceholder": "Type your own answer…",
1359 "ask.skipQuestion": "Skip this question",
1360
1361 // clear context confirmation
1362 "clearContext.title": "Clear current context",
1363 "clearContext.badge": "local only",
1364 "clearContext.prompt": "This deletes the current transcript from local history and keeps only the system prompt.",
1365 "clearContext.clear": "Clear context",
1366 "clearContext.cancelDesc": "Keep the current transcript and return to the composer.",
1367 "clearContext.clearDesc": "Select this option, then confirm again to run.",
1368 "clearContext.done": "Current context cleared",
1369 "clearContext.failed": "Could not clear current context",
1370
1371 // history drawer
1372 "history.title": "History",
1373 "history.trashTitle": "Trash",
1374 "history.deletedSection": "Deleted",
1375 "history.archivedConversations": "Archived conversations",
1376 "history.archiveExplanation": "Restore archived conversations to their original workspace or permanently delete them.",
1377 "history.backToTrash": "Back to trash",
1378 "history.legacyConversation": "Legacy conversation",
1379 "history.restoreComplete": "Restored {n} conversations",
1380 "history.purgeComplete": "Permanently deleted {n} conversations",
1381 "history.operationRefreshFailed": "Operation completed. Refresh failed; retry refreshing the list.",
1382 "history.trashPartialFailure": "Could not complete {n} conversations. Their entries are retained.",
1383 "history.emptyTrashConfirm": "Empty trash?",
1384 "history.purgeConfirm": "Permanently delete conversation?",
1385 "history.emptyTrashExplanation": "Permanently delete these {n} archived conversations. They cannot be restored in the app. Upgrade originals and independent backups are retained. Historical recovery is excluded.",
1386 "history.purgeExplanation": "“{name}” cannot be restored in the app after deletion. Upgrade originals and independent backups are retained.",
1387 "history.permanentlyDelete": "Permanently delete",
1388 "history.refreshTrash": "Refresh",
1389 "history.retryFailed": "Retry failed items",
1390 "history.noTrashMatches": "No matching conversations",
1391 "history.tryOtherSearch": "Try another search.",
1392 "history.emptyTrashHint": "Archived conversations appear here.",
1393 "history.previewReadOnly": "Read-only preview. No conversation runtime is started.",
1394 "history.purgePending": "Deletion incomplete; retry available",
1395 "history.recoveryWorkspace": "Choose the original workspace",
1396 "history.archivedSection": "Archived",
1397 "history.historicalSection": "Historical recovery",
1398 "history.legacyBadge": "Legacy",
1399 "history.branchBadge": "Branch",
1400 "history.previewRecovery": "Preview",
1401 "history.restoredRefreshFailed": "Restored. Refreshing the list failed; refresh to see the result.",
1402 "history.openRestored": "Restored. Open session",
1403 "history.recoveryReview": "Review required",
1404 "history.noArchivedSessions": "No archived sessions",
1405 "history.recoveryDescription": "Manage archived and deleted sessions. Restore archived sessions to the list; restore or permanently delete deleted sessions.",
1406 "history.empty": "No saved sessions yet.",
1407 "history.trashEmpty": "Trash is empty.",
1408 "history.namePlaceholder": "Session name…",
1409 "history.emptySession": "(empty session)",
1410 "history.current": "current",
1411 "history.open": "open",
1412 "history.deleted": "deleted",
1413 "history.turnOne": "{n} turn",
1414 "history.turnOther": "{n} turns",
1415 "history.indexing": "Indexing history",
1416 "history.confirmPurge": "Confirm permanent delete",
1417 "history.clearTrash": "Empty trash",
1418 "history.confirmClearTrash": "Confirm empty trash",
1419 "history.clearTrashMenu": "Empty trash…",
1420 "history.moveToTrash": "Move to trash",
1421 "history.confirmMoveToTrash": "Confirm move to trash",
1422 "history.restore": "Restore",
1423 "history.restoreSession": "Restore session",
1424 "history.legacyCleanupComplete": "Moved {n} unused sessions to Trash.",
1425 "history.viewTrash": "View Trash",
1426 "history.legacyPlaceholder": "Legacy session placeholder",
1427 "history.legacyCleanupPending": "{n} legacy sessions still need verification.",
1428 "history.recheckLegacyCleanup": "Recheck",
1429 "history.purge": "Delete permanently",
1430 "history.purgeSession": "Delete permanently…",
1431 "history.rename": "Rename",
1432 "history.preview": "preview",
1433 "history.previewEmpty": "No visible messages in this session.",
1434 "history.readOnlyHint": "Model output is running. History is read-only until the turn finishes.",
1435 "history.searchPlaceholder": "Search sessions…",
1436 "history.filters": "History filters",
1437 "history.filterScope": "Scope",
1438 "history.filterAll": "All",
1439 "history.filterProject": "Project",
1440 "history.filterGlobal": "Global",
1441 "history.filterStatus": "Status",
1442 "history.filterCurrent": "Current",
1443 "history.filterOpen": "Open",
1444 "history.filterActivity": "Activity",
1445 "history.filterDeletedAt": "Deleted",
1446 "history.noResults": "No matching sessions.",
1447 "history.today": "Today",
1448 "history.yesterday": "Yesterday",
1449 "history.older": "Older",
1450 "history.openSession": "Open session",
1451 "history.channel": "Channel",
1452 "history.channelReadOnly": "Read-only channel",
1453 "history.failedOpenProject": "Cannot open session, \"{name}\" does not exist: {path}",
1454 "history.failedOpenSession": "Cannot open session",
1455 "history.failedLoadHistory": "Failed to load conversation history. Previous content was kept when available — retry to try again.",
1456 "history.missingWorkspaceRoot": "Cannot open session because its workspace path is missing.",
1457 "history.selectSession": "Select a session to preview.",
1458 "history.trashSessionActions": "Trash session actions",
1459 "history.historySessionActions": "History session actions",
1460 "history.trashActions": "Trash actions",
1461 "history.systemRecoveryData": "System recovery data",
1462
1463 // session recovery (advanced History language — avoid exposing internal terms)
1464 "recovery.noticeSavedCopy": "The session changed on disk, so the unsaved local transcript was kept as another saved version.",
1465 "recovery.noticeKeptCurrent": "Repeated save conflicts were detected, so the current version was saved separately.",
1466 "recovery.noticeAdopted": "The session changed on disk, so Reasonix adopted the newer transcript.",
1467 "recovery.noticeAdoptedCovered": "The session changed on disk, so Reasonix adopted the newer transcript; the local changes were already covered.",
1468 "recovery.inspectLineage": "View versions",
1469 "recovery.lineageTitle": "Session versions",
1470 "recovery.lineageSummary": "{branches} versions · {unresolved} with unique content",
1471 "recovery.lineageEmpty": "No additional session versions.",
1472 "recovery.divergedToast": "Another unmerged session version was detected. All content has been preserved.",
1473 "recovery.failed": "Session recovery failed. Retry or reopen the session.",
1474 "recovery.failedPending": "Session recovery is pending. The current content did not overwrite the disk record; retry or export first.",
1475 "recovery.retry": "Retry recovery",
1476 "recovery.defaultVersion": "Default version",
1477 "recovery.alternateVersion": "Another version",
1478 "recovery.addVersionNote": "Add version note",
1479 "recovery.versionNotePlaceholder": "Optional note for this version…",
1480 "recovery.versionPreviewEmpty": "No preview available for this version.",
1481 "recovery.inUse": "in use",
1482 "recovery.chooseBranch": "Set as default version",
1483 "recovery.chooseBranchFailed": "Could not set the default version: {error}",
1484 "recovery.openVersion": "Open this version",
1485 "recovery.openVersionFailed": "Could not open this version: {error}",
1486 "recovery.noticeConcurrentWriter": "Another Reasonix window or process added to this conversation. Its content is kept as a separate version; use View versions to switch.",
1487 "recovery.noticeHeadSwitched": "Opened the newest version of this conversation. Other saved versions are available in View versions.",
1488 "recovery.noticeHeadSelected": "This version is now the current version of the conversation.",
1489 "recovery.headsSummary": "{branches} versions of this conversation",
1490 "recovery.currentVersion": "Current version",
1491 "recovery.makeCurrent": "Make this the current version",
1492 "recovery.headKind.main": "original line",
1493 "recovery.headKind.fork": "forked here",
1494 "recovery.headKind.rewind": "rewound",
1495 "recovery.headKind.concurrent": "from another window",
1496 "recovery.retireCovered": "Remove covered versions ({n})",
1497 "recovery.retireCoveredDone": "{removed} covered version(s) removed · {busy} still in use",
1498 "recovery.retireCoveredFailed": "Could not remove covered versions: {error}",
1499
1500 // project tree
1501 "projectTree.workspaceTitle": "Projects",
1502 "projectTree.pinnedTitle": "Pinned",
1503 "projectTree.searchPlaceholder": "Search projects or sessions",
1504 "projectTree.indexing": "Organizing history",
1505 "projectTree.indexingProgress": "Organizing history ({done}/{total})",
1506 "projectTree.repairActive": "Repairing history, {count} remaining",
1507 "projectTree.repairDeferred": "History repair will retry later",
1508 "projectTree.repairBlocked": "{count} histories need repair",
1509 "projectTree.recovered": "Recovered",
1510 "projectTree.forkedFrom": "Forked from {source}",
1511 "projectTree.recoveryOnly": "Recoverable",
1512 "projectTree.rebuildCatalog": "Rebuild index",
1513 "projectTree.loadMore": "Load more",
1514 "projectTree.expandDisplay": "Show more",
1515 "projectTree.loadingMore": "Loading…",
1516 "projectTree.loadFailedRetry": "Load failed. Retry",
1517 "projectTree.loadMoreResults": "Load more results",
1518 "projectTree.expandGroup": "Show more in {name}",
1519 "projectTree.retryGroup": "Retry loading {name}",
1520 "projectTree.newTopic": "New session",
1521 "projectTree.createWorktree": "Create isolated worktree",
1522 "projectTree.createWorktreeHint": "Create a separate Git branch and worktree so sessions can write in parallel safely.",
1523 "projectTree.creatingWorktree": "Creating isolated workspace…",
1524 "projectTree.isolatedWorktree": "Isolated Git worktree",
1525 "worktree.mergeTitle": "Merge Worktree Branch",
1526 "worktree.mergeSubtitle": "Review changes and safely merge back into the base branch",
1527 "worktree.mergeAction": "Merge to Base",
1528 "worktree.mergeButtonTooltip": "Compare and merge changes from this isolated worktree back into the base branch",
1529 "worktree.inspecting": "Inspecting worktree diff and conflicts...",
1530 "worktree.filesChanged": "Files Changed",
1531 "worktree.insertions": "Insertions",
1532 "worktree.deletions": "Deletions",
1533 "worktree.cleanMergeReady": "Clean and ready for safe merge",
1534 "worktree.alreadyMerged": "This worktree commit is already in the target branch; cleanup can be retried safely",
1535 "worktree.aheadBehind": "{ahead} ahead · {behind} behind",
1536 "worktree.changedFilesList": "Changed Files",
1537 "worktree.optionAutoCommit": "Auto-commit uncommitted changes in worktree",
1538 "worktree.optionAutoCommitHint": "Off by default. Reasonix will stage all non-ignored changes, commit them, and run conflict checks again.",
1539 "worktree.cleanupBlocked": "Cleanup will preserve this worktree",
1540 "worktree.confirmMerge": "Confirm Merge",
1541 "worktree.merging": "Merging...",
1542 "worktree.mergeFailed": "Merge failed",
1543 "worktree.mergeUnavailable": "Merge-Back is unavailable for this worktree",
1544 "worktree.stateChanged": "The branch or workspace changed during confirmation. Review the refreshed inspection and confirm again.",
1545 "worktree.mergeReceiptInvalid": "The merge completed without a complete cleanup receipt. The worktree was preserved.",
1546 "worktree.cleanupViewBlocked": "The merge completed, but the worktree view could not be closed. The worktree and branch were preserved.",
1547 "worktree.navigationChangedPreserved": "The merge completed, but a newer navigation took priority. The worktree and branch were preserved.",
1548 "worktree.recoveryRetained": "Changes merged. A registered recovery worktree and its branch were retained at {path}.",
1549 "worktree.copyRecoveryPath": "Copy recovery path",
1550 "worktree.recoveryPathCopied": "Recovery path copied.",
1551 "worktree.mergeAndCleanupDone": "Changes merged and the clean temporary worktree was removed.",
1552 "worktree.cleanupPreserved": "Changes merged. Cleanup was blocked, so the worktree and branch were preserved.",
1553 "worktree.mergeDoneCleanupFailed": "Changes merged, but cleanup was not completed. The recoverable worktree was preserved:",
1554 "projectTree.worktreeCreated": "Isolated workspace created on {branch}.",
1555 "projectTree.worktreeCreatedDirty": "Isolated workspace created on {branch}. Uncommitted source changes were not copied.",
1556 "projectTree.renameTopic": "Rename session",
1557 "projectTree.aiRenameTopic": "AI rename session",
1558 "projectTree.aiRenamingTopic": "AI renaming…",
1559 "projectTree.aiRenameDone": "Renamed to “{title}”",
1560 "projectTree.sessionError.targetNotFound": "This session no longer exists or was removed.",
1561 "projectTree.sessionError.noMessages": "There are no user messages to use for a title yet.",
1562 "projectTree.sessionError.ambiguousTarget": "Select a specific session before using this action.",
1563 "projectTree.sessionError.runtimeNotOpen": "Open this session before using this action.",
1564 "projectTree.sessionError.runtimeNotReady": "This session is still loading. Try again shortly.",
1565 "projectTree.sessionError.remoteDisconnected": "The remote session is disconnected.",
1566 "projectTree.sessionError.titleConflict": "The session title changed while AI rename was running. Try again.",
1567 "projectTree.sessionError.targetChanged": "This session moved or changed state. Refresh and try again.",
1568 "projectTree.sessionError.archived": "Restore this session before using this action.",
1569 "projectTree.sessionError.operationBusy": "This session is already performing that operation.",
1570 "projectTree.sessionError.providerUnavailable": "This session's model is unavailable. Check its model or extension settings.",
1571 "projectTree.sessionError.staleCursor": "The session content changed. Reload it and try again.",
1572 "projectTree.sessionError.unsupported": "This session does not support that action yet.",
1573 "projectTree.sessionError.failed": "Unable to complete this session operation. Try again.",
1574 "projectTree.newGroup": "New group",
1575 "projectTree.renameGroup": "Rename group",
1576 "projectTree.deleteGroup": "Delete group",
1577 "projectTree.removeFromGroup": "Remove from group",
1578 "projectTree.pinTopic": "Pin conversation",
1579 "projectTree.unpinTopic": "Unpin conversation",
1580 "projectTree.archiveTopic": "Archive to trash",
1581 "projectTree.archiveConversation": "Archive conversation",
1582 "projectTree.renameProject": "Rename display name",
1583 "projectTree.renameProjectWorkbench": "Rename project",
1584 "projectTree.justNow": "just now",
1585 "projectTree.previously": "previously",
1586 "projectTree.status.thinking": "thinking",
1587 "runtime.finishing": "Finishing up",
1588 "runtime.unknown": "Disconnected / awaiting state sync",
1589 "runtime.background": "Background jobs running ({count})",
1590 "runtime.queued": "Queued",
1591 "runtime.checkReceipt": "Check send result",
1592 "runtime.unconfirmed": "Send result unconfirmed",
1593 "projectTree.status.streaming": "responding",
1594 "projectTree.status.waitingConfirmation": "awaiting",
1595 "projectTree.status.backgroundJob": "background job",
1596 "projectTree.status.paused": "paused",
1597 "projectTree.status.awaitingDelivery": "need checks",
1598 "projectTree.status.error": "error",
1599 "projectTree.status.divergedRecovery": "multiple recovery branches",
1600 "projectTree.removeProject": "Remove from sidebar",
1601 "projectTree.confirmRemoveProject": "Confirm remove from sidebar",
1602 "projectTree.removeProjectShort": "Remove",
1603 "projectTree.confirmRemoveProjectShort": "Confirm remove",
1604 "projectTree.copyPath": "Copy path",
1605 "projectTree.revealInFinder": "Show in Finder",
1606 "projectTree.revealInExplorer": "Show in File Explorer",
1607 "projectTree.revealInFileManager": "Show in file manager",
1608 "projectTree.topicActions": "Session actions",
1609 "projectTree.projectActions": "Project actions",
1610 "projectTree.colorDefault": "Default",
1611 "projectTree.colorRed": "Red",
1612 "projectTree.colorOrange": "Orange",
1613 "projectTree.colorAmber": "Amber",
1614 "projectTree.colorGreen": "Green",
1615 "projectTree.colorTeal": "Teal",
1616 "projectTree.colorBlue": "Blue",
1617 "projectTree.colorPurple": "Purple",
1618 "projectTree.colorPink": "Pink",
1619 "projectTree.emptyNoMatch": "No matching projects or sessions",
1620 "projectTree.emptyNoProjects": "No projects yet",
1621 "projectTree.newTopicTooltip": "New session",
1622 "projectTree.addProjectTooltip": "Add new project",
1623 "projectTree.remoteOpenWindow": "Open in remote window",
1624 "projectTree.remoteStopServer": "Stop remote server",
1625 "projectTree.remoteUnpin": "Unpin remote project",
1626 "projectTree.remoteConnection": "Remote connection",
1627 "projectTree.pinProject": "Pin project",
1628 "projectTree.unpinProject": "Unpin project",
1629 "projectTree.moreActions": "More actions",
1630 "projectTree.collapseAllWorkbench": "Collapse all",
1631 "projectTree.restoreCollapsedWorkbench": "Restore previous groups",
1632 "projectTree.sortCriteria": "Sort criteria",
1633 "projectTree.sortByCreatedAt": "Created time",
1634 "projectTree.sortByUpdatedAt": "Updated time",
1635 "projectTree.createBlankProject": "New blank project",
1636 "projectTree.useExistingFolder": "Use existing folder",
1637 "projectTree.collapseAllTooltip": "Collapse all projects",
1638 "projectTree.restoreCollapsedTooltip": "Restore previous view",
1639 "projectTree.remoteConnect": "Connect",
1640 "projectTree.remoteConnectFailed": "Connection failed — click to retry",
1641
1642 // memory drawer
1643 "memory.title": "Memory",
1644 "memory.summary": "{facts} background · {archives} archived · {docs} instruction files",
1645 "memory.summarySettings": "{facts} background · {archives} archived · {docs} instruction files · current workspace",
1646 "memory.unavailable": "Memory unavailable.",
1647 "memory.quickAdd": "Add instruction",
1648 "memory.whereToSave": "Instruction scope",
1649 "memory.notePlaceholder": "Standing rule or project convention…",
1650 "memory.remember": "Add",
1651 "memory.showStorage": "Storage location",
1652 "memory.hideStorage": "Hide location",
1653 "memory.storagePathLabel": "Saved under",
1654 "memory.instructionFiles": "Instruction files",
1655 "memory.instructionFilesHint": "These Markdown files stay in context. Put standing rules and project conventions here.",
1656 "memory.noDocs": "No REASONIX.md or AGENTS.md found. Add an instruction to create one.",
1657 "memory.savedMemories": "Background memory",
1658 "memory.addMemory": "Add instruction",
1659 "memory.addMemoryHint": "Append an always-on rule to the selected REASONIX.md or AGENTS.md instruction file.",
1660 "memory.scope.project": "Project",
1661 "memory.scope.global": "Global",
1662 "memory.scope.user": "Global",
1663 "memory.scope.local": "Local",
1664 "memory.scope.ancestor": "Ancestor",
1665 "memory.type.project": "Project context",
1666 "memory.type.user": "User preference",
1667 "memory.type.feedback": "Feedback",
1668 "memory.type.reference": "Reference",
1669 "memory.type.other": "Other",
1670 "memory.doc.projectTitle": "Project instructions",
1671 "memory.doc.projectHint": "Applies only to the current project and takes precedence over global instructions.",
1672 "memory.doc.userTitle": "Global instructions",
1673 "memory.doc.userHint": "Applies by default across projects; best for long-term personal preferences.",
1674 "memory.doc.localTitle": "Local instructions",
1675 "memory.doc.localHint": "Applies only on this machine; best for private rules that should not be committed.",
1676 "memory.doc.ancestorTitle": "Parent-directory instructions",
1677 "memory.doc.ancestorHint": "Inherited from a parent directory and applied to projects below it.",
1678 "memory.doc.customTitle": "Instruction file",
1679 "memory.doc.customHint": "A long-lived context file with a custom scope.",
1680 "memory.fallibleNote": "Background memory. Verify file, function, and flag references before relying on them.",
1681 "memory.searchPlaceholder": "Search title, slug, description, or body…",
1682 "memory.typeFilter": "Memory type filter",
1683 "memory.allTypes": "All",
1684 "memory.noMatches": "No memories match the current filters.",
1685 "memory.clearFilters": "Clear filters",
1686 "memory.noFacts": "Nothing saved yet. The agent writes these with the remember tool.",
1687 "memory.emptySavedTitle": "No background memory yet",
1688 "memory.emptySavedBody": "Agent-approved facts and confirmed candidates appear here. New facts default to this project.",
1689 "memory.suggestions": "Candidate suggestions",
1690 "memory.suggestionsHint": "Drafted from recent local history with project scope by default; nothing is written until you confirm.",
1691 "memory.scanSuggestions": "Scan history manually",
1692 "memory.refreshSuggestions": "Rescan history",
1693 "memory.suggestionsEmptyTitle": "Generate candidates from history",
1694 "memory.suggestionsEmptyBody": "Scan recent sessions for memories worth saving and repeated workflows worth packaging. Results are shown as drafts.",
1695 "memory.noSuggestionsTitle": "No high-confidence candidates yet",
1696 "memory.noSuggestionsBody": "Recent history did not contain a clear long-term memory or repeated workflow. Scan again later.",
1697 "memory.suggestionsGenerated": "Generated {time}",
1698 "memory.memoryCandidates": "Memory candidates",
1699 "memory.skillCandidates": "Skill candidates",
1700 "memory.skillCandidate": "Skill",
1701 "memory.confirmBeforeApply": "Only applies after confirmation.",
1702 "memory.saveAsMemory": "Save memory",
1703 "memory.createSkill": "Create skill",
1704 "memory.savedSuggestion": "Saved",
1705 "memory.createdSkillSuggestion": "Created",
1706 "memory.archivedMemories": "Archived memories",
1707 "memory.archivedHint": "Kept for traceability. Archived memories are not loaded or retrieved as active memory.",
1708 "memory.restoreArchived": "Restore",
1709 "memory.restoreArchivedHint": "Restores this fact as a new revision without replacing active memory.",
1710 "memory.archivedAt": "archived {time}",
1711 "memory.noArchivedMatches": "No archived memories match the current filters.",
1712 "memory.emptyArchivedTitle": "No archived memories",
1713 "memory.emptyArchivedBody": "When a memory is archived, it stops being active but remains here for audit and recovery.",
1714 "memory.links": "Memory links",
1715 "memory.noBody": "No body saved for this memory.",
1716 "memory.missingLinks": "{n} missing linked memory",
1717 "memory.appliesNow": "Changes apply in this session.",
1718 "memory.storedUnder": "stored under {dir}",
1719
1720 "memory.forget": "Archive",
1721 "memory.confirmForget": "Confirm archive",
1722 "memory.deadLink": "No memory named “{name}”",
1723
1724 "memory.filterPlaceholder": "Filter docs and facts…",
1725 "memory.noFilterMatch": "Nothing matches the current filter.",
1726 "memory.activity": "Recall activity",
1727 "memory.overridesTitle": "{count} scoped override",
1728 "memory.overrideExplanation": "Project memory “{project}” takes precedence over global memory “{global}” for this workspace.",
1729 "memory.freshness.fresh": "Fresh",
1730 "memory.freshness.current": "Current",
1731 "memory.freshness.stale": "Review",
1732 "memory.factId": "ID",
1733 "memory.revision": "Revision {revision}",
1734 "memory.updatedAt": "Updated {time}",
1735 "memory.revisionHistory": "Revision history",
1736 "memory.loadingRevisions": "Loading revisions…",
1737 "memory.noRevisions": "No earlier revisions.",
1738 "memory.restoreRevision": "Restore",
1739 "memory.recallTitle": "Last automatic recall",
1740 "memory.recallHint": "What Context Engine selected for the latest user turn and why.",
1741 "memory.noRecallQuery": "No user turn has been recalled yet",
1742 "memory.recallBudget": "{used} / {budget} characters used · {omitted} omitted",
1743 "memory.recallSuppressed": "Recall was suppressed: {reason}",
1744 "memory.noRecallHits": "No background memories were added to the latest turn.",
1745 "memory.instructionDiagnostics": "Instruction diagnostics",
1746 "memory.instructionPrecedence": "Priority {precedence} · {directory}",
1747 "memory.instructionImports": "Resolved imports",
1748 "memory.globalDirectory": "global scope",
1749
1750 // MCP elicitation prompts
1751 "mcp.app.open": "Open app",
1752 "mcp.app.linkTitle": "Open external link?",
1753 "mcp.app.linkMessage": "This MCP app wants to open {origin} in your browser. Allow links to this origin for this app instance?",
1754 "mcp.app.linkOpen": "Open link",
1755 "mcp.interaction.title": "MCP server needs your input",
1756 "mcp.interaction.modeForm": "form",
1757 "mcp.interaction.modeUrl": "link",
1758 "mcp.interaction.chooseOption": "Choose…",
1759 "mcp.interaction.submit": "Submit",
1760 "mcp.interaction.accept": "Accept",
1761 "mcp.interaction.decline": "Decline",
1762 "mcp.interaction.cancel": "Cancel",
1763 "mcp.interaction.actions": "MCP request actions",
1764 "mcp.interaction.link": "link",
1765 "mcp.interaction.unknownHost": "Unknown destination",
1766 "mcp.interaction.required": "Required: {label}",
1767 "mcp.interaction.invalidValue": "Invalid value: {label}",
1768 "mcp.interaction.reviewHint": "Review the request before submitting.",
1769 "mcp.interaction.urlHint": "Open the link, finish in your browser, then accept.",
1770 "mcp.interaction.urlOpenedHint": "Finish in your browser, then accept.",
1771 "mcp.interaction.openUrl": "Open {host}",
1772 "mcp.interaction.confirmOnly": "This server asks you to confirm the request.",
1773 "mcp.interaction.unsupportedSchema": "This server requested a form shape that this client cannot safely render. You can decline or cancel.",
1774 "mcp.interaction.formPrivacyHint": "Do not enter passwords, API keys, access tokens, or payment details in this form.",
1775 "mcp.interaction.fieldRequired": "This field is required.",
1776 "mcp.interaction.fieldInvalid": "Enter a valid value.",
1777 "mcp.interaction.fieldTooShort": "Enter at least {min} characters.",
1778 "mcp.interaction.fieldTooLong": "Enter no more than {max} characters.",
1779 "mcp.interaction.fieldBelowMinimum": "Enter a value of at least {min}.",
1780 "mcp.interaction.fieldAboveMaximum": "Enter a value no greater than {max}.",
1781 "mcp.interaction.fieldTooFewItems": "Select at least {min} options.",
1782 "mcp.interaction.fieldTooManyItems": "Select no more than {max} options.",
1783 "mcp.interaction.fieldUnsupported": "This field type is not supported and cannot be submitted safely.",
1784
1785 // settings drawer
1786 "settings.backToWorkspace": "Back to workspace",
1787 "settings.title": "Settings",
1788 "settings.loading": "Loading…",
1789 "settings.loadFailed": "Settings could not be loaded.",
1790 "settings.searchPlaceholder": "Search settings",
1791 "settings.searchClear": "Clear settings search",
1792 "settings.searchNoResults": "No matching settings",
1793 "settings.navGroup.preferences": "Preferences",
1794 "settings.navGroup.connections": "Connections",
1795 "settings.navGroup.capabilities": "Capabilities",
1796 "settings.navGroup.context": "Memory & context",
1797 "settings.navGroup.automation": "Automation & developer",
1798 "settings.navGroup.security": "Security & control",
1799 "settings.navGroup.application": "Application",
1800 "settings.tab.general": "General",
1801 "settings.models.preferences": "Model preferences",
1802 "settings.models.services": "Model services",
1803 "settings.tab.models": "Models",
1804 "settings.tab.providers": "Providers",
1805 "settings.tab.bots": "Bots",
1806 "settings.tab.capabilities": "MCP & Skills",
1807 "settings.tab.mcp": "MCP & Tools",
1808 "settings.tab.remote": "Remote SSH",
1809 "settings.tab.skills": "Agent Skills",
1810 "remote.tabHint": "SSH hosts & remote workspaces",
1811 "remote.hosts.title": "Remote SSH hosts",
1812 "remote.hosts.empty": "No remote hosts yet.",
1813 "remote.hosts.add": "Add host",
1814 "remote.hosts.import": "Import from ~/.ssh/config",
1815 "remote.hosts.importEmpty": "No importable aliases found.",
1816 "remote.hosts.importSelected": "Import selected",
1817 "remote.host.label": "Name",
1818 "remote.host.host": "Host",
1819 "remote.host.port": "Port",
1820 "remote.host.user": "User",
1821 "remote.host.identityFile": "Identity file",
1822 "remote.host.password": "Password (optional)",
1823 "remote.host.passwordHint": "Saved in Reasonix credentials, never in config.toml.",
1824 "remote.host.passwordSavedHint": "A password is saved. Leave this blank to keep it.",
1825 "remote.host.passwordRemoveHint": "The saved password will be removed when you save.",
1826 "remote.host.clearPassword": "Remove saved password",
1827 "remote.host.keepPassword": "Keep saved password",
1828 "remote.host.keyPassphrase": "Private key passphrase (optional)",
1829 "remote.host.keyPassphraseHint": "Used only to unlock an encrypted identity file.",
1830 "remote.host.keyPassphraseSavedHint": "A key passphrase is saved. Leave this blank to keep it.",
1831 "remote.host.keyPassphraseRemoveHint": "The saved key passphrase will be removed when you save.",
1832 "remote.host.clearKeyPassphrase": "Remove saved passphrase",
1833 "remote.host.keepKeyPassphrase": "Keep saved passphrase",
1834 "remote.host.credentialSavedPlaceholder": "Saved — leave blank to keep",
1835 "remote.host.useSSHConfig": "Use ~/.ssh/config for unset connection options",
1836 "remote.host.proxyJump": "Proxy jump",
1837 "remote.host.defaultWorkspace": "Default workspace",
1838 "remote.host.serveInstall": "Remote CLI install",
1839 "remote.host.credentialMode": "API key location",
1840 "remote.host.credentialModeRemote": "On the remote host",
1841 "remote.host.credentialModeLocalProxy": "Keep on this computer (tunneled)",
1842 "remote.host.save": "Save",
1843 "remote.host.cancel": "Cancel",
1844 "remote.host.edit": "Edit",
1845 "remote.host.remove": "Remove",
1846 "remote.host.removeConfirmTitle": "Remove SSH host?",
1847 "remote.host.removeConfirm": "Remove {host} and its Reasonix-saved SSH credentials? This cannot be undone.",
1848 "remote.connect": "Connect",
1849 "remote.connectAndOpen": "Connect & open",
1850 "remote.disconnect": "Disconnect",
1851 "remote.disconnectHost": "Disconnect {host}",
1852 "remote.openWorkspace": "Open Remote Web",
1853 "remote.legacyData.title": "Legacy Remote Workbench data",
1854 "remote.legacyData.summary": "The removed Remote Workbench left {count} mirror file(s), {size}, in the Reasonix data directory.",
1855 "remote.legacyData.trustPresent": "A saved provider-trust file is present.",
1856 "remote.legacyData.cleanMirrors": "Delete mirrors",
1857 "remote.legacyData.cleanTrust": "Delete trust file",
1858 "remote.legacyData.cleaning": "Deleting…",
1859 "remote.legacyData.clean": "Delete",
1860 "remote.legacyData.cleanTitle": "Delete legacy Remote Workbench data?",
1861 "remote.legacyData.cleanMirrorsConfirm": "Delete all remote session mirrors? The remote Serve keeps running and no current sessions are affected.",
1862 "remote.legacyData.cleanTrustConfirm": "Delete the saved Remote Workbench provider-trust file?",
1863 "remote.manageHosts": "Manage hosts",
1864 "remote.explorer": "Remote explorer",
1865 "remote.switcher.title": "Open a remote window",
1866 "remote.switcher.hosts": "SSH hosts",
1867 "remote.switcher.manage": "Manage SSH hosts…",
1868 "remote.statusBar.disconnected": "SSH · Disconnected",
1869 "remote.statusBar.summary": "{host} · {status}",
1870 "remote.status.failed": "Connection failed",
1871 "remote.status.connected": "Connected",
1872 "remote.status.connecting": "Connecting…",
1873 "remote.status.reconnecting": "Reconnecting…",
1874 "remote.status.degraded": "Degraded",
1875 "remote.status.pending_hostkey": "Confirm host key",
1876 "remote.status.pending_secret": "Waiting for credentials",
1877 "remote.status.stopped": "Disconnected",
1878 "remote.banner.reconnecting": "Connection lost — reconnecting (attempt {n})…",
1879 "remote.error.summary.connection_failed": "Reasonix could not connect to {host}. Check the network and SSH settings.",
1880 "remote.error.summary.auth_failed": "Authentication failed. Check the username, identity file, or password settings.",
1881 "remote.error.summary.host_key_rejected": "The host key was not accepted, so the connection was stopped.",
1882 "remote.error.summary.host_key_mismatch": "The host key differs from the previous record. Reasonix stopped the connection to protect you.",
1883 "remote.error.summary.degraded": "SSH is connected to {host}, but one or more remote services could not start.",
1884 "remote.error.timeout": "Connecting to {host} timed out. You can stop the current attempt and retry.",
1885 "remote.error.details": "View details",
1886 "remote.error.hostKeyDetails": "View key details",
1887 "remote.error.manage": "Manage host",
1888 "remote.error.retry": "Retry",
1889 "remote.error.stopAndRetry": "Stop and retry",
1890 "remote.error.retryAfterFix": "I fixed it, retry",
1891 "remote.error.close": "Close",
1892 "remote.error.dialog.title": "Remote connection details",
1893 "remote.error.hostKeyMismatch.title": "Remote host key changed",
1894 "remote.error.host": "Remote host",
1895 "remote.error.presentedFingerprint": "Presented fingerprint",
1896 "remote.error.knownHostRecords": "Conflicting known_hosts records",
1897 "remote.error.technicalDetails": "Technical details",
1898 "remote.fingerprint.title": "Unknown host key",
1899 "remote.fingerprint.body": "The host {host} presented a key Reasonix has not seen before. Accept it only if you trust this connection.",
1900 "remote.fingerprint.type": "Key type",
1901 "remote.fingerprint.sha256": "SHA256",
1902 "remote.fingerprint.accept": "Accept & continue",
1903 "remote.fingerprint.reject": "Reject",
1904 "remote.secret.password.title": "SSH password required",
1905 "remote.secret.password.body": "Enter the password for {host}. It is used for this connection only and is not saved.",
1906 "remote.secret.password.label": "SSH password",
1907 "remote.secret.passphrase.title": "Private key passphrase required",
1908 "remote.secret.passphrase.body": "Unlock the private key used for {host}. The passphrase is used for this connection only and is not saved.",
1909 "remote.secret.passphrase.identity": "Key: {identity}",
1910 "remote.secret.passphrase.label": "Private key passphrase",
1911 "remote.secret.cancel": "Cancel",
1912 "remote.secret.continue": "Continue",
1913 "remote.tab.files": "Files",
1914 "remote.tab.ports": "Ports",
1915 "remote.tab.server": "Server",
1916 "remote.tree.empty": "Empty directory",
1917 "remote.tree.loadError": "Failed to load: {err}",
1918 "remote.editor.edit": "Edit",
1919 "remote.editor.save": "Save",
1920 "remote.editor.saving": "Saving…",
1921 "remote.editor.binaryBlocked": "Binary file — not editable.",
1922 "remote.editor.truncatedBlocked": "File too large to edit (truncated preview).",
1923 "remote.editor.readOnlyDisconnected": "Disconnected — saving is disabled.",
1924 "remote.editor.conflictTitle": "File changed on remote",
1925 "remote.editor.conflictBody": "This file changed on the remote host since you opened it.",
1926 "remote.editor.reload": "Reload",
1927 "remote.editor.overwrite": "Overwrite",
1928 "remote.ports.empty": "No forwards.",
1929 "remote.ports.add": "Add forward",
1930 "remote.ports.localPort": "Local port",
1931 "remote.ports.remoteHost": "Remote host",
1932 "remote.ports.remotePort": "Remote port",
1933 "remote.ports.label": "Label",
1934 "remote.ports.remove": "Remove",
1935 "remote.server.workspace": "Workspace",
1936 "remote.server.openWeb": "Open Remote Web",
1937 "remote.server.stop": "Stop",
1938 "remote.server.providerHint": "Models, API keys, and sessions are managed by the Reasonix configuration on the remote server.",
1939 "remote.server.logs": "Logs",
1940 "remote.server.refreshLogs": "Refresh",
1941 "remote.server.state.ready": "Ready",
1942 "remote.server.state.starting": "Starting…",
1943 "remote.server.state.stopped": "Stopped",
1944 "remote.server.state.error": "Error",
1945 "settings.tab.subagents": "Subagents",
1946 "settings.tab.plugins": "Plugins",
1947 "settings.tab.memory": "Memory",
1948 "settings.tab.hooks": "Hooks",
1949 "settings.tab.diagnostics": "Diagnostics",
1950 "settings.tab.shortcuts": "Shortcuts",
1951 "settings.tab.network": "Network",
1952 "settings.tab.permissions": "Permissions",
1953 "settings.tab.sandbox": "Sandbox",
1954 "settings.tab.appearance": "Appearance",
1955 "settings.tab.storage": "Storage & paths",
1956 "settings.tab.browser": "Browser control",
1957 "settings.tab.updates": "About",
1958 "settings.tabSub.skills": "Reusable instructions, tools & workflows",
1959 "settings.tabSub.plugins": "Packages & diagnostics",
1960 "settings.tabSub.memory": "Project & global",
1961 "settings.tabSub.hooks": "Shell automation",
1962 "settings.tabSub.diagnostics": "Capabilities health",
1963 "settings.tabSub.shortcuts": "Keys & help",
1964 "diag.hint": "Read-only capability report. Static mode never starts MCP. Session runtime only reads the active tab Host.",
1965 "diag.includeRuntime": "Include current session runtime",
1966 "diag.refresh": "Refresh",
1967 "diag.copyJson": "Copy redacted JSON",
1968 "diag.copied": "Copied",
1969 "diag.copyFailed": "Could not copy to clipboard",
1970 "diag.errors": "Errors",
1971 "diag.warnings": "Warnings",
1972 "diag.infos": "Info",
1973 "diag.counts": "{skills} skills · {commands} commands · {hooks} hooks · {plugins} plugins · {mcp} MCP",
1974 "diag.issues": "Issues",
1975 "diag.noIssues": "No issues found",
1976 "diag.severity.error": "Errors",
1977 "diag.severity.warning": "Warnings",
1978 "diag.severity.info": "Info",
1979 "diag.gotoSettings": "Open settings",
1980 "diag.instructions": "Instructions",
1981 "diag.skills": "Skills",
1982 "diag.commands": "Commands",
1983 "diag.hooks": "Hooks",
1984 "diag.plugins": "Plugins",
1985 "diag.mcp": "MCP",
1986 "diag.no": "no",
1987 "settings.providerCount": "{n} providers",
1988 "settings.botNoConnections": "No connections",
1989 "settings.botConnectionCount": "{n} connections",
1990 "settings.botDisabledWithConnections": "Bot off · {n} connections",
1991 "settings.appearanceMeta": "theme packs · color mode · text · fonts",
1992 "settings.updatesMeta": "version · privacy · feedback",
1993 "settings.shortcutsTitle": "Keyboard shortcuts",
1994 "settings.shortcutsHint": "Customize desktop shortcuts from one shared source. The help sheet and active handlers use these same bindings.",
1995 "settings.shortcutsResetAll": "Reset all shortcuts",
1996 "settings.shortcutsReset": "Reset",
1997 "settings.shortcutsRecording": "Press keys",
1998 "settings.shortcutsConflict": "{action} conflicts with {conflict}. Choose another shortcut.",
1999 "settings.shortcutsEnterOnly": "{action} only supports Enter with optional modifier keys.",
2000 "settings.closeBehavior": "When closing window",
2001 "settings.closeBehaviorHint": "Choose whether Reasonix keeps running after its main window closes.",
2002 "settings.closeBehaviorUnavailable": "The system tray is unavailable; closing this time will quit Reasonix.",
2003 "settings.closeBehavior.background": "Keep running",
2004 "settings.closeBehavior.quit": "Quit Reasonix",
2005 "settings.sessionExperience": "Session experience",
2006 "settings.sessionExperienceHint": "Choose how the work process appears while a task runs and after it finishes.",
2007 "settings.sessionExperience.standard": "Standard",
2008 "settings.sessionExperience.deep": "Deep",
2009 "settings.sessionExperience.standardHint": "Show the work process while running, then collapse it when complete.",
2010 "settings.sessionExperience.deepHint": "Show the full work process live and keep it expanded when complete.",
2011 "settings.statusBarStyle": "Bottom status bar style",
2012 "settings.statusBarStyleHint": "Choose the compact visual style used for session status.",
2013 "settings.statusBarStyle.icon": "Icon version",
2014 "settings.statusBarStyle.text": "Text version",
2015 "settings.statusBarItems": "Status bar items",
2016 "settings.statusBarItemsHint": "Choose which items to show, then drag the handle or use the arrows to reorder them.",
2017 "settings.statusBarItemsSummary": "{visible}/{total} shown",
2018 "settings.statusBarItemsExpand": "Expand status bar items",
2019 "settings.statusBarItemsCollapse": "Collapse status bar items",
2020 "settings.statusBarItemsVisible": "Shown · {count}",
2021 "settings.statusBarItemsHidden": "Hidden · {count}",
2022 "settings.statusBarItemsShowAll": "Show all",
2023 "settings.statusBarItemsRestoreDefault": "Restore default",
2024 "settings.statusBarItemsHiddenEmpty": "Hidden items will appear here",
2025 "settings.statusBarItemsHiddenEmptyHint": "Clear an item on the left, or drag it here to hide it.",
2026 "settings.statusBarItem.workspace": "Workspace and branch",
2027 "settings.statusBarItem.drag": "Drag to move {label}",
2028 "settings.statusBarItem.moveUp": "Move {label} up",
2029 "settings.statusBarItem.moveDown": "Move {label} down",
2030 "settings.providers": "Providers",
2031 "settings.modelTab.stats": "Usage stats",
2032 "settings.enabledModels": "Enabled models",
2033 "settings.modelList": "Model list",
2034 "settings.modelsRequireKey": "Set a key before selecting these models.",
2035 "settings.defaultModel": "Default model",
2036 "settings.plannerModel": "Dedicated planner model",
2037 "settings.imageUnderstandingModel": "Image understanding model",
2038 "settings.webSearchModel": "Web search",
2039 "settings.webSearchModelUnavailable": "Assigned search model unavailable; no other account will be used.",
2040 "settings.webSearchModelOverride": "Project override: {model} is effective; changes here save the global setting.",
2041 "settings.webSearchModelEmpty": "No search connections available.",
2042 "settings.webSearchModelConnections": "Model services",
2043 "settings.webSearchModelAutomatic": "Selected automatically per conversation",
2044 "settings.plannerNone": "Follow conversation model",
2045 "settings.subagentModel": "Subagent model",
2046 "settings.subagentModelFollowHint": "Use the parent agent model when the task starts.",
2047 "settings.subagentAdvanced": "Advanced execution settings",
2048 "settings.subagentModelDefault": "Follow parent agent model",
2049 "settings.subagentEffort": "Subagent effort",
2050 "settings.subagentEffortDefault": "auto (provider default)",
2051 "settings.subagentDepth": "Subagent nesting depth",
2052 "settings.subagentDepthHint": "Controls whether a first-layer subagent may dispatch one more reviewer or worker subagent.",
2053 "settings.subagentDepthOne": "1 layer",
2054 "settings.subagentDepthTwo": "2 layers",
2055 "settings.subagentConcurrency": "Subagent concurrency",
2056 "settings.subagentConcurrencyHint": "Max concurrent sub-agents per session (task, fleet, profile skills). Default 6; range 1–32.",
2057 "settings.parallelWriters": "Parallel writers",
2058 "settings.parallelWritersHint": "Max concurrent writer sub-agents with non-overlapping write_paths. Default 3; cannot exceed total concurrency.",
2059 "subagents.readOnly": "Read-only",
2060 "subagents.readOnlyOn": "Read-only",
2061 "subagents.readOnlyOff": "Writable",
2062 "subagents.readOnlyHint": "Read-only profiles strip writer tools. Existing profiles default to writable.",
2063 "settings.defaultToolApprovalMode": "New session permissions",
2064 "settings.defaultToolApprovalModeHint": "New sessions default to Workspace access. This setting only affects new sessions; choose the current session mode from the composer.",
2065 "settings.defaultToolApprovalMode.read-only": "Read only",
2066 "settings.defaultToolApprovalMode.workspace-write": "Workspace access",
2067 "settings.defaultToolApprovalMode.danger-full-access": "Full access",
2068 "settings.reasoningLanguage": "Thinking language",
2069 "settings.reasoningLanguageHint": "Affects visible reasoning only. Auto anchors clear Chinese prompts; referenced context is ignored.",
2070 "settings.reasoningLanguage.auto": "Auto",
2071 "settings.reasoningLanguage.zh": "中文",
2072 "settings.reasoningLanguage.en": "English",
2073 "settings.compactRatio": "Automatic compaction threshold",
2074 "settings.compactRatioHint": "Global default · usually leave unchanged",
2075 "settings.compactRatioImpact": "Lower values compact sooner and may reduce prompt-cache reuse.",
2076 "settings.compactRatioProjectOverride": "The active project overrides this global default; its effective threshold is {percent}%.",
2077 "settings.compactRatioCustom": "Custom threshold",
2078 "settings.compactRatioCustomOption": "Custom threshold…",
2079 "settings.compactRatioCustomPlaceholder": "Enter percentage",
2080 "settings.compactRatioApply": "Apply",
2081 "settings.compactRatioCustomAria": "Custom compaction threshold percentage",
2082 "settings.compactRatioPreset.70": "70% · Active",
2083 "settings.compactRatioPreset.80": "80% · Recommended",
2084 "settings.compactRatioPreset.85": "85% · Late",
2085 "settings.compactRatioPresetEffect.70": "Release context sooner",
2086 "settings.compactRatioPresetEffect.80": "Balance continuity and cache reuse",
2087 "settings.compactRatioPresetEffect.85": "Keep more context",
2088 "settings.sound": "Sound",
2089 "settings.soundHint": "Background music and notification sounds",
2090 "settings.soundStatus.allOff": "All off",
2091 "settings.soundStatus.enabled": "Enabled",
2092 "settings.soundStatus.custom": "Custom",
2093 "settings.soundExpand": "Expand sound settings",
2094 "settings.soundCollapse": "Collapse sound settings",
2095 "settings.notificationSound": "Notification sounds",
2096 "settings.notificationVolume": "Notification volume",
2097 "settings.notificationSoundSuccess": "Generation complete",
2098 "settings.notificationSoundAttention": "Awaiting response",
2099 "settings.notificationSound.synth": "Synthesized",
2100 "settings.notificationSound.off": "Off",
2101 "settings.notificationSound.positive": "Positive Notification",
2102 "settings.notificationSound.correct": "Correct Answer Tone",
2103 "settings.notificationSound.start": "Interface Start",
2104 "settings.notificationSound.back": "Interface Back",
2105 "settings.notificationSoundPreview": "Preview",
2106 "settings.keySet": "key set",
2107 "settings.noKey": "no key",
2108 "settings.noKeyRequired": "no key required",
2109 "settings.confirmDeleteProvider": "Confirm delete provider",
2110 "settings.addProvider": "+ Add provider",
2111 "settings.removeProviderAccess": "Remove access",
2112 "settings.confirmRemoveProviderAccess": "Confirm remove access",
2113 "settings.upgradeRecommendedProtocol": "Upgrade to recommended protocol",
2114 "settings.providerAccess": "Provider access",
2115 "settings.providerAccessHint": "Providers appear here after you add them. Only saved enabled models appear in the model picker.",
2116 "settings.providerAccessEmptyTitle": "No providers added yet",
2117 "settings.builtinProvider": "built-in",
2118 "settings.providerLabel.deepseek": "DeepSeek Official",
2119 "settings.providerLabel.opencodeGo": "OpenCode Go",
2120 "settings.providerLabel.opencodeZen": "OpenCode Zen",
2121 "settings.fetchModels": "Refresh models",
2122 "settings.saveEnabledModels": "Save enabled models",
2123 "settings.modelCandidates": "Discovered models",
2124 "settings.modelCandidatesSelected": "{n} selected",
2125 "settings.visionModel": "Image input",
2126 "settings.modelCapabilitiesAria": "Input capabilities for {model}",
2127 "settings.textInput": "Text",
2128 "settings.imageInputUnknown": "Image capability unknown",
2129 "settings.imageInputUnsupported": "No image input",
2130 "settings.providerCapabilities": "Service capabilities",
2131 "settings.recommended": "Recommended",
2132 "settings.serverWebSearch": "Server-side web search",
2133 "settings.serverWebSearchHint": "Searches only when needed; content is sent to the current model provider and may add usage or cost.",
2134 "settings.modelCandidateSearch": "Search discovered models...",
2135 "settings.noMatchingCandidateModels": "No matching models",
2136 "settings.selectAllModels": "Select all",
2137 "settings.clearModelSelection": "Clear",
2138 "settings.fetchModelsMissingBaseUrl": "Enter an API address first",
2139 "settings.fetchModelsMissingKeyEnv": "Enter api_key_env first",
2140 "settings.clearKey": "Clear key",
2141 "settings.providerBaseUrl": "base_url (https://…)",
2142 "settings.providerModelsUrl": "models_url (optional)",
2143 "settings.providerModelsUrlPlaceholder": "e.g. https://api.openai.com/v1/models",
2144 "settings.providerModelsUrlHint": "Optional. Use when model discovery needs a different URL than the chat endpoint.",
2145 "settings.providerModels": "models (comma-separated)",
2146 "settings.providerApiKeyEnv": "api_key_env (optional)",
2147 "settings.providerBalanceUrl": "Balance URL (optional)",
2148 "settings.balanceUrlPlaceholder": "balance endpoint (e.g. https://api.deepseek.com/user/balance)",
2149 "settings.balanceUrlHint": "Optional. If set, the wallet balance is queried and shown in the status bar.",
2150 "settings.providerContextWindow": "Context window (tokens)",
2151 "settings.contextWindowPlaceholder": "tokens (0 = disable auto-compaction)",
2152 "settings.contextWindowHint": "Use the context-window token limit from the model documentation, not the maximum output tokens. For example, enter 128000 for 128K unless the provider specifies 131072. Set 0 to disable automatic compaction for this provider.",
2153 "settings.modelContextWindow": "Context (tokens)",
2154 "settings.proxyMode": "Proxy mode",
2155 "settings.proxyMode.auto": "auto",
2156 "settings.proxyMode.custom": "custom",
2157 "settings.proxyMode.off": "off",
2158 "settings.proxyType": "Proxy type",
2159 "settings.proxyServer": "Server",
2160 "settings.proxyPort": "Port",
2161 "settings.proxyUsername": "Username",
2162 "settings.proxyPassword": "Password",
2163 "settings.proxyUrl": "Proxy URL",
2164 "settings.proxyUrlHint": "Optional. When set, proxy_url overrides the structured server and port fields.",
2165 "settings.noProxy": "No proxy",
2166 "settings.saveNetwork": "Save network settings",
2167 "settings.setKey": "set {env} (saved globally)",
2168 "settings.saveKey": "Save key",
2169 "settings.toggleOn": "On",
2170 "settings.toggleOff": "Off",
2171 "settings.botGateway": "Bot gateway",
2172 "settings.botBrowserPreviewWarning": "This is a browser preview. It saves mock settings only and does not write local config or start the QQ/IM bot gateway. Configure it in the desktop app or CLI before testing from QQ.",
2173 "settings.botChannelTabsLabel": "Bot channels",
2174 "settings.botShowAdvancedSettings": "Advanced settings",
2175 "settings.botAdvancedSettingsHint": "Lower-frequency controls: routes, queue details, and bot echo filtering.",
2176 "settings.botGlobalAllowlist": "Legacy global allowlist",
2177 "settings.botGlobalAllowlistHint": "Compatibility for older configs; new bots should set access in their own detail panel.",
2178 "settings.botAccessShowAllPlatforms": "Show all platforms",
2179 "settings.botAccessShowConnectedOnly": "Show connected platforms only",
2180 "settings.botListUsers": "Users",
2181 "settings.botListGroups": "Groups",
2182 "settings.botListApprovers": "Approvers",
2183 "settings.botListAdmins": "Admins",
2184 "settings.botPlatformFeishuLark": "Feishu / Lark",
2185 "settings.botQueueDropLabel": "When the queue is full",
2186 "settings.botQueueDropHint": "How overflow messages are handled once the queue hits its cap.",
2187 "settings.botPairingDetailHint": "The pairing switch lives in step 2 (Who can use it). Tune only the code lifetime and pending cap here.",
2188 "settings.botSimpleAccessTrustedSummary": "Trusted list is active with {count} member or group entries.",
2189 "settings.botSimpleAccessEveryoneSummary": "Everyone can use it right now. Best for short tests only.",
2190 "settings.botAccessTrusted": "Trusted list",
2191 "settings.botAccessTrustedHint": "Only listed users or groups can call the bot.",
2192 "settings.botAccessEveryone": "Everyone",
2193 "settings.botAccessEveryoneHint": "Convenient for quick testing, but not recommended long term.",
2194 "settings.botAccessPairing": "Pair private chats",
2195 "settings.botAccessPairingHint": "Unknown direct messages get a code and wait for local approval.",
2196 "settings.botRoleAccess": "Admins and approvers",
2197 "settings.botRoleAccessHint": "Optional. Leave this empty unless remote approval or management is needed.",
2198 "settings.botQueueModeSimple": "When a new message arrives",
2199 "settings.botQueueModeSimpleHint": "Choose what happens when the bot is already handling a previous message.",
2200 "settings.botEnableBot": "Enable bot",
2201 "settings.botGatewayEnabled": "Enable gateway",
2202 "settings.botRuntime": "Runtime limits",
2203 "settings.botRuntimeHint": "Optional gateway-level limits. A max-steps value of 0 keeps running automatically without a step limit.",
2204 "settings.botMaxSteps": "Max steps (0 = continuous)",
2205 "settings.botDebounceMs": "Debounce ms",
2206 "settings.botQueueCap": "Queue cap",
2207 "settings.botQueueMode.steer": "Steer running turn",
2208 "settings.botQueueMode.followup": "Follow up",
2209 "settings.botQueueMode.collect": "Collect",
2210 "settings.botQueueMode.interrupt": "Interrupt",
2211 "settings.botQueueDrop.summarize": "Summarize overflow",
2212 "settings.botQueueDrop.old": "Drop oldest",
2213 "settings.botQueueDrop.new": "Drop newest",
2214 "settings.botIgnoreSelfMessages": "Ignore bot echoes",
2215 "settings.botIgnoreSelfMessagesHint": "Prevents the gateway from reacting to messages sent by configured bot identities.",
2216 "settings.botSelfUserIds": "Bot self IDs",
2217 "settings.botSelfUserIdsHint": "Optional user/open IDs for each platform, used to filter bot echo messages.",
2218 "settings.botPairing": "Private chat pairing",
2219 "settings.botPairingTTL": "TTL minutes",
2220 "settings.botPairingMaxPending": "Max pending",
2221 "settings.botGatewayDefaults": "Gateway runtime settings",
2222 "settings.botGatewayDefaultsHint": "Tune queueing, pairing, and self-message filtering without editing TOML.",
2223 "settings.botRoutes": "Bind chats to projects",
2224 "settings.botRoutesHint": "Pin a group, contact, or thread to a workspace, model, or approval mode.",
2225 "settings.botRoutesEmpty": "No bindings yet. Add one to bind a chat, user, or thread to a project or model.",
2226 "settings.botRouteTitle": "Route {n}",
2227 "settings.botAddRoute": "Add route",
2228 "settings.botRouteConnection": "Bot source",
2229 "settings.botRouteAny": "Any",
2230 "settings.botRoutePlatform": "Platform",
2231 "settings.botRouteChatType": "Chat type",
2232 "settings.botRouteChatType.any": "Any",
2233 "settings.botRouteChatType.dm": "DM",
2234 "settings.botRouteChatType.group": "Group",
2235 "settings.botRouteChatType.guild": "Guild",
2236 "settings.botRouteChatType.direct": "Direct",
2237 "settings.botRouteChatType.thread": "Thread",
2238 "settings.botRouteChatId": "Group/chat ID",
2239 "settings.botRouteUserId": "Contact ID",
2240 "settings.botRouteThreadId": "Thread ID",
2241 "settings.botFeishu": "Feishu",
2242 "settings.botWeixin": "WeChat",
2243 "settings.botDingtalk": "DingTalk",
2244 "settings.botInstallDingtalkHint": "Enter ClientID and ClientSecret.",
2245 "settings.botInstallManualDingtalk": "Enter the DingTalk app key and secret; the secret is stored only in the Reasonix global .env.",
2246 "settings.botDingtalkClientId": "Client ID",
2247 "settings.botDingtalkClientSecret": "Client Secret",
2248 "settings.botDingtalkBotName": "Bot name",
2249 "settings.botDingtalkBotNameHint": "Used to strip the @ prefix in group chats; when empty, any leading @ counts as mentioning the bot.",
2250 "settings.botDingtalkRequireMention": "Require @bot in groups",
2251 "settings.botDingtalkRequireMentionHint": "When enabled, only group messages that mention the bot are processed.",
2252 "settings.botAppId": "App ID",
2253 "settings.botAppSecret": "App secret",
2254 "settings.botSecretSet": "secret set",
2255 "settings.botSecretMissing": "no secret",
2256 "settings.botSecretEnv": "Secret env",
2257 "settings.botSecretValue": "Secret value",
2258 "settings.botSecretPaste": "Paste secret",
2259 "settings.botSecretReplace": "Replace saved secret",
2260 "settings.botSecretSavedOptional": "Saved; leave blank, or enter a new value to replace it",
2261 "settings.botSandbox": "Sandbox",
2262 "settings.botAdvancedSettings": "Advanced settings",
2263 "settings.botSaveAndEnable": "Save and enable",
2264 "settings.botInstallStarting": "Generating QR…",
2265 "settings.botInstallScanHint": "Scan to authorize. The connection will be saved automatically.",
2266 "settings.botInstallWaiting": "Waiting for authorization.",
2267 "settings.botInstallConnected": "Connection saved.",
2268 "settings.botInstallFailed": "Failed to start connection.",
2269 "settings.botInstallCheck": "Check status",
2270 "settings.botInstallGenerate": "Generate QR",
2271 "settings.botInstallRetry": "Retry",
2272 "settings.botInstallAlreadyConnected": "{provider} is already connected.",
2273 "settings.botInstallTimeLeft": "Expires in {time}",
2274 "settings.botInstallExpired": "The QR code expired. Pick the channel again to generate a new one.",
2275 "settings.botInstallQrAlt": "Bot connection QR code",
2276 "settings.botInstallManualQQ": "Enter the App ID and App secret. The secret is stored only in Reasonix home .env.",
2277 "settings.botInstallQQHint": "Official Bot API, manual setup.",
2278 "settings.botInstallFeishuHint": "Scan to create a Feishu PersonalAgent.",
2279 "settings.botInstallLarkHint": "Scan to create a Lark PersonalAgent.",
2280 "settings.botInstallWeixinHint": "Scan WeChat and save a local token.",
2281 "settings.botSelectBotHint": "Select a bot on the left to configure it.",
2282 "settings.botConnectionColumnChannel": "Channel",
2283 "settings.botConnectionColumnRemote": "Remote ID",
2284 "settings.botConnectionColumnScope": "Scope",
2285 "settings.botConnectionColumnStatus": "Status",
2286 "settings.botConnectionSummary": "Connection summary",
2287 "settings.botRuntimeSettings": "Runtime settings",
2288 "settings.botDangerZone": "Danger zone",
2289 "settings.botAutoSaveHint": "Changes are saved automatically.",
2290 "settings.botScopeGlobal": "Global",
2291 "settings.botScopeProject": "Project",
2292 "settings.botConnectionConnected": "Connected",
2293 "settings.botConnectionConfigured": "Configured",
2294 "settings.botConnectionDisconnected": "Disconnected",
2295 "settings.deleteBot": "Delete bot",
2296 "settings.confirmDeleteBot": "Confirm delete",
2297 "settings.deleteBotHint": "Removes this bot from connected bots; saved secrets are not cleared automatically.",
2298 "settings.botChannelModel": "Model",
2299 "settings.botChannelModelHint": "The model this bot uses when handling messages.",
2300 "settings.botChannelModelAuto": "Use current desktop model",
2301 "settings.botToolApprovalMode": "Tool approval",
2302 "settings.botToolApprovalModeHint": "Controls whether this channel asks before running tools; plan confirmation and ask questions still wait for a reply.",
2303 "settings.botToolApprovalMode.inherit": "Follow bot",
2304 "settings.botToolApprovalMode.read-only": "Read only",
2305 "settings.botToolApprovalMode.workspace-write": "Workspace access",
2306 "settings.botToolApprovalMode.danger-full-access": "Full access",
2307 "settings.botWorkspaceRoot": "Workspace root",
2308 "settings.botWorkspaceRootHint": "Leave empty to use the directory from bot startup.",
2309 "settings.botWorkspaceRootPlaceholder": "For example /path/to/project",
2310 "settings.botCredential": "Credential",
2311 "settings.botCredentialApp": "App ID: {value}",
2312 "settings.botCredentialClientId": "Client ID: {value}",
2313 "settings.botCredentialAccount": "Account: {value}",
2314 "settings.botCredentialLocalWeixin": "WeChat local login credential",
2315 "settings.botCredentialConfigured": "Platform credential saved",
2316 "settings.botDiagnose": "Check config",
2317 "settings.botTest": "Send test",
2318 "settings.botTesting": "Sending…",
2319 "settings.botCopyDiagnostic": "Copy diagnostic",
2320 "settings.botSendDiagnostic": "Send diagnostic",
2321 "settings.botDiagnosticCopied": "Diagnostic copied.",
2322 "settings.botDiagnosticCopyFailed": "Failed to copy diagnostic.",
2323 "settings.botDiagnosticReportSent": "Diagnostic report sent.",
2324 "settings.botDiagnosticReportFailed": "Failed to send diagnostic report.",
2325 "settings.botDiagnosticPrivacy": "Only sanitized connection metadata is included.",
2326 "settings.botAccessControl": "Access control",
2327 "settings.botAllowAll": "Allow everyone",
2328 "settings.botAllowAllWarn": "When enabled, every incoming channel message can invoke the bot.",
2329 "settings.botQQAccessRequired": "Add QQ users/groups in step 2 (Who can use it), or temporarily allow everyone, before enabling QQ Bot.",
2330 "settings.botQQUsers": "QQ users",
2331 "settings.botFeishuLarkUsers": "Feishu / Lark users",
2332 "settings.botWeixinUsers": "WeChat users",
2333 "settings.botListPlaceholder": "One ID per line, or comma-separated",
2334 "settings.permissions": "Permissions",
2335 "settings.writerMode": "Writer mode",
2336 "settings.modeAsk": "Read only",
2337 "settings.modeAllow": "Workspace write",
2338 "settings.modeDeny": "deny (block writers)",
2339 "settings.ruleForm": "Optional explicit rules: ToolName, ToolName(glob), or Bash(command:*). Precedence is deny > ask > allow. Shell syntax is evaluated by the active permission sandbox.",
2340 "settings.yolo": "Full access — run ordinary operations without prompts (current session)",
2341 "settings.addRule": "add {list} rule…",
2342 "settings.sandboxTitle": "Sandbox & workspace",
2343 "settings.sandboxBoundaryHint": "Permission presets enforce filesystem boundaries. Configure network access and additional trusted write roots here; macOS uses Seatbelt and Linux uses bubblewrap.",
2344 "settings.sandboxBoundaryHintWindows": "Windows has no OS-level shell sandbox. Permission presets are enforced by Reasonix file tools, and shell commands run as the current OS user. Configure additional trusted write roots here.",
2345 "settings.allowNetworkWindowsHint": "Not available on Windows: without an OS-level shell sandbox, shell network access cannot be restricted.",
2346 "settings.reloadSessionConfig": "Apply manual config changes",
2347 "settings.shellInterpreter": "Shell interpreter",
2348 "settings.powershellRuntime": "PowerShell runtime",
2349 "settings.shellAuto": "auto (bash first)",
2350 "settings.shellAutoWindows": "auto (PowerShell 7 first)",
2351 "settings.shellBash": "bash",
2352 "settings.shellPowershell": "PowerShell (Windows PowerShell)",
2353 "settings.shellPwsh": "pwsh (PowerShell 7+)",
2354 "settings.effectiveShell": "Current session shell",
2355 "settings.effectiveShellBash": "bash",
2356 "settings.effectiveShellZsh": "zsh",
2357 "settings.effectiveShellSh": "POSIX sh",
2358 "settings.effectiveShellGitBash": "Git Bash",
2359 "settings.effectiveShellPowershell": "Windows PowerShell",
2360 "settings.effectiveShellPwsh": "pwsh (PowerShell 7+)",
2361 "settings.resolvedShell": "Shell after reload",
2362 "settings.shellReloadNow": "Reload current session",
2363 "settings.shellDetection": "Shell detection",
2364 "settings.shellDetectedAt": "detected — {path}",
2365 "settings.shellDetected": "detected",
2366 "settings.shellNotDetected": "not detected",
2367 "settings.shellCapabilityZsh": "zsh",
2368 "settings.shellCapabilitySh": "POSIX sh",
2369 "settings.gitCapability": "Git",
2370 "settings.runtimeDetails": "Runtime details",
2371 "settings.dependencyDetection": "Dependency detection",
2372 "settings.shellBashManualRepair": "Bash is not detected. Use the suggested system package-manager command or check your PATH.",
2373 "settings.gitManualRepair": "Git is not detected. Install it with the suggested system package-manager command or check your PATH.",
2374 "settings.shellCopyCommand": "Copy command",
2375 "settings.shellRepairCommandHint": "Reasonix will not run this command. Run it manually in a terminal with the permissions required by your system.",
2376 "settings.shellRepairReload": "Re-detect and reload session",
2377 "settings.allowNetwork": "Allow network access from the sandboxed Shell",
2378 "settings.workspaceRoot": "Workspace root",
2379 "settings.workspaceDefault": "(default: cwd)",
2380 "settings.effectiveWriteRoots": "Effective write roots",
2381 "settings.effectiveWriteRootsHint": "Write roots are expanded for the active workspace. Settings changes apply automatically.",
2382 "settings.noEffectiveWriteRoots": "No active write roots",
2383 "settings.appearance": "Appearance",
2384 "settings.theme": "Color mode",
2385 "settings.conversationWidth": "Conversation width",
2386 "settings.conversationWidthStandard": "Standard",
2387 "settings.conversationWidthFull": "Full width",
2388 "settings.style.graphite.zh": "Graphite",
2389 "settings.style.graphite.note": "Crisp",
2390 "settings.style.graphite.desc": "Paper white, graphite text, and orange accents — restrained, editor-like workbench.",
2391 "settings.style.aurora.zh": "Soft Aurora",
2392 "settings.style.aurora.note": "Warm",
2393 "settings.style.aurora.desc": "Misty violet surfaces with aurora blue-green accents, translucent panels, and springy radii.",
2394 "settings.style.slate.zh": "Refined",
2395 "settings.style.slate.note": "Native",
2396 "settings.style.slate.desc": "Cool gray workbench with brand blue and crisp hairlines for dense professional scanning.",
2397 "settings.style.carbon.zh": "Deep",
2398 "settings.style.carbon.note": "Premium",
2399 "settings.style.carbon.desc": "Warm charcoal and linen-gray surfaces with teal accents, richer texture, and long-focus contrast.",
2400 "settings.style.nocturne.zh": "Soft",
2401 "settings.style.nocturne.note": "Calm",
2402 "settings.style.nocturne.desc": "Soft violet night and cloud-light surfaces with generous radii for calmer reading.",
2403 "settings.style.amber.zh": "Amber",
2404 "settings.style.amber.note": "Warm",
2405 "settings.style.amber.desc": "Warm orange accent — bright and friendly (dark variant included).",
2406 "settings.themeAuto": "auto",
2407 "settings.themeLight": "light",
2408 "settings.themeDark": "dark",
2409 "settings.terminalTheme": "Terminal theme",
2410 "settings.terminalThemeAuto": "Follow app",
2411 "settings.terminalThemeLight": "Light",
2412 "settings.terminalThemeDark": "Dark",
2413 "settings.themeCurrent": "Theme: {theme} / {style}",
2414 "settings.themeChanged": "Theme changed to {theme} / {style}",
2415 "settings.themeUnknown": "Unknown theme: {name}",
2416 "settings.themeReset": "Theme pack cleared; using default Graphite path",
2417 "settings.themeLibrary.new": "New theme",
2418 "settings.themeLibrary.import": "Import",
2419 "settings.themeLibrary.reset": "Restore default",
2420 "settings.themeLibrary.loading": "Loading themes…",
2421 "settings.themeLibrary.builtin": "Built-in",
2422 "settings.themeLibrary.userTheme": "User theme",
2423 "settings.themeLibrary.enable": "Enable",
2424 "settings.themeLibrary.active": "Active",
2425 "settings.themeLibrary.edit": "Edit",
2426 "settings.themeLibrary.copy": "Duplicate",
2427 "settings.themeLibrary.export": "Export",
2428 "settings.themeLibrary.delete": "Delete",
2429 "settings.themeLibrary.copied": "Copied “{name}”",
2430 "settings.themeLibrary.activated": "Enabled “{name}”",
2431 "settings.themeLibrary.resetDone": "Restored default appearance",
2432 "settings.themeLibrary.confirmDelete": "Delete theme “{name}”? This cannot be undone.",
2433 "settings.themeLibrary.confirmDeleteTitle": "Delete theme",
2434 "settings.themeLibrary.confirmReplaceImport": "A theme with this id already exists. Replace it?",
2435 "settings.themeLibrary.confirmReplaceImportTitle": "Replace existing theme",
2436 "settings.themeLibrary.replaceConfirm": "Replace",
2437 "settings.themeLibrary.imported": "Imported “{name}”",
2438 "settings.themeLibrary.exported": "Theme exported",
2439 "settings.themeLibrary.exportRights": "You are about to export a theme that may include a background image. Confirm you have the right to redistribute any photos, portraits, or third-party artwork.",
2440 "settings.themeLibrary.exportRightsTitle": "Confirm export rights",
2441 "settings.themeLibrary.exportConfirm": "Export",
2442 "settings.themeLibrary.saved": "Saved “{name}”",
2443 "settings.themeLibrary.editorCreate": "Create theme",
2444 "settings.themeLibrary.editorEdit": "Edit theme",
2445 "settings.themeEditor.subtitle": "Customize semantic colors, interface density, and per-scene background images",
2446 "settings.themeEditor.metadata": "Theme details",
2447 "settings.themeEditor.layout": "Base appearance",
2448 "settings.themeEditor.colors": "Theme colors",
2449 "settings.themeEditor.scenes": "Scene images",
2450 "settings.themeEditor.scenesHint": "Home and workspace can use different images. Workspace falls back to the home background when unset.",
2451 "settings.themeEditor.homeBackground": "Home background",
2452 "settings.themeEditor.homeBackgroundHint": "Used on home and idle surfaces, where the image can be shown at full strength.",
2453 "settings.themeEditor.taskBackground": "Workspace background",
2454 "settings.themeEditor.taskBackgroundHint": "Used in tasks, chat, and code surfaces. Very low opacity may make content hard to read.",
2455 "settings.themeEditor.taskBackgroundFallback": "Currently reuses the home image. Upload one to tune it independently.",
2456 "settings.themeEditor.description": "Description",
2457 "settings.themeEditor.license": "License",
2458 "settings.themeEditor.livePreview": "Live preview",
2459 "settings.themeEditor.livePreviewHint": "Changes preview immediately, but are written to the library only after Save or Save & apply.",
2460 "settings.themeEditor.uploadPrompt": "Choose a local PNG, JPEG, or WebP image",
2461 "settings.themeEditor.safeArea": "Interface content area",
2462 "settings.themeEditor.safeAreaHint": "Choose where foreground text and cards appear. Keep this area away from the image subject.",
2463 "settings.themeEditor.opacity": "Image opacity",
2464 "settings.themeEditor.paneOpacity": "Pane opacity",
2465 "settings.themeEditor.density.comfortable": "Comfortable",
2466 "settings.themeEditor.density.compact": "Compact",
2467 "settings.themeEditor.corners.square": "Square",
2468 "settings.themeEditor.corners.soft": "Soft",
2469 "settings.themeEditor.corners.round": "Round",
2470 "settings.themeEditor.safeArea.left": "Left",
2471 "settings.themeEditor.safeArea.center": "Center",
2472 "settings.themeEditor.safeArea.right": "Right",
2473 "settings.themeTokens.key.bg": "Main background",
2474 "settings.themeTokens.key.bgSoft": "Soft background",
2475 "settings.themeTokens.key.bgElev": "Elevated background",
2476 "settings.themeTokens.key.panel": "Panel",
2477 "settings.themeTokens.key.sidebar": "Sidebar",
2478 "settings.themeTokens.key.chat": "Chat area",
2479 "settings.themeTokens.key.workspace": "Workspace",
2480 "settings.themeTokens.key.workspaceFiles": "Files area",
2481 "settings.themeTokens.key.border": "Primary border",
2482 "settings.themeTokens.key.borderSoft": "Soft border",
2483 "settings.themeTokens.key.fg": "Primary text",
2484 "settings.themeTokens.key.fgDim": "Secondary text",
2485 "settings.themeTokens.key.fgFaint": "Muted text",
2486 "settings.themeTokens.key.accent": "Accent",
2487 "settings.themeTokens.key.accentFg": "Accent text",
2488 "settings.themeTokens.key.ok": "Success",
2489 "settings.themeTokens.key.warn": "Warning",
2490 "settings.themeTokens.key.err": "Error",
2491 "settings.themeLibrary.fieldId": "Id / name",
2492 "settings.themeLibrary.fieldName": "Display name",
2493 "settings.themeLibrary.fieldAuthor": "Author",
2494 "settings.themeLibrary.fieldBase": "Base style",
2495 "settings.themeLibrary.fieldRecipes": "Density / corners",
2496 "settings.themeLibrary.fieldTokens": "Semantic colors",
2497 "settings.themeLibrary.fieldBackground": "Background",
2498 "settings.themeLibrary.pickImage": "Choose image",
2499 "settings.themeLibrary.clearImage": "Remove image",
2500 "settings.themeLibrary.homeOpacity": "Home opacity",
2501 "settings.themeLibrary.taskOpacity": "Task opacity",
2502 "settings.themeLibrary.overlayStrength": "Overlay strength",
2503 "settings.themeLibrary.contrastWarn": "Contrast may be below WCAG AA for some pairs. You can still save.",
2504 "settings.themeLibrary.cancel": "Cancel",
2505 "settings.themeLibrary.save": "Save",
2506 "settings.themeLibrary.saveEnable": "Save & enable",
2507 "settings.themeTokens.surfaces": "Surfaces",
2508 "settings.themeTokens.borderText": "Border & text",
2509 "settings.themeTokens.accentStatus": "Accent & status",
2510 "settings.themeLibrary.groupOfficial": "Reasonix official themes",
2511 "settings.themeLibrary.groupBase": "Base styles",
2512 "settings.themeLibrary.groupUser": "My themes",
2513 "settings.themeLibrary.groupPlugin": "Plugin themes",
2514 "settings.themeLibrary.emptyUser": "No custom themes yet — create one or import a pack.",
2515 "settings.themeLibrary.copyFrom": "Customize a copy",
2516 "settings.themes.official.official-rose-dawn.name": "Rose Dawn",
2517 "settings.themes.official.official-rose-dawn.description": "Ivory dawn light and soft roses around an original illustrated muse.",
2518 "settings.themes.official.official-fortune-forge.name": "Fortune Forge",
2519 "settings.themes.official.official-fortune-forge.description": "Warm ivory, vermilion, gold and jade around an original lucky programmer.",
2520 "settings.themes.official.official-crimson-horizon.name": "Crimson Horizon",
2521 "settings.themes.official.official-crimson-horizon.description": "A coral-red future city under a pearl-white sky.",
2522 "settings.themes.official.official-sage-breeze.name": "Sage Breeze",
2523 "settings.themes.official.official-sage-breeze.description": "Cream paper and sage sprigs with an original illustrated reader.",
2524 "settings.themes.official.official-spark-notebook.name": "Spark Notebook",
2525 "settings.themes.official.official-spark-notebook.description": "A notebook grid with teal, yellow and coral stationery and an original anime adult.",
2526 "settings.themes.official.official-violet-starlight.name": "Violet Starlight",
2527 "settings.themes.official.official-violet-starlight.description": "A blue-violet starfield with glowing butterflies and an original celestial muse.",
2528 "settings.themes.official.official-cyan-stage.name": "Cyan Stage",
2529 "settings.themes.official.official-cyan-stage.description": "An airy cyan stage with light rings and an original digital performer.",
2530 "settings.themes.official.official-noir-gold.name": "Noir Gold",
2531 "settings.themes.official.official-noir-gold.description": "A black velvet stage and gold spotlights around an original creative gentleman.",
2532 "settings.themeGallery.title": "Theme gallery",
2533 "settings.themeGallery.subtitle": "Click a theme to preview it across the app; apply to save it",
2534 "settings.themeGallery.browse": "Browse themes",
2535 "settings.themeGallery.createCopy": "Create copy",
2536 "settings.themeGallery.disable": "Disable theme",
2537 "settings.themeGallery.disabled": "Theme disabled; restored base style",
2538 "settings.themeGallery.apply": "Apply theme",
2539 "settings.themeGallery.applied": "Applied “{name}”",
2540 "settings.themeGallery.appliedBase": "Applied base style {name}",
2541 "settings.themeGallery.openPreview": "Immersive preview",
2542 "settings.themeGallery.previewing": "Previewing",
2543 "settings.themeGallery.moreActions": "More actions",
2544 "settings.themeGallery.previewTitle": "Preview theme",
2545 "settings.themeGallery.current": "In use",
2546 "settings.themeGallery.paletteLabel": "Theme colors",
2547 "settings.themeGallery.appearancePreview": "Appearance",
2548 "settings.themeGallery.scenePreview": "Scene",
2549 "settings.themeGallery.scenePreviewHint": "Preview how the theme background appears on the home screen or in the workspace. This does not apply the theme.",
2550 "settings.themeGallery.currentAppearance": "Current appearance",
2551 "settings.themeGallery.baseStyle": "Base style",
2552 "settings.themeGallery.baseLockedByPack": "Managed by the active theme. Disable it to change the base style.",
2553 "settings.themeGallery.tabBase": "Base styles",
2554 "settings.themeGallery.tabAll": "All themes",
2555 "settings.themeGallery.sectionFlagship": "Flagship themes",
2556 "settings.themeGallery.kindOfficial": "Official",
2557 "settings.themeGallery.kindUser": "My theme",
2558 "settings.themeGallery.kindPlugin": "Plugin · {name}",
2559 "settings.themeGallery.kindPluginUnknown": "Plugin",
2560 "settings.themeGallery.kindBase": "Base style",
2561 "settings.themeGallery.selectHint": "Select a theme to see details",
2562 "settings.themeGallery.empty": "No themes in this group",
2563 "settings.themeGallery.back": "Back",
2564 "settings.themeGallery.sceneHome": "Home display",
2565 "settings.themeGallery.sceneTask": "Workspace display",
2566 "settings.themeGallery.saveAndApply": "Save & apply",
2567 "settings.themeGallery.restoreGraphite": "Restore Graphite appearance",
2568 "settings.themeGallery.restoreGraphiteHint": "Only disables the theme pack and restores Graphite base colors. Color mode, fonts, text sizes, and detailed typography are preserved.",
2569 "settings.themeGallery.restoredGraphite": "Restored Graphite appearance; typography settings were preserved",
2570 "settings.themeGallery.deleted": "Deleted “{name}”",
2571 "palette.placeholder": "Search sessions, commands, files…",
2572 "palette.empty": "No matches",
2573 "palette.group.commands": "Commands",
2574 "palette.group.sessions": "Recent sessions",
2575 "palette.cmd.newSession": "New session",
2576 "palette.cmd.trash": "Trash",
2577 "palette.cmd.settings": "Settings",
2578 "palette.cmd.appearance": "Appearance",
2579 "palette.cmd.memory": "Memory",
2580 "palette.cmd.models": "Models",
2581 "palette.cmd.reloadRuntime": "Reload Runtime",
2582 "palette.cmd.usageStats": "Usage statistics",
2583 "palette.cmd.taskCenter": "Task Center",
2584 "palette.group.remote": "Remote SSH",
2585 "palette.group.extensions": "Extensions",
2586 "ext.form.defaultTitle": "Extension request",
2587 "ext.form.submit": "Submit",
2588 "ext.form.required": "Required: {label}",
2589 "ext.card.progress": "Progress",
2590 "ext.action.done": "Done",
2591 "palette.remote.connect": "Connect to {host}",
2592 "palette.remote.open": "Open remote workspace on {host}",
2593 "shortcuts.cheatsheetTitle": "Keyboard shortcuts",
2594 "shortcuts.cheatsheetSummary": "Current bindings reflect your shortcut settings.",
2595 "shortcuts.skipToComposer": "Skip to composer",
2596 "shortcuts.section.global": "Global",
2597 "shortcuts.section.session": "Session",
2598 "shortcuts.section.view": "View",
2599 "shortcuts.section.tools": "Tools",
2600 "shortcuts.section.help": "Help",
2601 "shortcuts.action.newSession": "New session",
2602 "shortcuts.action.commandPalette": "Command palette",
2603 "shortcuts.action.settings": "Open settings",
2604 "shortcuts.action.closeTab": "Close tab",
2605 "shortcuts.action.composerSend": "Send message",
2606 "shortcuts.action.composerNewline": "Insert newline",
2607 "shortcuts.action.composerUndo": "Undo composer edit",
2608 "shortcuts.action.composerRedo": "Redo composer edit",
2609 "shortcuts.action.addSelectionToChat": "Add selection to chat",
2610 "shortcuts.action.shellToggle": "Toggle shell",
2611 "shortcuts.action.terminalToggle": "Toggle integrated terminal",
2612 "shortcuts.action.terminalNewSession": "New terminal session",
2613 "shortcuts.action.sidebarToggle": "Toggle sidebar",
2614 "shortcuts.action.textSizeIncrease": "Increase text size",
2615 "shortcuts.action.textSizeDecrease": "Decrease text size",
2616 "shortcuts.action.textSizeReset": "Reset text size",
2617 "shortcuts.action.yoloToggle": "Change permission preset",
2618 "shortcuts.action.showShortcuts": "Show shortcuts",
2619 "shortcuts.desc.newSession": "Create a new session for the current workspace scope.",
2620 "shortcuts.desc.commandPalette": "Search commands and recent sessions.",
2621 "shortcuts.desc.settings": "Open the desktop settings center.",
2622 "shortcuts.desc.closeTab": "Close the active tab.",
2623 "shortcuts.desc.composerSend": "Send the message in the composer.",
2624 "shortcuts.desc.composerNewline": "Insert a line break in the message box.",
2625 "shortcuts.desc.composerUndo": "Undo the latest edit in the message box.",
2626 "shortcuts.desc.composerRedo": "Redo the latest composer edit.",
2627 "shortcuts.desc.addSelectionToChat": "Add the selected transcript, workspace, or terminal text to the composer context.",
2628 "shortcuts.desc.shellToggle": "Expand or collapse the shell panel.",
2629 "shortcuts.desc.terminalToggle": "Show or hide the integrated terminal.",
2630 "shortcuts.desc.terminalNewSession": "Open a new integrated terminal session.",
2631 "shortcuts.desc.sidebarToggle": "Show or hide the left sidebar.",
2632 "shortcuts.desc.textSizeIncrease": "Make transcript and UI text larger.",
2633 "shortcuts.desc.textSizeDecrease": "Make transcript and UI text smaller.",
2634 "shortcuts.desc.textSizeReset": "Return text size to the default.",
2635 "shortcuts.desc.yoloToggle": "Choose the current session permission preset from the composer menu.",
2636 "shortcuts.desc.showShortcuts": "Open this keyboard shortcuts help sheet.",
2637 "shortcuts.action.topicGoto1": "Go to chat 1",
2638 "shortcuts.action.topicGoto2": "Go to chat 2",
2639 "shortcuts.action.topicGoto3": "Go to chat 3",
2640 "shortcuts.action.topicGoto4": "Go to chat 4",
2641 "shortcuts.action.topicGoto5": "Go to chat 5",
2642 "shortcuts.action.topicGoto6": "Go to chat 6",
2643 "shortcuts.action.topicGoto7": "Go to chat 7",
2644 "shortcuts.action.topicGoto8": "Go to chat 8",
2645 "shortcuts.action.topicGoto9": "Go to chat 9",
2646 "shortcuts.desc.topicGoto": "Jump to the corresponding chat in the sidebar.",
2647 "settings.textSize": "Interface text size",
2648 "settings.textSizeSmall": "Small",
2649 "settings.textSizeDefault": "Default",
2650 "settings.textSizeLarge": "Large",
2651 "settings.textSizeXLarge": "Extra large",
2652 "settings.textSizeXXLarge": "Huge",
2653 "settings.displayZoom": "Display zoom (applies immediately)",
2654 "settings.displayZoomDecrease": "Decrease display zoom",
2655 "settings.displayZoomIncrease": "Increase display zoom",
2656 "settings.displayZoomReset": "Reset display zoom to 100%",
2657 "settings.fontFamily": "Interface font",
2658 "settings.fontFamilySystem": "System",
2659 "settings.fontFamilyYaHei": "YaHei",
2660 "settings.fontFamilyPingFang": "PingFang",
2661 "settings.fontFamilyNoto": "Noto Sans",
2662 "settings.fontFamilyCustom": "Custom",
2663 "settings.fontFamilyCustomName": "Custom font",
2664 "settings.fontFamilyCustomPlaceholder": "Installed font or font stack, e.g. \"LXGW WenKai\", \"Segoe UI\", sans-serif",
2665 "settings.monoFontFamily": "Monospace font",
2666 "settings.monoFontFamilySystem": "System mono",
2667 "settings.monoFontFamilyCascadia": "Cascadia",
2668 "settings.monoFontFamilyJetBrains": "JetBrains Mono",
2669 "settings.monoFontFamilySFMono": "SF Mono",
2670 "settings.monoFontFamilyCustom": "Custom",
2671 "settings.monoFontFamilyCustomName": "Custom monospace font",
2672 "settings.monoFontFamilyCustomPlaceholder": "Monospace stack, e.g. \"Maple Mono\", \"Cascadia Code\", monospace",
2673 "settings.typography.title": "Detailed typography",
2674 "settings.typography.subtitle": "Set fonts and text sizes independently by area.",
2675 "settings.typography.entrySummary": "Override conversation, composer, code, and supporting text independently.",
2676 "settings.typography.open": "Configure",
2677 "settings.typography.back": "Appearance",
2678 "settings.typography.resetAll": "Reset all",
2679 "settings.typography.regions": "Typography areas",
2680 "settings.typography.globalDefault": "Global default",
2681 "settings.typography.region.interface": "Interface & navigation",
2682 "settings.typography.region.conversation": "Conversation body",
2683 "settings.typography.region.composer": "Composer",
2684 "settings.typography.region.code": "Code & tools",
2685 "settings.typography.region.metadata": "Supporting text",
2686 "settings.typography.desc.interface": "Settings, navigation, and general controls.",
2687 "settings.typography.desc.conversation": "User messages, assistant replies, and Markdown content.",
2688 "settings.typography.desc.composer": "Prompt input and composing controls.",
2689 "settings.typography.desc.code": "Code blocks, inline code, and tool output.",
2690 "settings.typography.desc.metadata": "Timestamps, status, labels, and secondary information.",
2691 "settings.typography.followGlobal": "Follow global",
2692 "settings.typography.customized": "Custom",
2693 "settings.typography.font": "Font",
2694 "settings.typography.font.inherit": "Global default",
2695 "settings.typography.customFont": "Custom font",
2696 "settings.typography.size": "Text size",
2697 "settings.typography.decrease": "Decrease text size",
2698 "settings.typography.increase": "Increase text size",
2699 "settings.typography.advanced": "Line height & weight",
2700 "settings.typography.advancedSummary": "Controlled by the theme",
2701 "settings.typography.advancedNote": "Line height and font weight continue to follow the active theme for consistent rhythm and hierarchy.",
2702 "settings.typography.resetRegion": "Reset this area",
2703 "settings.typography.applied": "Applied",
2704 "settings.typography.undo": "Undo",
2705 "settings.typography.preview": "Live preview",
2706 "settings.typography.preview.body": "Body",
2707 "settings.typography.preview.reasoning": "Reasoning",
2708 "settings.typography.preview.tools": "Tools",
2709 "settings.typography.previewQuestion": "Briefly explain the main characteristics of graphite.",
2710 "settings.typography.previewBody": "Independent typography lets every area stay readable without changing the rest of the interface.",
2711 "settings.typography.previewSources": "Web search · 3 results · 1 citation",
2712 "settings.typography.previewReasoning": "First understand the request, then keep the response precise and easy to scan.",
2713 "settings.typography.previewTool": "$ pnpm test\n✓ typography preferences applied",
2714 "settings.general.sectionAppearance": "Desktop & language",
2715 "settings.general.sectionAppearanceHint": "Choose the desktop experience, language, and cost display.",
2716 "settings.general.sectionConversation": "Conversation experience",
2717 "settings.general.sectionSystem": "System behavior",
2718 "settings.general.sectionSystemHint": "Control startup, approvals, sound, and status information.",
2719 "settings.hardwareAcceleration": "Hardware acceleration",
2720 "settings.hardwareAccelerationHint": "Use the GPU for interface and embedded web rendering. Turn it off if you see a blank screen, flicker, or display errors. It may reduce smoothness and increase CPU use when disabled.",
2721 "settings.hardwareAccelerationRestart": "Saved. Fully quit and reopen Reasonix for this to take effect; hiding the window is not enough.",
2722 "settings.hardwareAccelerationRestartShort": "Takes effect after restart",
2723 "settings.hardwareAccelerationOverride": "Hardware acceleration is disabled for this launch by startup configuration. Remove the override and fully restart to restore the saved setting.",
2724 "settings.subagentReasoning": "Subagent reasoning effort",
2725 "settings.connectionFollowSession": "Follow session",
2726 "settings.connectionAutomatic": "Automatic selection",
2727 "settings.connectionFollowParent": "Follow parent",
2728 "settings.modelPurpose": "Purpose",
2729 "settings.modelConnection": "Connection",
2730 "settings.runtimePreferences": "Runtime preferences",
2731 "settings.modelUsage": "Model usage",
2732 "settings.modelUnavailable": "{ref} is not available. Pick a configured model or add provider access.",
2733 "settings.modelNeedsKey": "{provider} needs an API key before this model can run.",
2734 "settings.errorUnknown": "Operation failed.",
2735 "settings.errorUnknownModel": "Unknown model {model}.",
2736 "settings.errorModelProviderMissing": "Model {model} is unavailable because provider {provider} is not added.",
2737 "settings.errorModelProviderNoKey": "Model {model} is unavailable because provider {provider} has no API key.",
2738 "settings.errorRemoveAccessBusy": "Stop active work using {provider} before removing provider access.",
2739 "settings.errorProviderDetached": "Reopen or close the background session, then try again.",
2740 "settings.errorDeleteProviderBusy": "Stop active work using {provider} before deleting the provider.",
2741 "settings.errorSaveBeforeRemoveAccess": "Could not save the current session before removing provider access: {err}",
2742 "settings.errorSaveBeforeDeleteProvider": "Could not save the current session before deleting the provider: {err}",
2743 "settings.errorRemoveProviderNoFallback": "Provider {provider} is used by open tabs, and no other configured provider is available.",
2744 "settings.providerAccessEmptyHint": "Use Recommended preset to quickly add common providers, usually with only an API key. Use Custom provider for OpenAI-compatible or Anthropic-compatible endpoints.",
2745 "settings.builtinProviderBadge": "built-in",
2746 "settings.customProviderBadge": "custom",
2747 "settings.configureProvider": "Configure",
2748 "settings.configureProfile": "Configure",
2749 "settings.noModelsConfigured": "No models configured",
2750 "settings.providerDesc.opencodeGo": "One connection for all models available with your Go key.",
2751 "settings.providerDesc.opencodeZen": "Independent Zen connection, key, and billing.",
2752 "settings.plannerNoneHint": "Use the conversation model for planning and execution.",
2753 "settings.plannerNoneHintShort": "Follow conversation model",
2754 "settings.searchModels": "Search models...",
2755 "settings.noMatchingModels": "No matching models",
2756 "settings.addProvider.chooseTitle": "Add provider",
2757 "settings.addProvider.officialChoice": "Recommended preset",
2758 "settings.addProvider.customChoice": "Custom provider",
2759 "settings.addProvider.manageRoutes": "Advanced route settings",
2760 "settings.addProvider.official.deepseek": "DeepSeek Official (Recommended)",
2761 "settings.addProvider.official.deepseekDesc": "Default Anthropic Messages API for Flash and Pro; server-side web search is enabled.",
2762 "settings.addProvider.preset.tokenRhythmLabel": "Token Rhythm",
2763 "settings.addProvider.confirm": "Add provider",
2764 "settings.addProvider.viewPresetProvider": "View config",
2765 "settings.addProvider.resetPreset": "Reset to preset",
2766 "settings.addProvider.confirmResetPreset": "Confirm reset",
2767 "settings.customProviderName": "Custom provider name",
2768 "settings.customProviderNamePlaceholder": "e.g. my-proxy",
2769 "settings.customProviderNameReadonlyHint": "Changing the provider name is not supported yet",
2770 "settings.catalog.variant": "Model route",
2771 "settings.catalog.anthropicHint": "Uses an Anthropic API key and API billing. Native server tools are not enabled by this preset.",
2772 "settings.catalog.localHint": "Example model names must match your local installation. Configure or fetch the installed models after adding.",
2773 "settings.catalog.models": "Models",
2774 "settings.catalog.hint": "Choose a provider, then select your account platform, plan and API format.",
2775 "settings.connections.restartRequired": "The desktop backend has not loaded the rename API. Stop it with Ctrl+C in the launch terminal, then start the desktop app again and retry.",
2776 "settings.connections.rename": "Rename connection",
2777 "settings.connections.renameFailed": "Could not save. Please retry.",
2778 "settings.models.inherit": "Inherited",
2779 "settings.models.keySaveFailed": "Could not save the key. Please retry.",
2780 "settings.models.savedPending": "Saved. Affected sessions will apply these settings before their next run. Current work keeps its original configuration.",
2781 "settings.models.savedApplyFailed": "Settings were saved, but some sessions could not apply them. Retry applying; there is no need to save again.",
2782 "settings.models.applyRetry": "Retry applying",
2783 "settings.models.preferencesApplyHint": "The default model applies to new sessions. Other model preferences apply before an existing session's next run.",
2784 "settings.models.add": "Add model",
2785 "settings.modelDialog.image": "Image",
2786 "settings.modelDialog.video": "Video",
2787 "settings.modelDialog.unavailable": "Direct video and PDF input is not available yet.",
2788 "settings.modelDialog.metadata": "Model metadata",
2789 "settings.modelDialog.restore": "Restore automatic detection",
2790 "settings.modelDialog.edit": "Edit model",
2791 "settings.modelDialog.id": "Model ID",
2792 "settings.modelDialog.parameters": "Parameters",
2793 "settings.modelDialog.reset": "Reset to default",
2794 "settings.modelDialog.resetContext": "Reset context window",
2795 "settings.modelDialog.resetOutput": "Reset output limit",
2796 "settings.modelDialog.outputLimit": "Output limit (tokens)",
2797 "settings.modelDialog.outputHint": "Blank inherits; -1 omits the optional request limit. Model limits still apply.",
2798 "settings.modelDialog.reasoningEffort": "Reasoning effort",
2799 "settings.modelDialog.reasoningEffortOptions": "Available reasoning levels",
2800 "settings.modelDialog.reasoningEffortDefault": "Default reasoning level",
2801 "settings.modelDialog.resetReasoningEffort": "Reset reasoning effort",
2802 "settings.modelDialog.automatic": "Automatic",
2803 "settings.modelDialog.reasoningEffortHint": "Automatic inherits the provider default. Higher levels may use more time and tokens.",
2804 "settings.modelDialog.reasoningUnknown": "Reasoning levels have not been identified. Use Automatic, or configure this connection's reasoning protocol and available levels.",
2805 "settings.modelDialog.reasoningUnsupported": "This model configuration does not offer adjustable reasoning levels.",
2806 "settings.modelDialog.overrideHint": "Overrides the capability declaration, not what the model can actually do.",
2807 "settings.modelDialog.capabilities": "Model capabilities",
2808 "settings.modelDialog.input": "Input",
2809 "settings.modelDialog.output": "Output",
2810 "settings.modelDialog.source": "Source",
2811 "settings.modelDialog.manual": "Manual override",
2812 "settings.modelDialog.draftHint": "Takes effect after saving the connection",
2813 "settings.modelDialog.apply": "Apply changes",
2814 "settings.modelDialog.add": "Add to list",
2815 "settings.models.saveChanges": "Save changes",
2816 "settings.models.unsaved": "Unsaved changes",
2817 "settings.models.saved": "No unsaved changes",
2818 "settings.connections.copy": "Copy connection without key",
2819 "settings.models.options": "Model settings",
2820 "settings.connections.name": "Connection name",
2821 "settings.connections.id": "Internal ID (unchanged)",
2822 "settings.connections.search": "Search added connections",
2823 "settings.connections.configured": "Configured",
2824 "settings.connections.noResults": "No matching connections",
2825 "settings.connections.back": "Back to connections",
2826 "settings.catalog.search": "Search providers",
2827 "settings.catalog.providers": "Providers",
2828 "settings.catalog.region": "Account platform",
2829 "settings.catalog.product": "Access plan",
2830 "settings.catalog.regionChina": "China",
2831 "settings.catalog.regionGlobal": "International",
2832 "settings.catalog.regionSingapore": "Singapore",
2833 "settings.catalog.regionEurope": "Europe",
2834 "settings.catalog.regionLocal": "Local",
2835 "settings.catalog.productAPI": "Pay-as-you-go API",
2836 "settings.catalog.productCoding": "Coding Plan",
2837 "settings.catalog.productToken": "Token Plan",
2838 "settings.catalog.productGo": "OpenCode Go",
2839 "settings.catalog.productZen": "OpenCode Zen",
2840 "settings.catalog.productLocal": "Local models",
2841 "settings.catalog.formatBundle": "Recommended model routes",
2842 "settings.catalog.verifyFormat": "Confirm that the service URL supports this API format.",
2843 "settings.catalog.endpointHint": "Editable for this connection only. Preset defaults stay unchanged.",
2844 "settings.catalog.restoreURL": "Restore default URL",
2845 "settings.catalog.savedKey": "A saved key is available for this connection.",
2846 "settings.catalog.modelsAfterConnect": "Fetch or add models after connecting.",
2847 "settings.catalog.responsesHint": "Uses the Responses API. Select an endpoint that supports this format.",
2848 "settings.providerProtocol": "API format",
2849 "settings.providerProtocolOpenAI": "OpenAI-compatible",
2850 "settings.providerProtocolOpenAIHint": "For proxies, aggregators, and self-hosted services compatible with the OpenAI API.",
2851 "settings.providerProtocolAnthropic": "Anthropic-compatible",
2852 "settings.providerProtocolAnthropicHint": "For Claude-style Messages API services such as some coding-plan endpoints.",
2853 "settings.providerBaseUrlLabel": "API address",
2854 "settings.providerChatUrlPlaceholder": "e.g. https://api.openai.com/v1/chat/completions",
2855 "settings.providerRequestUrlHint": "Enter the full request address; Reasonix uses it unchanged.",
2856 "settings.providerKey": "Key",
2857 "settings.providerAdvancedSettings": "Compatibility settings (usually leave unchanged)",
2858 "settings.providerAdvancedExpandHint": "Click to open details",
2859 "settings.providerAdvancedCollapseHint": "Click to collapse",
2860 "settings.providerHeaders": "Extra request headers (optional)",
2861 "settings.providerHeadersPlaceholder": "HTTP-Referer: https://example.com\nX-Title: Reasonix",
2862 "settings.providerHeadersHint": "For gateways such as OpenRouter that require site headers. Use one Header: value per line; the API key still belongs in the key field above.",
2863 "settings.providerExtraBody": "Extra request body (optional)",
2864 "settings.providerExtraBodyPlaceholder": "{\n \"enable_thinking\": true\n}",
2865 "settings.providerExtraBodyHint": "Top-level JSON fields merged into the chat request body. Core fields such as model, messages, tools, stream, and thinking stay controlled by Reasonix.",
2866 "settings.providerExtraBodyError": "Enter a JSON object without null values, for example { \"enable_thinking\": true }.",
2867 "settings.providerExtraBodyNull": "{path} cannot contain null.",
2868 "settings.providerExtraBodyObjectRequired": "Extra body must be a JSON object.",
2869 "settings.providerAuthHeader": "Use Authorization: Bearer for this key",
2870 "settings.providerAuthHeaderHint": "For Anthropic-compatible gateways such as MiniMax Global or Vercel AI Gateway that do not use x-api-key.",
2871 "settings.providerNoProxy": "Bypass automatic or system proxy for this provider",
2872 "settings.providerNoProxyHint": "Routes this endpoint directly in Auto or Environment mode. An explicit custom proxy still applies; add the host under Network › No proxy to bypass it.",
2873 "settings.fetchingModels": "Refreshing…",
2874 "settings.fetchModelsSuccess": "Fetched {n} models",
2875 "settings.fetchModelsManualFallbackAuth": "The model discovery endpoint rejected the key or permission. Check the API key; if this service does not expose model discovery, enter model IDs manually below.",
2876 "settings.fetchModelsManualFallbackUnsupported": "This service may not support automatic model discovery. Enter model IDs manually below.",
2877 "settings.fetchModelsManualFallbackNetwork": "Could not reach the model discovery endpoint. Check the API address or proxy; if you know the model IDs, enter them manually below.",
2878 "settings.fetchModelsManualFallbackDecode": "The model discovery endpoint returned an unknown format. Enter model IDs manually below.",
2879 "settings.fetchModelsManualFallbackEmpty": "No models were discovered automatically. Enter model IDs manually below.",
2880 "settings.fetchModelsManualFallbackGeneric": "Could not fetch models automatically: {err}. Enter model IDs manually below.",
2881 "settings.fetchModelsReadyForProvider": "Found {n} models for {provider}. Review and save the enabled list.",
2882 "settings.enabledModelsSavedForProvider": "Saved {n} enabled models for {provider}",
2883 "settings.fetchModelsEmpty": "No available models were returned",
2884 "settings.fetchModelsEmptyForProvider": "{provider} did not return any available models",
2885 "settings.fetchModelsFailedForProvider": "Failed to refresh {provider}: {err}",
2886 "settings.newProviderDraftName": "new provider",
2887 "settings.reasoningProtocol": "Model capability mode",
2888 "settings.reasoningProtocol.auto": "Auto-detect (recommended)",
2889 "settings.reasoningProtocol.deepseek": "DeepSeek thinking (thinking + depth)",
2890 "settings.reasoningProtocol.glm": "GLM thinking (enabled / disabled)",
2891 "settings.reasoningProtocol.kimiK3": "Kimi K3 reasoning (low / high / max)",
2892 "settings.reasoningProtocol.openai": "OpenAI reasoning (reasoning_effort)",
2893 "settings.reasoningProtocol.none": "Plain chat (no reasoning fields)",
2894 "settings.reasoningProtocolHint": "Auto-detect is best for most gateways. Switch only when a proxy is incompatible or the model documentation requires a specific reasoning shape.",
2895 "settings.thinkingMode": "Thinking override",
2896 "settings.thinkingMode.auto": "Auto (provider default)",
2897 "settings.thinkingMode.enabled": "Enabled",
2898 "settings.thinkingMode.disabled": "Disabled",
2899 "settings.thinkingMode.adaptive": "Adaptive (self-adjusting)",
2900 "settings.thinkingModeHint": "Provider-specific override. Use enabled/disabled for compatible gateways, adaptive only for providers that document it.",
2901 "settings.moreModels": "{n} more",
2902 "settings.permissionsModeHint": "Choose the filesystem boundary for this session. Explicit deny rules always remain in effect.",
2903 "settings.modeAskShort": "Read only",
2904 "settings.modeAllowShort": "Workspace write",
2905 "settings.modeDenyShort": "Block writers",
2906 "settings.permissionRules": "Fine-grained rules",
2907 "settings.ruleDeny": "Block",
2908 "settings.ruleAsk": "Always confirm",
2909 "settings.ruleAllow": "Allow",
2910 "settings.ruleAllowWrite": "Allowed write paths",
2911 "settings.ruleDenyHint": "Always block matching tools or paths.",
2912 "settings.ruleAskHint": "Always request confirmation before running matches.",
2913 "settings.ruleAllowHint": "Automatically allow matches.",
2914 "settings.hooks": "Hooks",
2915 "settings.hooksScope": "Hook location",
2916 "settings.hooksScopeSection": "Configuration scope",
2917 "settings.hooksScopeField": "Scope",
2918 "settings.hooksScopeHint": "Hooks run shell commands. Global and project hooks load automatically from their configured locations.",
2919 "settings.hooksGlobal": "Global",
2920 "settings.hooksProject": "Project",
2921 "settings.hooksPath": "Settings file",
2922 "settings.hooksPathGlobalHint": "This scope is saved to your global settings file.",
2923 "settings.hooksPathProjectHint": "Project hooks are saved to .reasonix/settings.json in the current workspace.",
2924 "settings.hooksPathCopy": "Copy path",
2925 "settings.hooksPathCopied": "Settings file path copied.",
2926 "settings.hooksPathUnavailable": "No project settings file is available",
2927 "settings.hooksGlobalHint": "Saved globally. Restart Reasonix to load new hooks.",
2928 "settings.hooksProjectHint": "Saved in this workspace. Restart Reasonix to load new hooks.",
2929 "settings.hooksJsonTitle": "JSON config",
2930 "settings.hooksJsonHint": "Edit the {\"hooks\": ...} block from settings.json directly. Arrays with event fields are also accepted; saving validates and formats the JSON.",
2931 "settings.hooksJsonCopy": "Copy JSON",
2932 "settings.hooksJsonPaste": "Paste JSON",
2933 "settings.hooksJsonApply": "Format JSON",
2934 "settings.hooksJsonCopied": "JSON copied.",
2935 "settings.hooksJsonFormatted": "JSON formatted. Save to persist it.",
2936 "settings.hooksJsonInvalid": "Invalid JSON: {error}",
2937 "settings.hooksJsonExpectedObjectArray": "Expected an object or array.",
2938 "settings.hooksJsonItemObject": "Hook item must be an object.",
2939 "settings.hooksJsonUnknownEvent": "Unknown hook event {event}.",
2940 "settings.hooksJsonEventItemObject": "Hook {event} item must be an object.",
2941 "settings.hooksJsonClipboardEmpty": "Clipboard is empty",
2942 "settings.hooksJsonClipboardUnavailable": "Clipboard is unavailable; copy the textarea manually.",
2943 "settings.hooksJsonPasteFailed": "Paste failed: {error}",
2944 "settings.bashEnforceShort": "Jailed bash",
2945 "settings.bashOffShort": "Unconfined",
2946 "settings.language": "Language",
2947 "settings.languageHint": "Choose the interface language or follow the operating system.",
2948 "settings.storageTitle": "Data locations",
2949 "settings.storageHint": "Review where Reasonix stores workspaces and application data.",
2950 "settings.storageMeta": "Workspace · data · paths",
2951 "settings.browserMeta": "Built-in browser · sign-in state",
2952 "settings.browser.basics": "Basics",
2953 "settings.browser.basicsHint": "Control what new sessions may do with the built-in browser.",
2954 "settings.browser.control": "Enable built-in browser control",
2955 "settings.browser.controlHint": "Registers the browser tools, so new sessions can open and operate web pages in the built-in browser.",
2956 "settings.browser.controlOn": "Built-in browser control enabled",
2957 "settings.browser.controlOff": "Built-in browser control disabled",
2958 "settings.browser.security": "Security",
2959 "settings.browser.securityHint": "Affects the built-in browser only; the app window keeps Chromium's default verification.",
2960 "settings.browser.ignoreCertificates": "Ignore certificate errors",
2961 "settings.browser.ignoreCertificatesHint": "Stop verifying HTTPS certificates in the built-in browser. Useful for self-signed internal sites and capture proxies.",
2962 "settings.browser.certificatesOn": "Certificate verification disabled for the built-in browser",
2963 "settings.browser.certificatesOff": "Certificate verification restored",
2964 "settings.browser.data": "Browser data",
2965 "settings.browser.dataHint": "The built-in browser keeps its own cookies and cache on this machine.",
2966 "settings.browser.clearCache.title": "Clear built-in browser cache",
2967 "settings.browser.clearCache.hint": "Drops HTTP cache, Cache Storage and Service Workers. Cookies and local site data are kept.",
2968 "settings.browser.clearCache.action": "Clear cache",
2969 "settings.browser.clearCache.done": "Built-in browser cache cleared",
2970 "settings.browser.clearAll.title": "Clear all browser data",
2971 "settings.browser.clearAll.hint": "Deletes cookies, site data and cache from the built-in browser. This cannot be undone.",
2972 "settings.browser.clearAll.action": "Clear all",
2973 "settings.browser.clearAll.confirm": "Confirm clear",
2974 "settings.browser.clearAll.done": "Built-in browser data cleared",
2975 "settings.browser.import.title": "Import Chrome sign-in state",
2976 "settings.browser.import.hint": "Copy Chrome's cookies into the built-in browser once, so the agent can open sites you are already signed in to. Passwords are never read.",
2977 "settings.browser.import.action": "Import browser data",
2978 "settings.browser.import.running": "Importing…",
2979 "settings.browser.import.done": "Imported {cookies} cookies from {profile}; {skipped} skipped.",
2980 "settings.browser.import.chromeMissing": "Chrome was not found on this machine.",
2981 "settings.browser.import.profileNotFound": "No Chrome profile with cookies was found. Open Chrome once, then retry.",
2982 "settings.browser.import.cookiesUnreadable": "Chrome's cookie database could not be read. Close Chrome, then retry.",
2983 "settings.browser.import.safeStorageDenied": "Import cancelled: access to the Chrome Safe Storage key was denied, so no cookie was imported.",
2984 "settings.browser.import.safeStorageUnavailable": "Chrome's encryption key is unavailable, so no cookie was imported.",
2985 "settings.browser.import.unsupportedPlatform": "Importing Chrome sign-in state is not supported on this platform.",
2986 "settings.browser.desktopOnly": "Browser data can only be managed in the desktop app.",
2987 "settings.browser.loadFailed": "Built-in browser settings could not be read.",
2988 "settings.browser.warningInvalid": "The browser control file is invalid; defaults are in use.",
2989 "settings.browser.warningUnreadable": "The browser control file could not be read; defaults are in use.",
2990 "settings.browser.warningUnsupported": "The browser control file was written by a newer version; settings are read-only.",
2991 "settings.storageState": "Sessions and memory",
2992 "settings.storageCache": "Cache",
2993 "settings.storageExtensions": "Extensions",
2994 "settings.defaultWorkspace": "Default workspace",
2995 "settings.defaultWorkspaceHint": "Opened automatically on startup when available.",
2996 "settings.langAuto": "Auto (system)",
2997 "settings.currency": "Cost display currency",
2998 "settings.currencyAuto": "Auto (recommended)",
2999 "settings.currencyHint": "Display only; balances and model prices stay unchanged. Auto prefers the account currency, then the pricing-table currency.",
3000 "context.sessionCostEstimated": "Estimated session cost",
3001 "context.sessionCostPaygEquivalent": "PAYG-equivalent estimate",
3002 "context.sessionCostBucketed": "Multiple currencies",
3003 "context.sessionCostUnavailable": "Cost not estimable",
3004 "context.sessionCostFallback": "target currency unavailable",
3005 "settings.config": "config: {path}",
3006 "settings.configShadowed": "overridden by workspace config: {path} (changes here may not take effect)",
3007 "settings.generativeMusic": "Generative background music",
3008 "settings.generativeMusic.presets.classic": "Classic (Triangle)",
3009 "settings.generativeMusic.presets.ethereal": "Ethereal (Sine) ★",
3010 "settings.generativeMusic.off": "Off",
3011 "settings.generativeMusic.presets.digital": "Digital (Square)",
3012 "settings.generativeMusic.presets.retro": "Retro (Sawtooth)",
3013 "settings.generativeMusicPreview": "Preview",
3014
3015 // todo bar
3016 "todo.title": "To-dos",
3017 "todo.pending": "Pending",
3018 "todo.inProgress": "In progress",
3019 "todo.paused": "Ready to continue",
3020 "todo.completed": "Completed",
3021 "todo.continue": "Continue",
3022
3023 // slash menu tags
3024 "slash.project": "project",
3025 "slash.plugin": "plugin · {name}",
3026 "slash.mcp": "mcp",
3027 "slash.skill": "skill",
3028 "slash.subagent": "subagent",
3029 "slash.startOnly": "Only available at the start of a message",
3030 "slash.group.actions": "Quick actions",
3031 "slash.group.management": "More commands",
3032 "slash.group.subagents": "Subagents",
3033 "slash.group.skills": "Skills & project commands",
3034 "slash.group.integrations": "Integrations",
3035
3036 // assistant message
3037 "msg.thinking": "thinking",
3038 "msg.thinkingRunning": "thinking…",
3039 "msg.thinkingDone": "done",
3040 "msg.thinkingDuration": "lasted {s}s",
3041 "msg.memoryCompilerCitationsCount": "{n} Memory v5 compiler references",
3042 "msg.memoryCompilerApplied": "Memory v5 compiler applied to this message",
3043 "msg.memoryCitationLine": "line {line}",
3044 "msg.memoryCitationLineRange": "lines {start}-{end}",
3045 "msg.copy": "Copy",
3046 "msg.editSend": "Send",
3047 "msg.attachments": "Attachments",
3048 "msg.fromIm": "From {source}",
3049 "msg.imSender": "Sender {id}",
3050 "msg.sendFailed": "Send failed — message was not delivered",
3051 "msg.fileAttachment": "File",
3052 "msg.imageAttachment": "Image",
3053 "msg.workspaceReference": "Workspace reference",
3054 "notice.protocolRecoveryAction": "Recover from valid history",
3055 "notice.protocolRecoveryBody": "The upstream did not provide a specific cause. You can rebuild its history view and continue while preserving completed results.",
3056 "sources.notProvided": "Search completed; the provider did not supply usable structured sources.",
3057 "sources.title": "Sources",
3058 "sources.count": "{n}",
3059 "sources.hidden": "{n} hidden",
3060 "sources.noValid": "No valid sources",
3061 "sources.open": "Open source",
3062 "sources.copyLink": "Copy link",
3063 "msg.folderReference": "Folder · Workspace reference",
3064 "msg.pastedExpandTooltip": "Expand pasted text",
3065 "msg.pastedCollapseTooltip": "Collapse pasted text",
3066 "turnActions.summary": "Compress",
3067 "turnActions.rewind": "Rewind",
3068 "transcript.jumpToBottom": "Jump to bottom",
3069 "markdown.tableExpandAll": "Expand all {n} rows",
3070 "markdown.tableCollapse": "Collapse table",
3071 "transcript.loadEarlierFailed": "Earlier conversation could not be loaded",
3072 "transcript.toolCount": "{n} tools",
3073 "transcript.thoughtCount": "{n} thoughts",
3074 "transcript.steer": "Mid-turn steer",
3075 "transcript.working": "Working",
3076 "transcript.workingDuration": "Working {duration}",
3077 "transcript.worked": "Worked",
3078 "transcript.workedDuration": "Worked {duration}",
3079 "transcript.durationSeconds": "{s}s",
3080 "transcript.durationMinutes": "{m}m",
3081 "transcript.durationMinutesSeconds": "{m}m {s}s",
3082 "transcript.processed": "Processed",
3083 "transcript.processedDuration": "Processed {s}s",
3084 "notice.remoteTurnInterrupted": "The remote connection dropped mid-turn; the session will re-sync from the server after reconnecting.",
3085 "notice.remoteProviderUnreachable": "The credential channel (desktop key proxy) is unreachable, retrying: {detail}",
3086 "notice.askSubmitFailed": "Unable to submit answer: {error}",
3087 "notice.details": "Details",
3088 "notice.decisionReceiptTitle": "Decision recorded",
3089 "notice.decisionReceiptTool": "Tool approval",
3090 "notice.decisionReceiptAsk": "Question answered",
3091 "notice.decisionReceiptPlan": "Plan decision",
3092 "notice.decisionReceiptRecovery": "Recovery decision",
3093 "notice.decisionAllowOnce": "Allowed once",
3094 "notice.decisionAllowSession": "Allowed for this session",
3095 "notice.decisionAllowPersistent": "Allowed persistently",
3096 "notice.decisionDeny": "Denied",
3097 "notice.decisionStartExecution": "Started execution",
3098 "notice.decisionRevisePlan": "Requested plan revision",
3099 "notice.decisionExitPlan": "Exited without execution",
3100 "notice.decisionRecoveryContinue": "Continued",
3101 "notice.decisionRecoveryContinueTask": "Continued for this task",
3102 "notice.decisionRecoveryRevise": "Requested an adjustment",
3103 "notice.decisionAnswered": "Answered",
3104 "notice.finalReadiness": "Task status needs one more check; asking the assistant to finish or explain what is blocking it.",
3105 "notice.deliveryIncompleteTitle": "Checks are not complete",
3106 "notice.deliveryIncompleteBody": "The response was generated, but required verification or review is still incomplete.",
3107 "notice.recoveryPausedTitle": "Automatic retries paused",
3108 "notice.recoveryPausedBody": "Reasonix stopped repeated attempts and kept completed work. Send “Continue” to start a fresh attempt, or add instructions to change direction.",
3109 "notice.completionUncertainTitle": "Completion not confirmed",
3110 "notice.completionUncertainBody": "The result could not be confirmed as complete. The current answer and all completed work are kept. Send “继续 / continue” to resume, or restate what should change.",
3111 "notice.deliveryIncompleteContinue": "Continue checks",
3112 "notice.deliveryIncompleteAccept": "End checks",
3113 "notice.deliveryIncompleteContinuePrompt": "Continue and complete the remaining task checks.",
3114 "notice.completionChangesTitle": "Turn result",
3115 "notice.completionViewChanges": "View changes",
3116 "notice.completionViewVerification": "View check details",
3117 "completion.panelTitle": "Check details",
3118 "completion.changesUnknown": "Change statistics unavailable",
3119 "completion.changesIncomplete": "Change statistics incomplete",
3120 "completion.noNetChanges": "No net file changes",
3121 "completion.filesCounted": "{count} files counted",
3122 "completion.partialStats": "Partial statistics",
3123 "completion.checkRunning": "Checking…",
3124 "completion.checkFailed": "Checks failed · {count}",
3125 "completion.checkInterrupted": "Checks interrupted",
3126 "completion.checkStale": "Changes made after checks",
3127 "completion.checkPassed": "Checks passed · {count}",
3128 "completion.checkNone": "No checks recorded",
3129 "completion.checkUnknown": "Check information incomplete",
3130 "completion.someStale": "Some results are stale",
3131 "completion.turnDiff": "Turn changes",
3132 "completion.allChanges": "All current workspace changes",
3133 "completion.viewLogs": "View logs",
3134 "completion.logsTruncated": "Showing the retained tail of this log.",
3135 "completion.logsUnavailable": "Logs have not arrived, were cleared, or cannot be linked.",
3136 "completion.diffUnavailable": "Diff details for this turn are unavailable.",
3137 "completion.checksOnly": "These results cover only the commands recorded above.",
3138 "completion.binary": "Binary file",
3139 "completion.modeOnly": "Permissions only",
3140 "completion.linesUnknown": "Lines not counted",
3141 "completion.detailLimited": "Diff exceeds the display limit.",
3142 "completion.coverageReason": "Some changes could not be attributed to this turn or exceeded the statistics limit.",
3143 "completion.turnLabel": "Turn {count}",
3144 "completion.exitCode": "Exit code: {code}",
3145 "completion.checkStaleItem": "Stale",
3146 "completion.checkInterruptedItem": "Interrupted",
3147 "completion.checkPassedItem": "Passed",
3148 "completion.checkFailedItem": "Failed",
3149 "completion.loadingResult": "Loading turn record…",
3150 "completion.verdictPartial": "Partially complete",
3151 "completion.verdictBlocked": "Blocked",
3152 "completion.filesChanged": "{count} files changed",
3153 "completion.review": "Independent review: {status}",
3154 "completion.gaps": "Verification gaps: {gaps}",
3155 "completion.gapStaleCheck": "stale checks",
3156 "completion.constraintsLimited": "Turn verification limited",
3157 "notice.deliveryIncompleteMissing": "Still needed: {items}",
3158 "notice.deliveryRequirementSeparator": ", ",
3159 "notice.deliveryRequirementProjectCheck": "project checks",
3160 "notice.deliveryRequirementTodo": "unfinished task items",
3161 "notice.deliveryRequirementCriteria": "acceptance criteria",
3162 "notice.deliveryRequirementVerification": "verification",
3163 "notice.deliveryRequirementReview": "change review",
3164 "notice.deliveryRequirementSignoff": "step sign-off",
3165 "notice.deliveryRequirementAction": "host-observable work",
3166 "notice.deliveryRequirementMutation": "the requested change",
3167 "notice.deliveryRequirementTask": "remaining implementation work",
3168 "notice.deliveryRequirementCapability": "required capability checks",
3169 "notice.emptyFinal": "No visible answer was produced; asking the assistant to respond again.",
3170 "notice.executorHandoff": "The assistant answered before taking action; asking it to use the required tools.",
3171 "notice.toolBudget": "Tool round limit reached; asking the assistant to summarize progress.",
3172 "notice.promptQueued": "A question is waiting for you to answer the prompt ahead of it.",
3173 "notice.loopGuard": "The assistant is not making progress; asking it to reassess the current step.",
3174 "notice.workspaceLease": "Another session is writing to this workspace; this session will continue automatically when it is safe.",
3175 "notice.cancelledTurnDisplay": "This turn was interrupted. Partial output is kept for reference; only completed tool pairs and a bounded recovery summary enter the next model turn. Inspect the workspace before continuing or reverting changes.",
3176 "notice.streamInterruptReason": "Last model connection failed: {reason}. If this repeats, check the provider gateway or network proxy settings.",
3177 "notice.streamInterruptReason.idleTimeout": "no data arrived before the idle timeout",
3178 "notice.streamInterruptReason.prematureEof": "the stream ended before completion",
3179 "notice.streamInterruptReason.connectionReset": "the connection was reset",
3180 "notice.streamInterruptReason.unknown": "unknown transport failure",
3181 "notice.unappliedSteer": "Guidance was not applied because the turn ended before it could be processed. Send it again if it is still needed:\n{guidance}",
3182 "notice.contextLarge": "Context is getting large; preserving cache until cleanup is needed.",
3183 "notice.contextCleanupSkipped": "Context cleanup skipped for now.",
3184 "notice.contextCleanupPaused": "Automatic context cleanup paused because the context window is too small.",
3185 "notice.compactionNoSummary": "Context was compacted without a generated summary.",
3186 "notice.goalNotReady": "Goal is not ready to complete yet; continuing the remaining work.",
3187 "notice.goalUnfinished": "Goal still has unfinished task state; continuing the remaining work.",
3188 "notice.backgroundJobFailed": "Background {kind} needs attention.",
3189 "notice.jobArtifactMigrationFailed": "Job artifact migration failed.",
3190 "notice.jobTeardownTimeout": "Background job teardown timed out.",
3191 "notice.planModeToolSettingsIgnored": "Some plan-mode tool settings were ignored.",
3192 "notice.planModeCommandSettingsIgnored": "Some plan-mode command settings were ignored.",
3193 "notice.configMigrationIncomplete": "Config migration did not complete.",
3194 "notice.providerConnectionRepaired": "Provider connection settings were repaired.",
3195 "notice.modelMissingApiKey": "Selected model is missing its API key.",
3196 "notice.mcpServerFailed": "An MCP server failed to start.",
3197 "notice.mcpServersFailed": "Some MCP servers failed to start; run /mcp for details.",
3198 "notice.guardianModelMissing": "Guardian was disabled because its model was not found.",
3199 "notice.guardianStartFailed": "Guardian was disabled because it could not start.",
3200 "notice.contextEditingFallback": "Using local context maintenance.",
3201 "notice.turnStalled": "No progress for a while. The turn is still running; if it looks stuck, press Stop.",
3202 "questionNav.label": "Question navigation",
3203 "questionNav.progress": "Question {current} / {total}",
3204 "questionNav.notLoaded": "Question {n} (click to load)",
3205 "compaction.working": "Compacting conversation…",
3206 "compaction.title": "Context compacted",
3207 "compaction.messages": "{n} messages",
3208 "rewind.label": "Message actions",
3209 "rewind.disabledRunning": "Wait for the current action to finish",
3210 "rewind.disabledNoCheckpoint": "This message has no restore point",
3211 "rewind.disabledNoBoundary": "Conversation boundary is unavailable for this message",
3212 "rewind.disabledNoCode": "No code changes were captured after this message",
3213 "rewind.disabledNoEarlier": "There is no earlier model context to compress",
3214 "rewind.disabledNoLater": "There is no later model context to compress",
3215 "rewind.filesChanged": "{count} files",
3216 "rewind.turnFiles": "{count} this turn",
3217 "rewind.both": "Rewind code and conversation",
3218 "rewind.conversation": "Rewind conversation only",
3219 "rewind.code": "Rewind code only",
3220 "rewind.fork": "Fork",
3221 "rewind.forkTooltip": "Fork conversation from this message",
3222 "rewind.forkWorktree": "Fork into Isolated Worktree",
3223 "rewind.forkConversation": "Fork in Shared Workspace",
3224 "rewind.confirmForkWorktree": "Confirm Isolated Worktree Fork",
3225 "rewind.forkWorktreeFallbackNotice": "Git worktrees are unavailable here, so the conversation was forked in the shared workspace.",
3226 "rewind.forkWorktreeDirtySource": "Commit or stash workspace changes before an isolated fork, or use a shared fork to keep them.",
3227 "rewind.forkFailed": "Fork failed. Any worktree that could not be cleaned up safely was preserved.",
3228 "rewind.summFrom": "Compress model context after this",
3229 "rewind.summUpto": "Compress model context before this",
3230 "rewind.confirmFork": "Confirm fork conversation",
3231 "rewind.confirmSummFrom": "Confirm context compression after this (visible history is kept)",
3232 "rewind.confirmSummUpto": "Confirm context compression before this (visible history is kept)",
3233 "rewind.confirmBoth": "Confirm rewind code and conversation",
3234 "rewind.confirmConversation": "Confirm rewind conversation",
3235 "rewind.confirmCode": "Confirm rewind code",
3236 "rewind.confirmPartialCoverage": "Reasonix could not track every possible file write. Only captured files will be restored.\n\nCoverage gaps:\n{gaps}\n\nContinue?",
3237 "rewind.partialCoverageUnknown": "Some writes could not be attributed to a file path.",
3238 "rewind.partialRestoreFailed": "The conversation was forked, but code could not be fully restored.",
3239 "rewind.busyFork": "Forking from this message…",
3240 "rewind.busySummFrom": "Compressing model context after this message…",
3241 "rewind.busySummUpto": "Compressing model context before this message…",
3242 "rewind.busyConversation": "Rewinding conversation…",
3243 "rewind.busyCode": "Rewinding code…",
3244 "rewind.busyBoth": "Rewinding code and conversation…",
3245 "undoRewind.turns": "Rolled back {n} turn(s)",
3246 "undoRewind.filesRestored": "{n} file(s) restored",
3247 "undoRewind.filesRemoved": "{n} file(s) removed",
3248 "undoRewind.undo": "Undo",
3249 "undoRewind.confirm": "Confirm undo?",
3250 "msg.copied": "Copied",
3251
3252 // tool card summaries
3253 "tool.error": "error",
3254 "tool.receivingArgs": "receiving arguments ↓ {chars}…",
3255 "tool.errorReceiptMismatch": "verification command has no matching successful receipt",
3256 "tool.command": "Command",
3257 "tool.loadFailed": "Could not load the complete tool details.",
3258 "tool.truncated": "output truncated",
3259 "tool.showAllLines": "show all {n} lines",
3260 "tool.showErrorDetails": "show error details",
3261 "tool.hideErrorDetails": "hide error details",
3262 "tool.readCount": "Read {n} files",
3263 "tool.searchCount": "Search {n} files",
3264 "tool.searchResults": "{n} results",
3265 "tool.searchQuery": "Query: {query}",
3266 "tool.otherReadCount": "{n} read calls",
3267 "tool.lineOne": "{n} line",
3268 "tool.lineOther": "{n} lines",
3269 "tool.matchOne": "{n} match",
3270 "tool.matchOther": "{n} matches",
3271 "tool.fileOne": "{n} file",
3272 "tool.fileOther": "{n} files",
3273 "tool.entryOne": "{n} entry",
3274 "tool.entryOther": "{n} entries",
3275 "tool.editOne": "{n} edit",
3276 "tool.editOther": "{n} edits",
3277 "tool.replacementOne": "{n} replacement",
3278 "tool.replacementOther": "{n} replacements",
3279 "tool.emptyFile": "empty file",
3280 "tool.noOutput": "no output",
3281 "tool.shell.exitCode": "exit {code}",
3282 "tool.shell.verificationPassed": "verification passed",
3283 "tool.shell.verificationFailed": "verification failed",
3284 "tool.shell.verificationNotRun": "verification not run",
3285 "tool.shell.notExecuted": "command did not run",
3286 "tool.shell.mayBePartial": "command may have partially modified files",
3287 "subagent.phase.queued": "queued",
3288 "subagent.phase.running": "running",
3289 "subagent.phase.reasoning": "reasoning",
3290 "subagent.phase.responding": "responding",
3291 "subagent.phase.tool": "using tools",
3292 "subagent.phase.retrying": "retrying",
3293 "subagent.phase.completed": "completed",
3294 "subagent.phase.partial": "partially complete",
3295 "subagent.phase.failed": "failed",
3296 "subagent.phase.cancelled": "cancelled",
3297 "subagent.phase.elapsed": "{n}s",
3298 "subagent.activity.ago": "{n}s ago",
3299 "subagent.preview.reasoning": "Reasoning",
3300 "subagent.preview.text": "Response preview",
3301 "subagent.preview.notice": "Notices",
3302 "subagent.preview.truncated": "preview truncated",
3303 "subagent.outcome.retryable": "retryable",
3304
3305 // software update
3306 "config.loadWarning": "Configuration issue: {msg}",
3307 "config.openConfig": "Open config",
3308 "config.reloadConfig": "Reload",
3309 "config.doctorHint": "Or run: reasonix doctor repair",
3310 "updater.autoCheckLabel": "Automatically check for updates",
3311 "updater.autoCheckHint": "Checks version information at most once every 6 hours. It never downloads, installs, or restarts automatically. You can still check manually when this is off.",
3312 "updater.officialReleaseHint": "Reasonix checks the latest official release.",
3313 "updater.officialDownload": "Download from official site",
3314 "updater.updatePreferences": "Update preferences",
3315 "updater.privacyAndConfig": "Privacy & configuration",
3316 "updater.buildIdentity": "Build identity",
3317 "updater.buildIdentityHint": "The release channel for this build. Test and prerelease builds never contact the production updater.",
3318 "settings.telemetryLabel": "Anonymous usage ping",
3319 "settings.telemetryHint": "On launch, send a random anonymous install ID, version, OS/build or Linux distribution/session, Web Runtime, and GPU mode to count active installs. After an abnormal exit, the next launch may send scrubbed native diagnostics: lifecycle phase, symbolized stack, runtime reason, exit code, and recovery result. This is not an account ID and never includes conversations, accounts, keys, file contents, full paths, or GPU drivers.",
3320 "settings.metricsLabel": "Share aggregate quality metrics",
3321 "settings.metricsHint": "On by default. Sends anonymous turn-end counts, updater error categories, lifecycle/window health buckets, and settings preference snapshots. Includes the random install id used to de-duplicate DAU. Buckets may include normalized custom provider and model names — never conversations, prompts, keys, paths, base URLs, memory text, tool outputs, or file contents.",
3322 "updater.currentVersion": "Current version: {v}",
3323 "updater.checkButton": "Check for updates",
3324 "updater.checking": "Checking for updates…",
3325 "updater.upToDate": "You're on the latest version.",
3326 "updater.available": "A new version is available: {v}",
3327 "updater.releaseNotes": "Release notes",
3328 "updater.updateAndRestart": "Download, install, and restart",
3329 "updater.goToDownload": "Go to download page",
3330 "updater.macHint": "Automatic install isn't available for this macOS build — please download and install manually.",
3331 "updater.downloading": "Downloading… {done} MB / {total} MB ({pct}%)",
3332 "updater.verifying": "Verifying signature…",
3333 "updater.authorizing": "Waiting for administrator authorization…",
3334 "updater.installing": "Installing — Reasonix will restart…",
3335 "updater.installingPackage": "Installing via the system package manager…",
3336 "updater.done": "Update complete — restarting…",
3337 "updater.failed": "Update failed: {msg}",
3338 "updater.recoveryBlocked": "The previous update has not finished.",
3339 "updater.recoveryHint": "Try “Discard previous update”, then retry. Restart Reasonix if the button is unavailable. On macOS, allow Reasonix in System Settings > Privacy & Security > App Management. If recovery is still blocked, download the latest signed installer and install it over the current version without uninstalling first.",
3340 "updater.manualUpdateRequired": "Automatic installation is unavailable.",
3341 "updater.manualFallbackHint": "Download the latest signed installer from the official site and install it over the current version.",
3342 "updater.errorDetails": "Details: {msg}",
3343 "updater.retry": "Retry",
3344 "updater.discardPrevious": "Discard previous update",
3345 "updater.dismiss": "Later",
3346 "changelog.title": "Release notes",
3347 "changelog.subtitle": "A product-focused history of new capabilities, improvements, fixes, and upgrade guidance.",
3348 "changelog.openWeb": "Open on web",
3349 "feedback.title": "Help & feedback",
3350 "feedback.subtitle": "Report bugs or suggest features. Do not include secrets, chats, or private paths.",
3351 "feedback.submitIssue": "Submit issue",
3352 "feedback.viewIssues": "View issues",
3353
3354 // onboarding — first-run model provider guide
3355 "onboarding.repairConnection": "Complete this connection’s key and models to get started.",
3356 "onboarding.addConnection": "Add a model service to get started, or return to the workspace and set it up later.",
3357 "onboarding.connectionReady": "Your model service is configured. Start using it as your default model.",
3358 "onboarding.startUsing": "Start using",
3359 "onboarding.inlinePrompt": "Connect a model provider before starting a conversation.",
3360 "onboarding.configureProvider": "Configure model provider",
3361
3362 // context panel
3363 "context.overview": "Session overview",
3364 "context.windowTitle": "Context window",
3365 "context.windowStatusHealthy": "Context healthy",
3366 "context.windowStatusWatch": "Compression soon",
3367 "context.windowStatusPastCompact": "Compression threshold reached",
3368 "context.windowStatusNearLimit": "Near context limit",
3369 "context.windowStatusOverLimit": "Over context limit",
3370 "context.windowUsageSummary": "{pct}% used",
3371 "context.windowCompactRemaining": "{used} / {window} · {tokens} until compression",
3372 "context.windowCompactDistance": "To compact",
3373 "context.windowUsedLabel": "Used",
3374 "context.windowUsed": "Used context",
3375 "context.budgetTitle": "This turn's context budget",
3376 "context.budgetOutputReserve": "Output budget",
3377 "context.budgetPhysicalRemaining": "Physical remaining",
3378 "context.budgetOutputSource": "Output cap source",
3379 "context.budgetSourceExplicit": "Explicit config",
3380 "context.budgetSourceOfficial": "Official default",
3381 "context.budgetSourceOpencode": "OpenCode metadata",
3382 "context.budgetSourceLearned": "Learned from a 400",
3383 "context.budgetSourceUnknown": "Unknown",
3384 "context.budgetWhyOverflow": "The usage ring is prompt ÷ window. A 63% prompt can still overflow because the provider also reserves completion tokens in the same window.",
3385 "context.budgetRecoveryClip": "Output was clipped before send so prompt + completion fit.",
3386 "context.budgetRecoveryRetry": "Recovered from a context 400 by lowering the output budget.",
3387 "context.budgetRecoveryCompacted": "Recovered from a context 400 by compacting once and retrying.",
3388 "context.budgetRecoveryFailed": "Automatic recovery stopped. Compact, retry, fork, or rewind, then send again.",
3389 "context.maintenanceTitle": "Context checkpoint",
3390 "context.maintenanceAppliedSummary": "Built a short context view · history summarized",
3391 "context.maintenanceBlockedSummary": "Context summary could not form a safe short view · auto-retry stopped",
3392 "context.maintenanceFailedSummary": "Context summary failed · auto-retry stopped",
3393 "context.maintenanceTruncatedSummary": "Trimmed the context view · oldest tool results and turns removed to fit the window",
3394 "context.sessionMetrics": "Session metrics",
3395 "context.mcpListTitle": "MCP tools/list",
3396 "context.mcpListSharedHost": "Shared host",
3397 "context.mcpListDiskCache": "Disk cache",
3398 "context.mcpListRemote": "Remote",
3399 "context.mcpListEmpty": "No tools/list observations in this session",
3400 "context.sessionChanges": "Session changes",
3401 "context.referencedFiles": "Dependency files",
3402 "context.noChanges": "No changed files in this session yet",
3403 "context.changedMeta": "{count} change records",
3404 "context.readMeta": "{count} read records",
3405 "context.prompt": "Prompt",
3406 "context.completion": "Completion",
3407 "context.reasoning": "Reasoning",
3408 "context.other": "Other",
3409 "context.total": "Total",
3410 "context.usageAnalysis": "Usage analysis",
3411 "context.usageAnalysisView": "Usage analysis view",
3412 "context.usageAnalysisSource": "By source",
3413 "context.usageAnalysisType": "By type",
3414 "context.tokenBreakdown": "Token composition",
3415 "context.cacheHit": "Cache hit",
3416 "context.sessionTokens": "Session total tokens",
3417 "context.sessionTokensShort": "Total tokens",
3418 "context.tokensValue": "{value} tokens",
3419 "context.sessionCost": "Session cost",
3420 "context.sourceBreakdown": "Usage source",
3421 "context.sourceShareTitle": "Source share",
3422 "context.sourceInput": "Input",
3423 "context.sourceOutput": "Output",
3424 "context.sourceCacheHit": "Hit",
3425 "context.sourceCacheMiss": "Miss",
3426 "context.sourceCacheRate": "Cache",
3427 "context.sourceCost": "Cost",
3428 "context.sourceDetails": "Details",
3429 "context.cacheNotReported": "not reported",
3430 "context.sourceExecutor": "Main",
3431 "context.sourcePlanner": "Planner",
3432 "context.sourceSubagent": "Subagent",
3433 "context.sourceCompaction": "Summary call cost",
3434 "context.sourceClassifier": "Classifier",
3435 "context.sourceTitle": "Title",
3436 "context.sourceRequests": "{count} req",
3437 "context.moreSources": "{count} more sources",
3438 "context.requests": "Requests",
3439 "context.time": "Runtime",
3440 "context.sessionTime": "Session time",
3441 "context.turnTime": "Turn time",
3442 "context.turnTimeTitle": "Wall-clock time for this turn, excluding approval, answer and MCP-interaction waits. Tool execution counts toward the turn.",
3443 "context.durationSeconds": "{seconds}s",
3444 "context.durationMinutesSeconds": "{minutes}m {seconds}s",
3445
3446 // crash page
3447 "crash.title": "Reasonix hit an error — send us the report, or copy it",
3448 "crash.copy": "Copy",
3449 "crash.copied": "Copied",
3450 "crash.copyFailed": "Copy failed — select the report text and copy manually",
3451 "crash.send": "Send report",
3452 "crash.sending": "Sending…",
3453 "crash.sent": "Sent — thanks!",
3454 "crash.sendFailed": "Send failed — use Copy instead",
3455 "crash.privacyNote": "The report contains only the error text above (user names in paths removed) plus app version and OS.",
3456 "performanceReport.title": "Reasonix noticed a responsiveness issue",
3457 "performanceReport.dismiss": "Dismiss",
3458 "performanceReport.memoryTitle": "Reasonix noticed sustained memory growth",
3459 "performanceReport.heapFailed": "Heap snapshot could not be saved",
3460 "performanceReport.saveHeap": "Save heap snapshot…",
3461 "performanceReport.heapSaved": "Heap snapshot saved",
3462 "performanceReport.diagnosticBusy": "Diagnostic in progress — try again shortly",
3463 "performanceReport.privacyNote": "Before upload, the desktop scrubber removes paths and secrets. The diagnostic is intended to contain timing, memory, network state, sampled app function names, recent breadcrumbs, app version, and OS.",
3464
3465 // mock / demo seed data (browser dev only)
3466 "mock.trashDevStandardTitle": "00 Establish project development standards",
3467 "mock.trashDevStandardPreview": "Organize project development standards including directory structure, branch conventions, and commit requirements.",
3468 "mock.trashP3aTitle": "20260521 p3a P&D",
3469 "mock.trashP3aPreview": "Review p3a P&D scope, document remaining risks and next-round suggestions.",
3470 "mock.trashGlobalProductTitle": "Common product specs",
3471 "mock.trashGlobalProductPreview": "Document cross-project common product rules including acceptance, canary, and error handling.",
3472 "mock.projectJoyquantDb": "joyquant-db",
3473 "mock.projectJoyquantSys": "joyquant-sys",
3474 "mock.topicDevStandard": "00 Establish project dev standards",
3475 "mock.topicDbMaint": "01 JoyQuant DB project maintenance",
3476 "mock.topicEnv": "Project environment uv and Python runtime issues",
3477 "mock.topicP3b": "20260523 p3b P&D",
3478 "mock.topicP3a": "20260521 p3a P&D",
3479 "mock.topicHotfix": "20260522 post-p3-hotfix P&D",
3480 "mock.topicSysCoord": "01 JoyQuant-SYS project coordination",
3481 "mock.topicSysStandard": "00 Establish project dev standards",
3482 "mock.topicSysException": "Exception handling recovery drill",
3483 "mock.topicProduct": "Common product specs",
3484 "mock.topicAi": "AI engineering best practices",
3485 "mock.topicLab": "Exploratory experiments",
3486 "mock.approvalSubject": "npm run build\n\nRun the build command to verify frontend artifacts and style packaging.",
3487 "mock.sandboxEscapeReasoning": "Windows has no OS-level Bash sandbox; requesting a one-time unconfined-run approval.",
3488 "mock.sandboxEscapeSubject": "run unconfined once: go test ./...",
3489 "mock.sandboxEscapeReason": "Windows does not provide an OS-level Bash sandbox for this command. Run it unconfined one time? This bypasses OS isolation for this command only.",
3490 "mock.askQ1Header": "Approach",
3491 "mock.askQ1Prompt": "How do you want to handle the git pull conflicts?",
3492 "mock.askQ1Opt1Label": "git stash then pull",
3493 "mock.askQ1Opt1Desc": "Use git stash to save local changes, pull latest code, then restore",
3494 "mock.askQ1Opt2Label": "Discard local changes then pull",
3495 "mock.askQ1Opt2Desc": "Abandon all local changes, force sync with remote",
3496 "mock.askQ1Opt3Label": "Create branch to save changes",
3497 "mock.askQ1Opt3Desc": "Create a branch to save local changes first, then pull main branch",
3498 "mock.askQ2Header": "Reasonix build",
3499 "mock.askQ2Prompt": "What do you want to do about the missing reasonix binary?",
3500 "mock.askQ2Opt1Label": "Check docs first",
3501 "mock.askQ2Opt1Desc": "Read README / build docs to determine the correct build command",
3502 "mock.askQ2Opt2Label": "Check build config",
3503 "mock.askQ2Opt2Desc": "Check desktop/main.go and host_rpc.go to infer the entry point",
3504 "mock.askQ2Opt3Label": "Let me try building",
3505 "mock.askQ2Opt3Desc": "Handle git conflicts first, then attempt local build and report results",
3506 "mock.todo1": "Review current frontend structure",
3507 "mock.todo2": "Optimize approval and Ask decision bar layout",
3508 "mock.todo2ActiveForm": "Adjusting decision bar layout",
3509 "mock.todo3": "Verify three preview states",
3510 "mock.newSession": "New session",
3511 "mock.memoryBody": "# User memory\n\nAlways respond in English.",
3512 "mock.changedFile1Prompt": "Update draft spec v0.3",
3513 "mock.changedFile2Prompt": "Record project context",
3514 "mock.changedFile1Path": "docs/dev-standard.md",
3515 "mock.changedFile2Path": ".reasonix/project.md",
3516 "draft.badge": "Draft",
3517 "draft.surfaceLabel": "New session draft",
3518 "draft.globalWorkspace": "No project",
3519 "draft.saved": "Saved",
3520 "draft.createOnSend": "The session will be created after you send your first message",
3521 "draft.saving": "Saving…",
3522 "draft.unsaved": "Unsaved changes",
3523 "draft.saveFailed": "Save failed — retrying with the next edit",
3524 "draft.retrySave": "Retry save",
3525 "draft.resultUnknown": "Execution status is unknown",
3526 "draft.starting": "Creating session and starting…",
3527 "draft.resume": "Continue creating session",
3528 "draft.checkSubmission": "Check submission status",
3529 "draft.openSession": "Open created session",
3530 "draft.conflict": "Edit conflict",
3531 "draft.conflictDetail": "This draft was edited in another window. Choose which version to keep before sending.",
3532 "draft.useSaved": "Use saved version",
3533 "draft.keepLocal": "Keep this window",
3534 "draft.discard": "Discard draft",
3535 "draft.discardTitle": "Discard this draft?",
3536 "draft.discardDetail": "The saved message, attachments, references, and settings will be removed from this draft.",
3537 "draft.discardConfirm": "Discard",
3538 "draft.mcpTitle": "MCP servers",
3539 "draft.mcpEnabled": "Enabled for this session",
3540 "draft.mcpDisabled": "Disabled for this session",
3541 "draft.mcpUnavailable": "Disabled in settings",
3542 };
3543
3544 export type DictKey = keyof typeof en;
3545
3545 lines TYPESCRIPT