[PR #7260] feat(tui): Dynamic Details - compact tool output with click-to-expand #12322

Open
opened 2026-02-16 18:17:14 -05:00 by yindo · 0 comments
Owner

Original Pull Request: https://github.com/anomalyco/opencode/pull/7260

State: open
Merged: No


Summary

Keeps tool output compact and accessible with click-to-expand functionality. Tool blocks with more than 15 lines collapse by default, showing a preview with a "+N" indicator. Click anywhere on the tool block to expand/collapse, making it easier to navigate long sessions without pages of output scrolling by.

Fixes #7450
Relates to #1816

Also helps with:

  • #5358 - Collapsible outputs improve tool output visibility
  • #5419 - Less scrolling through verbose output improves screen real estate usage
  • #6240 - Same goal of reducing visual clutter
  • #3521 - Diffs are collapsed by default
  • #5277 - Collapsed outputs save space on small screens

Compliments commit: https://github.com/anomalyco/opencode/commit/b3a2f9fb4

Features

  • Tool outputs collapse when exceeding configured line threshold
  • Click anywhere on tool block to expand/collapse
  • Shows "+N" indicator for hidden lines
  • Configurable threshold via tui.dynamic_details_max_lines (default: 15)
  • Configurable arrow indicators via tui.dynamic_details_show_arrows (default: true)
  • Toggle via Ctrl+P -> "Enable/Disable dynamic details"
  • Persisted preference in KV store (default: enabled)

Configuration

{
  "tui": {
    "dynamic_details_max_lines": 15,
    "dynamic_details_show_arrows": true
  }
}

Applies To

Block-container tools (bash, write, edit, patch) when:

  • Output exceeds configured line threshold
  • Tool has completed (not pending/running states)

TodoWrite is excluded (always expanded) for visibility.

Implementation

Enhances the existing BlockTool component with collapse/expand logic rather than introducing new abstractions. Uses:

  • Data-based line counting for collapse decisions (stable, based on tool output)
  • Visual line counting via virtualLineCount for accurate "+N" display
  • maxHeight + overflow: hidden for clipping when collapsed

Changes

  • packages/opencode/src/cli/cmd/tui/routes/session/index.tsx - Add dynamicDetails context, toggle command, and collapse logic in BlockTool
  • packages/opencode/src/config/config.ts - Add config options for max lines and arrow indicators
**Original Pull Request:** https://github.com/anomalyco/opencode/pull/7260 **State:** open **Merged:** No --- ## Summary Keeps tool output compact and accessible with click-to-expand functionality. Tool blocks with more than 15 lines collapse by default, showing a preview with a "+N" indicator. Click anywhere on the tool block to expand/collapse, making it easier to navigate long sessions without pages of output scrolling by. Fixes #7450 Relates to #1816 Also helps with: - #5358 - Collapsible outputs improve tool output visibility - #5419 - Less scrolling through verbose output improves screen real estate usage - #6240 - Same goal of reducing visual clutter - #3521 - Diffs are collapsed by default - #5277 - Collapsed outputs save space on small screens Compliments commit: https://github.com/anomalyco/opencode/commit/b3a2f9fb4 ## Features - Tool outputs collapse when exceeding configured line threshold - Click anywhere on tool block to expand/collapse - Shows "+N" indicator for hidden lines - Configurable threshold via `tui.dynamic_details_max_lines` (default: 15) - Configurable arrow indicators via `tui.dynamic_details_show_arrows` (default: true) - Toggle via Ctrl+P -> "Enable/Disable dynamic details" - Persisted preference in KV store (default: enabled) ## Configuration ```json { "tui": { "dynamic_details_max_lines": 15, "dynamic_details_show_arrows": true } } ``` ## Applies To Block-container tools (bash, write, edit, patch) when: - Output exceeds configured line threshold - Tool has completed (not pending/running states) TodoWrite is excluded (always expanded) for visibility. ## Implementation Enhances the existing `BlockTool` component with collapse/expand logic rather than introducing new abstractions. Uses: - Data-based line counting for collapse decisions (stable, based on tool output) - Visual line counting via `virtualLineCount` for accurate "+N" display - `maxHeight` + `overflow: hidden` for clipping when collapsed ## Changes - `packages/opencode/src/cli/cmd/tui/routes/session/index.tsx` - Add dynamicDetails context, toggle command, and collapse logic in BlockTool - `packages/opencode/src/config/config.ts` - Add config options for max lines and arrow indicators
yindo added the pull-request label 2026-02-16 18:17:14 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: anomalyco/opencode#12322