- Remove the no-op device-detail buttons (Reconcile/Restart/Suspend) and the no-op Copy button; keep Blacklist. - Search box lost focus on every keystroke: it swapped the whole <body>, recreating the input. Filtering now swaps only #device-table-wrapper (new device_table partial) via /devices/search, so the form keeps focus and selection. - Deployment filter didn't trigger and got wiped when typing: the filters were three separate <form>s (so they never combined) and the select had no hx-get to fire. Now one form holds status + deployment + search; form-level hx-trigger="change, keyup" submits all of them together. - Deployment filter is now a multi-select (parsed via axum_extra Query into Vec; filter matches any selected deployment). - Removed the region filter (irrelevant) — dropped from the query, filtered_devices, and the view.
47 lines
1.7 KiB
TOML
47 lines
1.7 KiB
TOML
[package]
|
|
name = "harmony-fleet-operator"
|
|
version = "0.1.0"
|
|
edition = "2024"
|
|
rust-version = "1.85"
|
|
build = "build.rs"
|
|
|
|
[features]
|
|
default = []
|
|
# Server-side dashboard (axum + Maud + HTMX). Tailwind CSS is embedded at
|
|
# build time when the standalone `tailwindcss` CLI is on PATH; otherwise
|
|
# the bundled CSS is empty and `--css-from <path>` must be used at runtime
|
|
# (the sidecar-watch dev workflow does this).
|
|
web-frontend = ["dep:axum", "dep:axum-extra", "dep:maud", "dep:tokio-stream", "harmony_zitadel_auth/axum"]
|
|
|
|
[dependencies]
|
|
harmony = { path = "../../harmony", features = ["podman"] }
|
|
harmony-fleet-auth = { path = "../harmony-fleet-auth" }
|
|
harmony-reconciler-contracts = { path = "../../harmony-reconciler-contracts" }
|
|
harmony_config = { path = "../../harmony_config" }
|
|
harmony_zitadel_auth = { path = "../../harmony_zitadel_auth" }
|
|
toml = { workspace = true }
|
|
chrono = { workspace = true, features = ["serde"] }
|
|
kube = { workspace = true, features = ["runtime", "derive"] }
|
|
k8s-openapi.workspace = true
|
|
async-nats = { workspace = true }
|
|
serde.workspace = true
|
|
serde_json.workspace = true
|
|
schemars = "0.8.22"
|
|
tokio.workspace = true
|
|
tracing = { workspace = true }
|
|
tracing-subscriber = { workspace = true }
|
|
anyhow.workspace = true
|
|
clap.workspace = true
|
|
futures-util = { workspace = true }
|
|
thiserror.workspace = true
|
|
async-trait.workspace = true
|
|
url.workspace = true
|
|
base64.workspace = true
|
|
reqwest.workspace = true
|
|
|
|
axum = { version = "0.8", optional = true }
|
|
axum-extra = { version = "0.10", features = ["cookie", "cookie-private", "query"], optional = true }
|
|
maud = { version = "0.27", features = ["axum"], optional = true }
|
|
tokio-stream = { version = "0.1", optional = true }
|
|
dotenvy = "0.15"
|