mirror of
https://github.com/NVIDIA/OpenShell.git
synced 2026-10-17 05:31:16 +08:00
* feat(tui): add log copy and visual selection mode Add clipboard support for the TUI log viewer using OSC 52 escape sequences. Users can copy individual log lines (y), the visible viewport (Y), or enter visual selection mode (v) to select a range of lines with j/k and yank with y. - Add clipboard module with OSC 52 base64 encoding - Add format_log_line_plain() for plain-text log rendering - Add visual selection mode with highlight styling and status bar - Context-switch nav bar hints between normal and visual modes - Add 7 unit tests for plain-text log formatting Closes #274 * fix(tui): write OSC 52 to /dev/tty instead of stdout ratatui owns stdout via the alternate screen buffer, so OSC 52 escape sequences written to stdout are swallowed by the backend. Write directly to /dev/tty to bypass the buffer and reach the terminal emulator.
33 lines
977 B
TOML
33 lines
977 B
TOML
# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
[package]
|
|
name = "openshell-tui"
|
|
description = "OpenShell interactive TUI"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
rust-version.workspace = true
|
|
license.workspace = true
|
|
repository.workspace = true
|
|
|
|
[dependencies]
|
|
openshell-core = { path = "../openshell-core" }
|
|
openshell-bootstrap = { path = "../openshell-bootstrap" }
|
|
openshell-policy = { path = "../openshell-policy" }
|
|
openshell-providers = { path = "../openshell-providers" }
|
|
|
|
base64 = { workspace = true }
|
|
ratatui = { workspace = true }
|
|
crossterm = { workspace = true }
|
|
terminal-colorsaurus = { workspace = true }
|
|
tokio = { workspace = true }
|
|
tonic = { workspace = true, features = ["tls"] }
|
|
miette = { workspace = true }
|
|
owo-colors = { workspace = true }
|
|
serde = { workspace = true }
|
|
tracing = { workspace = true }
|
|
url = { workspace = true }
|
|
|
|
[lints]
|
|
workspace = true
|