chore: v2.8.13 — Artifacts reinstall/edit/installs, agent steps in chat, pick a local file to attach, Windows paths as links

- Chat: an Agent step shows its task, status and tool calls and opens its conversation in place; Windows paths (E:\…, C:/…) in replies open as files
- Prompt: attach a file on this computer by path (native picker), clearer too-large messages
- Artifacts: edit title/description and a skill's files (new snapshot), Reinstall, install history, Hub-only rows, skills installed into ~/.claude/skills and ~/.agents/skills
- Files: batch upload of small files in one extract
- AI Tools: npm install falls back to --prefix ~/.local when the global prefix is not writable
This commit is contained in:
2026-10-20 16:44:55 +07:00
parent 49f87c4da3
commit 0547488f13
59 changed files with 4285 additions and 690 deletions
+36 -3
View File
@@ -43,7 +43,7 @@
"deleteBody": "It is removed from your library and the Hub. Anything already installed from it stays installed.",
"deleteConfirm": "Delete",
"installTitle": "Install “{{title}}”?",
"installSkillBody": "These files are written to your own ~/.claude/skills/{{name}}/. A skill can carry scripts your agent will run — only install what you trust:",
"installSkillBody": "These files are written to your own ~/.claude/skills/{{name}}/ and ~/.agents/skills/{{name}}/, so every AI tool and session finds it. A skill can carry scripts your agent will run — only install what you trust:",
"installPluginBody": "Runs, as your account: claude plugin marketplace add {{market}} and claude plugin install {{name}} --scope user. Only install what you trust.",
"installConfirm": "Install",
"replaceTitle": "Replace your skill “{{name}}”?",
@@ -78,7 +78,7 @@
"skill.tab.write": "Write new",
"skill.tab.existing": "From my skills",
"skill.name": "Skill name",
"skill.slugHint": "Installs as ~/.claude/skills/{{slug}}/ and runs as /{{slug}}",
"skill.slugHint": "Installs as ~/.claude/skills/{{slug}}/ (and ~/.agents/skills/) and runs as /{{slug}}",
"skill.slugBad": "Use letters, digits, '.', '_' or '-'",
"skill.description": "Description — when Claude should use this skill",
"skill.descriptionHint": "e.g. Use when writing release notes from the git log",
@@ -110,5 +110,38 @@
"file.fromComputer": "From your computer (≤ 25 MB)",
"file.upload": "Upload",
"file.tooBig": "The file is larger than 25 MB.",
"file.fromWorkspace": "Or pin a document a workspace's sessions wrote"
"file.fromWorkspace": "Or pin a document a workspace's sessions wrote",
"editTitle": "Edit “{{title}}”",
"edit.title": "Title",
"edit.description": "Description",
"previewFailed": "Could not load this file.",
"truncated": "Showing the first 1 MB — download the file to see all of it.",
"tab.all": "All",
"installedBadge": "Installed",
"installsTitle": "Installs",
"installsYou": "You",
"installsUnknown": "A removed user",
"installsReplaced": "replaced an older copy",
"installsPluginWhere": "claude plugin install --scope user",
"installsUnrecorded": "{{count}} earlier installs were counted before details were kept",
"installsNoneOfYours": "You have not installed it — only your own installs are listed.",
"reinstall": "Reinstall",
"reinstallHint": "Write this version over your installed copy",
"reinstallTitle": "Reinstall “{{title}}”?",
"reinstallBody": "Your installed ~/.claude/skills/{{name}}/ and ~/.agents/skills/{{name}}/ are replaced with this version. The current copy is moved to ~/.claude/agenthub-replaced-skills/, not deleted.",
"deleteBodyShared": "It is shared, so it also disappears from the Hub for everyone. To keep it but stop sharing, use Unshare instead. Anything already installed from it stays installed.",
"deleteBodyKeep": "It leaves your library but stays in the Hub, because it is shared. To take it off the Hub too, use Remove from Hub afterwards (or Unshare first).",
"deleteKept": "Removed from your library — still in the Hub",
"hubOnly": "Hub only",
"hubOnlyHint": "You removed it from your library; it stays shared in the Hub",
"hubRemove": "Remove from Hub",
"hubRemoveTitle": "Remove “{{title}}” from the Hub?",
"hubRemoveBody": "It is no longer in your library, so it is deleted for good. Anything already installed from it stays installed.",
"edit.otherFiles": "Its other {{count}} file(s) are kept as they are.",
"edit.reinstallNote": "Your installed copy keeps the old version until you Reinstall it.",
"preview.instructions": "Instructions",
"preview.frontmatter": "Frontmatter (SKILL.md header)",
"preview.whenUsed": "When Claude uses it",
"preview.noDescription": "No description",
"preview.installsAs": "Installs as ~/.claude/skills/{{slug}}/ and ~/.agents/skills/{{slug}}/"
}
+5
View File
@@ -71,6 +71,8 @@
"paste": "Drop to paste into the terminal",
"uploading": "Uploading…",
"failed": "Could not attach the file",
"tooBig": "File too large to upload (max {{mb}} MB) — put it in the workspace folder and attach it from Files",
"tooBigLocal": "File too large to upload (max {{mb}} MB) — attach it by path instead: + → Choose a file on this computer",
"remove": "Remove attachment",
"view": "View image"
},
@@ -97,6 +99,9 @@
"notStopped": "The terminal is not connected — nothing was stopped.",
"add": "Add files, skills…",
"upload": "Upload or add files",
"pickLocal": "Choose a file on this computer",
"pickLocalHint": "Attach a file on this machine by its path — nothing is uploaded",
"pickLocalOpen": "The file picker is open on this computer's screen…",
"projectFiles": "Project files",
"contextFiles": "Context files",
"recentUploads": "Recent uploads",
+15 -1
View File
@@ -216,7 +216,21 @@
"agentsStill_other": "{{count}} agents still running",
"agentsRunning_one": "{{count}} agent running in the background",
"agentsRunning_other": "{{count}} agents running in the background",
"agentContext": "{{tokens}} tokens"
"agentContext": "{{tokens}} tokens",
"agent": {
"open": "View conversation",
"prompt": "Task",
"background": "background",
"toolUses_one": "{{count}} tool call",
"toolUses_other": "{{count}} tool calls",
"status": {
"running": "running",
"done": "done",
"error": "failed",
"stopped": "stopped"
},
"hide": "Hide conversation"
}
},
"overview": {
"agent": "Agent",
+36 -3
View File
@@ -43,7 +43,7 @@
"deleteBody": "Mục này bị gỡ khỏi thư viện của bạn và Hub. Những bản người khác đã cài vẫn giữ nguyên.",
"deleteConfirm": "Xoá",
"installTitle": "Cài “{{title}}”?",
"installSkillBody": "Các file này được ghi vào ~/.claude/skills/{{name}}/ của chính bạn. Skill có thể kèm script mà agent sẽ chạy — chỉ cài thứ bạn tin:",
"installSkillBody": "Các file này được ghi vào ~/.claude/skills/{{name}}/ và ~/.agents/skills/{{name}}/ của chính bạn, để mọi AI tool và mọi phiên đều dùng được. Skill có thể kèm script mà agent sẽ chạy — chỉ cài thứ bạn tin:",
"installPluginBody": "Chạy dưới tài khoản của bạn: claude plugin marketplace add {{market}} và claude plugin install {{name}} --scope user. Chỉ cài thứ bạn tin.",
"installConfirm": "Cài",
"replaceTitle": "Thay skill “{{name}}” của bạn?",
@@ -78,7 +78,7 @@
"skill.tab.write": "Viết mới",
"skill.tab.existing": "Từ skill có sẵn",
"skill.name": "Tên skill",
"skill.slugHint": "Cài vào ~/.claude/skills/{{slug}}/ và gọi bằng /{{slug}}",
"skill.slugHint": "Cài vào ~/.claude/skills/{{slug}}/ (và ~/.agents/skills/) và gọi bằng /{{slug}}",
"skill.slugBad": "Chỉ dùng chữ, số, '.', '_' hoặc '-'",
"skill.description": "Mô tả — khi nào Claude nên dùng skill này",
"skill.descriptionHint": "VD: Dùng khi viết release notes từ git log",
@@ -110,5 +110,38 @@
"file.fromComputer": "Từ máy tính (≤ 25 MB)",
"file.upload": "Tải lên",
"file.tooBig": "File lớn hơn 25 MB.",
"file.fromWorkspace": "Hoặc ghim tài liệu do các phiên của workspace đã ghi"
"file.fromWorkspace": "Hoặc ghim tài liệu do các phiên của workspace đã ghi",
"editTitle": "Sửa “{{title}}”",
"edit.title": "Tiêu đề",
"edit.description": "Mô tả",
"previewFailed": "Không tải được file này.",
"truncated": "Chỉ hiển thị 1 MB đầu — tải file về để xem toàn bộ.",
"tab.all": "Tất cả",
"installedBadge": "Đã cài",
"installsTitle": "Lượt cài",
"installsYou": "Bạn",
"installsUnknown": "Người dùng đã xoá",
"installsReplaced": "thay bản cũ",
"installsPluginWhere": "claude plugin install --scope user",
"installsUnrecorded": "{{count}} lượt cài trước đây chỉ được đếm, không lưu chi tiết",
"installsNoneOfYours": "Bạn chưa cài — chỉ hiện các lượt cài của bạn.",
"reinstall": "Cài lại",
"reinstallHint": "Ghi bản này đè lên bản bạn đã cài",
"reinstallTitle": "Cài lại “{{title}}”?",
"reinstallBody": "Bản đã cài ở ~/.claude/skills/{{name}}/ và ~/.agents/skills/{{name}}/ sẽ được thay bằng bản này. Bản hiện tại được chuyển vào ~/.claude/agenthub-replaced-skills/, không bị xoá.",
"deleteBodyShared": "Mục này đang được chia sẻ nên cũng sẽ biến mất khỏi Hub với mọi người. Muốn giữ lại nhưng thôi chia sẻ thì dùng Bỏ chia sẻ. Những gì đã cài từ nó vẫn được giữ.",
"deleteBodyKeep": "Mục này rời khỏi thư viện của bạn nhưng vẫn ở trên Hub vì đang được chia sẻ. Muốn gỡ khỏi Hub luôn thì sau đó bấm Gỡ khỏi Hub (hoặc Bỏ chia sẻ trước).",
"deleteKept": "Đã xoá khỏi thư viện — vẫn còn trên Hub",
"hubOnly": "Chỉ trên Hub",
"hubOnlyHint": "Bạn đã xoá khỏi thư viện; mục này vẫn được chia sẻ trên Hub",
"hubRemove": "Gỡ khỏi Hub",
"hubRemoveTitle": "Gỡ “{{title}}” khỏi Hub?",
"hubRemoveBody": "Mục này không còn trong thư viện của bạn nên sẽ bị xoá hẳn. Những gì đã cài từ nó vẫn được giữ.",
"edit.otherFiles": "{{count}} file khác của skill được giữ nguyên.",
"edit.reinstallNote": "Bản bạn đã cài vẫn là bản cũ cho đến khi bấm Cài lại.",
"preview.instructions": "Hướng dẫn",
"preview.frontmatter": "Frontmatter (phần đầu SKILL.md)",
"preview.whenUsed": "Khi nào Claude dùng",
"preview.noDescription": "Chưa có mô tả",
"preview.installsAs": "Cài vào ~/.claude/skills/{{slug}}/ và ~/.agents/skills/{{slug}}/"
}
+5
View File
@@ -71,6 +71,8 @@
"paste": "Thả để dán vào terminal",
"uploading": "Đang tải lên…",
"failed": "Không đính kèm được file",
"tooBig": "File quá lớn để tải lên (tối đa {{mb}} MB) — hãy đặt file vào thư mục workspace rồi đính kèm từ Files",
"tooBigLocal": "File quá lớn để tải lên (tối đa {{mb}} MB) — hãy đính kèm bằng đường dẫn: + → Chọn file trên máy này",
"remove": "Bỏ đính kèm",
"view": "Xem ảnh"
},
@@ -97,6 +99,9 @@
"notStopped": "Terminal chưa kết nối — chưa ngưng được.",
"add": "Thêm file, skill…",
"upload": "Tải lên hoặc thêm file",
"pickLocal": "Chọn file trên máy này",
"pickLocalHint": "Đính kèm file trên máy này bằng đường dẫn — không tải lên gì cả",
"pickLocalOpen": "Hộp chọn file đang mở trên màn hình máy này…",
"projectFiles": "File trong dự án",
"contextFiles": "File ngữ cảnh",
"recentUploads": "Đã tải lên gần đây",
+15 -1
View File
@@ -216,7 +216,21 @@
"agentsStill_other": "còn {{count}} agent đang chạy",
"agentsRunning_one": "{{count}} agent đang chạy nền",
"agentsRunning_other": "{{count}} agent đang chạy nền",
"agentContext": "{{tokens}} token"
"agentContext": "{{tokens}} token",
"agent": {
"open": "Xem hội thoại",
"prompt": "Nhiệm vụ",
"background": "chạy nền",
"toolUses_one": "{{count}} lần gọi tool",
"toolUses_other": "{{count}} lần gọi tool",
"status": {
"running": "đang chạy",
"done": "xong",
"error": "lỗi",
"stopped": "đã dừng"
},
"hide": "Ẩn hội thoại"
}
},
"overview": {
"agent": "Agent",