Files
explorer/docs/plans/zxdb-missing-features.md
D. Rimron-Soutter 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

5.2 KiB

ZXDB Explorer — Missing Features & Gaps

Audit of the /zxdb pages against the ZXDB schema and existing data. Everything listed below is backed by tables already present in the Drizzle schema (src/server/schema/zxdb.ts) but not yet surfaced in the UI.


Current Coverage

Section List page Detail page Facets/Filters
Entries Search Full detail genre, language, machinetype
Releases Search Downloads, scraps, files, magazine refs
Labels Search Authored/published entries, permissions, licenses
Magazines Search Issues list
Issues via magazine Magazine refs (reviews/references)
Genres List Entries by genre
Languages List Entries by language
Machine Types List Entries by type

Missing Top-Level Browse Pages

1. Countries

  • Tables: countries, labels.country_id
  • Value: Browse by country ("all software from Spain", "UK publishers").

2. Tools

  • Tables: tools, tooltypes
  • Value: Utilities, emulators, and development tools catalogued in ZXDB.

3. Features

  • Tables: features
  • Value: Hardware/software features (Multiface, Kempston joystick, etc.).

4. Topics

  • Tables: topics, topictypes
  • Value: Editorial/thematic groupings used by magazines.

5. Tags / Collections

  • Tables: tags, tagtypes, members
  • Value: Tags are shown per-entry but there is no top-level "browse by tag" page (e.g. all CSSCGC entries, compilations).

6. Licenses

  • Tables: licenses, licensetypes, relatedlicenses, licensors
  • Value: Shown per-entry detail but no "browse all licenses" hub (e.g. all games based on a Marvel license).

7. Magazine reviews on Entry detail

  • Release detail shows magazine refs, but entry detail does not aggregate them.
  • A user viewing an entry cannot see "reviewed in Crash #42, p.34" without drilling into each release.

8. Year / date filter on Entries

  • ZXDB has release_year on releases. No year facet on the entries explorer.
  • Users cannot browse "all games from 1985".

9. Availability type filter on Entries

  • availabletypes API route exists but is not a facet on the entries explorer.
  • Would allow filtering by "Never released", "MIA", etc.

10. Max players filter on Entries

  • entries.max_players exists but is not filterable.
  • Would enable "all multiplayer games".

11. Label type filter on Labels page

  • labeltypes table exists and roletypes API is served.
  • Cannot filter the labels list by type (person / company / team / magazine).

12. Country filter on Labels page

  • Labels have country_id but no filter on the list page.

13. Country / language filter on Magazines page

  • Magazine list has search but no country or language filter chips.

Missing Data on Detail Pages

14. Entry detail: magazine reviews section

  • search_by_magrefs is used in release detail but entry detail does not aggregate magazine references across all releases.
  • Same issue as #7 — the entry page should show a combined reviews/references panel.

15. Label detail: country display

  • Labels have country_id / country2_id but the detail page does not show them.
  • labels.link_wikipedia and labels.link_site exist but are not displayed on the label detail page.

17. Entry detail: related entries via same license

  • Licenses are shown per-entry but there is no click-through to "other games with this license".

Entirely Unsurfaced Datasets

18. NVGs

  • Table: nvgs
  • Historical download archive metadata. Not exposed anywhere.

19. SPEX entries / authors

  • Tables: spex_entries, spex_authors
  • No UI.

20. Awards

  • Table: zxsr_awards, referenced by magrefs.award_id
  • No awards browsing or display.

21. Review text

  • Table: zxsr_reviews (intro_text, review_text)
  • Magazine refs link to reviews by ID but the actual review text is never rendered.

22. Articles

  • Tables: articles, articletypes
  • No articles browsing.

Navigation / UX Gaps

23. No discovery mechanism

  • No "random entry", "on this day", or "featured" section. Common for large historic databases.

24. No stats / dashboard

  • No summary counts ("ZXDB has X entries, Y labels, Z magazines"). Would anchor the landing page.

Suggested Priority

Priority Items Rationale
High 7/14 (magazine refs on entry detail), 8 (year filter), 15-16 (label country + links) Data exists, just not wired up. High user value.
Medium 1 (countries), 5 (tags browse), 6 (licenses browse), 9 (availability filter), 24 (stats) New pages but straightforward queries.
Low 2-4 (tools/features/topics), 10-13 (additional filters), 17-22 (unsurfaced datasets), 23 (discovery) Useful but niche or requires more design work.