Files
netris-nestri/Cargo.toml
Wanjohi 3c574af2ea feat(neshub): open the media hub
The component nescapture, neswire and nescope all talk to, and the only
thing in the guest that speaks to the client. It muxes their frames into
one iroh QUIC endpoint and fans input back.

Renamed from nestri-guest-hub, which named a location rather than a job.

Four files came across unchanged -- session.rs, ipc_listener.rs,
ticket.rs, screenshot.rs. Between them they mention Steam zero times, and
they import only nesprotocol's open modules; the control feature carrying
LaunchIntent and SteamIdentity is used exclusively by the three files that
are staying closed. The two clusters shared a main.rs and nothing else, so
there was no untangling to do -- only a cut.

main.rs loses --proton, --steamclient-so, --root and the game uid/gid,
and no longer ends by handing the process to a controller. It runs until
it is stopped. Deciding when the box is finished belongs to nesinit.

The ticket used to leave via that controller, so it needed a new way out:
neshub now serves it on a socket and nesinit dials for it. Listening
rather than dialling matches every other socket here and means no startup
ordering to get wrong.

Three tests, where there were none -- the ticket crosses a process
boundary as text now, so a round trip that drops a field would otherwise
be found by whoever cannot connect.
2026-08-26 18:54:09 +03:00

40 lines
1.1 KiB
TOML

# The Rust half of this monorepo. The JS/TS half is `package.json`.
#
# Layout, per the same rule on both sides: split by *what a thing is*, not by
# what language it is written in.
#
# apps/ deployables — a binary someone runs
# crates/ shared Rust — a library another crate depends on
# packages/ shared JS/TS
#
# Members are added as components move in. An empty list is honest: nothing has
# landed yet.
[workspace]
resolver = "3"
members = [
"apps/nescapture",
"apps/nescope",
"apps/neshub",
"apps/neswire",
"crates/nesprotocol",
]
# One pin per dependency, here. A member never writes a version — that is what
# stops two crates in one tree from disagreeing about tokio.
[workspace.dependencies]
anyhow = "1"
clap = { version = "4", features = ["derive", "env"] }
libc = "0.2"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
thiserror = "2"
tokio = { version = "1", features = ["full"] }
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
[workspace.package]
edition = "2024"
license = "Apache-2.0"
repository = "https://github.com/nestrilabs/nestri"