Selective offline mode implemented. Users can pin individual tools for offline use via the “Save offline” button on any tool page.
What shipped
- Service worker with 5 cache tiers (static, shell, pinned, CDN, policy)
- Per-tool offline pinning via OfflinePin component + SW postMessage API
- /my-tools custom homepage showing all pinned tools
- Offline fallback page listing pinned tools when visiting unpinned tools offline
- Content-hashed
/_astro/* assets cached immutably (cache-first)
Design decision
Rather than caching all 400+ tools automatically (which would consume excessive storage), users choose which tools to pin. This gives control over offline storage and enables a future “category packs” premium feature.