feat: Claude Code Monitor — lanes, pipelines and a merged workspace
Internal SmartGift build of a Claude Code monitoring dashboard. Lanes: a durable unit of parallel agent work, one per working directory, tracked across session restarts. Managed lanes are git worktrees the dashboard provisions and can reset or remove behind a three-check destroy guard and a counted preflight; adopted lanes are directories you already own and are never destroyable. Pipelines: a lane moves through pipeline stages. A stage the agent declares with evidence renders green; a stage inferred from the tool-event stream renders dashed amber and never counts as done. Detection is forward-only within a 30-minute window, and never writes the declared stage. Workspace: one page at /run with a lane grid, the selected lane's pipeline, and a full Claude console behind a disclosure.
This commit is contained in:
@@ -0,0 +1,152 @@
|
||||
{
|
||||
"actions": {
|
||||
"newRun": "Lượt chạy mới",
|
||||
"send": "Gửi",
|
||||
"sending": "Đang gửi…",
|
||||
"start": "Chạy",
|
||||
"starting": "Đang khởi động…",
|
||||
"stop": "Dừng",
|
||||
"stopping": "Đang dừng…",
|
||||
"viewSession": "Xem phiên"
|
||||
},
|
||||
"autocomplete": {
|
||||
"fileHint": "Gõ @ để tham chiếu file",
|
||||
"groupBuiltin": "Built-in (chỉ CLI - không chạy ở đây)",
|
||||
"groupFiles": "File trong cwd",
|
||||
"groupProject": "Lệnh project",
|
||||
"groupUser": "Lệnh user",
|
||||
"noMatches": "Không có",
|
||||
"slashHint": "Gõ / để tìm lệnh slash"
|
||||
},
|
||||
"binary": {
|
||||
"found": "Đang dùng {{path}}",
|
||||
"missing": "Không thấy CLI `claude` trong PATH. Cài đặt Claude Code hoặc đặt PATH."
|
||||
},
|
||||
"concurrency": {
|
||||
"active_other": "Có {{count}} run đang chạy",
|
||||
"atCap": "Đạt giới hạn concurrent ({{max}}). Dừng một run đang chạy để bắt đầu run mới.",
|
||||
"viewActive": "Xem các run đang chạy"
|
||||
},
|
||||
"empty": {
|
||||
"body": "Gõ prompt và bấm Chạy. Output sẽ stream khi model suy nghĩ, gọi tool, và trả lời.",
|
||||
"title": "Chưa có gì"
|
||||
},
|
||||
"errors": {
|
||||
"attachFailed": "Không gắn được vào run: {{message}}",
|
||||
"cwdRequired": "Cần thư mục làm việc để bắt đầu run",
|
||||
"killFailed": "Không dừng được: {{message}}",
|
||||
"laneCreateFailed": "Không thể tạo làn đường: {{message}}",
|
||||
"noLaneSelected": "Chưa chọn làn đường hoặc không thể tạo làn đường",
|
||||
"noRunIdReturned": "Không trả về ID run từ khởi động làn đường",
|
||||
"runStartedButNotAttached": "Run đã khởi động nhưng không thể gắn vào bảng điều khiển: {{message}}",
|
||||
"sendFailed": "Không gửi được: {{message}}",
|
||||
"startFailed": "Không khởi động được: {{message}}"
|
||||
},
|
||||
"events": {
|
||||
"claude": "Claude",
|
||||
"collapse": "Thu gọn",
|
||||
"expand": "Mở rộng",
|
||||
"system": "Hệ thống",
|
||||
"thinking": "Đang suy nghĩ",
|
||||
"tool": "Tool",
|
||||
"toolResult": "Kết quả tool",
|
||||
"you": "Bạn"
|
||||
},
|
||||
"fields": {
|
||||
"cwd": "Thư mục làm việc",
|
||||
"cwdGroups": {
|
||||
"dashboard": "Dashboard server",
|
||||
"home": "Home",
|
||||
"recent": "Gần đây - Claude Code đã dùng"
|
||||
},
|
||||
"cwdHint": "Đường dẫn tuyệt đối. Mặc định là cwd của dashboard.",
|
||||
"cwdNoMatches": "Không khớp. Gõ đường dẫn tuyệt đối để dùng trực tiếp.",
|
||||
"cwdPlaceholder": "Gõ để tìm hoặc dán đường dẫn tuyệt đối…",
|
||||
"effort": "Mức độ suy nghĩ",
|
||||
"model": "Model",
|
||||
"modelCustom": "Tuỳ chỉnh…",
|
||||
"modelCustomPlaceholder": "model id (vd: claude-opus-4-7-20260101)",
|
||||
"modelInheritLabel": "Kế thừa từ settings",
|
||||
"permissionAcceptEdits": "acceptEdits (khuyên dùng)",
|
||||
"permissionBypass": "bypassPermissions (NGUY HIỂM - cho phép tất cả mà không hỏi)",
|
||||
"permissionDefault": "default (prompt tương tác - headless sẽ treo)",
|
||||
"permissionMode": "Permission mode",
|
||||
"permissionPlan": "plan (chỉ đọc, lập kế hoạch)",
|
||||
"prompt": "Prompt",
|
||||
"promptPlaceholder": "Hỏi Claude bất cứ điều gì…"
|
||||
},
|
||||
"footer": {
|
||||
"cost": "Chi phí",
|
||||
"duration": "Thời lượng",
|
||||
"exitCode": "Exit code",
|
||||
"sessionId": "Session ID",
|
||||
"turns": "Lượt"
|
||||
},
|
||||
"hint": {
|
||||
"headlessExplain": "Headless phù hợp cho tác vụ tự động. Phiên không thể hỏi lại, sẽ treo ở prompt xin quyền nếu bạn không giữ acceptEdits.",
|
||||
"permissionWarning": "bypassPermissions cho phép gọi mọi tool không cần xác nhận. Chỉ dùng cho prompt bạn tin tưởng.",
|
||||
"shortcut": "Cmd+Enter / Ctrl+Enter để gửi"
|
||||
},
|
||||
"limitations": {
|
||||
"dismiss": "Đã rõ"
|
||||
},
|
||||
"mode": {
|
||||
"conversation": "Hội thoại",
|
||||
"conversationHint": "Đa lượt - tiếp tục gõ trong khi agent xử lý.",
|
||||
"headless": "Một lần",
|
||||
"headlessHint": "Một prompt, một phản hồi. Stdin đóng ngay sau khi spawn.",
|
||||
"label": "Chế độ"
|
||||
},
|
||||
"resume": {
|
||||
"clear": "Xoá lựa chọn",
|
||||
"freshHint": "Bắt đầu phiên Claude Code mới.",
|
||||
"freshOption": "Phiên mới",
|
||||
"label": "Phiên nguồn",
|
||||
"noSessions": "Không tìm thấy phiên.",
|
||||
"originalCwd": "cwd gốc",
|
||||
"pickSession": "Chọn phiên…",
|
||||
"preview": "Hoạt động gần nhất",
|
||||
"resumeHint": "Chọn một phiên từ lịch sử để tiếp tục. cwd được khoá theo phiên gốc.",
|
||||
"resumeOption": "Tiếp tục phiên đã có",
|
||||
"search": "Tìm theo ID, cwd hoặc status…",
|
||||
"selectedBadge": "Đang tiếp tục"
|
||||
},
|
||||
"runs": {
|
||||
"allSessionsLink": "Xem tất cả phiên Claude Code →",
|
||||
"attached": "Đã gắn vào run đang chạy",
|
||||
"scopeNote": "Chỉ hiển thị các run bạn khởi chạy từ dashboard này.",
|
||||
"started": "Bắt đầu lúc {{when}}",
|
||||
"switcher": "Run đang chạy",
|
||||
"switcherEmpty": "Không có run đang chạy",
|
||||
"viewActive": "Xem run đang chạy",
|
||||
"viewActive_other": "{{count}} run đang chạy",
|
||||
"viewLabel": "Xem"
|
||||
},
|
||||
"status": {
|
||||
"abandoned": "Bị bỏ",
|
||||
"completed": "Hoàn tất",
|
||||
"error": "Lỗi",
|
||||
"idle": "Rảnh",
|
||||
"killed": "Đã dừng",
|
||||
"running": "Đang chạy",
|
||||
"spawning": "Khởi động…"
|
||||
},
|
||||
"statusHeader": {
|
||||
"cwd": "Cwd",
|
||||
"duration": "Đã chạy",
|
||||
"effort": "Effort",
|
||||
"envelopes": "Sự kiện",
|
||||
"model": "Model",
|
||||
"permissionMode": "Mode",
|
||||
"session": "Session"
|
||||
},
|
||||
"subtitle": "Khởi chạy một phiên Claude Code ngay trong dashboard. Stream output trực tiếp, hội thoại đa lượt, và chia sẻ cùng pipeline hooks/analytics với phiên ở terminal.",
|
||||
"title": "Chạy Claude",
|
||||
"tokens": {
|
||||
"cacheRead": "Cache hit",
|
||||
"cost": "Chi phí",
|
||||
"input": "Input",
|
||||
"label": "Context",
|
||||
"output": "Output"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user