- Skeleton comment cards while the thread loads; comment count
only rendered once data arrives
- Subscribe button updates optimistically (fixes shallowRef
useFetch data not being reactive on in-place mutation)
- Add-tag control restyled as a tag chip, tag icon removed;
recording indicator bar dropped in favor of the mic button state
- Nav arrows and audio controls follow the theme border radius;
arrow z-index no longer overlays sticky header/MOTD
- Thread notifications are marked read on visit and on live arrival
- Audio upload player uses the shared media volume
Generated with [Devin](https://devin.ai)
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Adds a reusable shadcn-style Spinner (lucide loader-circle icon,
localized aria-label) and wires it into every button that has a
pending state: comment submit, delete, tag save, profile save,
admin saves, upload, login and register.
Generated with [Devin](https://devin.ai)
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>