Skip to content

feat: Otto interactive TUI#28

Merged
lostmygithubaccount merged 4 commits intomainfrom
cody/ws-toolsv1tui
Mar 17, 2026
Merged

feat: Otto interactive TUI#28
lostmygithubaccount merged 4 commits intomainfrom
cody/ws-toolsv1tui

Conversation

@lostmygithubaccount
Copy link
Copy Markdown
Contributor

Stacks on: PR 3 (Otto chat)

Summary

  • ascend-tools-tui crate: ratatui + crossterm full-screen chat interface
  • Vi/Emacs keybindings, multi-line input, streaming with spinner + smoothed output
  • Input history (~/.ascend-tools/history), markdown rendering, slash commands, clipboard
  • Ctrl+C/Escape to interrupt running threads via stop_thread
  • std::thread::scope to borrow &AscendClient without Arc
  • CLI: otto tui subcommand

PR 4 of 6 for v1.0.

🤖 Generated with Claude Code

Base automatically changed from cody/ws-toolsv1otto to main March 17, 2026 21:05
Full-screen ratatui + crossterm terminal interface for multi-turn
conversations with Otto. Includes Vi/Emacs keybindings, streaming
with spinner, input history, markdown rendering, slash commands,
clipboard support, and scrollable chat with scrollbar.

New ascend-tools-tui crate + `otto tui` CLI subcommand.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new ascend-tools-tui crate that provides an interactive full-screen terminal UI for Otto chat, and wires it into the ascend-tools otto tui CLI subcommand.

Changes:

  • Introduces ascend-tools-tui (ratatui + crossterm) with streaming chat, history, markdown rendering, slash commands, and clipboard support.
  • Adds otto tui subcommand to ascend-tools-cli and documents it in CLI docs.
  • Updates workspace membership and dependencies to include the new crate.

Reviewed changes

Copilot reviewed 8 out of 9 changed files in this pull request and generated 8 comments.

Show a summary per file
File Description
src/ascend_tools/ascend-tools-tui/src/lib.rs Implements the TUI application loop, input handling (Vi/Emacs), streaming display, history, and markdown rendering.
src/ascend_tools/ascend-tools-tui/README.md Documents TUI features, usage, and slash commands.
src/ascend_tools/ascend-tools-tui/Cargo.toml Declares the new crate and its UI/clipboard dependencies.
src/ascend_tools/ascend-tools-cli/src/skill-cli.md Adds otto tui to the embedded CLI skill documentation.
src/ascend_tools/ascend-tools-cli/src/otto.rs Adds the Tui subcommand and calls into ascend_tools_tui::run_tui.
src/ascend_tools/ascend-tools-cli/Cargo.toml Adds ascend-tools-tui dependency.
docs/cli.md Documents the new interactive chat command.
Cargo.toml Adds ascend-tools-tui to the workspace members.
Cargo.lock Locks new dependencies introduced by the TUI crate.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/ascend_tools/ascend-tools-tui/src/lib.rs
Comment thread src/ascend_tools/ascend-tools-tui/src/lib.rs Outdated
Comment thread src/ascend_tools/ascend-tools-tui/src/lib.rs Outdated
Comment thread src/ascend_tools/ascend-tools-tui/src/lib.rs
Comment thread src/ascend_tools/ascend-tools-cli/src/skill-cli.md
Comment thread src/ascend_tools/ascend-tools-tui/src/lib.rs
Comment thread src/ascend_tools/ascend-tools-tui/src/lib.rs
Comment thread src/ascend_tools/ascend-tools-tui/src/lib.rs Outdated
lostmygithubaccount and others added 3 commits March 17, 2026 19:38
- Set ascend-tools-tui version to 0.5.0 (was incorrectly 1.0.0)
- Add experimental warning banner to splash screen
- Fix byte/char bug in vi paste (p/P) that could panic on non-ASCII text
- Remove process::exit(0) from library crate; use cancel flag for clean shutdown
- Replace .lock().unwrap() with poison-tolerant .unwrap_or_else()
- Fix O(n*m) handle_paste with Vec::splice
- Document scroll field semantics

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- check-js: run npm install before build/test
- Update experimental banner text

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@lostmygithubaccount
Copy link
Copy Markdown
Contributor Author

will need follow up work for real use, but generally well-contained; could gate behind a feature and not ship, but I think it's fine to release given how early ascend-tools is and it's fun to use

@lostmygithubaccount lostmygithubaccount merged commit 57c7230 into main Mar 17, 2026
1 check passed
@lostmygithubaccount lostmygithubaccount deleted the cody/ws-toolsv1tui branch March 17, 2026 23:48
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.

2 participants