feat(tui): tuie widget-toolkit engine behind --engine tuie
Introduce a parallel TUI built on the tuie widget toolkit, selectable at runtime with `--engine tuie`. ratatui remains the default and its crossterm/ratatui deps are retained, so default users see no behavior change; this lands the full screen/widget tree for the new engine side-by-side with the existing one. Engine wiring: - Cargo: add `tuie` (harmonious, images features) - main.rs: `--engine` flag + run_tuie_tui() entry path - src/ui: new `screens`, `widgets`, `theme`, `tuie_app` modules - app::recent_commits made pub(crate) for dashboard reuse Screens: splash (procedural bloom), welcome dashboard, chat (live streaming), agents picker, settings, plus cron/presence stubs. Widgets: brand_title, portrait, menu_list, message_list, chat_bubble, chat_input, cockpit, phase_bar, tool_card, and a reusable `responsive` container. Responsive welcome: the welcome screen now offers two viewable modes the way the old ratatui dashboard did — a side-by-side portrait/stats layout at >=100 cols and a stacked single column below it — switched by the new `Responsive` widget. It holds both subtrees and lays out / paints only the one that fits, while exposing both to id lookups so the menu selection survives a resize across the breakpoint. Flourishes: a breathing title colour pulse and a portrait border that surfaces subconscious state. Covered by a layout test driving a TestTerminal across the breakpoint.
This commit is contained in:
parent
a7e909d39d
commit
61bf34177e
27 changed files with 3896 additions and 9 deletions
80
Cargo.lock
generated
80
Cargo.lock
generated
|
|
@ -679,6 +679,16 @@ dependencies = [
|
|||
"fs_extra",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "axis2d"
|
||||
version = "0.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cf6c17bb125d62090a520cbb06dfe8c371252c8fb22c4588f515d0da4e51c15e"
|
||||
dependencies = [
|
||||
"num",
|
||||
"sign",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "axum"
|
||||
version = "0.7.9"
|
||||
|
|
@ -1298,6 +1308,17 @@ dependencies = [
|
|||
"zeroize",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "chord_macro"
|
||||
version = "0.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ccfd700169d3a1973ee55dca8a659b2bde915231ecfbb1296dea2a72666bcdba"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.117",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "chrono"
|
||||
version = "0.4.44"
|
||||
|
|
@ -1794,7 +1815,7 @@ dependencies = [
|
|||
"mio",
|
||||
"parking_lot",
|
||||
"rustix 0.38.44",
|
||||
"signal-hook",
|
||||
"signal-hook 0.3.18",
|
||||
"signal-hook-mio",
|
||||
"winapi",
|
||||
]
|
||||
|
|
@ -1812,7 +1833,7 @@ dependencies = [
|
|||
"mio",
|
||||
"parking_lot",
|
||||
"rustix 1.1.4",
|
||||
"signal-hook",
|
||||
"signal-hook 0.3.18",
|
||||
"signal-hook-mio",
|
||||
"winapi",
|
||||
]
|
||||
|
|
@ -5372,6 +5393,12 @@ dependencies = [
|
|||
"memchr",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "nonmax"
|
||||
version = "0.5.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "610a5acd306ec67f907abe5567859a3c693fb9886eb1f012ab8f2a47bef3db51"
|
||||
|
||||
[[package]]
|
||||
name = "noop_proc_macro"
|
||||
version = "0.3.0"
|
||||
|
|
@ -8194,9 +8221,15 @@ checksum = "47106eded3c154e70176fc83df9737335c94ce22f821c32d17ed1db1f83badb1"
|
|||
dependencies = [
|
||||
"libc",
|
||||
"os_pipe",
|
||||
"signal-hook",
|
||||
"signal-hook 0.3.18",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sign"
|
||||
version = "0.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "48c0463041449de02f00a4be609a7bf85b7b4d7cb67a8e905aeaac876312b9ab"
|
||||
|
||||
[[package]]
|
||||
name = "signal-hook"
|
||||
version = "0.3.18"
|
||||
|
|
@ -8207,6 +8240,16 @@ dependencies = [
|
|||
"signal-hook-registry",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "signal-hook"
|
||||
version = "0.4.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b2a0c28ca5908dbdbcd52e6fdaa00358ab88637f8ab33e1f188dd510eb44b53d"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"signal-hook-registry",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "signal-hook-mio"
|
||||
version = "0.2.5"
|
||||
|
|
@ -8215,7 +8258,7 @@ checksum = "b75a19a7a740b25bc7944bdee6172368f988763b744e3d4dfe753f6b4ece40cc"
|
|||
dependencies = [
|
||||
"libc",
|
||||
"mio",
|
||||
"signal-hook",
|
||||
"signal-hook 0.3.18",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -8434,6 +8477,7 @@ dependencies = [
|
|||
"tracing-subscriber",
|
||||
"tui-big-text",
|
||||
"tui-widgets",
|
||||
"tuie",
|
||||
"unicode-width 0.1.14",
|
||||
"uuid",
|
||||
"walkdir",
|
||||
|
|
@ -9510,7 +9554,7 @@ dependencies = [
|
|||
"pest_derive",
|
||||
"phf 0.11.3",
|
||||
"sha2",
|
||||
"signal-hook",
|
||||
"signal-hook 0.3.18",
|
||||
"siphasher",
|
||||
"terminfo",
|
||||
"termios",
|
||||
|
|
@ -10203,6 +10247,23 @@ dependencies = [
|
|||
"tui-scrollview",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tuie"
|
||||
version = "0.1.5"
|
||||
dependencies = [
|
||||
"axis2d",
|
||||
"base64-simd",
|
||||
"chord_macro",
|
||||
"image",
|
||||
"libc",
|
||||
"nonmax",
|
||||
"paste",
|
||||
"sign",
|
||||
"signal-hook 0.4.4",
|
||||
"unicode-display-width",
|
||||
"unicode-segmentation",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tungstenite"
|
||||
version = "0.24.0"
|
||||
|
|
@ -10537,6 +10598,15 @@ version = "0.3.18"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5"
|
||||
|
||||
[[package]]
|
||||
name = "unicode-display-width"
|
||||
version = "0.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9a43273b656140aa2bb8e65351fe87c255f0eca706b2538a9bd4a590a3490bf3"
|
||||
dependencies = [
|
||||
"unicode-segmentation",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "unicode-ident"
|
||||
version = "1.0.24"
|
||||
|
|
|
|||
Loading…
Reference in a new issue