fux 0.12.0

A minimal trusted Bevy terminal multiplexer
[workspace]
members = ["fux-vt"]
exclude = ["fux-fuzz", "fux-vt/fuzz"]
resolver = "3"

[package]
name = "fux"
version = "0.12.0"
edition = "2024"
rust-version = "1.95"
license = "MIT"
description = "A minimal trusted Bevy terminal multiplexer"
repository = "https://github.com/gold-silver-copper/fux"
readme = "README.md"
keywords = ["terminal", "multiplexer", "bevy", "pty", "tmux"]
categories = ["command-line-utilities"]
# The crate is the server, its client and their tests. The rest of this
# repository -- the fuzz harness, the agent exercises, measurement evidence
# and working notes -- is not part of it.
include = ["/src/**", "/tests/**", "/README.md", "/LICENSE"]

[dependencies]
bevy_app = "=0.20.0-rc.1"
bevy_ecs = { version = "=0.20.0-rc.1", features = ["serialize"] }
bevy_reflect = "=0.20.0-rc.1"
bevy_remote = { version = "=0.20.0-rc.1", default-features = false, features = ["bevy_asset"] }
bevy_tasks = { version = "=0.20.0-rc.1", features = ["multi_threaded", "async-io"] }
bevy_time = "=0.20.0-rc.1"
bevy_log = "=0.20.0-rc.1"
async-channel = "2"
serde_json = "1"

serde = { version = "1", features = ["derive"] }
bevy_asset = { version = "=0.20.0-rc.1", features = ["file_watcher"] }
bevy_world_serialization = { version = "=0.20.0-rc.1", features = ["serialize"] }
bevy_ui = { version = "=0.20.0-rc.1", features = ["bevy_picking"] }
bevy_input = { version = "=0.20.0-rc.1", features = ["keyboard", "mouse"] }
bevy_input_focus = { version = "=0.20.0-rc.1", features = ["keyboard"] }
bevy_picking = { version = "=0.20.0-rc.1", default-features = false }
bevy_window = "=0.20.0-rc.1"
bevy_camera = "=0.20.0-rc.1"
bevy_math = "=0.20.0-rc.1"
bevy_text = "=0.20.0-rc.1"
bevy_image = "=0.20.0-rc.1"
portable-pty = "=0.9.0"
fux-vt = { path = "fux-vt", version = "0.1.0" }
termina = "=0.3.3"
parking_lot = "0.12"
nix = { version = "0.30", features = ["fs", "signal", "process", "poll", "socket", "user"] }
async-io = "2"
# The Unix-socket transport: bevy_remote 0.19 binds only TCP, so fux serves
# BRP itself. These were already in the graph through bevy_remote's `http`.
hyper = { version = "1", features = ["server", "http1"] }
smol-hyper = "0.1"
http-body-util = "0.1"
# Exact: the Unix connector implements ureq's `unversioned` transport API,
# which is outside ureq's semver promise.
ureq = { version = "=3.4.2", default-features = false, features = ["json"] }
ron = "0.12"
bevy_mesh = "=0.20.0-rc.1"
base64 = "0.22"
unicode-width = "0.2"
signal-hook = "0.3"
[profile.dev]
debug = 0

[profile.release]
strip = true
lto = "thin"
codegen-units = 1

[lints.clippy]
unwrap_used = "forbid"
expect_used = "forbid"
panic = "forbid"
unreachable = "forbid"
todo = "forbid"
unimplemented = "forbid"
indexing_slicing = "warn"