Commit Graph

138 Commits

Author SHA1 Message Date
65de62deaf Use react-bootstrap throughout, improve entry detail
Switch sidebar components (FilterSection, FilterSidebar, Pagination)
and both explorer pages to use react-bootstrap: Card, Table, Badge,
Button, Alert, Form.Control, Form.Select, InputGroup, Collapse,
Spinner. Use react-bootstrap-icons for Search, ChevronDown, Download,
BoxArrowUpRight, etc.

Entry detail page: remove MD5 columns from Downloads and Files tables.
Hide empty sections entirely instead of showing placeholder cards.
Human-readable file sizes (KB/MB). Web links shown as compact list
with external-link icons. Notes rendered as badge+text instead of
table rows. Scores and web links moved to sidebar.

No-results alert now shows active machine filter names and offers to
search all machines via Alert.Link.

Update CLAUDE.md with react-bootstrap design conventions and remove
stale ZxdbExplorer.tsx references.

claude-opus-4-6@McFiver
2026-02-17 18:17:58 +00:00
fe1dfa4170 feat: enrich tape identifier results with entry details
Show authors, genre, machine type, release year, CRC32, and a
prominent "View entry" link. Joins releases, genretypes, machinetypes,
and authors in lookupByMd5() for richer context.

opus-4-6@McFiver
2026-02-17 16:38:34 +00:00
5f84f482ab docs: update WIP tracker — implementation complete
opus-4-6@McFiver
2026-02-17 16:35:14 +00:00
8624050614 feat: add tape identifier dropzone on /zxdb
Client computes MD5 + size in-browser, server action looks up
software_hashes to identify tape files against ZXDB entries.

- src/utils/md5.ts: pure-JS MD5 for browser (Web Crypto lacks MD5)
- src/app/zxdb/actions.ts: server action identifyTape()
- src/app/zxdb/TapeIdentifier.tsx: dropzone client component
- src/server/repo/zxdb.ts: lookupByMd5() joins hashes→downloads→entries
- src/app/zxdb/page.tsx: mount TapeIdentifier between hero and nav grid

opus-4-6@McFiver
2026-02-17 16:34:48 +00:00
fc513c580b wip: start tape identifier — init progress tracker
opus-4-6@McFiver
2026-02-17 16:32:22 +00:00
e27a16eda1 Ready to add F/E 2026-02-17 16:30:13 +00:00
5a6c536283 feat: add .o tape extension, recompute missing (32,960 rows)
claude-opus-4-6@MacFiver
2026-02-17 16:18:51 +00:00
6b91fde972 fix: silently skip /denied/ and other non-hosted download prefixes
These are valid entries we've been asked not to host — no need to
log warnings for them.

claude-opus-4-6@MacFiver
2026-02-17 16:17:43 +00:00
9efedb5f2e feat: add .p tape extension and --rebuild-missing flag
- Add .p (ZX81 program) to tape file extensions list
- Add --rebuild-missing flag: only processes downloads not yet in
  software_hashes (LEFT JOIN exclusion), avoids recomputing known hashes
- Recomputed: 639 new .p file hashes, total now 32,944 rows

claude-opus-4-6@MacFiver
2026-02-17 16:15:53 +00:00
51e1f10417 docs: update WIP tracker — implementation complete
claude-opus-4-6@MacFiver
2026-02-17 16:10:11 +00:00
9bfebc1372 feat: add initial software_hashes JSON snapshot (32,305 rows)
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
2026-02-17 16:09:55 +00:00
edc937ad5d feat: add update-software-hashes.mjs pipeline script
Processes tape-image downloads (filetype_id 8, 22), extracts zip
contents, finds the inner tape file (.tap/.tzx/.pzx/.csw), computes
MD5/CRC32/size, and upserts into software_hashes table. Exports a
JSON snapshot for DB wipe recovery. Supports --resume, --rebuild-all,
--start-from-id, --export-only flags with state file persistence.

claude-opus-4-6@MacFiver
2026-02-17 16:07:04 +00:00
f5ae89e888 feat: add software_hashes table schema and reimport pipeline
- Add softwareHashes Drizzle model (download_id PK, md5, crc32,
  size_bytes, inner_path, updated_at)
- Update import_mysql.sh to reimport from JSON snapshot after DB wipe
- Add pnpm scripts: update:hashes, export:hashes
- Create data/zxdb/ directory for JSON snapshot storage

claude-opus-4-6@MacFiver
2026-02-17 16:06:51 +00:00
944a2dc4d1 wip: start feature/software-hashes — init progress tracker
claude-opus-4-6@MacFiver
2026-02-17 16:00:51 +00:00
b361201cf2 Ready to start adding hashes 2026-02-17 15:53:42 +00:00
b158bfc4a0 Improve ZXDB downloads with local mirroring and inline preview
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
2026-02-17 14:49:38 +00:00
728b36e45e Update AGENTS.md with improved commit message handling guidelines
- Specify that COMMIT_EDITMSG should be created or updated.
- Encourage editing the existing file to maintain context across multiple steps.

Signed-off: junie@lucy.xalior.com
2026-02-17 13:14:56 +00:00
f445aabcb4 Improve download viewer with grouping and inline previews
Group downloads and scraps by type in Entry and Release details

Add FileViewer component for .txt, .nfo, image, and PDF previews

Update download API to support inline view with correct MIME types

Signed-off-by: Junie@lucy.xalior.com
2026-02-17 12:50:58 +00:00
32985c33b9 Proxy local ZXDB/WoS mirror downloads through application API
- Created `src/app/api/zxdb/download/route.ts` to serve local files.
- Updated `resolveLocalLink` in `src/server/repo/zxdb.ts` to return
  API-relative URLs with `source` and `path` parameters.
- Encodes the relative subpath to ensure correct URL construction.
- Includes security checks in the API route to prevent path traversal.
- Updated `docs/ZXDB.md` to reflect the proxy mechanism.

Signed-off: junie@lucy.xalior.com
2026-02-17 12:43:26 +00:00
2e47b598c1 Remove default path prefixes for local mirroring
- Removed hardcoded defaults for ZXDB_FILE_PREFIX and WOS_FILE_PREFIX in
  resolveLocalLink.
- Updated docs/ZXDB.md and example.env to remove mentions of defaults.
- Default behavior is now no prefix stripping if variables are omitted.

Signed-off-by: Junie@lucy.xalior.com
2026-02-17 12:35:46 +00:00
ab7872b610 Update example.env with local mirror configurations
Signed-off: Junie@lucy.xalior.com
2026-02-17 12:34:47 +00:00
4b3d1ccc7b Update documentation for local ZXDB/WoS mirrors
- Documented .env variables: ZXDB_LOCAL_FILEPATH, WOS_LOCAL_FILEPATH, ZXDB_FILE_PREFIX, WOS_FILE_PREFIX.
- Explained path resolution logic (strip prefix, prepend local path).
- Added setup notes to docs/ZXDB.md and AGENTS.md.

Signed-off-by: junie@lucy.xalior.com
2026-02-17 12:34:11 +00:00
77b5e76a08 Correct local file path resolution for ZXDB/WoS mirrors
- Remove optional path prefix and prepend the required local string.
- Avoid hardcoded 'SC' or 'WoS' subdirectories in path mapping.
- Maintain binary state: show local link only if env var is set and file exists.

Signed-off: junie@McFiver.local
2026-02-17 12:30:55 +00:00
cbee214a6b This actually runs now :-o 2026-02-17 12:19:14 +00:00
53eb9a1501 Implement magazine reviews, label details, and year filtering
- Aggregate magazine references from all releases on the Entry detail page.
- Display country names and external links (Wikipedia/Website) on the Label detail page.
- Add a year filter to the ZXDB Explorer to search entries by release year.

Signed-off: junie@lucy.xalior.com
2026-02-17 12:03:36 +00:00
9807005305 Update homepage hero
Replace the minimal homepage with a two-column hero for ZXDB and NextReg.

Signed-off-by: codex@lucy.xalior.com
2026-01-11 13:42:52 +00:00
24e08ce7b9 Better zxdb landing page 2026-01-11 13:40:31 +00:00
00a13e3289 Fix explorer hook deps
Resolve hook dependency warnings in entries and releases explorers.

Signed-off-by: codex@lucy.xalior.com
2026-01-11 13:30:10 +00:00
2d4b1b2d5b Refactor registers sidebar
Use shared explorer layout and sidebar for the registers browser.

Signed-off-by: codex@lucy.xalior.com
2026-01-11 13:23:49 +00:00
79d161afe1 Share explorer sidebar components
Introduce reusable explorer layout, sidebar, chips, and multi-select components.

Signed-off-by: codex@lucy.xalior.com
2026-01-11 13:21:19 +00:00
8a9c5395bd Change label on machines we use by default 2026-01-11 13:06:44 +00:00
1e8925e631 Add multi-select machine filters
Replace machine dropdowns with multi-select chips and pass machine lists in queries.

Signed-off-by: codex@lucy.xalior.com
2026-01-11 13:04:41 +00:00
2f93ed1774 Fix facets filter aliasing
Use the correct SQL alias in entry facet filters.

Signed-off-by: codex@lucy.xalior.com
2026-01-11 12:37:56 +00:00
dc6db608cd uncouple breadcrumbs from search input widget 2026-01-11 12:35:22 +00:00
762d13be55 Favor Next machine types in search
Prefer Spectrum Next and +3 results when no machine filter is selected.

Signed-off-by: codex@lucy.xalior.com
2026-01-10 23:44:02 +00:00
48d02adbed Hunno this isn't all the case search fixes required...
Manual fixes for a lot of case places..

-Dx
2026-01-10 23:34:02 +00:00
9bb0a18695 Update setup docs and scripts
Refresh setup docs, add ZXDB local setup script, and note deploy rules.

Signed-off-by: codex@lucy.xalior.com
2026-01-10 22:52:27 +00:00
89d48edbd9 Add deploy helper script
Add a deploy script and npm commands, and include
Navbar updates as requested.

Signed-off-by: codex@lucy.xalior.com
2026-01-10 22:39:03 +00:00
0b0dced512 Revamp entry detail layout
Restructure entry detail into a two-column layout with
summary/people cards and section cards on the right.

Signed-off-by: codex@lucy.xalior.com
2026-01-10 22:32:55 +00:00
e94492eab6 Unify ZXDB list layouts
Apply sidebar filter layout to label/genre/language/machine
lists and restructure release detail into a two-column view.

Signed-off-by: codex@lucy.xalior.com
2026-01-10 22:05:28 +00:00
6f7ffa899d Refresh releases and magazines UI
Apply sidebar filter layout and header summary to releases
and magazines list pages.

Signed-off-by: codex@lucy.xalior.com
2026-01-10 21:56:46 +00:00
84dee2710c Add genre column to entries
Include genre data in entry search results and show it
in the entries table layout.

Signed-off-by: codex@lucy.xalior.com
2026-01-10 21:53:31 +00:00
5130a72641 Add entry facets and links
Surface alias/origin facets, SSR facets on entries page,
fix facet query ambiguity, and document clickable links.

Signed-off-by: codex@lucy.xalior.com
2026-01-10 19:21:46 +00:00
964b48abf1 Add entry ports and scores
Surface ports, remakes, scores, and notes on entry detail.

Signed-off-by: codex@lucy.xalior.com
2026-01-10 18:26:34 +00:00
d9f55c3eb6 Add entry relations and tags
Show relations and tag membership sections on entry detail.

Signed-off-by: codex@lucy.xalior.com
2026-01-10 18:23:58 +00:00
06ddeba9bb Polish origins and guidelines
Add issue/magazine links and ordering to entry origins,
and document preferred validation guidance.

Signed-off-by: codex@lucy.xalior.com
2026-01-10 18:18:20 +00:00
fb206734db Add ZXDB origins and label types
Show entry origins data and display label type names
in label detail view.

Signed-off-by: codex@lucy.xalior.com
2026-01-10 18:12:30 +00:00
e2f6aac856 Expand ZXDB entry data and search
Add entry release/license sections, label permissions/licenses,
expanded search scope (titles+aliases+origins), and home search.
Also include ZXDB submodule and update gitignore.

Signed-off-by: codex@lucy.xalior.com
2026-01-10 18:04:04 +00:00
3e13da5552 Improve ZXDB releases list
Link release titles to release detail, add magref count
badges, and show other releases on release detail.

Signed-off-by: codex@lucy.xalior.com
2026-01-10 17:46:57 +00:00
0594b34c62 Add ZXDB breadcrumbs and release places
Add ZXDB breadcrumbs on list/detail pages and group release
magazine references by issue for clearer Places view.

Signed-off-by: codex@lucy.xalior.com
2026-01-10 17:35:36 +00:00