mirror of
https://github.com/claude-code-best/claude-code.git
synced 2026-06-22 08:15:53 +00:00
更新大量 tsx 原始文件; 已经迁移 login panel; 部分 (#121)
* style(B1-1): 格式化 ink/buddy/cli/context/screens/tasks/services/keybindings/state (43 files) 纯格式化:移除分号、React Compiler import、import 多行展开。 修复了 Box.tsx 和 ScrollBox.tsx 中无效的 global.d.ts import。 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * style(B1-2): 格式化 commands (79 files) 纯格式化:移除分号、React Compiler import、import 多行展开。 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * style(B1-3): 格式化 components/messages,permissions,mcp,sandbox,shell (104 files) 纯格式化:移除分号、React Compiler import、import 多行展开。 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * style(B1-4): 格式化 components/PromptInput,FeedbackSurvey,tasks,agents,skills,design-system,wizard (73 files) 纯格式化:移除分号、React Compiler import、import 多行展开。 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * style(B1-5): 格式化 components其余 + hooks + tools (232 files) 纯格式化:移除分号、React Compiler import、import 多行展开。 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * style(B1-6): 格式化 main/entrypoints/utils/moreright (21 files) 纯格式化:移除分号、React Compiler import、import 多行展开。 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs: 更新 README,新增 Run.ps1/TODO.md,删除 V6.md - README.md: 大幅重写,更详细版本历史和配置示例 - Run.ps1: 新增 Windows 启动脚本 - TODO.md: 新增包完成清单 - V6.md: 删除(架构重构规划已不适用) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: 修复以前的问题 * fix: 修复 login 面板的问题 --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,120 +1,78 @@
|
||||
import { c as _c } from "react/compiler-runtime";
|
||||
import React from 'react';
|
||||
import { logEvent } from 'src/services/analytics/index.js';
|
||||
import React from 'react'
|
||||
import { logEvent } from 'src/services/analytics/index.js'
|
||||
// eslint-disable-next-line custom-rules/prefer-use-keybindings -- enter to continue
|
||||
import { Box, Link, Newline, Text, useInput } from '../ink.js';
|
||||
import { isChromeExtensionInstalled } from '../utils/claudeInChrome/setup.js';
|
||||
import { saveGlobalConfig } from '../utils/config.js';
|
||||
import { Dialog } from './design-system/Dialog.js';
|
||||
const CHROME_EXTENSION_URL = 'https://claude.ai/chrome';
|
||||
const CHROME_PERMISSIONS_URL = 'https://clau.de/chrome/permissions';
|
||||
import { Box, Link, Newline, Text, useInput } from '../ink.js'
|
||||
import { isChromeExtensionInstalled } from '../utils/claudeInChrome/setup.js'
|
||||
import { saveGlobalConfig } from '../utils/config.js'
|
||||
import { Dialog } from './design-system/Dialog.js'
|
||||
|
||||
const CHROME_EXTENSION_URL = 'https://claude.ai/chrome'
|
||||
const CHROME_PERMISSIONS_URL = 'https://clau.de/chrome/permissions'
|
||||
|
||||
type Props = {
|
||||
onDone(): void;
|
||||
};
|
||||
export function ClaudeInChromeOnboarding(t0) {
|
||||
const $ = _c(20);
|
||||
const {
|
||||
onDone
|
||||
} = t0;
|
||||
const [isExtensionInstalled, setIsExtensionInstalled] = React.useState(false);
|
||||
let t1;
|
||||
let t2;
|
||||
if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
|
||||
t1 = () => {
|
||||
logEvent("tengu_claude_in_chrome_onboarding_shown", {});
|
||||
isChromeExtensionInstalled().then(setIsExtensionInstalled);
|
||||
saveGlobalConfig(_temp);
|
||||
};
|
||||
t2 = [];
|
||||
$[0] = t1;
|
||||
$[1] = t2;
|
||||
} else {
|
||||
t1 = $[0];
|
||||
t2 = $[1];
|
||||
}
|
||||
React.useEffect(t1, t2);
|
||||
let t3;
|
||||
if ($[2] !== onDone) {
|
||||
t3 = (_input, key) => {
|
||||
if (key.return) {
|
||||
onDone();
|
||||
}
|
||||
};
|
||||
$[2] = onDone;
|
||||
$[3] = t3;
|
||||
} else {
|
||||
t3 = $[3];
|
||||
}
|
||||
useInput(t3);
|
||||
let t4;
|
||||
if ($[4] !== isExtensionInstalled) {
|
||||
t4 = !isExtensionInstalled && <><Newline /><Newline />Requires the Chrome extension. Get started at{" "}<Link url={CHROME_EXTENSION_URL} /></>;
|
||||
$[4] = isExtensionInstalled;
|
||||
$[5] = t4;
|
||||
} else {
|
||||
t4 = $[5];
|
||||
}
|
||||
let t5;
|
||||
if ($[6] !== t4) {
|
||||
t5 = <Text>Claude in Chrome works with the Chrome extension to let you control your browser directly from Claude Code. You can navigate websites, fill forms, capture screenshots, record GIFs, and debug with console logs and network requests.{t4}</Text>;
|
||||
$[6] = t4;
|
||||
$[7] = t5;
|
||||
} else {
|
||||
t5 = $[7];
|
||||
}
|
||||
let t6;
|
||||
if ($[8] !== isExtensionInstalled) {
|
||||
t6 = isExtensionInstalled && <>{" "}(<Link url={CHROME_PERMISSIONS_URL} />)</>;
|
||||
$[8] = isExtensionInstalled;
|
||||
$[9] = t6;
|
||||
} else {
|
||||
t6 = $[9];
|
||||
}
|
||||
let t7;
|
||||
if ($[10] !== t6) {
|
||||
t7 = <Text dimColor={true}>Site-level permissions are inherited from the Chrome extension. Manage permissions in the Chrome extension settings to control which sites Claude can browse, click, and type on{t6}.</Text>;
|
||||
$[10] = t6;
|
||||
$[11] = t7;
|
||||
} else {
|
||||
t7 = $[11];
|
||||
}
|
||||
let t8;
|
||||
if ($[12] === Symbol.for("react.memo_cache_sentinel")) {
|
||||
t8 = <Text bold={true} color="chromeYellow">/chrome</Text>;
|
||||
$[12] = t8;
|
||||
} else {
|
||||
t8 = $[12];
|
||||
}
|
||||
let t9;
|
||||
if ($[13] === Symbol.for("react.memo_cache_sentinel")) {
|
||||
t9 = <Text dimColor={true}>For more info, use{" "}{t8}{" "}or visit <Link url="https://code.claude.com/docs/en/chrome" /></Text>;
|
||||
$[13] = t9;
|
||||
} else {
|
||||
t9 = $[13];
|
||||
}
|
||||
let t10;
|
||||
if ($[14] !== t5 || $[15] !== t7) {
|
||||
t10 = <Box flexDirection="column" gap={1}>{t5}{t7}{t9}</Box>;
|
||||
$[14] = t5;
|
||||
$[15] = t7;
|
||||
$[16] = t10;
|
||||
} else {
|
||||
t10 = $[16];
|
||||
}
|
||||
let t11;
|
||||
if ($[17] !== onDone || $[18] !== t10) {
|
||||
t11 = <Dialog title="Claude in Chrome (Beta)" onCancel={onDone} color="chromeYellow">{t10}</Dialog>;
|
||||
$[17] = onDone;
|
||||
$[18] = t10;
|
||||
$[19] = t11;
|
||||
} else {
|
||||
t11 = $[19];
|
||||
}
|
||||
return t11;
|
||||
onDone(): void
|
||||
}
|
||||
function _temp(current) {
|
||||
return {
|
||||
...current,
|
||||
hasCompletedClaudeInChromeOnboarding: true
|
||||
};
|
||||
|
||||
export function ClaudeInChromeOnboarding({ onDone }: Props): React.ReactNode {
|
||||
const [isExtensionInstalled, setIsExtensionInstalled] = React.useState(false)
|
||||
|
||||
React.useEffect(() => {
|
||||
logEvent('tengu_claude_in_chrome_onboarding_shown', {})
|
||||
void isChromeExtensionInstalled().then(setIsExtensionInstalled)
|
||||
saveGlobalConfig(current => {
|
||||
return { ...current, hasCompletedClaudeInChromeOnboarding: true }
|
||||
})
|
||||
}, [])
|
||||
|
||||
// Handle Enter to continue
|
||||
useInput((_input, key) => {
|
||||
if (key.return) {
|
||||
onDone()
|
||||
}
|
||||
})
|
||||
|
||||
return (
|
||||
<Dialog
|
||||
title="Claude in Chrome (Beta)"
|
||||
onCancel={onDone}
|
||||
color="chromeYellow"
|
||||
>
|
||||
<Box flexDirection="column" gap={1}>
|
||||
<Text>
|
||||
Claude in Chrome works with the Chrome extension to let you control
|
||||
your browser directly from Claude Code. You can navigate websites,
|
||||
fill forms, capture screenshots, record GIFs, and debug with console
|
||||
logs and network requests.
|
||||
{!isExtensionInstalled && (
|
||||
<>
|
||||
<Newline />
|
||||
<Newline />
|
||||
Requires the Chrome extension. Get started at{' '}
|
||||
<Link url={CHROME_EXTENSION_URL} />
|
||||
</>
|
||||
)}
|
||||
</Text>
|
||||
|
||||
<Text dimColor>
|
||||
Site-level permissions are inherited from the Chrome extension. Manage
|
||||
permissions in the Chrome extension settings to control which sites
|
||||
Claude can browse, click, and type on
|
||||
{isExtensionInstalled && (
|
||||
<>
|
||||
{' '}
|
||||
(<Link url={CHROME_PERMISSIONS_URL} />)
|
||||
</>
|
||||
)}
|
||||
.
|
||||
</Text>
|
||||
<Text dimColor>
|
||||
For more info, use{' '}
|
||||
<Text bold color="chromeYellow">
|
||||
/chrome
|
||||
</Text>{' '}
|
||||
or visit <Link url="https://code.claude.com/docs/en/chrome" />
|
||||
</Text>
|
||||
</Box>
|
||||
</Dialog>
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user