Pre-existing bug surfaced during #192 / PR #462 review (out of scope for that PR).
src/tui/components/split-diff.tsx renders:
```tsx
```
But the real @opentui/core <diff> API (verified against node_modules/@opentui/core/renderables/Diff.d.ts) is:
diff?: string — a unified-diff-format string (parsed via the diff package's parsePatch)
view?: "unified" | "split"
filetype?: string
There is no oldContent/newContent/mode. TypeScript doesn't catch this because OpenTUI's intrinsic JSX elements use a string index signature that suppresses excess-property checks.
Impact: SplitDiff is used by compare-view.tsx (CompareView, Frontier compare mode). At runtime the DiffRenderable receives no diff string → renders nothing or an error view. So compare-mode diffs are broken.
Fix: mirror the now-correct pattern in artifact-preview.tsx — build a unified-diff string (it already uses computeUnifiedDiff, which now emits a valid @@ hunk header) and pass <diff diff={unified} view="split" filetype={lang} />. Consider having artifact-preview and SplitDiff share one <diff> wrapper.
Also minor: intervalMs is a dead prop on both detail.tsx and artifact-preview.tsx (documented "kept for caller-stability") — drop or formalize.
Refs: #192, #462.
Pre-existing bug surfaced during #192 / PR #462 review (out of scope for that PR).
src/tui/components/split-diff.tsxrenders:```tsx
```
But the real
@opentui/core<diff>API (verified againstnode_modules/@opentui/core/renderables/Diff.d.ts) is:diff?: string— a unified-diff-format string (parsed via thediffpackage'sparsePatch)view?: "unified" | "split"filetype?: stringThere is no
oldContent/newContent/mode. TypeScript doesn't catch this because OpenTUI's intrinsic JSX elements use a string index signature that suppresses excess-property checks.Impact:
SplitDiffis used bycompare-view.tsx(CompareView, Frontier compare mode). At runtime theDiffRenderablereceives nodiffstring → renders nothing or an error view. So compare-mode diffs are broken.Fix: mirror the now-correct pattern in
artifact-preview.tsx— build a unified-diff string (it already usescomputeUnifiedDiff, which now emits a valid@@hunk header) and pass<diff diff={unified} view="split" filetype={lang} />. Consider havingartifact-previewandSplitDiffshare one<diff>wrapper.Also minor:
intervalMsis a dead prop on bothdetail.tsxandartifact-preview.tsx(documented "kept for caller-stability") — drop or formalize.Refs: #192, #462.