feat: Sample Tag Viewer — read-only tag browser for AKAI disk images #17

Merged
david merged 5 commits from feat/sample-tag-editor into main 2026-06-22 18:13:53 +00:00

5 Commits

Author SHA1 Message Date
david 7e9419e119 fix: validate ISO path is a file, not a directory; clear default value 2026-06-22 05:14:18 -07:00
david ebce8fded8 fix: return empty arrays instead of null in listPartitions, listVolumes, handleDiskVolumes 2026-06-22 04:52:55 -07:00
david 190c79487f fix: return empty array instead of null for tagless volumes 2026-06-22 04:47:29 -07:00
david a489d523e3 fix: add null/HTTP checks to tag viewer API calls
- browseISO: resp.ok + data null check before accessing data.error
- selectPartition: resp.ok + data null check
- viewVolumeTags: resp.ok + data null check
- Fixed v.Name → v.name (JSON keys are lowercase from volInfo tags)

Prevents 'Cannot read properties of null (reading error)'
2026-06-22 04:20:01 -07:00
david 568691542a feat: Sample Tag Viewer — read-only tag browser for AKAI disk images
Backend:
- extract.go: listTags() navigates to volume, runs akaiutil lstags
- extract.go: parseTags() parses tag name/index from lstags output
- serve.go: GET /api/disk/partitions — list partitions on an ISO
- serve.go: GET /api/disk/volumes — list volumes on a partition
- serve.go: GET /api/volume/tags — list tags on a volume

Web UI:
- Tag Viewer section with ISO path input and Browse button
- Partition selector buttons
- Volume grid with click-to-select
- Tag chips with color-coded dots (20-color palette)

Tests:
- 6 parseTags tests (basic, spaces, defaults, no tags, empty, no-type)
- 1 listTags integration test
- 4 API endpoint tests (partitions, missing-ISO, missing-params, tags)

Karpathy: read-only view first — no write operations yet (settagi, clrtagi)
2026-06-22 03:21:54 -07:00