mirror of
https://github.com/mulgadc/spinifex.git
synced 2026-11-05 18:46:28 +00:00
69df9ea9bf
* feat(ui): console feedback round: state tones, inline tags, filter bar and form fixes Settled states go green and transitions yellow with a spinner, status text is lowercase, tags are edited inline row by row, every list filters through one filter bar, long cells truncate with a tooltip and times are relative. EC2 launch takes a Name and offers ICMP echo, and leaves Placement Group out when no group is available. RDS create is reordered with engine tiles and window pickers. Route 53 records get bulk delete, a TTL select, value labels that follow the type, and NS. Tooltips use the popover tokens, and the console is sized over a 110% root. * feat(ui): size RDS instance classes and give each record value its own input An RDS class is a db.-prefixed EC2 type, so the class picker shows its vCPUs and memory in every option and under the field, as the EC2 launch form does, on create, modify and restore. A Route 53 record's values were one textarea, which let a line break into a value. Each value is now a single-line input with Add value; Enter starts the next one, a pasted list splits into rows, and CNAME takes exactly one. * fix(ui): open a DNS record for editing from the keyboard * feat: admin node inventory, topology, live host metrics and network test Each node collects its hardware facts as root at daemon start (dmidecode, ethtool, networkctl LLDP where available) into /etc/spinifex/node-facts, and the daemon serves them with its plane wiring over NATS. New admin-only actions, refused for every account but the system admin account regardless of policy: - GetNodeFacts: hardware, NICs, LLDP neighbours and planes per node - GetNodeMetrics: live CPU, memory and per-plane traffic for one node - StartNetworkTest / DescribeNetworkTests: iperf2 between nodes over a chosen plane, both directions, one test cluster-wide at a time, recorded in KV and converged asynchronously The iperf listener runs only for the duration of a run, without capabilities, on TCP 5001, which the peers firewall rule now allows. A run refuses any target outside the node's own plane subnet. The console gains a node panel (hardware, network, metrics, network test with a dial scaled to the port's line rate) and a topology view built with @xyflow/react. setup.sh installs dmidecode and iperf. * test: cover the node insight handlers and the facts file mode * feat: report every CPU flag in node facts * feat(ui): node table on the dashboard, every CPU flag and a readable topology The dashboard's nodes section is the Nodes page table, open by default, and a row opens that node. Ready reads green, capacity sorts by most available, and the processor's features tip lists every flag. Topology draws one row per port with switches in a muted card, highlights a node's links on hover, and offers a left-to-right layout beside top-down. * chore(ui): rebuild dist * fix: align the CPU facts fields * fix: bound the network test server start and read ARM CPU features and cores * chore(ui): rebuild dist * test(ui): pin the instances baseline clock and take the screenshots from CI's Playwright image * fix: retry a network test claim whose holder released it mid-check