Files
AgentHub/client/src/i18n/locales/en/common.json
T
nntrivi2001 daf5b7be92 feat: edit in the Changes panel, git graph history, plan quota (v2.3.0)
- Changes panel: a working file opens in a CodeMirror editor with its diff
  inline (DiffEditor.tsx, @codemirror/merge, lazy-loaded); Changes folds the
  unchanged lines, Whole file shows them; side by side at 50/50 and full
  width; a Revert per block; original from HEAD or the branch's merge base
  (`mergeBase` on GET /git/changes?range=branch)
- Every diff: green = line added whole, red = removed whole, blue = edited
  in place (--diff-mod)
- History drawn as a commit graph (#58: `parents` on GET /git/log,
  --date-order; lib/commitGraph.ts)
- Per-workspace never-stage list, drawn orange in the Files tree (--kept);
  closed Terminal rows past three deleted
- Status bar plan quota for Claude (per account) and Codex
  (GET /api/pricing/quota, server/lib/quota.js); compact hover panel that
  stays open, Refresh button with a spinner
- Settings → Appearance holds language, theme and pet; Ctrl+Shift+C copies;
  compact sidebar navigation and short session times
2026-10-06 15:38:25 +07:00

207 lines
7.6 KiB
JSON

{
"refresh": "Refresh",
"retry": "Retry",
"cancel": "Cancel",
"export": "Export",
"loading": "Loading...",
"noData": "No data",
"total": "Total",
"active": "active",
"total_lower": "total",
"subagent": "subagent",
"subagents": "subagents",
"subagent_label_one": "{{count}} subagent",
"subagent_label_other": "{{count}} subagents",
"events": "events",
"event": "event",
"sessions": "sessions",
"session": "session",
"agents": "agents",
"agent": "agent",
"live": "Live",
"offline": "Offline",
"running": "running",
"dashboardRun": "Run",
"days": "days",
"hours": "hours",
"updated": "Updated ",
"lastUpdated": "Last updated: ",
"showMore": "Show more ({{count}} remaining)",
"plusMore": "+{{count}} more",
"ofSessions": "% of sessions",
"save": "Save",
"edit": "Edit",
"delete": "Delete",
"actions": "Actions",
"close": "Close",
"unexpectedError": "Unexpected error",
"depth": "Depth",
"type": "Type",
"statusLabel": "Status",
"status": {
"working": "Working",
"waiting": "Waiting",
"completed": "Completed",
"error": "Error",
"active": "Active",
"abandoned": "Abandoned"
},
"awaitingReason": {
"notification": {
"label": "Needs input",
"desc": "Blocked on a permission prompt or an input request — Claude can't continue until you respond."
},
"stop": {
"label": "Turn done",
"desc": "Claude finished its reply; the session is idle until you send the next prompt."
},
"session_start": {
"label": "At prompt",
"desc": "The session just started or resumed and is sitting at an empty prompt — nothing has been asked yet."
},
"interrupted": {
"label": "Interrupted",
"desc": "The last turn was interrupted (Esc or a recovered hook) — Claude is waiting for direction."
}
},
"time": {
"justNow": "just now",
"mAgo": "{{count}}m ago",
"hAgo": "{{count}}h ago",
"dAgo": "{{count}}d ago",
"justNowShort": "now",
"mAgoShort": "{{count}}m",
"hAgoShort": "{{count}}h",
"dAgoShort": "{{count}}d"
},
"pagination": {
"previous": "Previous",
"next": "Next",
"showing": "Showing {{from}}-{{to}} of {{total}}"
},
"token": {
"input": "Input",
"output": "Output",
"cacheRead": "Cache Read",
"cacheWrite": "Cache Write",
"totalTokens": "Total tokens"
},
"cost": {
"model": "Model",
"cost": "Cost",
"totalCost": "Total Cost",
"totalEstimatedCost": "Total Estimated Cost"
},
"duration": {
"h_m": "{{h}}h {{m}}m",
"m_s": "{{m}}m {{s}}s",
"s": "{{s}}s"
},
"eventDetail": {
"summary": "Summary",
"seeDetailsBelow": "Check below for full details in {{fields}}",
"eventId": "Event ID",
"recordedAt": "Recorded at",
"session": "Session",
"sessionId": "Session ID",
"agentId": "Agent ID",
"agent": "Agent",
"cwd": "Working directory",
"permissionMode": "Permission mode",
"toolUseId": "Tool Use ID",
"toolName": "Tool",
"toolInput": "Tool Input",
"toolResponse": "Tool Response",
"isError": "Error",
"transcriptPath": "Transcript Path",
"agentTranscriptPath": "Subagent Transcript Path",
"hookEventName": "Hook Event Name",
"stopReason": "Stop Reason",
"stopHookActive": "Stop Hook Active",
"subagentType": "Subagent Type",
"agentType": "Agent Type",
"notificationType": "Notification Type",
"message": "Message",
"prompt": "Prompt",
"model": "Model",
"reason": "Reason",
"source": "Source",
"imported": "Imported",
"type": "Type",
"timestamp": "Timestamp",
"uuid": "UUID",
"durationMs": "Duration (ms)",
"compactionNumber": "Compaction Number",
"totalCompactions": "Total Compactions",
"lastAssistantMessage": "Last Assistant Message",
"rawPayload": "Raw Payload",
"copy": "Copy",
"copied": "Copied",
"noPayload": "No payload captured for this event.",
"viewDetails": "View details",
"expand": "Expand event",
"collapse": "Collapse event"
},
"eventFilters": {
"searchPlaceholder": "Search summary, tool, payload...",
"status": "Status",
"eventType": "Event type",
"toolName": "Tool",
"agentId": "Agent",
"sessionId": "Session",
"from": "From",
"to": "To",
"clearAll": "Clear filters",
"noOptions": "No options",
"showing": "Showing {{shown}} of {{total}}",
"loadMore": "Load more",
"loading": "Loading...",
"noResults": "No events match the current filters",
"grouped": "Group by tool call",
"flat": "Flat list",
"groupEventCount_one": "{{count}} event",
"groupEventCount_other": "{{count}} events",
"help": {
"toggle": "Help",
"title": "About events, filters, and grouping",
"subtitle": "Unlock deeper insights: badges, lifecycles, and filter mechanics explained.",
"valuesTitle": "What each filter accepts",
"valueStatusDesc": "Preset shortcut that expands to event_type values (Working → PreToolUse, Completed → Stop/SubagentStop/Compaction, ...).",
"valueEventTypeDesc": "Raw event_type strings from the DB. Pulled from /api/events/facets.",
"valueToolNameDesc": "tool_name values currently in the DB (Bash, Edit, Read, Grep, mcp__... tools). Pulled from /api/events/facets.",
"valueAgentIdDesc": "Full agent UUIDs (main + subagents). Select one or more to scope to specific agents.",
"valueSessionIdDesc": "Session UUIDs. Typically you'd navigate to /sessions/:id instead, but this lets you intersect multiple sessions.",
"valueSearchDesc": "Substring match on summary, tool_name, and the raw JSON payload. Debounced 300ms.",
"valueDateRangeDesc": "ISO datetime lower/upper bounds on the event's created_at.",
"statusesTitle": "Status badges",
"statusesIntro": "Status is derived from event_type. It's what you see on each row.",
"statusWorkingDesc": "Agent started a tool call (PreToolUse). The tool is about to run.",
"statusConnectedDesc": "Tool call completed and returned a result (PostToolUse).",
"statusCompletedDesc": "Turn or lifecycle boundary (Stop, SubagentStop, Compaction).",
"statusErrorDesc": "An error was recorded (error, APIError).",
"statusIdleDesc": "Lifecycle or metadata (Notification, TurnDuration, SessionStart, SessionEnd).",
"lifecycleTitle": "Event lifecycle",
"lifecycleDesc": "A typical tool call emits two events sharing the same tool_use_id:",
"lifecycleFlow": "PreToolUse (Working) → PostToolUse (Connected) → ... → Stop (Completed)",
"filtersTitle": "How filters work",
"filterTip1": "Filters compose with AND across categories. Within one category, multi-select is OR.",
"filterTip2": "Status is a shortcut that expands to event_type values (Working → PreToolUse, Completed → Stop/SubagentStop/Compaction, ...). Status + Event type compose as OR on event_type.",
"filterTipGrouping": "Grouping tip: a grouped row needs both Pre and Post events. If you filter by Status, pick Working + Connected together to keep pairs intact - otherwise a group will only show half of the call.",
"filterTip3": "Text search matches summary, tool_name, and the raw payload (data column).",
"filterTip4": "Date range applies to each event's created_at."
}
},
"examples": "Examples",
"help": "Help",
"copied": "Copied",
"copyFailed": "Could not copy to the clipboard",
"dismiss": "Dismiss",
"confirm": "Confirm",
"unsaved": {
"title": "Discard unsaved changes?",
"message": "Your edits have not been saved and will be lost.",
"discard": "Discard",
"keep": "Keep editing"
}
}