diff --git a/pyproject.toml b/pyproject.toml index cf5fd88..b4e84a3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "ratatoskr" -version = "0.14.1" +version = "0.14.2" description = "Worldtree Conversation API debug TUI — multi-pane observability dashboard" readme = "README.md" requires-python = ">=3.12" diff --git a/src/ratatoskr/tui.py b/src/ratatoskr/tui.py index efd41a6..0e8845b 100644 --- a/src/ratatoskr/tui.py +++ b/src/ratatoskr/tui.py @@ -1023,13 +1023,23 @@ class RatatoskrApp(App[int]): yield Input(id="prompt", placeholder="Type a message and press Enter") with Vertical(id="right-column"): with TabbedContent(id="side-panes"): + # v0.14.2: min_width=0 disables Textual's 78-cell floor + # on RichLog. The right column is 1fr against the left + # column's 2fr, so at typical terminal widths the right- + # column panes are narrower than 78 cells — and the + # default min_width=78 was forcing content to render at + # 78 wide and horizontally scroll instead of wrapping at + # the actual widget width. With min_width=0, wrap=True + # finally takes effect on long lines. with TabPane("Tools", id="tools-tab"): yield RichLog( - id="tools-log", wrap=True, markup=False, highlight=False + id="tools-log", wrap=True, markup=False, + highlight=False, min_width=0, ) with TabPane("Debug", id="debug-tab"): yield RichLog( - id="debug-log", wrap=True, markup=False, highlight=False + id="debug-log", wrap=True, markup=False, + highlight=False, min_width=0, ) with TabPane("Thinking", id="thinking-tab"): # v0.6.5: thinking streams directly into this @@ -1039,7 +1049,8 @@ class RatatoskrApp(App[int]): # as content arrives — no more "200-char tail # window scrolling at the bottom". yield RichLog( - id="thinking-log", wrap=True, markup=False, highlight=False + id="thinking-log", wrap=True, markup=False, + highlight=False, min_width=0, ) with TabPane("Persona", id="persona-tab"): # v0.13.0: full persona-snapshot detail (PAD, @@ -1047,7 +1058,8 @@ class RatatoskrApp(App[int]): # appended) on each AffectUpdate(current) — the # snapshot is absolute state, not incremental. yield RichLog( - id="persona-log", wrap=True, markup=False, highlight=False + id="persona-log", wrap=True, markup=False, + highlight=False, min_width=0, ) # INV-002 + INV-003: visible identity + hint widgets (Footer-area). # pane-name widget displays current side-pane name. diff --git a/uv.lock b/uv.lock index 365f074..c0a1dcf 100644 --- a/uv.lock +++ b/uv.lock @@ -968,7 +968,7 @@ wheels = [ [[package]] name = "ratatoskr" -version = "0.14.1" +version = "0.14.2" source = { editable = "." } dependencies = [ { name = "httpx" },