Repository navigation
Closed as not planned
Description
Problem
The TUI UI displays several persistent hints that can feel cluttered:
/share copy linktext in header[Tab] switch agenthint in prompt footer[Ctrl+P] commandshint in prompt footer
These hints take up screen real estate and become redundant once users are familiar with keyboard shortcuts.
Proposed Solution
Add a single toggle command "Hide hints" (KV key: hints_visible, default: true) that hides all UI hints:
- Header: Hide
/share copy link(but keep URL display when already shared) - Prompt footer: Hide
[switch agent]and[commands]hints
Layout Behavior
Show hints = true (default) - Current layout:
Header:
# Session Title 1,234 tokens (12%)
/share copy link
Prompt:
[Agent Name | Model | Provider]
[Spinner|Esc] ........................ [Tab] switch agent [Ctrl+P] commands
Show hints = false - Compact layout:
Header:
# Session Title 1,234 tokens (12%)
Prompt:
[Agent Name | Model | Provider] ... [Spinner|Esc]
Note: When hints are hidden, the spinner and esc interrupt move to the right side of the same row as the agent/model/provider info.
Implementation Details
- Added
hints_visibleKV setting (default:true) - Added command
session.toggle.hintsin command palette - Modified
Header.tsx,Prompt.tsx, andsession/index.tsx - Replaced 3 separate toggle signals with single
showHintssignal - Preserved existing behavior for spinner/interrupt display during active operations
Alternatives Considered
- Separate toggles for each hint - rejected: too granular, increases config surface
- Per-hint keybind toggles - rejected: would require more keybinds, harder to discover
- Auto-hide after X sessions - rejected: doesn't allow user control
Questions for Maintainers
- Is this something that aligns with OpenCode's design philosophy?
- Should we also hide other hints (like
/status, LSP/MCP counts) in footer? - Any naming preferences for the command/setting?
Code
I have implemented this change. Branch: feature/hints-toggle
Fork: https://github.com/tuanhqv123/opencode/tree/feature/hints-toggle
Waiting for design review approval before opening PR.
Reacted by Huge, romuloeds, Junjie and Mike
Metadata
Metadata
Assignees
Labels
No labels
Activity
github-actions commentedon Dec 27, 2025
This issue might be a duplicate of existing issues. Please check:
Feel free to ignore if none of these address your specific case.
[-]Add hints toggle to declutter UI[/-][+][FEATURE]: Add hints toggle to declutter UI[/+]soustruh commentedon Jan 7, 2026
This is a great feature for decluttering! However, I'd like to suggest expanding the scope to support customizable hints rather than just hide/show all.
Use Case
When users customize keybinds (especially
input_submitandinput_newline), the status line doesn't reflect these changes. For example:My configuration:
{ "keybinds": { "input_submit": "ctrl+return", "input_newline": "return" } }Current behavior: Status line shows
tab switch agent ctrl+p commands(doesn't show the swapped Enter behavior)Desired: Status line should show
enter → newline ctrl+enter → submit tab → agent ctrl+p → commandsThis helps users remember their custom shortcuts and avoid accidental submissions.
Proposed Enhancement
Instead of (or in addition to) a binary toggle, allow users to configure which hints to display:
{ "tui": { "status_hints": { "enabled": true, "items": [ { "keybind": "input_newline", "label": "newline" }, { "keybind": "input_submit", "label": "submit" }, { "keybind": "agent_cycle", "label": "agent" }, { "keybind": "command_list", "label": "commands" } ] } } }Display:
enter → newline ctrl+enter → submit tab → agent ctrl+p → commandsBenefits
Implementation Consideration
The infrastructure is mostly there:
keybind.print()already resolves the actual configured keyQuestion
Would this enhancement fit within the scope of this feature, or should I open a separate feature request for customizable hints?
github-actions commentedon Mar 25, 2026
To stay organized issues are automatically closed after 90 days of no activity. If the issue is still relevant please open a new one.