Skip to content

Commit af8c00a

Browse files
committed
webview-ui: remove redundant CDATA replacements; improve unified diff header detection; reuse extractUnifiedDiff for new-file rendering
1 parent 51daf08 commit af8c00a

File tree

2 files changed

+3
-24
lines changed

2 files changed

+3
-24
lines changed

webview-ui/src/components/chat/ChatRow.tsx

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -175,24 +175,6 @@ function computeDiffStats(diff?: string): { added: number; removed: number } | n
175175
return null
176176
}
177177

178-
/**
179-
* Converts new file content to unified diff format (all lines as additions)
180-
*/
181-
function convertNewFileToUnifiedDiff(content: string, filePath?: string): string {
182-
const fileName = filePath || "file"
183-
const lines = content.split("\n")
184-
185-
let diff = `--- /dev/null\n`
186-
diff += `+++ ${fileName}\n`
187-
diff += `@@ -0,0 +1,${lines.length} @@\n`
188-
189-
for (const line of lines) {
190-
diff += `+${line}\n`
191-
}
192-
193-
return diff
194-
}
195-
196178
export const ChatRowContent = ({
197179
message,
198180
lastModifiedMessage,
@@ -638,7 +620,7 @@ export const ChatRowContent = ({
638620
<div className="pl-6">
639621
<CodeAccordian
640622
path={tool.path}
641-
code={convertNewFileToUnifiedDiff(tool.content || "", tool.path)}
623+
code={cleanDiffContent ?? ""}
642624
language="diff"
643625
isLoading={message.partial}
644626
isExpanded={isExpanded}

webview-ui/src/utils/diffUtils.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ export function extractUnifiedDiff(params: {
4040
/** Detects unified diff by presence of headers/hunks */
4141
function isUnifiedDiff(s: string): boolean {
4242
const hasHunk = /(^|\n)@@\s+-[0-9,]+\s+\+[0-9,]+\s+@@/.test(s)
43-
const hasHeaders = /(^|\n)---\s|\n\+\+\+\s/.test(s)
43+
const hasHeaders = /(^|\n)---\s|(^|\n)\+\+\+\s/.test(s)
4444
return hasHunk || hasHeaders
4545
}
4646

@@ -55,12 +55,9 @@ function isSearchReplace(s: string): boolean {
5555
function stripCData(s: string): string {
5656
return (
5757
s
58-
// Remove HTML-encoded and raw CDATA open
58+
// Remove HTML-encoded and raw CDATA open/close (case-insensitive covers both)
5959
.replace(/<!\[CDATA\[/gi, "")
60-
.replace(/<!\[CDATA\[/g, "")
61-
// Remove HTML-encoded and raw CDATA close
6260
.replace(/\]\]>/gi, "")
63-
.replace(/\]\]>/g, "")
6461
)
6562
}
6663

0 commit comments

Comments
 (0)