Files
AgentHub/client/src/i18n/locales/en/run.json
T
nntrivi2001 f6f1bf4a76 feat: v2.7.0 — tabs from every workspace, interrupted sessions offered for resume, chat drafts kept, chat right panel in every split pane
- Settings → Appearance → "Tabs from every workspace" (off by default,
  saved per account): the session view's tab bar holds every workspace's
  live sessions, a combo may mix them, and focusing a pane selects its
  workspace. Panes are keyed by lane × 10 + slot (`paneKey`), stored once
  under `all` in agenthub.workspace.paneLayout.
- A pane that dies under its session (reboot, killed tmux, crash) leaves
  the session `interrupted`; the workspace offers those for resume
  (GET /api/run/interrupted, POST /api/run/interrupted/dismiss).
- Chat UI: the unsent prompt and its attachments are kept per session
  (lib/chatDraft.ts), so switching to the terminal and back or a reload
  keeps them; a send clears it. Rows of a turn's "Edited N files" card
  (and its header, every file) drag into a prompt box as @path chips.
- Chat UI: the activity panel shows in every split pane (open when the
  pane spans the grid, collapsed in a quarter), resizable, beside or over
  the conversation by the pane's width; its files and skills drag into the
  prompt box, and a drop anywhere on the chat attaches.
- Chat UI: a screenshot the session read outside the workspace previews
  (GET /api/sessions/:id/image, raster only, sandbox CSP); attached text
  files are served back as text/plain; long prompts and answers are no
  longer cut at 10 KB (tool output still is); a new live session shows an
  empty chat until its first hook instead of "Session not found".
- Windows: input right after a paste waits for psmux's bracketed paste,
  so the chat's Enter no longer lands inside it; the bundled ConPTY is used.
- Changes panel: a Workspace context fold (instructions, files, folders).

Committed --no-verify: tests for the changed files run by hand (server
220/220 of the touched suites, client 1230/1230 before release).
2026-10-10 15:10:13 +07:00

133 lines
5.4 KiB
JSON

{
"emptyPane": "No session in this pane. Start one from the workspace's prompt box.",
"actions": {
"newSession": "New session"
},
"autocomplete": {
"fileHint": "Type @ to reference a file",
"noMatches": "No matches",
"slashHint": "Type / for slash commands"
},
"binary": {
"missing": "The `{{cli}}` CLI isn't on your PATH. Install {{tool}} or set PATH so the dashboard can spawn it."
},
"empty": {
"body": "Type a prompt and click Run. Output streams here as the model thinks, calls tools, and answers.",
"title": "Nothing yet"
},
"errors": {
"attachFailed": "Couldn't attach to run: {{message}}",
"cwdRequired": "Working directory required to start a run",
"laneCreateFailed": "Failed to create workspace: {{message}}",
"noLaneSelected": "No workspace selected or could not create one",
"runStartedButNotAttached": "Run is live but couldn't attach to console: {{message}}",
"sendFailed": "Couldn't send: {{message}}"
},
"fields": {
"approval": "Approval",
"approvalNever": "Never",
"approvalOnRequest": "On request",
"cwdGroups": {
"dashboard": "Dashboard server",
"home": "Home",
"repo": "Source repos",
"recent": "Recent - used by Claude Code"
},
"cwdNoMatches": "No matches. Type an absolute path to use it directly.",
"cwdPlaceholder": "Type to search or paste an absolute path…",
"effort": "Thinking effort",
"model": "Model",
"moreModels": "More models",
"effortDefault": "Default",
"effortFaster": "Faster",
"effortSmarter": "Smarter",
"effortReset": "Back to the model's default",
"effortDefaultHint": "The model decides — no --effort flag",
"modelCustom": "Custom…",
"modelCustomPlaceholder": "model id (e.g. claude-opus-5)",
"modelInheritLabel": "Inherit from settings",
"permissionAcceptEdits": "acceptEdits (file edits without asking)",
"permissionAuto": "auto (recommended - asks only for risky actions)",
"permissionBypass": "bypassPermissions (DANGER - allows everything without asking)",
"bypass": "Bypass permissions for this run",
"permissionDefault": "default (interactive prompts - sessions may hang headlessly)",
"permissionMode": "Permission mode",
"permissionPlan": "plan (read-only planning)",
"sandbox": "Sandbox",
"sandboxFullAccess": "Full access (dangerous)",
"sandboxReadOnly": "Read only",
"sandboxWorkspaceWrite": "Workspace write"
},
"hint": {
"permissionWarning": "bypassPermissions allows ALL tool invocations without confirming. Only use for trusted prompts.",
"bypassWarning": "{{tool}} will run every command and edit every file without asking. Only for a prompt and a folder you trust.",
"sandboxWarning": "Codex will run commands with no sandbox."
},
"drop": {
"hint": "Drop files or images to attach",
"uploading": "Uploading…",
"failed": "Could not attach the file",
"remove": "Remove attachment",
"view": "View image"
},
"terminal": {
"ended": "[session ended, exit code {{code}}]",
"reconnecting": "Reconnecting… keystrokes are not reaching the session until the terminal is back.",
"keyboardHint": "Terminal. Press Ctrl+M to toggle whether Tab moves focus out of the terminal; Ctrl+Shift+F (Cmd+F on macOS) finds text.",
"tabMoves": "Tab moves focus — Ctrl+M to give Tab back to the terminal",
"selectHint": "Shift+drag to select text in the browser; a plain drag selects in tmux and copies on release.",
"dismissHint": "Dismiss",
"find": "Find in terminal",
"findPrev": "Previous match",
"findNext": "Next match",
"findClose": "Close find"
},
"chat": {
"placeholder": "Write a message…",
"send": "Send",
"notSent": "The terminal is not connected — the message was not sent.",
"stop": "Stop",
"notStopped": "The terminal is not connected — nothing was stopped.",
"add": "Add files, skills…",
"upload": "Upload or add files",
"projectFiles": "Project files",
"contextFiles": "Context files",
"recentUploads": "Recent uploads",
"searchFiles": "Search files and folders…",
"skills": "Skills",
"plugins": "Plugins",
"manageSkills": "Manage skills",
"managePlugins": "Manage plugins",
"none": "Nothing here yet",
"fromPlugin": "{{name}} plugin",
"modeFailed": "Could not change the permission mode: {{message}}",
"outline": {
"progress": "Progress",
"outputs": "Outputs",
"connectors": "Connectors",
"empty": "Nothing yet",
"resize": "Resize side panel",
"hide": "Hide side panel",
"show": "Activity panel",
"copyPath": "Copy path: {{path}}",
"panel": "Session activity panel",
"used": "Used in this session",
"uploads": "Uploads",
"files": "Files read",
"memory": "Memory",
"skills": "Skills",
"close": "Close",
"noPreview": "No preview for this file here",
"truncated": "Showing the first part of this file"
}
},
"interrupted": {
"title": "Resume interrupted sessions?",
"message": "These sessions stopped unexpectedly (the machine shut down, tmux was killed, or the CLI crashed). Tick the ones to resume — each re-reads its whole conversation.",
"resume_one": "Resume {{count}} session",
"resume_other": "Resume {{count}} sessions",
"none": "Don't resume",
"failed": "Couldn't resume {{name}}: {{message}}"
}
}