diff --git a/docs/changelog.md b/docs/changelog.md new file mode 100644 index 0000000..13dd93e --- /dev/null +++ b/docs/changelog.md @@ -0,0 +1,89 @@ +# Changelog 📜 + +All notable changes to Next Explorer, in roughly chronological order. + +--- + +## 🚧 v0.3.0 — Tapes, Hashes & Downloads *(unreleased, Feb 2026)* + +The great "what IS this .tap file?" release. ZXDB downloads become first-class citizens with local mirroring, grouping, inline previews, and now the ability to identify a tape by dropping it on the page. + +### ✨ New +- **Tape Identifier** — drag-and-drop a `.tap`/`.tzx`/`.p`/`.o` file onto `/zxdb` and get instant ZXDB entry matches based on SHA-256 hash lookup 🎯 +- **Software hashes database** — 32,960-row snapshot of SHA-256 hashes for known ZXDB downloads, with a pipeline script (`update-software-hashes.mjs`) to rebuild/extend it +- **Local ZXDB / WoS mirror support** — proxy downloads through the app's own API so self-hosted mirrors work seamlessly; inline previews rendered without leaving the page +- **Magazine reviews** — reviews now shown on magazine issue pages +- **Label detail pages** — full label view with releases, genre breakdown, and year filtering +- **Year filter** on releases/entries + +### 🔧 Improved +- Download viewer reworked: grouped by format, inline previews, human-readable sizes +- Local file path resolution corrected for edge-cases +- Silently skip `/denied/` and other non-hosted prefixes during hash imports + +--- + +## ✅ v0.2.0 — ZXDB Explorer *(December 2025 – January 2026)* + +The big one. A full cross-linked browser for the ZXDB software database, server-rendered for fast first paint, with deep links everywhere. + +### ✨ New +- **ZXDB integration** — MySQL via `mysql2` + Drizzle ORM; Zod-validated env (`ZXDB_URL`) +- **Entries browser** — search, paginate, filter; deep-links to individual entry pages +- **Entry detail pages** — aliases, web references, relations, tags, ports, scores, origins, facets 🗂️ +- **Releases browser** — filterable by machine type, genre, label, year; download links +- **Labels browser + detail** — label pages with linked releases +- **Genres, Languages, Machine Types** — category hubs with entry counts +- **Magazines + Issues** — stub magazine browser with issue listing +- **Cross-linked UI** — `EntryLink` component used everywhere; Next `Link` for prefetching +- **SSR + ISR** — index pages server-render initial data; `revalidate = 3600` on non-search pages for fast repeat visits +- **Multi-select machine type filter** with chip toggles; favouring Next hardware by default +- **Shared explorer components** — `ExplorerLayout`, `FilterSidebar`, `FilterSection`, `MultiSelectChips`, `Pagination` 🧩 +- **Breadcrumbs** decoupled from search input +- **Landing page** for `/zxdb` with hub links and hero +- **Deploy helper** script (`bin/deploy.sh`) +- **OG images** for register pages (happy new year from Codex 🎉) + +### 🔧 Improved +- ZXDB pagination counters fixed +- Facets filter aliasing corrected +- Case-insensitive search improvements +- Graceful handling of missing `releases` / `downloads` schema tables +- Homepage hero updated +- Registers sidebar refactored to share explorer components + +### 🏗️ Infrastructure +- Zod env validation for all ZXDB config +- `information_schema.tables` check before querying optional tables +- API routes under `/api/zxdb/*` with Zod input validation, Node runtime +- ZXDB setup guide at `docs/ZXDB.md` + +--- + +## ✅ v0.1.0 — Registers Explorer *(October – November 2025)* + +The origin story. Started from a Create Next App scaffold with a GPT-5 assist, then heavily hand-crafted into something actually useful for exploring Spectrum Next hardware registers. + +### ✨ New +- **Register browser** — loads and parses `data/nextreg.txt`; real-time search/filter with results at a glance +- **Register detail pages** — per-mode bitfield views (read/write/common), notes, and source modal +- **Source viewer** — inline modal showing the raw `nextreg.txt` source for any register +- **Wikilink support** — links parsed from register definitions and rendered as external refs +- **Multi-parser architecture** — `reg_default.ts` for standard registers; `reg_f0.ts` for the exotic `0xF0` register; easy to extend 🔌 +- **Multi-line footnote support** — parser handles footnotes that span multiple lines +- **Deep-linkable search** — `?q=` query param synced to the search box so searches can be bookmarked/shared 🔗 +- **Dark mode** — cookie-based theme set server-side to eliminate flash-of-wrong-theme ☀️🌙 +- **Bootswatch Pulse theme** — purple primary; react-bootstrap throughout + +### 🔧 Improved +- iOS bitfield fix — prevent Safari turning hex values into tappable phone numbers 📱 +- Parser on-demand (lazy load, not at startup) +- Robust case-insensitive search +- Linting and dead code removed; hallucination CSS cleaned up +- Dokku build pipeline stabilised (pnpm store-dir pinned) +- Next.js security bump (Dec 2025) + +### 🏗️ Infrastructure +- Project self-documents via `CLAUDE.md` / `AGENT.md` +- Live `nextreg.txt` used (not bundled snapshot) +- Dev runner fixed for local development