feat(ui): finish the workspace-sessions plan — tool filter, session search, explicit Resume

- Sidebar: a tool filter (shown once workspaces of two tools exist, kept in
  agenthub.sidebar.projects → tool; reordering under it keeps the hidden
  workspaces' places), and search that also finds a workspace by one of its
  session names, showing only the matching sessions.
- Workspace home: the repository it belongs to (root, main branch, worktree
  count) under the title, and each recent's cost.
- Transcript page: an explicit Resume for a Claude session started in a
  workspace's own folder (SessionResumeButton). It warns that a resume re-reads
  the whole transcript, re-reads the live panes, then starts in the first free
  pane and opens it; a live session offers Open pane instead.
This commit is contained in:
2026-10-02 01:35:34 +07:00
parent d0535af626
commit 5b269698f6
15 changed files with 597 additions and 36 deletions
+11
View File
@@ -329,13 +329,24 @@
"sessions.empty": "No sessions in this workspace yet",
"sessions.resume": "Resume",
"sessions.open": "Open",
"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",
"sessions.search": "Filter sessions…",
"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 the transcript",
"home.breadcrumb": "Workspaces",
"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.allBusy": "All four panes of this workspace are busy — stop one before starting another session.",
+11
View File
@@ -329,13 +329,24 @@
"sessions.empty": "Chưa có phiên nào trong workspace này",
"sessions.resume": "Tiếp tục",
"sessions.open": "Mở",
"resume.openPane": "Mở pane",
"resume.hint": "Tiếp tục session này trong một pane của workspace — nạp lại toàn bộ transcript vào context",
"resume.title": "Tiếp tục session này?",
"resume.body": "Tiếp tục sẽ nạp lại toàn bộ transcript của session vào context của model, nên các lượt sau phải trả lại chi phí cho tất cả phần đó. Session mở ở pane trống đầu tiên của {{workspace}}. Nếu chỉ cần đọc, hãy ở lại trang này.",
"resume.confirm": "Tiếp tục session",
"sessions.search": "Lọc phiên…",
"tree.title": "Không gian làm việc",
"tree.search": "Tìm workspace và session",
"tree.toolFilter": "Lọc theo tool",
"tree.allTools": "Mọi tool",
"tree.newSession": "Session mới",
"tree.noSessions": "Chưa có session",
"tree.transcriptHint": "Không còn pane — mở transcript",
"home.breadcrumb": "Không gian làm việc",
"home.repoRoot": "Thư mục gốc của repo",
"home.mainBranch": "Branch của worktree chính",
"home.worktreeCount_one": "{{count}} worktree",
"home.worktreeCount_other": "{{count}} worktree",
"home.placeholder": "Tôi có thể giúp gì cho bạn hôm nay?",
"home.start": "Bắt đầu",
"home.allBusy": "Cả bốn pane của workspace này đang bận — hãy dừng một pane trước khi mở session mới.",