|
tui: styled filesystem tool output (diff / list / grep) — stage 1
The TUI rendered every tool result as a single dim Text in a Panel — no special handling for filesystem, so unified diffs from edit_lines/smart_edit/ diff were shown as plain grey text (the existing DiffRenderer only fires on type:"diff", which filesystem never emits), directory listings were an unaligned text blob, and grep matches had no pattern highlighting. New FilesystemToolResultRenderer (clients/terminal/tui/renderers/filesystem.py) intercepts filesystem tool_call events by tool=="filesystem" + args.action: - diff / edit_lines / smart_edit: reuse a shared highlight_unified_diff() helper (extracted from DiffRenderer) — + green, - red, @@ dim; the "Applied …" summary line of edit_lines/smart_edit is separated from the diff body via a Group; "Files are identical." renders dim. - list: header plaque dim (warning color on ⚠ truncated); directories shown as "▸ name/ (n items)" in info color; files as name (text) + size (accent) + time (dim), preserving the tool's fixed-width alignment; "?" entries in warning; "(empty directory)" dim. - grep: header plaque dim; "rel:line:" location dim; matched pattern occurrences highlighted in accent (case-insensitive, re.escape'd); "No matches …" dim. - read / info / write / edit / append / move / copy / delete / mkdir / exists / find / find_up / query / unknown: plain dim fallback (unchanged for now — stage 2). Errors (success=False): plain in tool_error color. Registered before the generic ToolResultRenderer (first-match wins). The filesystem tool, WS protocol, events, and webclient are untouched. 22 new tests in tests/clients/test_filesystem_renderer.py cover accepts, diff/edit_lines/identical/error, list (dir/file/truncated), grep (pattern/no-matches/no-pattern-arg), fallback, title+status, subagent indent. DiffRenderer behavior unchanged (existing test still passes). Co-Authored-By: Claude <noreply@anthropic.com> |
|---|
|
|
| clients/terminal/tui/renderers/__init__.py |
|---|
| clients/terminal/tui/renderers/diff.py |
|---|
| clients/terminal/tui/renderers/filesystem.py 0 → 100644 |
|---|
| tests/clients/test_filesystem_renderer.py 0 → 100644 |
|---|