{ "action.clear": "clear state", "action.forget": "Delete workspace", "action.purge": "delete history", "action.reset": "reset worktree", "action.start": "start", "action.stop": "stop", "actionError": "Workspace action failed: {{message}}", "actionErrorUnknown": "Unknown error", "actions.busy": "…", "actions.mcpSync": "Sync MCP", "actions.mcpSyncResult": "Synced: {{servers}}", "actions.syncCheck": "Check dev sync", "actions.syncCheckClean": "DEV_DELTA: {{count}} file(s), overlap: {{overlap}}", "actions.syncCheckCollision": "Migration collision: {{file}} → rename to {{suggestion}}", "actions.tools": "Tools", "actions.writeDocs": "Create/update readme file", "actions.writeDocsHint": "Opens this workspace's terminal and runs /sg-all:sg-md-writing there: creates CLAUDE.md/AGENTS.md if missing, or updates them concisely if they already exist.", "actions.writeDocsResult": "Started — see this workspace's terminal.", "add": "Add workspace", "addLane": "Create a workspace from a working directory", "addLaneBaseLabel": "Branch to fork from", "addLaneBranchBusy": "{{branch}} — already checked out at {{path}}", "addLaneBranchExistingHint": "The worktree checks this branch out as it is — no new branch, no base.", "addLaneBranchExistingLabel": "Branch to check out", "addLaneBranchHintAuto": "Leave empty to let the server name the branch from the title.", "addLaneBranchLabel": "New branch name", "addLaneBranchModeCurrent": "Current branch", "addLaneBranchModeCurrentHint": "Work straight on this repo's checked-out branch (main) — no worktree, no fork. Switches to Repo mode.", "addLaneBranchModeExisting": "Existing branch", "addLaneBranchModeNew": "New branch", "addLaneBranchPlaceholder": "Automatic — named from the title", "addLaneNoBranches": "This repo has no commits yet, so a worktree has nothing to branch from. Add it as a Repo workspace: commit first, then publish it from the Changes panel.", "addLaneNoBranchesUseRepo": "Use as a Repo workspace", "addLaneNoFreeBranches": "Every branch in this repo is already checked out in a worktree. Create a new branch instead.", "addLaneExists": "This folder already has a workspace: #{{id}} {{title}}. It is selected; pick another folder to add a new one.", "addLaneNotARepo": "Not a git repository (or no read access) yet.", "addLaneProvisionFailed": "Worktree provisioning failed or timed out — the workspace exists but auto-setup was skipped. Check the workspace's git facts, then run agents/mcp setup manually.", "addLaneRepoHint": "An existing git repo. The dashboard creates a new worktree for the workspace, not a folder you pick.", "addLaneRepoHintAdopt": "An existing directory. The dashboard tracks it as-is — no worktree, no new branch.", "addLaneRepoLabel": "Source repository", "addLaneRepoLabelAdopt": "Directory", "addLaneSetupClose": "Close", "addLaneSetupMcp": "MCP servers", "addLaneSetupProfile": "Profile", "addLaneSetupTitle": "Setup", "addLaneTitleLabel": "Title", "addLaneTitlePlaceholder": "Optional", "addLaneToolDefaultBadge": "Default", "addLaneNoTools": "No AI tool is installed and enabled.", "addLaneNoToolsLink": "Open Settings → AI Tools", "addLaneToolHint": "Which CLI drives this workspace. Cannot be changed later.", "addLaneWorktreeDetached": "(detached)", "addLaneWorktreesMore": "+{{count}} more", "addLaneWorktreesTitle": "Worktrees of this repo ({{count}})", "browse.button": "Browse", "browse.empty": "This folder is empty.", "browse.select": "Select this folder", "browse.title": "Browse for a folder", "changes.back": "All files", "changes.bin": "bin", "changes.binary": "Binary file — not shown.", "changes.collapse": "Collapse the changes panel", "changes.collapseAll": "Collapse every file", "changes.collapseAllFolders": "Collapse all folders", "changes.collapseContext": "Show fewer surrounding lines", "changes.collapseFile": "Collapse {{path}}", "changes.commitPlaceholder": "Commit message", "changes.commitStaged": "Commit {{count}} staged", "changes.conflicted": "conflict", "changes.discard": "Discard this file's changes", "changes.discardConfirm": "Click again to discard — this cannot be undone", "changes.empty.branch": "This branch matches its base.", "changes.empty.commit": "This commit changed no files.", "changes.empty.work": "Nothing uncommitted.", "changes.expand": "Show the changes panel", "changes.expandAll": "Expand every file", "changes.expandAllFolders": "Expand all folders", "changes.expandContext": "Show more surrounding lines", "changes.expandFile": "Expand {{path}}", "changes.fileGone": "That file no longer has changes in this range.", "changes.fileTruncated": "Diff cut short — open the file in an editor for the rest.", "changes.commentLine": "Comment on line {{n}} — pasted into this workspace's pane", "changes.commentOn": "Comment on {{at}} — pasted into the pane you used last; nothing is sent until you press Enter there", "changes.commentSend": "Paste into pane", "changes.commentCancel": "Cancel", "changes.commentNoPane": "No pane of this workspace is open — open its session first", "changes.layout.split": "Side-by-side", "changes.layout.unified": "Unified", "changes.loading": "Reading the working copy…", "changes.mode.browse": "Files", "changes.mode.history": "History", "changes.mode.overview": "Overview", "changes.mode.review": "Review", "changes.noCommits": "No commits yet.", "changes.noHunks": "No textual change.", "changes.noMatches": "No tracked file matches.", "changes.openFile": "Open {{path}}", "changes.quickOpen": "Find a file by path…", "changes.range.branch": "vs base", "changes.range.branchHint": "base...HEAD — everything this workspace's branch adds on top of its base", "changes.range.work": "Uncommitted", "changes.range.workHint": "Working tree vs HEAD — what has been touched and not committed", "changes.refresh": "Refresh", "changes.resize": "Resize the changes panel (next: {{size}})", "changes.size.compact": "Narrow", "changes.size.half": "Medium", "changes.size.full": "Full screen", "changes.stageAll": "Stage all ({{count}})", "changes.unstageAll": "Unstage all ({{count}})", "changes.dropEdits": "Discard your unsaved edits to this file?", "changes.stagedGroup": "Staged Changes", "changes.unstagedGroup": "Changes", "changes.stage": "Stage this file", "changes.title": "Changes", "changes.truncated": "Some changes were left out to keep this panel responsive.", "changes.unavailable": "This workspace's directory is not a readable git repository.", "changes.unstage": "Unstage this file", "changes.wholeFile": "Whole file", "confirmRemoveCancel": "Cancel", "confirmRemoveConfirm": "Remove", "confirmRemoveMessage": "This action cannot be undone.", "confirmRemoveTitle": "Remove workspace?", "countDead": "dead", "countNeedsYou": "need you", "countRunning": "running", "countTotal": "workspaces", "destructive.blocked.adopted": "This is an adopted directory and cannot be changed by a worktree action.", "destructive.blocked.missing": "The workspace directory is missing, so this action cannot continue.", "destructive.blocked.unreadable": "The workspace directory cannot be read as a Git worktree, so this action cannot continue.", "destructive.cancel": "Cancel", "destructive.count.bytesEstimate": "Estimated space freed", "destructive.count.dirty": "Modified files", "destructive.count.events": "Events", "destructive.count.head": "HEAD", "destructive.count.sessions": "Sessions", "destructive.count.tokenRows": "Token rows", "destructive.count.unpushed": "Unpushed commits", "destructive.count.untracked": "Untracked files", "destructive.force": "I understand these unpushed commits will be discarded.", "destructive.loading": "Loading current facts…", "destructive.notice.activeSessionSkipped": "One or more sessions in this workspace are still active and will be kept, not purged.", "destructive.notice.adopted": "This workspace points at a directory you own. Only the dashboard's record of it is dropped — the directory and its files are left untouched.", "destructive.notice.missing": "The workspace directory is already gone. Deleting the workspace drops the dashboard's record only; nothing on disk and no Git record is touched.", "destructive.notice.unreadable": "The workspace directory cannot be read as a Git worktree. That changes nothing here: only the dashboard's record is deleted, the directory is never touched.", "destructive.purge.confirm": "Purge history", "destructive.purge.message": "Approve the current counts before deleting stored session history.", "destructive.purge.title": "Purge workspace history?", "destructive.remove.confirm": "Delete workspace record", "destructive.remove.message": "Only the dashboard's record of this workspace is deleted. Its working tree, its branch and its database are left exactly as they are — delete them yourself if you want them gone.", "destructive.remove.title": "Delete workspace record?", "destructive.reset.confirm": "Reset worktree", "destructive.reset.message": "Approve the current counts before resetting this worktree.", "destructive.reset.survives": "Gitignored files such as node_modules and .env are kept; untracked files are deleted.", "destructive.reset.title": "Reset managed worktree?", "destructive.warning.no-remote": "No Git remote is configured, so nothing here is backed up remotely. You can still proceed.", "empty.body": "A workspace is one working directory the dashboard follows — its pipeline, sessions and terminal. Click anywhere on this card to add one, or from a terminal:", "empty.title": "No workspaces yet", "features.archived": "archived", "features.live": "Live", "features.viewingArchived": "Viewing archived feature \"{{slug}}\" — the workspace keeps running; this is a read-only snapshot.", "git.filesHeading_one": "{{count}} file changed", "git.filesHeading_other": "{{count}} files changed", "git.filesMore_one": "… and {{count}} more file", "git.filesMore_other": "… and {{count}} more files", "git.noDelta": "new", "git.uncommitted": "{{dirty}} modified · {{untracked}} untracked", "gitBar.branchCreate": "Create", "gitBar.branchCreateHint": "Create this branch without switching to it", "gitBar.branchDelete": "Delete", "gitBar.branchDeleteHint": "Delete the selected branch (refused if it has unmerged commits)", "gitBar.branchNewPlaceholder": "New branch name…", "gitBar.fetch": "Fetch", "gitBar.fetchHint": "git fetch --all --prune", "gitBar.errNoRemote": "No remote to push to or pull from. Add one, or set this branch's upstream, in a terminal.", "gitBar.inSync": "in sync", "gitBar.newLane": "New workspace here", "gitBar.newLaneHeld": "Already checked out at {{path}} — git allows one worktree per branch", "gitBar.newLaneHint": "Open Add workspace for a sibling worktree on the selected branch", "gitBar.noCommits": "no commits yet", "gitBar.noUpstream": "not pushed", "gitBar.publish": "Publish…", "gitBar.publishApply": "Publish", "gitBar.publishBranch": "Publish branch", "gitBar.publishBranchHint": "git push -u origin HEAD — this branch has no upstream yet", "gitBar.publishHint": "Add a remote named origin and push this branch to it (git remote add origin + git push -u origin HEAD)", "gitBar.publishUrl": "Remote URL: https://host/owner/repo.git or git@host:owner/repo.git", "gitBar.pull": "Pull", "gitBar.pullHint": "git pull --ff-only — refuses instead of merging when the branch has diverged", "gitBar.push": "Push", "gitBar.pushHint": "git push -u origin HEAD", "gitBar.switch": "Branch", "gitBar.switchApply": "Switch branch", "gitBar.switchCurrent": "current", "gitBar.switchDirty": "Commit or discard the uncommitted changes first", "gitBar.switchHint": "Switch this worktree to another local branch", "gitBar.switchLabel": "Switch branch…", "gitBar.unbornHint": "Commit first, then publish this repo to a remote.", "kind.adopted": "adopted", "kind.managed": "managed", "laneDetail.hide": "Hide details", "laneDetail.show": "Workspace details", "locks.held_one": "{{count}} lock held", "locks.held_other": "{{count}} locks held", "mode.repo": "Repo", "mode.repoHint": "Adopt this directory as a workspace, as-is — no worktree, no new branch.", "mode.worktree": "Worktree", "mode.worktreeHint": "Provision a new git worktree + branch from a source repo.", "moreActions": "More actions", "pipelinePicker.label": "Pipeline template", "pipelinePicker.stageMismatch": "Stage \"{{stage}}\" matches no node in \"{{pipeline}}\" — declare one of: {{nodes}}", "preflightError": "Could not load the current workspace facts.", "preflightErrorWithMessage": "Could not load the current workspace facts: {{message}}", "proof.ticketReport": "Task report", "renameLabel": "Rename this workspace", "reorderHint": "Drag to reorder · Alt+←/→", "router.native": "Native ({{tool}})", "router.label": "AI Router", "runtime.boot": "▶ up", "runtime.busy.down": "stopping…", "runtime.busy.up": "booting…", "runtime.down": "down", "runtime.healthy": "healthy", "runtime.partial": "partial", "runtime.slot": "slot {{slot}}", "runtime.steppedAsideTitle": "Stepped aside from {{expected}}, which was already in use", "runtime.stop": "■ down", "runtime.toggleTitle": "Boot or stop this workspace's own application stack (separate from its Claude run)", "splitView.emptyPane": "No workspace selected for this pane.", "splitView.paneCount": "{{count}} pane", "splitView.paneLaneLabel": "Pane workspace selector", "splitView.pickLane": "Pick a workspace", "status.failed": "failed", "status.idle": "idle", "status.provisioning": "provisioning", "status.running": "running", "statusDead": "DEAD", "title": "Workspaces", "tooltipStart": "Spawn a conversation-mode run with no initial prompt; driven from CLI or via message", "worktrees.heading_one": "{{count}} worktree", "worktrees.heading_other": "{{count}} worktrees", "changes.stageHunk": "Stage this hunk", "changes.undoHunk": "Undo this hunk", "changes.undoHunkConfirm": "Click again to undo this hunk — this cannot be undone", "changes.stageHunkShort": "Keep", "changes.undoHunkShort": "Undo", "changes.undoHunkShortConfirm": "Confirm undo", "changes.edit": "Edit", "changes.save": "Save", "changes.cancelEdit": "Cancel", "changes.clickToEdit": "Click the text to edit", "changes.preview": "Preview", "changes.raw": "Raw", "changes.editorLabel": "Edit {{path}}", "changes.prevHunk": "Previous change", "changes.nextHunk": "Next change", "changes.hunkOf": "{{n}} of {{total}}", "changes.noEditBinary": "Binary file — not editable here", "changes.noEditTooBig": "Too large to edit here (over 1 MB)", "changes.noEdit": "Not editable here", "gitBar.loginTitle": "Git needs a login for {{host}}", "gitBar.loginRejected": "The server rejected that username or token.", "gitBar.loginUser": "Username", "gitBar.loginPassword": "Password or access token", "gitBar.loginRemember": "Remember for everyone using this AgentHub", "gitBar.loginTokenHint": "On Gitea: Settings → Applications → Generate token, with repository read/write.", "gitBar.loginInsecure": "This dashboard is on plain http — the token crosses the network unencrypted.", "gitBar.loginSubmit": "Log in and retry", "gitBar.loginCancel": "Cancel", "gitBar.merge": "Merge into current", "gitBar.mergeHint": "Merge the selected branch into the branch this workspace is on", "gitBar.mergeUpstream": "Merge {{upstream}}", "gitBar.mergeUpstreamHint": "The branch has diverged from its upstream: merge it in (conflicts are resolved in the Changes panel)", "gitBar.mergeConfirm": "Merge {{branch}} into {{current}}? Files in this workspace change now — if an agent is working in this workspace, let it finish first.", "gitBar.mergeConflicts": "Merge stopped on {{count}} conflicted file(s) — resolve them in the list below.", "gitBar.merging": "A merge is in progress: finish or abort it first", "changes.conflictsGroup": "Merge conflicts", "changes.mergeBanner": "Merge in progress — {{count}} file(s) still conflicted", "changes.mergeReady": "Merge in progress — every conflict is resolved", "changes.mergeCommit": "Complete merge", "changes.mergeAbort": "Abort merge", "changes.mergeAbortConfirm": "Click again to abort the merge", "changes.takeOurs": "Keep mine", "changes.takeTheirs": "Take theirs", "changes.markResolved": "Mark resolved (after editing out the markers)", "conflict.left": "{{left}} of {{total}} conflicts left", "conflict.prev": "Previous conflict", "conflict.next": "Next conflict", "conflict.allOurs": "Keep all mine", "conflict.allTheirs": "Take all theirs", "conflict.editByHand": "Edit by hand", "conflict.unbalanced": "The conflict markers do not line up (edited by hand?) — use Edit by hand.", "conflict.unusable": "This file cannot be shown here (binary or too large) — use Keep all mine / Take all theirs, or a terminal.", "conflict.keepOurs": "Keep mine", "conflict.takeTheirs": "Take theirs", "conflict.keepBoth": "Keep both", "conflict.chose.ours": "Kept mine", "conflict.chose.theirs": "Took theirs", "conflict.chose.both": "Kept both", "conflict.undo": "Undo", "conflict.ours": "Mine ({{label}})", "conflict.theirs": "Theirs ({{label}})", "conflict.reset": "Cancel", "conflict.save": "Save and mark resolved", "changes.takeOursHint": "Keep your version of the whole file", "changes.takeTheirsHint": "Take the incoming version of the whole file", "row.actions": "Workspace actions", "row.hint": "Double-click to rename · drag or Alt+↑/↓ to reorder · right-click for actions", "menu.start": "Start", "menu.stop": "Stop", "menu.rename": "Rename", "menu.newHere": "New workspace here…", "menu.copyPath": "Copy path", "menu.reset": "Reset worktree…", "menu.remove": "Delete workspace…", "pane.slot": "slot {{n}}", "pane.close": "Stop this pane's session", "panel.files": "Files", "panel.changes": "Changes", "panel.analyst": "Analyst", "replay.placeholder": "Message to continue this session…", "replay.hint": "Sending resumes the session in a free pane.", "replay.send": "Send", "sessions.resume": "Resume", "resume.openPane": "Open pane", "resume.hint": "Resume this session in a workspace pane — re-reads its whole transcript into context", "resume.title": "Resume this session?", "resume.body": "Resuming re-reads the session's whole transcript into the model's context, so its next turns pay for all of it again. It opens in the first free pane of {{workspace}}. To only read it, stay on this page.", "resume.confirm": "Resume session", "resume.fork": "Fork", "resume.forkHint": "Continue from here as a NEW session — the original stays as it is", "resume.forkTitle": "Fork this session?", "resume.forkBody": "A fork re-reads the session's whole transcript into a NEW session (its own id), so its turns pay for all of it again; the original is left untouched. It opens in the first free pane of {{workspace}}.", "resume.forkConfirm": "Fork session", "tree.title": "Workspaces", "tree.search": "Search workspaces and sessions", "tree.toolFilter": "Filter by tool", "tree.allTools": "All tools", "tree.newSession": "New session", "tree.noSessions": "No sessions yet", "tree.transcriptHint": "No live pane — opens its conversation; a message you send resumes it", "tree.splitHint": "Live pane — Ctrl/Cmd+click opens it in a second pane", "tree.renameSession": "Rename session", "tree.archiveSession": "Archive — hide from this workspace (deletes nothing)", "tree.worktreeSession": "In its own worktree: .claude/worktrees/{{name}}", "tree.archiveWorktreeTitle": "Archive and remove its worktree?", "tree.archiveWorktreeBody": "Like Claude Desktop, archiving removes the session's worktree .claude/worktrees/{{name}} and its branch. Git refuses if it holds uncommitted changes, and a branch with commits merged nowhere is kept — nothing unsaved is lost.", "tree.archiveWorktreeConfirm": "Archive and remove", "tree.archived_one": "{{count}} archived session", "tree.archived_other": "{{count}} archived sessions", "tree.unarchive": "Unarchive", "home.breadcrumb": "Workspaces", "home.ai": "AI", "home.repoRoot": "Repository root", "home.mainBranch": "Main worktree's branch", "home.worktreeCount_one": "{{count}} worktree", "home.worktreeCount_other": "{{count}} worktrees", "home.placeholder": "How can I help you today?", "home.start": "Start", "home.worktree": "Worktree", "home.worktreeHint": "Run this session in its own git worktree — /.claude/worktrees/, a branch of its own, made and cleaned up by Claude Code", "home.allBusy": "All four panes of this workspace are busy — stop one before starting another session.", "home.recents": "Recents", "home.noRecents": "No sessions yet — start one above.", "home.instructions": "Instructions", "home.instructionsEmpty": "Add instructions to tailor how the agent works in this workspace. They are appended to every new session's system prompt.", "home.edit": "Edit instructions", "home.save": "Save", "home.cancel": "Cancel", "home.memory": "Memory", "home.viewMemory": "View memory", "home.memoryCount_one": "{{count}} file the agent reads", "home.memoryCount_other": "{{count}} files the agent reads", "home.memoryEmpty": "Memory shows here once the folder has a CLAUDE.md or AGENTS.md, or Claude saves memory for it.", "home.context": "Context", "home.contextEmpty": "Add PDFs, documents, or other text to reference in this workspace.", "home.addFile": "Add files", "home.folder": "Folder", "home.ownFolder": "Workspace folder", "home.addFolder": "Add folder", "home.folderPath": "Absolute folder path", "home.add": "Add", "home.suggested": "Untracked worktrees", "home.remove": "Remove", "home.missing": "missing", "home.unsupported": "{{tool}} cannot take instructions, context files or extra folders: they are kept, but its sessions start without them.", "home.back": "Back to the workspace home", "home.close": "Close" }