Skip to main content

Module conversation

Module conversation 

Source
Expand description

Conversation pane — scrollback of log entries with an explicit offset-from-bottom cursor.

§Scrollback model

ConversationPane::scroll is the number of rows the viewport is shifted up from the newest entry. A scroll of 0 is the “stuck to bottom” state — new entries appear at the bottom and the oldest-visible entry scrolls up to make room. Any non-zero scroll detaches the viewport; newly appended entries continue to grow the backing log but do not yank the viewport. The input layer re-zeroes the offset on submit so command output always lands in view.

The pane clamps scroll to [0, max_offset] where max_offset is log.len() - visible_rows; scrolling past either end is a no-op rather than a panic so a held PageUp does not wrap.

§Screen-reader mode

When screen_reader is set the pane switches to a plainer render path:

  • timestamps drop their DIM modifier (AT-SPI and NVDA often skip dimmed text entirely);
  • entry kind becomes an explicit [system] / [alert] prefix instead of relying on color; and
  • the reversed-video and bold modifiers are removed so a high-contrast terminal does not double-style the row.

Keyboard behavior is unchanged — PageUp/PageDown still scroll whether the mode is on or off.

Structs§

ConversationPane