[PR #81] [MERGED] feat(tui): improve streaming, auto-scroll, and footer UX #126

Closed
opened 2026-02-27 10:22:19 +03:00 by kerem · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/mikeyobrien/ralph-orchestrator/pull/81
Author: @mikeyobrien
Created: 1/20/2026
Status: Merged
Merged: 1/20/2026
Merged by: @mikeyobrien

Base: mainHead: fix/recover-streaming-ux


📝 Commits (1)

  • cdca1ac feat(tui): improve streaming, auto-scroll, and footer UX

📊 Changes

13 files changed (+458 additions, -532 deletions)

View changed files

📝 Cargo.lock (+0 -344)
📝 crates/ralph-adapters/Cargo.toml (+1 -4)
📝 crates/ralph-adapters/src/stream_handler.rs (+227 -111)
📝 crates/ralph-tui/src/app.rs (+6 -8)
📝 crates/ralph-tui/src/state.rs (+173 -6)
📝 crates/ralph-tui/src/widgets/footer.rs (+44 -52)
📝 crates/ralph-tui/tests/snapshots/integration_snapshots__footer_iter2.snap (+1 -1)
📝 crates/ralph-tui/tests/snapshots/integration_snapshots__footer_with_alert.snap (+1 -1)
📝 crates/ralph-tui/tests/snapshots/integration_snapshots__full_layout_40col.snap (+1 -1)
📝 crates/ralph-tui/tests/snapshots/integration_snapshots__full_layout_60col.snap (+1 -1)
📝 crates/ralph-tui/tests/snapshots/integration_snapshots__full_layout_80col.snap (+1 -1)
📝 crates/ralph-tui/tests/snapshots/integration_snapshots__long_output_scrolled.snap (+1 -1)
📝 crates/ralph-tui/tests/snapshots/integration_snapshots__long_output_top.snap (+1 -1)

📄 Description

Summary

  • Switch TUI markdown rendering from tui-markdown to termimad for parity with non-TUI mode output
  • Fix chronological ordering of text and tool calls by freezing text buffers when non-text events arrive
  • Replace heuristic-based auto-scroll with explicit following_bottom flag that tracks user intent
  • Simplify footer status to ACTIVE/DONE states, show elapsed time instead of last event topic
  • Start timer immediately at TUI creation rather than on first event

Test plan

  • All unit tests pass (172 tests)
  • Clippy passes (warnings only for deprecated lint name)
  • Snapshot tests updated to reflect new behavior

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/mikeyobrien/ralph-orchestrator/pull/81 **Author:** [@mikeyobrien](https://github.com/mikeyobrien) **Created:** 1/20/2026 **Status:** ✅ Merged **Merged:** 1/20/2026 **Merged by:** [@mikeyobrien](https://github.com/mikeyobrien) **Base:** `main` ← **Head:** `fix/recover-streaming-ux` --- ### 📝 Commits (1) - [`cdca1ac`](https://github.com/mikeyobrien/ralph-orchestrator/commit/cdca1ac4d739d754ad436ca870fb8a7166941e77) feat(tui): improve streaming, auto-scroll, and footer UX ### 📊 Changes **13 files changed** (+458 additions, -532 deletions) <details> <summary>View changed files</summary> 📝 `Cargo.lock` (+0 -344) 📝 `crates/ralph-adapters/Cargo.toml` (+1 -4) 📝 `crates/ralph-adapters/src/stream_handler.rs` (+227 -111) 📝 `crates/ralph-tui/src/app.rs` (+6 -8) 📝 `crates/ralph-tui/src/state.rs` (+173 -6) 📝 `crates/ralph-tui/src/widgets/footer.rs` (+44 -52) 📝 `crates/ralph-tui/tests/snapshots/integration_snapshots__footer_iter2.snap` (+1 -1) 📝 `crates/ralph-tui/tests/snapshots/integration_snapshots__footer_with_alert.snap` (+1 -1) 📝 `crates/ralph-tui/tests/snapshots/integration_snapshots__full_layout_40col.snap` (+1 -1) 📝 `crates/ralph-tui/tests/snapshots/integration_snapshots__full_layout_60col.snap` (+1 -1) 📝 `crates/ralph-tui/tests/snapshots/integration_snapshots__full_layout_80col.snap` (+1 -1) 📝 `crates/ralph-tui/tests/snapshots/integration_snapshots__long_output_scrolled.snap` (+1 -1) 📝 `crates/ralph-tui/tests/snapshots/integration_snapshots__long_output_top.snap` (+1 -1) </details> ### 📄 Description ## Summary - Switch TUI markdown rendering from tui-markdown to termimad for parity with non-TUI mode output - Fix chronological ordering of text and tool calls by freezing text buffers when non-text events arrive - Replace heuristic-based auto-scroll with explicit `following_bottom` flag that tracks user intent - Simplify footer status to ACTIVE/DONE states, show elapsed time instead of last event topic - Start timer immediately at TUI creation rather than on first event ## Test plan - [x] All unit tests pass (172 tests) - [x] Clippy passes (warnings only for deprecated lint name) - [x] Snapshot tests updated to reflect new behavior --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
kerem 2026-02-27 10:22:19 +03:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/ralph-orchestrator#126
No description provided.