chore: make non-i18n code English-only (#117)

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Yaowei Zheng
2026-07-29 18:03:41 +08:00
committed by GitHub
parent f63037866e
commit 4681135423
19 changed files with 113 additions and 106 deletions
@@ -44,7 +44,7 @@ type TabKey = "overview" | "prompt" | "runtime" | "tools" | "vault" | "schedules
* The "" (not-overridden / inherit) row is filtered out per review — the menus offer only
* concrete values in dictionary order, the user picks explicitly. An unset stored value
* simply matches no row, so the OptionMenu trigger falls back to its placeholder
* ((缺省)/(default), the same convention as the tools-table permission menu); nothing is
* ("(default)", the same convention as the tools-table permission menu); nothing is
* ever written silently, and the reset link next to each menu rewinds a local pick back to "".
*/
export function optionRows(
@@ -24,7 +24,7 @@ export function ApprovalButtons({
};
// Text at every breakpoint (per review): action buttons the user presses must read as words —
// "允许/Allow" and "拒绝/Deny" — never as bare glyphs; iconic shorthand is reserved for
// "Allow" and "Deny" — never as bare glyphs; iconic shorthand is reserved for
// passive indicators. The buttons live on their own row under the (wrapping) argument
// preview, so the words cost no width the pending card doesn't already have.
return (
@@ -683,8 +683,8 @@ const versionBadgeClass =
"ml-1.5 inline-block rounded-full bg-[var(--accent-bg)] px-1.5 align-super text-[10px] font-medium leading-4 text-[var(--accent-fg)] transition-opacity duration-150 hover:opacity-80";
/**
* Quiet version line under the brand subtitle: `vX.Y.Z · 最近更新日期 7 月 26 日` /
* `… · Last updated Jul 26`. The product name is not repeated here — the brand wordmark
* Quiet version line under the brand subtitle: `vX.Y.Z · Last updated Jul 26`
* (localized per dictionary). The product name is not repeated here — the brand wordmark
* sits directly above, and the sidebar's version footer is bare `vX.Y.Z` too. The date is
* the running version's release
* date, stamped into core's BUILD_DATE at build time — displayed as-is, no network;
@@ -205,7 +205,7 @@ export function ToolCallCard({ item, ctx }: { item: ToolCallItem; ctx: StreamRen
: failed
? "failed"
: "done";
// Decision wording ("Approved · manual" / "已拒绝 · 手动" …): carried ONLY by the left status
// Decision wording ("Approved · manual", "Denied · manual", …): carried ONLY by the left status
// icon's title/aria-label — per review the row shows no visible decision text at any
// breakpoint; the icon is the single source of truth for how the call was decided.
const decisionText = item.decision
@@ -21,16 +21,16 @@
* Agent's v_old → v_new and warns the overwriting reinstall drops local
* edits), then reinstalls the current library copy on every outdated Agent
* (install-again-is-update semantics), with a single success toast; the
* manage-installs Modal marks outdated rows with an accent "更新"/"Update"
* button doing the same per Agent (through the same confirm);
* manage-installs Modal marks outdated rows with an accent "Update" button
* doing the same per Agent (through the same confirm);
* - Paper plane "quick invoke": enters /chat/new draft mode with default_agent,
* pre-selects the skill, and pre-fills the invocation text per UI language
* (zh "使用 X 技能" / en "use the X skill", overwriting any existing draft body);
* ("use the X skill" in the active dictionary, overwriting any existing draft body);
* - Download "manage installs": a Modal listing every Agent in the current
* Project — not-installed shows "安装"/"Install", installed shows
* "已安装"/"Installed" (hover switches to "卸载"/"Uninstall", click to
* uninstall); any member can operate it; optimistic update, a top-level
* toast on success for install/uninstall, rollback plus a toast on failure.
* Project — not-installed shows "Install", installed shows "Installed"
* (hover switches to "Uninstall", click to uninstall); any member can
* operate it; optimistic update, a top-level toast on success for
* install/uninstall, rollback plus a toast on failure.
*/
import { useEffect, useState } from "react";
import { useNavigate } from "react-router";
@@ -550,11 +550,11 @@ function SkillCard({
/**
* One Agent row in the "manage installs" Modal: not-installed shows
* "安装"/"Install"; installed shows "已安装"/"Installed", switching to
* "卸载"/"Uninstall" on hover (same button, click to uninstall); an installed
* copy older than the library additionally shows an accent "更新"/"Update"
* button (reinstall = update). Install and uninstall go through optimistic
* updates (toggleInstall), rolling back on failure.
* "Install"; installed shows "Installed", switching to "Uninstall" on hover
* (same button, click to uninstall); an installed copy older than the library
* additionally shows an accent "Update" button (reinstall = update). Install
* and uninstall go through optimistic updates (toggleInstall), rolling back on
* failure.
*/
function InstallRow({
agentId,
@@ -589,7 +589,7 @@ function InstallRow({
</Button>
)}
{installed ? (
// group: on hover the button's copy switches "已安装"/"Installed" → "卸载"/"Uninstall" (the same button carries the uninstall action).
// group: on hover the button's copy switches "Installed" → "Uninstall" (the same button carries the uninstall action).
<Button
size="sm"
variant="ghost"