daf5b7be92
- 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
207 lines
7.6 KiB
JSON
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"
|
|
}
|
|
}
|