cd25791160
Select opens with a focused search box when it has more than 8 options (or searchable): typing narrows by label/value, ↑/↓ move, Enter picks, Esc closes; role=combobox drives the listbox via aria-activedescendant, and options may carry a group heading. The git bar's native branch select (and the separate search box added for #88) is replaced by it, remote branches under their own heading.
232 lines
9.3 KiB
JSON
232 lines
9.3 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",
|
||
"days": "days",
|
||
"hours": "hours",
|
||
"updated": "Updated ",
|
||
"lastUpdated": "Last updated: ",
|
||
"plusMore": "+{{count}} more",
|
||
"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",
|
||
"totalEstimatedCost": "Total Estimated Cost"
|
||
},
|
||
"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",
|
||
"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",
|
||
"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.",
|
||
"statusCompletedDesc": "Turn or lifecycle boundary (Stop, SubagentStop, Compaction).",
|
||
"statusErrorDesc": "An error was recorded (error, APIError).",
|
||
"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"
|
||
},
|
||
"auth": {
|
||
"title": "Welcome back",
|
||
"subtitle": "Sign in to AgentHub with your account",
|
||
"username": "Username",
|
||
"password": "Password",
|
||
"showPassword": "Show password",
|
||
"hidePassword": "Hide password",
|
||
"submit": "Sign in",
|
||
"submitting": "Signing in…",
|
||
"failed": "Wrong username or password",
|
||
"tooMany": "Too many failed attempts — try again in a few minutes",
|
||
"logout": "Sign out",
|
||
"noAccount": "No account yet? Ask your administrator to create one.",
|
||
"signedInAs": "Signed in as {{name}} ({{role}})",
|
||
"mustChangeTitle": "Choose your own password",
|
||
"mustChangeSubtitle": "Your administrator gave you a starting password. Choose your own before you continue.",
|
||
"currentPassword": "Current password",
|
||
"newPassword": "New password",
|
||
"confirmPassword": "Confirm new password",
|
||
"mismatch": "The two new passwords differ",
|
||
"mustChangeSubmit": "Save and continue",
|
||
"saving": "Saving…"
|
||
},
|
||
"insights": {
|
||
"help": {
|
||
"sessions": "A session is one conversation with an AI agent, from start to finish.",
|
||
"agents": "Agents are the AI workers: the main one in each session plus any helpers it started.",
|
||
"tokens": "Tokens are the pieces of text the AI reads and writes. Roughly 1 token ≈ 4 characters. More tokens = more cost.",
|
||
"cost": "Estimated money spent, calculated from token counts and each model's price.",
|
||
"events": "Every step the AI takes (running a tool, finishing a reply…) is recorded as one event.",
|
||
"tokenMix": "Input = what you and the files sent the AI. Output = what the AI wrote. Cache read = text reused from memory (about 10× cheaper). Cache write = text saved to memory for reuse.",
|
||
"spendPace": "How fast money is being spent, and where this month will end up if that speed continues.",
|
||
"toolCalls": "How many actions the AI took: reading a file, editing, running a command…",
|
||
"subagents": "Helper agents the main AI started to work on part of the task in parallel.",
|
||
"compactions": "When a conversation gets too long, it is summarized to make room. Early details can be lost.",
|
||
"errors": "Steps that failed. A few are normal; many may mean the AI got stuck.",
|
||
"tokenFlow": "Input = sent to the AI, Output = written by the AI, Cache = reused from memory (cheaper)."
|
||
}
|
||
},
|
||
"select": {
|
||
"search": "Search…",
|
||
"noMatch": "No match"
|
||
}
|
||
}
|