Add top navigation similar to dynamic product pages:
- SVC.plus/blog breadcrumb (clickable, returns to homepage)
- Search component on the right
- Sticky positioning with blur background
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Hide navbar by default on /blog and its subpaths
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
### Changes:
1. **Added fallback data files**:
- `public/_build/artifacts-manifest.json` - Local fallback for downloads page
- `public/_build/offline-package.json` - Local fallback for offline-package
2. **Updated data fetching logic**:
- `dl-index-data-artifacts.ts` - Now uses local fallback when network fetch fails
- `dl-index-data-offline-package.ts` - Now uses local fallback when network fetch fails
### Problem:
In static development mode (`yarn start -p 3000`), the dashboard's docs and downloads pages
could not fetch data from external URLs, resulting in empty content.
### Solution:
Added local fallback data files that are imported directly into the components.
When network requests fail (e.g., in offline mode or behind firewall), the app now
falls back to local static data, ensuring pages work in development mode.
### Data Flow:
1. Try fetching from `https://dl.svc.plus/dl-index/*.json`
2. If that fails, try fallback URL
3. If that also fails, use local `public/_build/*.json` data
4. Display content to user
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
### Changes:
1. **scripts/gen_docs_manifest.py**
- Added --include parameter with default "docs"
- Filters documentation files to only include specified directories
- Can be provided multiple times for multiple directories
- Updated docstring to document the new parameter
2. **scripts/gen_mirror_manifest.py**
- Added generation of offline-package.json file
- Filters listings to only include offline-package directory entries
- Writes to the same output directory alongside manifest.json
### Usage:
For gen_docs_manifest.py:
python3 scripts/gen_docs_manifest.py \
--root /data/update-server/docs \
--base-url-prefix https://dl.svc.plus/docs \
--include docs
For gen_mirror_manifest.py:
python3 scripts/gen_mirror_manifest.py \
--root /data/update-server \
--include offline-package \
--output dl-index/
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
### Changes:
1. **scripts/gen_docs_manifest.py**
- Added --include parameter with default "docs"
- Filters documentation files to only include specified directories
- Can be provided multiple times for multiple directories
- Updated docstring to document the new parameter
2. **scripts/gen_mirror_manifest.py**
- Added generation of offline-package.json file
- Filters listings to only include offline-package directory entries
- Writes to the same output directory alongside manifest.json
### Usage:
For gen_docs_manifest.py:
python3 scripts/gen_docs_manifest.py \
--root /data/update-server/docs \
--base-url-prefix https://dl.svc.plus/docs \
--include docs
For gen_mirror_manifest.py:
python3 scripts/gen_mirror_manifest.py \
--root /data/update-server \
--include offline-package \
--output dl-index/
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
### Changes:
1. **scripts/gen_mirror_manifest.py**
- Added generation of offline-package.json file
- Filters listings to only include offline-package directory
- Writes to the same output directory (dl-index/)
2. **src/lib/download/dl-index-data-offline-package.ts**
- New module to fetch offline-package data from CDN
- Fetches from: https://dl.svc.plus/dl-index/offline-package.json
- Provides helper functions:
- fetchOfflinePackageListings()
- getOfflinePackageListings()
- getOfflinePackageSections()
- getOfflinePackageFileCount()
- Includes simple in-memory caching
3. **src/app/download/page.tsx**
- Updated to use offline-package data
- Merges offline-package sections with existing data
- Added offline-package file count to totals
- Made component async to support data fetching
### Result:
Download page now fetches and displays offline-package data from the CDN endpoint, providing real-time updates without rebuilding the application.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>