Wire the CSV button to GET /api/v1/admin/history.csv through apiFetch
(token in the Authorization header) with the active filter and the
displayed start/end. The response is offered as a download via a blob
URL and a temporary anchor using the Content-Disposition filename
(falling back to nestquest-history-<start>-to-<end>.csv), then the URL
is revoked and the anchor removed. The button is disabled while the
request is in flight, and a failure shows a dismissible, non-blocking
message.
Task: e5133d0f-b373-4fcd-b666-6c77dfa49b98
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>