# WIP: Tape Identifier Dropzone **Branch:** `feature/software-hashes` **Started:** 2026-02-17 **Status:** Complete ## Plan Implements the tape identifier feature from [docs/plans/tape-identifier.md](tape-identifier.md). Drop a tape file on the /zxdb page → client computes MD5 + size → server action looks up `software_hashes` → returns identified ZXDB entry. ### Tasks - [x] Add `lookupByMd5()` to `src/server/repo/zxdb.ts` - [x] Create `src/utils/md5.ts` — pure-JS MD5 for browser - [x] Create `src/app/zxdb/actions.ts` — server action `identifyTape` - [x] Create `src/app/zxdb/TapeIdentifier.tsx` — client component with dropzone - [x] Insert `` into `src/app/zxdb/page.tsx` - [ ] Verify on http://localhost:4000/zxdb ## Progress Log ### 2026-02-17T00:00 - Started work. Continuing on `feature/software-hashes` at `e27a16e`. ### 2026-02-17T00:01 - All implementation complete. Type check passes. Ready for visual verification. ## Decisions & Notes - Uses RSC server actions (not API routes) to discourage bulk scripting. - MD5 computed client-side; file never leaves the browser. - No new npm dependencies — pure-JS MD5 implementation (~130 lines). - TapeIdentifier placed between hero and "Start exploring" grid in a row layout with explanatory text alongside. ## Blockers None. ## Commits fc513c5 - wip: start tape identifier — init progress tracker 8624050 - feat: add tape identifier dropzone on /zxdb