Skip to content

fix(tui v2): serialize terminal escapes via driver + scrollable sidebar#572

Merged
lsdefine merged 1 commit into
lsdefine:mainfrom
nianyucatfish:fix/tui-ansi-sidebar
Jun 5, 2026
Merged

fix(tui v2): serialize terminal escapes via driver + scrollable sidebar#572
lsdefine merged 1 commit into
lsdefine:mainfrom
nianyucatfish:fix/tui-ansi-sidebar

Conversation

@nianyucatfish

Copy link
Copy Markdown
Collaborator
  • _term_write(): route OSC/control sequences through Textual's driver writer queue instead of direct sys.stdout. A title/OSC write landing mid-frame during streaming used to split Textual's own escape sequences, rendering as flashing ANSI garbage; serializing on the same writer queue lands it cleanly.
  • sidebar: wrap the session list in a VerticalScroll (#sidebar-scroll) so it scrolls when overflowing (scrollbar-gutter reserved to avoid row reflow); inner #sidebar Static keeps padding so the click hit-test math is unchanged. Keyboard session-switch scrolls the active session into view.

- _term_write(): route OSC/control sequences through Textual's driver writer
  queue instead of direct sys.__stdout__. A title/OSC write landing mid-frame
  during streaming used to split Textual's own escape sequences, rendering as
  flashing ANSI garbage; serializing on the same writer queue lands it cleanly.
- sidebar: wrap the session list in a VerticalScroll (#sidebar-scroll) so it
  scrolls when overflowing (scrollbar-gutter reserved to avoid row reflow);
  inner #sidebar Static keeps padding so the click hit-test math is unchanged.
  Keyboard session-switch scrolls the active session into view.
@lsdefine
lsdefine merged commit b6ca5f2 into lsdefine:main Jun 5, 2026
lsdefine pushed a commit that referenced this pull request Jul 23, 2026
…ar (#572)

- _term_write(): route OSC/control sequences through Textual's driver writer
  queue instead of direct sys.__stdout__. A title/OSC write landing mid-frame
  during streaming used to split Textual's own escape sequences, rendering as
  flashing ANSI garbage; serializing on the same writer queue lands it cleanly.
- sidebar: wrap the session list in a VerticalScroll (#sidebar-scroll) so it
  scrolls when overflowing (scrollbar-gutter reserved to avoid row reflow);
  inner #sidebar Static keeps padding so the click hit-test math is unchanged.
  Keyboard session-switch scrolls the active session into view.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants