174c650624
The Workspace active-runs list only knew about runs this dashboard spawned, so two `claude` sessions started by hand in terminal tabs showed up nowhere — the list read "no active runs" while two agents were working. Poll GET /api/sessions?status=active alongside the run list and merge those sessions in as live rows, deduped against dashboard runs by session_id and filtered to local sources with a cwd (a remote-source or cwd-less session cannot be resumed on this machine). External rows get no Attach action: the dashboard owns no tmux session for them, so there is no PTY to bridge. They offer Resume, which reuses the existing ensure-lane + start-with-resumeSessionId path to spawn a new tmux-backed `claude --resume` in that folder — a second process on the same transcript, not a view of the original terminal.
157 lines
5.7 KiB
JSON
157 lines
5.7 KiB
JSON
{
|
|
"actions": {
|
|
"newRun": "New run",
|
|
"send": "Send",
|
|
"sending": "Sending…",
|
|
"start": "Run",
|
|
"starting": "Starting…",
|
|
"stop": "Stop",
|
|
"stopping": "Stopping…",
|
|
"viewSession": "View session"
|
|
},
|
|
"autocomplete": {
|
|
"fileHint": "Type @ to reference a file",
|
|
"groupBuiltin": "Built-in (CLI only - won't run from here)",
|
|
"groupFiles": "Files in cwd",
|
|
"groupProject": "Project commands",
|
|
"groupUser": "User commands",
|
|
"noMatches": "No matches",
|
|
"slashHint": "Type / for slash commands"
|
|
},
|
|
"binary": {
|
|
"found": "Using {{path}}",
|
|
"missing": "The `claude` CLI isn't on your PATH. Install Claude Code or set PATH so the dashboard can spawn it."
|
|
},
|
|
"concurrency": {
|
|
"active_one": "{{count}} run already in flight",
|
|
"active_other": "{{count}} runs already in flight",
|
|
"atCap": "Concurrency cap reached ({{max}}). Stop one of the running runs to start a new one.",
|
|
"viewActive": "View active runs"
|
|
},
|
|
"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",
|
|
"killFailed": "Couldn't stop: {{message}}",
|
|
"laneCreateFailed": "Failed to create lane: {{message}}",
|
|
"noLaneSelected": "No lane selected or could not create one",
|
|
"noRunIdReturned": "No run_id returned from lane start",
|
|
"runStartedButNotAttached": "Run is live but couldn't attach to console: {{message}}",
|
|
"sendFailed": "Couldn't send: {{message}}",
|
|
"startFailed": "Couldn't start run: {{message}}"
|
|
},
|
|
"events": {
|
|
"claude": "Claude",
|
|
"collapse": "Collapse",
|
|
"expand": "Expand",
|
|
"system": "System",
|
|
"thinking": "Thinking",
|
|
"tool": "Tool",
|
|
"toolResult": "Tool result",
|
|
"you": "You"
|
|
},
|
|
"fields": {
|
|
"cwd": "Working directory",
|
|
"cwdGroups": {
|
|
"dashboard": "Dashboard server",
|
|
"home": "Home",
|
|
"recent": "Recent - used by Claude Code"
|
|
},
|
|
"cwdHint": "Absolute path. Defaults to the dashboard's own cwd.",
|
|
"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",
|
|
"modelCustom": "Custom…",
|
|
"modelCustomPlaceholder": "model id (e.g. claude-opus-4-7-20260101)",
|
|
"modelInheritLabel": "Inherit from settings",
|
|
"permissionAcceptEdits": "acceptEdits (recommended)",
|
|
"permissionBypass": "bypassPermissions (DANGER - allows everything without asking)",
|
|
"permissionDefault": "default (interactive prompts - sessions may hang headlessly)",
|
|
"permissionMode": "Permission mode",
|
|
"permissionPlan": "plan (read-only planning)",
|
|
"prompt": "Prompt",
|
|
"promptPlaceholder": "Ask Claude anything…",
|
|
"promptPlaceholderTerminal": "Ask Claude anything…"
|
|
},
|
|
"footer": {
|
|
"cost": "Cost",
|
|
"duration": "Duration",
|
|
"exitCode": "Exit code",
|
|
"sessionId": "Session ID",
|
|
"turns": "Turns"
|
|
},
|
|
"hint": {
|
|
"headlessExplain": "Headless mode is best for scripted tasks where you know exactly what you want. The session can't ask follow-up questions and will hang on permission prompts unless you stay in acceptEdits.",
|
|
"permissionWarning": "bypassPermissions allows ALL tool invocations without confirming. Only use for trusted prompts.",
|
|
"shortcut": "Cmd+Enter / Ctrl+Enter to send"
|
|
},
|
|
"limitations": {
|
|
"dismiss": "Got it"
|
|
},
|
|
"mode": {
|
|
"conversation": "Conversation",
|
|
"conversationHint": "Multi-turn - keep typing follow-ups while the agent works.",
|
|
"headless": "One-shot",
|
|
"headlessHint": "Single prompt, single response. Stdin closes after spawn.",
|
|
"label": "Mode"
|
|
},
|
|
"resume": {
|
|
"clear": "Clear selection",
|
|
"freshHint": "Start a fresh Claude Code session.",
|
|
"freshOption": "New session",
|
|
"label": "Source session",
|
|
"noSessions": "No sessions found.",
|
|
"originalCwd": "Original cwd",
|
|
"pickSession": "Pick a session…",
|
|
"preview": "Last activity",
|
|
"resumeHint": "Pick a session from your history and continue the conversation. Cwd is locked to the original.",
|
|
"resumeOption": "Resume existing session",
|
|
"search": "Search by ID, cwd, or status…",
|
|
"selectedBadge": "Resuming"
|
|
},
|
|
"runs": {
|
|
"allSessionsLink": "See all Claude Code sessions →",
|
|
"attached": "Attached to existing run",
|
|
"externalBadge": "external",
|
|
"externalHint": "Started outside the dashboard, so there is no terminal to attach to. Resume opens a new tmux-backed `claude --resume` of this session in its folder.",
|
|
"scopeNote": "Runs started from this dashboard, plus Claude Code sessions running outside it.",
|
|
"started": "Started {{when}}",
|
|
"switcher": "Active runs",
|
|
"switcherEmpty": "No active runs",
|
|
"viewActive": "View active run",
|
|
"viewActive_other": "{{count}} active runs",
|
|
"viewLabel": "View"
|
|
},
|
|
"status": {
|
|
"abandoned": "Abandoned",
|
|
"completed": "Completed",
|
|
"error": "Error",
|
|
"idle": "Idle",
|
|
"killed": "Killed",
|
|
"running": "Running",
|
|
"spawning": "Spawning…"
|
|
},
|
|
"statusHeader": {
|
|
"cwd": "Cwd",
|
|
"duration": "Elapsed",
|
|
"effort": "Effort",
|
|
"envelopes": "Events",
|
|
"model": "Model",
|
|
"permissionMode": "Mode",
|
|
"session": "Session"
|
|
},
|
|
"subtitle": "Spin up a Claude Code session right inside the dashboard. Live streaming output, multi-turn conversation, and the same hooks-driven analytics as your terminal sessions.",
|
|
"title": "Run Claude",
|
|
"tokens": {
|
|
"cacheRead": "Cache hit",
|
|
"cost": "Cost",
|
|
"input": "Input",
|
|
"label": "Context",
|
|
"output": "Output"
|
|
}
|
|
}
|