The browser reached the daemon through maestro-web, a second binary that served the SPA and reverse-proxied /api/* — two TCP connections and a WebSocket frame re-encode on every keystroke and every byte of PTY output. On one machine that hop buys nothing. The daemon now embeds the bundle and serves it off its own listener, behind a default-on `web` feature. `--no-default-features` builds without pnpm or node; MAESTRO_WEB_DIST still takes a prebuilt bundle. The router's fallback answers an unmatched /api/* with 404 rather than the SPA shell, so a client expecting JSON gets a status it can read instead of HTML. Removes maestro-web and the [web] config section. An existing [web] block is ignored, not rejected. The installer deletes a leftover maestro-web.service on upgrade. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
22 lines
754 B
Rust
22 lines
754 B
Rust
//! `maestro-installer` — install wizard for the unified `maestro` binary
|
|
//! (NAP-245).
|
|
//!
|
|
//! See `docs/INSTALL.md` for the user-facing flow. This crate exposes the
|
|
//! testable pieces:
|
|
//!
|
|
//! - [`systemd`] — detect a systemd host and render a user unit.
|
|
//! - [`install`] — build the `cargo install` and `systemctl --user` commands.
|
|
//!
|
|
//! The binary in `src/main.rs` glues these together with stdin prompts.
|
|
|
|
#![deny(missing_debug_implementations)]
|
|
|
|
pub mod install;
|
|
pub mod systemd;
|
|
|
|
pub use install::{cargo_install_args, systemctl_user_args, CargoSource, SystemctlAction};
|
|
pub use systemd::{
|
|
is_systemd_host, legacy_web_unit_path, render_user_unit, user_unit_path, user_unit_path_for,
|
|
LEGACY_WEB_UNIT_FILE_NAME, UNIT_FILE_NAME,
|
|
};
|