Skip to content

Commit 1cbf8ff

Browse files
committed
Fix lettered items rendering for nested bullet lists
- Update detection to handle nested bullet lists (- a) format) - Remove bullet markers from lettered list rendering - Add manual indentation spaces for lettered items - Add tests for real nested structure from agent output
1 parent eaf4595 commit 1cbf8ff

File tree

8 files changed

+709
-28
lines changed

8 files changed

+709
-28
lines changed

bun.lock

Lines changed: 11 additions & 11 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cli/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,20 +33,20 @@
3333
},
3434
"dependencies": {
3535
"@codebuff/sdk": "workspace:*",
36-
"@opentui/core": "0.1.33",
37-
"@opentui/react": "0.1.33",
36+
"@opentui/core": "0.1.41",
37+
"@opentui/react": "0.1.41",
3838
"@tanstack/react-query": "^5.62.8",
3939
"commander": "^14.0.1",
4040
"immer": "^10.1.3",
4141
"open": "^10.1.0",
4242
"pino": "9.4.0",
4343
"posthog-node": "4.17.2",
44-
"string-width": "^7.2.0",
4544
"react": "^19.0.0",
4645
"react-reconciler": "^0.32.0",
4746
"remark-breaks": "^4.0.0",
4847
"remark-gfm": "^4.0.1",
4948
"remark-parse": "^11.0.0",
49+
"string-width": "^7.2.0",
5050
"unified": "^11.0.0",
5151
"yoga-layout": "^3.2.1",
5252
"zod": "^3.24.1",

cli/src/components/message-block.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,10 @@ import { useTheme } from '../hooks/use-theme'
1010
import { getToolDisplayInfo } from '../utils/codebuff-client'
1111
import {
1212
renderMarkdown,
13+
renderLetteredItemsWithBoxes,
1314
renderStreamingMarkdown,
1415
hasMarkdown,
16+
hasLetteredItems,
1517
type MarkdownPalette,
1618
} from '../utils/markdown-renderer'
1719
import { BORDER_CHARS } from '../utils/ui-constants'

cli/src/components/message-renderer.tsx

Lines changed: 27 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@ import { MessageBlock } from './message-block'
66
import { ModeDivider } from './mode-divider'
77
import {
88
renderMarkdown,
9+
renderLetteredItemsWithBoxes,
910
hasMarkdown,
11+
hasLetteredItems,
1012
type MarkdownPalette,
1113
} from '../utils/markdown-renderer'
1214
import { getDescendantIds, getAncestorIds } from '../utils/message-tree-utils'
@@ -421,9 +423,18 @@ const AgentMessage = memo(
421423
codeBlockWidth: agentCodeBlockWidth,
422424
palette: agentPalette,
423425
}
424-
const displayContent = hasMarkdown(rawDisplayContent)
425-
? renderMarkdown(rawDisplayContent, agentMarkdownOptions)
426-
: rawDisplayContent
426+
const displayContent = useMemo(() => {
427+
if (!hasMarkdown(rawDisplayContent)) {
428+
return rawDisplayContent
429+
}
430+
431+
// Use box-based renderer for lettered items to get proper wrapping
432+
if (hasLetteredItems(rawDisplayContent)) {
433+
return renderLetteredItemsWithBoxes(rawDisplayContent, agentMarkdownOptions)
434+
}
435+
436+
return renderMarkdown(rawDisplayContent, agentMarkdownOptions)
437+
}, [rawDisplayContent, agentCodeBlockWidth, agentPalette])
427438

428439
const handleTitleClick = (e: any): void => {
429440
if (e && e.stopPropagation) {
@@ -543,14 +554,19 @@ const AgentMessage = memo(
543554
{finishedPreview}
544555
</text>
545556
)}
546-
{!isCollapsed && (
547-
<text
548-
key={`agent-content-${message.id}`}
549-
style={{ wrapMode: 'word', fg: theme.foreground }}
550-
>
551-
{displayContent}
552-
</text>
553-
)}
557+
{!isCollapsed &&
558+
(hasLetteredItems(rawDisplayContent) && hasMarkdown(rawDisplayContent) ? (
559+
// Lettered items use box-based rendering - render directly
560+
<box key={`agent-content-${message.id}`}>{displayContent}</box>
561+
) : (
562+
// Normal content - wrap in text
563+
<text
564+
key={`agent-content-${message.id}`}
565+
style={{ wrapMode: 'word', fg: theme.foreground }}
566+
>
567+
{displayContent}
568+
</text>
569+
))}
554570
</box>
555571
</box>
556572
</box>

cli/src/types/theme-system.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ export interface MarkdownThemeOverrides {
1616
blockquoteTextFg?: string
1717
dividerFg?: string
1818
codeMonochrome?: boolean
19+
defaultOptionFg?: string
1920
}
2021

2122
/**

0 commit comments

Comments
 (0)