ci / rust (push) Failing after 5m4s
Stitches the pieces from NAP-276..280 into a working app: - `app.rs` — `App` owns config, catalog, emulators, state, modal, chord resolver, region map, last-sent resize cache, and the reqwest client. `run()` races crossterm events, catalog change notifies, and a 30 Hz heartbeat. `redraw()` builds `RenderInputs`, calls `render::draw`, refreshes `RegionMap`, then runs per-session min-size resize propagation to the daemon. - `dispatch(Action)` — Action → state mutation. `AttachHighlighted` spawns a real `SessionTask` if none exists for the session. `OpenSpawnModal` rebuilds the modal against the current daemon list. `KillHighlighted` opens a confirm overlay. - `handle_overlay_input` — intercepts keystrokes while spawn modal / kill confirm / help is open. Spawn `Submit` fires `POST /api/sessions`. Kill `y` fires `DELETE /api/sessions/:id` and drops the local handle. - Insert-mode passthrough: characters (with ctrl/alt mapping), arrows (CSI sequences), Enter/Tab/Backspace/Esc become binary bytes on the active session's WS sink. - `lib::run` — installs the panic hook, runs a 3×500ms `/api/web/info` probe, loads `[tui]` from `MaestroConfigFile`, spawns `CatalogStore::run_events_loop`, waits up to 2s for the bootstrap Snapshot, enters the terminal guard, and drives `App::run`. 90 tests passing (5 new app dispatch unit tests + the existing widget + catalog + session_task + emulators + pure-logic suites).
30 lines
849 B
TOML
30 lines
849 B
TOML
[package]
|
|
name = "maestro-tui"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
repository.workspace = true
|
|
publish.workspace = true
|
|
description = "Terminal UI client over the local maestro daemon's `/api/*` surface."
|
|
|
|
[dependencies]
|
|
clap.workspace = true
|
|
crossterm.workspace = true
|
|
futures-util.workspace = true
|
|
maestro-config.workspace = true
|
|
maestro-protocol.workspace = true
|
|
ratatui.workspace = true
|
|
reqwest.workspace = true
|
|
serde_json.workspace = true
|
|
thiserror.workspace = true
|
|
tokio = { workspace = true, features = ["sync", "time", "macros", "rt"] }
|
|
tokio-tungstenite.workspace = true
|
|
tracing.workspace = true
|
|
uuid.workspace = true
|
|
vt100.workspace = true
|
|
|
|
[dev-dependencies]
|
|
axum.workspace = true
|
|
chrono.workspace = true
|
|
tokio = { workspace = true, features = ["sync", "time", "macros", "rt-multi-thread", "net"] }
|