feat(maestro-tui): wire --config flag + document tui in INSTALL.md (NAP-283)
ci / rust (push) Failing after 5m13s
ci / rust (push) Failing after 5m13s
- `RunConfig` grows a `config_path: Option<PathBuf>` field, plumbed from the umbrella binary's global `--config` flag through to `MaestroConfigFile` loading. Explicit `--config <path>` wins over `$MAESTRO_CONFIG` over the platform default; a missing file still falls back to shipped defaults. - `docs/INSTALL.md` gains a "terminal UI" section: that `maestro tui` ships in the default feature set, how to opt out (`--no-default-features --features cli,daemon`), the `MAESTRO_DAEMON_URL` override, and a worked example of `[tui]` / `[tui.keymap.normal]` config pointing at the full action vocabulary in the design spec. - Adds a thin-build line for `--features cli` (CLI-only client) and lists `tui` in the default-feature set. - CLAUDE.md repo-layout block lists the new `maestro-tui` crate. Closes the NAP-275 v1 epic.
This commit is contained in:
+44
-2
@@ -52,8 +52,8 @@ The binary lands in `~/.cargo/bin/maestro` — make sure that's on your `$PATH`.
|
||||
|
||||
## Thin builds for single-role hosts
|
||||
|
||||
The default install pulls in everything. Registry-only and daemon-only hosts
|
||||
can opt out of unused dependencies:
|
||||
The default install pulls in everything (`cli` + `daemon` + `registry` + `tui`).
|
||||
Single-role hosts can opt out of unused dependencies:
|
||||
|
||||
```sh
|
||||
# Registry server — no tmux/PTY/jwt-verifier code:
|
||||
@@ -63,10 +63,52 @@ cargo install --git https://git.naps.pt/naps62/maestro \
|
||||
# Daemon-only host — no embedded web assets, no registry HTTP surface:
|
||||
cargo install --git https://git.naps.pt/naps62/maestro \
|
||||
--no-default-features --features daemon --locked maestro
|
||||
|
||||
# CLI-only client (no local daemon, no TUI):
|
||||
cargo install --git https://git.naps.pt/naps62/maestro \
|
||||
--no-default-features --features cli --locked maestro
|
||||
```
|
||||
|
||||
The wizard always installs the default-feature build.
|
||||
|
||||
## The terminal UI: `maestro tui`
|
||||
|
||||
`maestro tui` is the keyboard-and-mouse driven terminal UI client. It ships
|
||||
in the default feature set, so a vanilla `cargo install maestro` builds it.
|
||||
Drop the `tui` feature to skip it on hosts that don't need the UI surface
|
||||
(`--no-default-features --features cli,daemon`).
|
||||
|
||||
It talks only to the **local** `maestro daemon` over `http://127.0.0.1:7070`
|
||||
by default; peer daemons reach you transparently via the catalog mirror.
|
||||
Override the daemon URL with `--daemon-url` or `$MAESTRO_DAEMON_URL`.
|
||||
|
||||
The `[tui]` section in `~/.config/maestro/config.toml` (or whatever path you
|
||||
pass via the global `--config` flag) controls the keymap. Shipped defaults
|
||||
cover every v1 action — only override what you want to change:
|
||||
|
||||
```toml
|
||||
[tui]
|
||||
leader = "ctrl-a" # one byte that escapes Insert mode
|
||||
chord_timeout_ms = 1000 # how long to hold a partial chord like `g`
|
||||
|
||||
[tui.keymap.normal]
|
||||
"i" = "EnterInsert"
|
||||
"s" = "OpenSpawnModal"
|
||||
"x" = "KillHighlighted"
|
||||
"?" = "ShowHelp"
|
||||
"ctrl-t" = "NewTab"
|
||||
"g t" = "NextTab"
|
||||
"ctrl-w h" = "FocusSidebar"
|
||||
"enter" = "AttachHighlighted"
|
||||
|
||||
[tui.keymap.insert]
|
||||
# (leader is added automatically as LeaveInsert; only override here when you
|
||||
# want extra Insert-mode bindings)
|
||||
```
|
||||
|
||||
The full action vocabulary lives in
|
||||
`docs/superpowers/specs/2026-05-28-maestro-tui-design.md` §3.8.
|
||||
|
||||
## Adding the browser UI (optional)
|
||||
|
||||
`maestro-web` is a separate binary that serves the SPA bundle and reverse-
|
||||
|
||||
Reference in New Issue
Block a user