Skip to content

feat: redesign TUI and add model picker#49

Merged
Max17190 merged 5 commits into
mainfrom
feat/tui-model-selection
Jul 18, 2026
Merged

feat: redesign TUI and add model picker#49
Max17190 merged 5 commits into
mainfrom
feat/tui-model-selection

Conversation

@Max17190

@Max17190 Max17190 commented Jul 18, 2026

Copy link
Copy Markdown
Owner

Why

Open Max had little visual separation between prompts, responses, tools, approvals, and persistent chrome. Model changes also required memorizing an exact id, and captured mouse input prevented ordinary transcript selection. The result felt harder to scan and operate than a focused terminal harness should.

Summary

  • Add a restrained visual system with prompt bands, assistant gutters, contained tool activity, a bordered composer, compact status, and approval input ownership.
  • Add cached linear transcript selection with mouse dragging, Unicode-aware hit testing, persistent highlights, OSC 52 copying, and independent keyboard block selection.
  • Add a searchable, configuration-backed model picker that switches provider and model atomically while preserving the raw exact-id command path.
  • Add /copy, a single command metadata registry, richer /status detail, focused tool previews, responsive layouts, and user documentation.
  • Preserve the small harness architecture, existing protocol and session formats, local MLX manager, input-first event batching, and frame cap.

Test Plan

  • cargo check
  • cargo clippy -p open-max-tui with warnings denied
  • cargo test across the workspace: 244 passed, 1 ignored benchmark
  • cargo build -p open-max-tui in release mode
  • Verified release binary size: 6,825,664 bytes, below the 8 MB soft limit
  • Ratatui buffer coverage for idle, exchange, tool, approval, completion, selection, model picker, Unicode, resize, fold, removal, and narrow terminal states

@greptile-apps

greptile-apps Bot commented Jul 18, 2026

Copy link
Copy Markdown

Greptile Summary

This PR redesigns the terminal interface and adds model and transcript controls. The main changes are:

  • A searchable model picker that updates provider and model together.
  • Mouse and keyboard transcript selection with OSC 52 copying.
  • Redesigned prompt, response, tool, approval, composer, and status views.
  • Centralized slash-command metadata, /copy, and expanded /status output.
  • Atomic settings persistence and broader UI coverage.

Confidence Score: 5/5

This looks safe to merge.

  • Model selection now keeps managed model settings synchronized and preserves the prior state when saving fails.
  • Selection copying is limited to scrollback focus, so retained selections no longer consume composer input.
  • No blocking issues were found in the updated code.

Important Files Changed

Filename Overview
crates/tui/src/app.rs Adds the model picker, transcript copying, redesigned interaction flow, and fixes model-state and input-focus handling.
crates/tui/src/ui/model_picker.rs Implements searchable provider and model selection using the configured local catalog.
crates/tui/src/ui/transcript.rs Adds persistent transcript selection, Unicode-aware hit testing, and selection rendering.
crates/core/src/config.rs Moves settings persistence to the existing atomic replacement path.
crates/core/src/sessions.rs Exposes the atomic file writer within the core crate for settings persistence.

Reviews (2): Last reviewed commit: "fix(tui): address model and selection re..." | Re-trigger Greptile

Comment thread crates/tui/src/app.rs
Comment thread crates/tui/src/app.rs Outdated
@Max17190
Max17190 merged commit 849c7ac into main Jul 18, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant