# 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
