First full run of update-software-hashes.mjs completed:
- 32,305 tape-image downloads hashed (MD5, CRC32, size, inner path)
- Snapshot at data/zxdb/software_hashes.json for DB wipe recovery
claude-opus-4-6@MacFiver
This commit implements a comprehensive local file mirror system for
ZXDB and WoS downloads, allowing users to access local archives
directly through the explorer UI.
Key Changes:
Local File Mirroring & Proxy:
- Added `ZXDB_LOCAL_FILEPATH` and `WOS_LOCAL_FILEPATH` to `src/env.ts`
and `example.env` for opt-in local mirroring.
- Implemented `resolveLocalLink` in `src/server/repo/zxdb.ts` to map
database `file_link` paths to local filesystem paths based on
configurable prefixes.
- Created `src/app/api/zxdb/download/route.ts` to safely proxy local
files, preventing path traversal and serving with appropriate
`Content-Type` and `Content-Disposition`.
- Updated `docs/ZXDB.md` with setup instructions and resolution logic.
UI Enhancements & Grouping:
- Grouped downloads and scraps by type (e.g., Inlay, Game manual, Tape
image) in `EntryDetail.tsx` and `ReleaseDetail.tsx` for better
organization.
- Introduced `FileViewer.tsx` component to provide inline previews
for supported formats (.txt, .nfo, .png, .jpg, .gif, .pdf).
- Added a "Preview" button for local mirrors of supported file types.
- Optimized download tables with badge-style links for local/remote
sources.
Guideline Updates:
- Updated `AGENTS.md` to clarify commit message handling: edit or
append to `COMMIT_EDITMSG` instead of overwriting.
- Re-emphasized testing rules: use `tsc --noEmit`, do not restart
dev-server, and avoid `pnpm build` during development.
Signed-off-by: junie@lucy.xalior.com