focus/crates
DaiChaoXiong 7d289580b5 fix(tui): merged tool request+result blocks; fix wheel-down bottom jump
1. wheel-down jumped to the bottom because max_scroll() derived the limit from
   geometry, which only covers expandable blocks — a text-only conversation
   left it at 0, so one down-notch clamped scroll to 0 with follow=true and
   the next draw snapped to the real bottom. The limit now uses
   content_lines (the full rendered line count, stored per draw).

2. tool request and result are now one block ('requested where it returns'):
   UiBlock::ToolCall/ToolResult/ToolExec are unified into UiBlock::Tool, built
   by merging each assistant tool call with its matching tool_result message
   (looked up by call_id). Collapsed shows the concrete summary + duration +
   status; expanded shows human-readable args, then '── 结果 ──', then the
   output (two-level: partial preview with remaining-line hint, then full).
   Live running executions reuse the same block. ToolResult messages are no
   longer rendered standalone.

tests updated for the merged model; wheel test now drives content_lines.
2026-08-09 22:43:01 +08:00
..
focus-core fix(providers): keep the API's real tool-call ids across turns 2026-08-09 22:07:18 +08:00
focus-harness refactor(test): move all unit tests from src/ into tests/<module>_tests.rs 2026-08-09 21:09:01 +08:00
focus-json chore(workspace): sync manifests, docs and lockfile 2026-08-09 21:00:04 +08:00
focus-providers fix(providers): keep the API's real tool-call ids across turns 2026-08-09 22:07:18 +08:00
focus-tools refactor(test): move all unit tests from src/ into tests/<module>_tests.rs 2026-08-09 21:09:01 +08:00
focus-transport refactor(test): move all unit tests from src/ into tests/<module>_tests.rs 2026-08-09 21:09:01 +08:00
focus-tui fix(tui): merged tool request+result blocks; fix wheel-down bottom jump 2026-08-09 22:43:01 +08:00