feat(hosts): a host's health tiles span the card and the gaps match; Add host is a dialog on the list (#5290, #5291)
CI / lint (push) Successful in 3s
CI / integration (push) Successful in 54s
CI / unit (push) Successful in 1m18s
CI / publish (push) Successful in 1m23s

#5290 "Host page: the health tiles span the card's width; even spacing above Ansible":
the four tiles take equal quarters (halves on a phone) and their sparklines stretch
across them; the Monitors + Agent row drops the Agent card's own margin, so the gap
above Ansible is 1rem like every other.

#5291 "Add host opens as a dialog over the Hosts list": a native <dialog> on /hosts/,
opened by Add host or /hosts/?add=1. A name clash re-renders the list with it open,
the error and what was typed. GET /hosts/new is gone; hosts/form.html is Edit only.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-07 18:22:48 -04:00
co-authored by Claude Opus 5.5
parent bfe3618e88
commit fb20415a38
13 changed files with 136 additions and 52 deletions
+9
View File
@@ -69,3 +69,12 @@ def test_sparkline_svg_handles_edge_cases():
assert "polyline" in sparkline_svg([1, 2, 3])
assert "polyline" in sparkline_svg([4, 4, 4]) # flat series, no div-by-zero
assert "polyline" in sparkline_svg([1, None, 3]) # None values filtered
def test_a_sparkline_can_stretch_across_its_tile():
"""#5290: the host page's tiles are wide; the line fills them, stroke kept."""
wide = sparkline_svg([1, 2, 3], height=24, fill_width=True)
assert 'width="100%"' in wide and 'preserveAspectRatio="none"' in wide
assert 'vector-effect="non-scaling-stroke"' in wide
fixed = sparkline_svg([1, 2, 3])
assert 'width="80"' in fixed and "preserveAspectRatio" not in fixed