mirror of
https://github.com/claude-code-best/claude-code.git
synced 2026-06-18 06:15:51 +00:00
refactor: 移除消息流中的 diff 渲染,仅保留权限审批页的 diff
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -1,16 +1,11 @@
|
||||
import type { StructuredPatchHunk } from 'diff'
|
||||
import * as React from 'react'
|
||||
import { useTerminalSize } from '../hooks/useTerminalSize.js'
|
||||
import { Box, Text } from '@anthropic/ink'
|
||||
import { Text } from '@anthropic/ink'
|
||||
import { count } from '../utils/array.js'
|
||||
import { MessageResponse } from './MessageResponse.js'
|
||||
import { StructuredDiffList } from './StructuredDiffList.js'
|
||||
|
||||
type Props = {
|
||||
filePath: string
|
||||
structuredPatch: StructuredPatchHunk[]
|
||||
firstLine: string | null
|
||||
fileContent?: string
|
||||
structuredPatch: { lines: string[] }[]
|
||||
style?: 'condensed'
|
||||
verbose: boolean
|
||||
previewHint?: string
|
||||
@@ -19,13 +14,10 @@ type Props = {
|
||||
export function FileEditToolUpdatedMessage({
|
||||
filePath,
|
||||
structuredPatch,
|
||||
firstLine,
|
||||
fileContent,
|
||||
style,
|
||||
verbose,
|
||||
previewHint,
|
||||
}: Props): React.ReactNode {
|
||||
const { columns } = useTerminalSize()
|
||||
const numAdditions = structuredPatch.reduce(
|
||||
(acc, hunk) => acc + count(hunk.lines, _ => _.startsWith('+')),
|
||||
0,
|
||||
@@ -55,7 +47,7 @@ export function FileEditToolUpdatedMessage({
|
||||
|
||||
// Plan files: invert condensed behavior
|
||||
// - Regular mode: just show the hint (user can type /plan to see full content)
|
||||
// - Condensed mode (subagent view): show the diff
|
||||
// - Condensed mode (subagent view): show the text
|
||||
if (previewHint) {
|
||||
if (style !== 'condensed' && !verbose) {
|
||||
return (
|
||||
@@ -69,18 +61,6 @@ export function FileEditToolUpdatedMessage({
|
||||
}
|
||||
|
||||
return (
|
||||
<MessageResponse>
|
||||
<Box flexDirection="column">
|
||||
<Text>{text}</Text>
|
||||
<StructuredDiffList
|
||||
hunks={structuredPatch}
|
||||
dim={false}
|
||||
width={columns - 12}
|
||||
filePath={filePath}
|
||||
firstLine={firstLine}
|
||||
fileContent={fileContent}
|
||||
/>
|
||||
</Box>
|
||||
</MessageResponse>
|
||||
<MessageResponse>{text}</MessageResponse>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -1,24 +1,12 @@
|
||||
import type { StructuredPatchHunk } from 'diff'
|
||||
import { relative } from 'path'
|
||||
import * as React from 'react'
|
||||
import { useTerminalSize } from 'src/hooks/useTerminalSize.js'
|
||||
import { getCwd } from 'src/utils/cwd.js'
|
||||
import { Box, Text } from '@anthropic/ink'
|
||||
import { HighlightedCode } from './HighlightedCode.js'
|
||||
import { MessageResponse } from './MessageResponse.js'
|
||||
import { StructuredDiffList } from './StructuredDiffList.js'
|
||||
|
||||
const MAX_LINES_TO_RENDER = 10
|
||||
|
||||
type Props = {
|
||||
file_path: string
|
||||
operation: 'write' | 'update'
|
||||
// For updates - show diff
|
||||
patch?: StructuredPatchHunk[]
|
||||
firstLine: string | null
|
||||
fileContent?: string
|
||||
// For new file creation - show content preview
|
||||
content?: string
|
||||
style?: 'condensed'
|
||||
verbose: boolean
|
||||
}
|
||||
@@ -26,14 +14,9 @@ type Props = {
|
||||
export function FileEditToolUseRejectedMessage({
|
||||
file_path,
|
||||
operation,
|
||||
patch,
|
||||
firstLine,
|
||||
fileContent,
|
||||
content,
|
||||
style,
|
||||
verbose,
|
||||
}: Props): React.ReactNode {
|
||||
const { columns } = useTerminalSize()
|
||||
const text = (
|
||||
<Box flexDirection="row">
|
||||
<Text color="subtle">User rejected {operation} to </Text>
|
||||
@@ -48,51 +31,5 @@ export function FileEditToolUseRejectedMessage({
|
||||
return <MessageResponse>{text}</MessageResponse>
|
||||
}
|
||||
|
||||
// For new file creation, show content preview (dimmed)
|
||||
if (operation === 'write' && content !== undefined) {
|
||||
const lines = content.split('\n')
|
||||
const numLines = lines.length
|
||||
const plusLines = numLines - MAX_LINES_TO_RENDER
|
||||
const truncatedContent = verbose
|
||||
? content
|
||||
: lines.slice(0, MAX_LINES_TO_RENDER).join('\n')
|
||||
|
||||
return (
|
||||
<MessageResponse>
|
||||
<Box flexDirection="column">
|
||||
{text}
|
||||
<HighlightedCode
|
||||
code={truncatedContent || '(No content)'}
|
||||
filePath={file_path}
|
||||
width={columns - 12}
|
||||
dim
|
||||
/>
|
||||
{!verbose && plusLines > 0 && (
|
||||
<Text dimColor>… +{plusLines} lines</Text>
|
||||
)}
|
||||
</Box>
|
||||
</MessageResponse>
|
||||
)
|
||||
}
|
||||
|
||||
// For updates, show diff
|
||||
if (!patch || patch.length === 0) {
|
||||
return <MessageResponse>{text}</MessageResponse>
|
||||
}
|
||||
|
||||
return (
|
||||
<MessageResponse>
|
||||
<Box flexDirection="column">
|
||||
{text}
|
||||
<StructuredDiffList
|
||||
hunks={patch}
|
||||
dim
|
||||
width={columns - 12}
|
||||
filePath={file_path}
|
||||
firstLine={firstLine}
|
||||
fileContent={fileContent}
|
||||
/>
|
||||
</Box>
|
||||
</MessageResponse>
|
||||
)
|
||||
return <MessageResponse>{text}</MessageResponse>
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user