- DogLoader now covers the whole window (dock top + _loading layer),
dims the dashboard behind it ($background 80%), draws a centered
rounded panel with a running ASCII dog and a 🐾 paw trail
- block keyboard bindings (check_action) and drop focus while refreshing;
restore focus to models table afterwards
- removed the docked progress line (covered by the overlay)
- docs updated; tests: full-screen coverage + input blocking
Widget.loading is a Textual built-in reactive that swaps the widget for the
default dots spinner. Our dashboard used the same name, so setting it True
activated the built-in indicator (dots) instead of the dog loader. Renamed
to 'refreshing' and assert app.screen.loading stays False in tests.
- DogLoader widget: ASCII dog animating while data loads, shown as a
centered overlay and a docked progress line on the dashboard
- shown on timer auto-refresh and manual refresh (r)
- bump version to 1.0.4; CHANGELOG + README updated
- tests: hidden when idle, shown during refresh, frame animation