hermes-agent/ui-tui/packages/hermes-ink/src/ink/wrap-text.test.ts
brooklyn! a7e7921dbc
fix(tui): trim markdown wrap spaces (#22062)
* fix(tui): trim markdown wrap spaces

Use trim-aware wrapping for markdown prose so word-wrapped continuation lines do not keep boundary spaces.

* fix(tui): simplify markdown wrap nodes

Keep trim-aware wrapping on the rendered markdown text node while leaving nested inline segments as plain virtual text.

* fix(tui): trim definition row wrapping

Apply trim-aware wrapping to markdown definition rows so continuation lines match other prose rows.

* fix(tui): trim list and quote wrapping

Put trim-aware wrapping on the rendered list and quote rows that own markdown inline layout.

* fix(tui): preserve markdown nesting with trim wrap

Move list and quote indentation into layout padding so trim-aware wrapping does not erase nested markdown structure.

* fix(tui): trim only soft wrap spaces

Change trim-aware wrapping to remove whitespace only at soft-wrap boundaries so original leading inline spaces stay verbatim.

* fix(tui): preserve extra boundary whitespace

Trim only one soft-wrap boundary whitespace character so wrap-trim avoids leading continuations without collapsing intentional spacing.

* fix(tui): align styled wrap-trim mapping

Update styled text remapping to skip the single whitespace removed at soft-wrap boundaries without dropping preserved indentation.

* fix(tui): clean wrap trim test helpers

Clarify boundary-trim wording and strip OSC escapes from markdown render test output.

* fix(tui): strip osc before ansi in markdown tests

Remove OSC escapes from raw render output before SGR/CSI cleanup so markdown render assertions stay plain text.
2026-05-08 20:51:34 -07:00

17 lines
548 B
TypeScript

import { describe, expect, it } from 'vitest'
import wrapText from './wrap-text.js'
describe('wrapText wrap-trim', () => {
it('removes a single soft-wrap boundary space', () => {
expect(wrapText('Let me', 5, 'wrap-trim')).toBe('Let\nme')
})
it('preserves extra original spacing at soft-wrap boundaries', () => {
expect(wrapText('foo bar', 5, 'wrap-trim')).toBe('foo \nbar')
})
it('preserves leading whitespace on unwrapped source lines', () => {
expect(wrapText(' indented', 20, 'wrap-trim')).toBe(' indented')
})
})