fix(diagnostics): honest live console after review

- Live stops polling on a failed read and marks the list as possibly
  stale (with Retry), instead of re-raising the error dialog every tick.
- While live, a refetch reads the newest page only, whatever the cache
  holds (a late "Load older", a revisited filter set).
- Copy is disabled and the list dimmed while a filter change loads.
- Dates follow the UI language; the pivot chip uses the shared .chip.
- Tests: query-string wire test, Copy, every facet's skip key.
This commit is contained in:
2026-09-19 03:42:26 +02:00
parent 1c49870a7a
commit 8f6f89832f
7 changed files with 213 additions and 17 deletions
+17
View File
@@ -172,3 +172,20 @@ def test_a_facet_counts_under_every_other_filter_but_not_its_own(db, admin):
assert body["total"] == 2
# Every other facet counts under the level filter too.
assert body["sources"] == [{"value": "worker", "count": 1}]
@pytest.mark.parametrize(
("params", "facet", "expected"),
[
({"sources": ["worker"]}, "sources", {"api", "worker"}),
({"user": "1"}, "users", {"1", "none"}),
({"event": "sync.rss.failed"}, "events", {"http.request", "sync.rss.failed"}),
],
)
def test_every_facet_keeps_its_siblings_under_its_own_filter(db, admin, params, facet, expected):
# The way back from a pick: the picked facet still offers the values it was picked from.
_add(db, _row(user_id=1), _row(source="worker", event="sync.rss.failed"))
body = admin.get("/api/admin/logs/facets", params=params).json()
assert {f["value"] for f in body[facet]} == expected