Files
harmony/fleet/harmony-fleet-operator/Cargo.toml
Jean-Gabriel Gill-Couture 25eaf16ff4 fix(fleet-operator): device list filters + remove dead device buttons
- 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.
2026-06-02 05:49:34 -04:00

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"