jsDelivr CDN was aggressively caching old data during development.
Raw GitHub URLs provide more immediate updates when pushing changes
to the feature branch.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
jsDelivr aggressively caches branch references. Adding version
parameter ensures fresh data is fetched when categories are updated.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
GitHub raw URLs don't allow cross-origin requests from localhost.
Using jsDelivr CDN which serves GitHub content with proper CORS headers.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add kiwix-categories.json with Medicine category and 3 tiers
- Create CategoryCard component for displaying category cards
- Create TierSelectionModal for tier selection UI
- Integrate categories into Easy Setup wizard (Step 3)
- Add TypeScript types for categories and tiers
- Fallback to legacy flat collections if categories unavailable
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The removeNotification function was using a stale reference to the
notifications array from the closure scope, causing the setTimeout
callback to filter against an outdated state.
Changed to use functional update pattern (prev => prev.filter(...))
which correctly references the current state when the timeout fires.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>