chore(branding): replace Claude/Anthropic references with CoStrict in UI strings
This commit is contained in:
parent
19112528d5
commit
bd150468b0
|
|
@ -0,0 +1,28 @@
|
|||
# csc 项目 UI 文案可直接替换清单
|
||||
|
||||
- 目的:筛选出**只需要替换展示文案**、即可让 UI 页面显示 `CoStrict` 而不是 `Claude` / `Claude Code` / `Anthropic` 的内容。
|
||||
- 筛选原则:
|
||||
1. 仅保留用户可见文案,例如 `title`、`subtitle`、`message`、`placeholder`、`label`、`aria-label`、`<Text>` 文本。
|
||||
2. 不纳入命令、包名、环境变量、URL、路径、主题 token、埋点名、注释说明。
|
||||
3. 对账号体系、订阅体系、Desktop/Chrome 集成等文案,标记为“**可替换但需谨慎**”。
|
||||
|
||||
---
|
||||
|
||||
## 一、高置信:可直接文本替换的 UI 文案
|
||||
|
||||
这部分基本都属于纯展示文本,直接替换后主要影响界面显示,不会直接触发命令、配置或协议变更。
|
||||
|
||||
| 文件 | 行号 | 原文 | 建议替换为 |
|
||||
| --- | ---: | --- | --- |
|
||||
| `packages/remote-control-server/web/index.html` | L6 | `Remote Control — Claude Code` | `Remote Control — CoStrict` |
|
||||
| `packages/remote-control-server/web/automation.js` | L280 | `Claude Code is in proactive mode and currently sleeping until the next wake-up or user message.` | `CoStrict is in proactive mode and currently sleeping until the next wake-up or user message.` |
|
||||
| `packages/remote-control-server/web/automation.js` | L290 | `Claude Code is in proactive mode and waiting for the next scheduled check-in.` | `CoStrict is in proactive mode and waiting for the next scheduled check-in.` |
|
||||
| `packages/remote-control-server/web/automation.js` | L299 / L309 | `Claude Code is in proactive mode and may continue working between user messages.` | `CoStrict is in proactive mode and may continue working between user messages.` |
|
||||
| `packages/remote-control-server/web/automation.js` | L319 | `Claude Code is processing an automatic background trigger.` | `CoStrict is processing an automatic background trigger.` |
|
||||
| `packages/remote-control-server/web/automation.js` | L361 | `aria-label="Claude Code status"` | `aria-label="CoStrict status"` |
|
||||
| `packages/@ant/ink/src/theme/LoadingState.tsx` | L45 | `Fetching your Claude Code sessions...` | `Fetching your CoStrict sessions...` |
|
||||
| `src/components/FeedbackSurvey/FeedbackSurveyView.tsx` | L26 | `How is Claude doing this session? (optional)` | `How is CoStrict doing this session? (optional)` |
|
||||
| `src/components/FeedbackSurvey/TranscriptSharePrompt.tsx` | L43 | `Can Anthropic look at your session transcript to help us improve` | `Can CoStrict look at your session transcript to help us improve` |
|
||||
| `src/components/CostThresholdDialog.tsx` | L12 | `You've spent $5 on the Anthropic API this session.` | `You've spent $5 on the CoStrict API this session.` |
|
||||
| `src/components/agents/new-agent-creation/wizard-steps/DescriptionStep.tsx` | L47 | `Description (tell Claude when to use this agent)` | `Description (tell CoStrict when to use this agent)` |
|
||||
| `src/components/agents/new-agent-creation/wizard-steps/DescriptionStep.tsx` | L68 | `When should Claude use this agent?` | `When should CoStrict use this agent?` |
|
||||
|
|
@ -42,7 +42,7 @@ type LoadingStateProps = {
|
|||
* <LoadingState
|
||||
* message="Loading sessions"
|
||||
* bold
|
||||
* subtitle="Fetching your Claude Code sessions..."
|
||||
* subtitle="Fetching your CoStrict sessions..."
|
||||
* />
|
||||
*/
|
||||
export function LoadingState({
|
||||
|
|
|
|||
|
|
@ -277,7 +277,7 @@ export function getAutomationIndicator(state) {
|
|||
visible: true,
|
||||
label: "Autopilot",
|
||||
tone: "sleeping",
|
||||
title: "Claude Code is in proactive mode and currently sleeping until the next wake-up or user message.",
|
||||
title: "CoStrict is in proactive mode and currently sleeping until the next wake-up or user message.",
|
||||
iconVariant: "sleeping",
|
||||
};
|
||||
}
|
||||
|
|
@ -287,7 +287,7 @@ export function getAutomationIndicator(state) {
|
|||
visible: true,
|
||||
label: "Autopilot",
|
||||
tone: "proactive",
|
||||
title: "Claude Code is in proactive mode and waiting for the next scheduled check-in.",
|
||||
title: "CoStrict is in proactive mode and waiting for the next scheduled check-in.",
|
||||
iconVariant: "standby",
|
||||
};
|
||||
}
|
||||
|
|
@ -296,7 +296,7 @@ export function getAutomationIndicator(state) {
|
|||
visible: true,
|
||||
label: "Autopilot",
|
||||
tone: "proactive",
|
||||
title: "Claude Code is in proactive mode and may continue working between user messages.",
|
||||
title: "CoStrict is in proactive mode and may continue working between user messages.",
|
||||
iconVariant: "active",
|
||||
};
|
||||
}
|
||||
|
|
@ -306,7 +306,7 @@ export function getAutomationIndicator(state) {
|
|||
visible: true,
|
||||
label: "Autopilot",
|
||||
tone: "proactive",
|
||||
title: "Claude Code is in proactive mode and may continue working between user messages.",
|
||||
title: "CoStrict is in proactive mode and may continue working between user messages.",
|
||||
iconVariant: "active",
|
||||
};
|
||||
}
|
||||
|
|
@ -316,7 +316,7 @@ export function getAutomationIndicator(state) {
|
|||
visible: true,
|
||||
label: "Auto Run",
|
||||
tone: "auto-run",
|
||||
title: "Claude Code is processing an automatic background trigger.",
|
||||
title: "CoStrict is processing an automatic background trigger.",
|
||||
iconVariant: "active",
|
||||
};
|
||||
}
|
||||
|
|
@ -358,7 +358,7 @@ export function getAutomationActivity(state) {
|
|||
|
||||
export function renderAutomationIcon(variant = "active", { className = "", decorative = true } = {}) {
|
||||
const classes = ["clawd-icon", `clawd-icon-${variant}`, className].filter(Boolean).join(" ");
|
||||
const ariaAttrs = decorative ? 'aria-hidden="true"' : 'role="img" aria-label="Claude Code status"';
|
||||
const ariaAttrs = decorative ? 'aria-hidden="true"' : 'role="img" aria-label="CoStrict status"';
|
||||
|
||||
return `
|
||||
<span class="${classes}" ${ariaAttrs}>
|
||||
|
|
|
|||
|
|
@ -96,7 +96,7 @@ describe("automation helpers", () => {
|
|||
visible: true,
|
||||
label: "Autopilot",
|
||||
tone: "proactive",
|
||||
title: "Claude Code is in proactive mode and may continue working between user messages.",
|
||||
title: "CoStrict is in proactive mode and may continue working between user messages.",
|
||||
iconVariant: "active",
|
||||
});
|
||||
|
||||
|
|
@ -154,7 +154,7 @@ describe("automation helpers", () => {
|
|||
visible: true,
|
||||
label: "Autopilot",
|
||||
tone: "proactive",
|
||||
title: "Claude Code is in proactive mode and waiting for the next scheduled check-in.",
|
||||
title: "CoStrict is in proactive mode and waiting for the next scheduled check-in.",
|
||||
iconVariant: "standby",
|
||||
});
|
||||
expect(getAutomationActivity(state)).toEqual({
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Remote Control — Claude Code</title>
|
||||
<title>Remote Control — CoStrict</title>
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:opsz,wght@12..96,400;12..96,500;12..96,600;12..96,700&family=Figtree:wght@300;400;500;600;700&family=Fira+Code:wght@400;500&display=swap" />
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ type Props = {
|
|||
export function CostThresholdDialog({ onDone }: Props): React.ReactNode {
|
||||
return (
|
||||
<Dialog
|
||||
title="You've spent $5 on the Anthropic API this session."
|
||||
title="You've spent $5 on the CoStrict API this session."
|
||||
onCancel={onDone}
|
||||
>
|
||||
<Box flexDirection="column">
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ const inputToResponse: Record<ResponseInput, FeedbackSurveyResponse> = {
|
|||
export const isValidResponseInput = (input: string): input is ResponseInput =>
|
||||
(RESPONSE_INPUTS as readonly string[]).includes(input)
|
||||
|
||||
const DEFAULT_MESSAGE = 'How is Claude doing this session? (optional)'
|
||||
const DEFAULT_MESSAGE = 'How is CoStrict doing this session? (optional)'
|
||||
|
||||
export function FeedbackSurveyView({
|
||||
onSelect,
|
||||
|
|
|
|||
|
|
@ -40,8 +40,8 @@ export function TranscriptSharePrompt({
|
|||
<Box>
|
||||
<Text color="ansi:cyan">{BLACK_CIRCLE} </Text>
|
||||
<Text bold>
|
||||
Can Anthropic look at your session transcript to help us improve
|
||||
CoStrict?
|
||||
Can the CoStrict team look at your session transcript to help us
|
||||
improve CoStrict?
|
||||
</Text>
|
||||
</Box>
|
||||
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ export function DescriptionStep(): ReactNode {
|
|||
|
||||
return (
|
||||
<WizardDialogLayout
|
||||
subtitle="Description (tell Claude when to use this agent)"
|
||||
subtitle="Description (tell CoStrict when to use this agent)"
|
||||
footerText={
|
||||
<Byline>
|
||||
<KeyboardShortcutHint shortcut="Type" action="enter text" />
|
||||
|
|
@ -65,7 +65,7 @@ export function DescriptionStep(): ReactNode {
|
|||
}
|
||||
>
|
||||
<Box flexDirection="column">
|
||||
<Text>When should Claude use this agent?</Text>
|
||||
<Text>When should CoStrict use this agent?</Text>
|
||||
|
||||
<Box marginTop={1}>
|
||||
<TextInput
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user