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
Owner

Issue

Closes #8 (read-only tag viewing — phase 1)

Summary

Backend

  • extract.go: listTags() navigates to volume, runs akaiutil lstags, parses output
  • extract.go: parseTags() parses tag name/index from lstags output
  • serve.go: GET /api/disk/partitions?iso= — list partitions
  • serve.go: GET /api/disk/volumes?iso=&part= — list volumes
  • serve.go: GET /api/volume/tags?iso=&part=&vol= — list tags

Web UI

  • Tag Viewer section with ISO path input and Browse button
  • Partition selector buttons, volume grid, tag chips with color-coded dots (20-color palette)

Testing

  • Go tests: 11 new (6 parseTags, 1 listTags, 4 API handlers)
  • Coverage: 64.8%, all pass
  • ESLint: 0 issues, golangci-lint: 0 issues

Karpathy Principle

Read-only view first (lstags is read-only). Write operations (settagi, clrtagi, inittags) planned for phase 2.

## Issue Closes #8 (read-only tag viewing — phase 1) ## Summary ### Backend - `extract.go`: `listTags()` navigates to volume, runs akaiutil `lstags`, parses output - `extract.go`: `parseTags()` parses tag name/index from lstags output - `serve.go`: `GET /api/disk/partitions?iso=` — list partitions - `serve.go`: `GET /api/disk/volumes?iso=&part=` — list volumes - `serve.go`: `GET /api/volume/tags?iso=&part=&vol=` — list tags ### Web UI - Tag Viewer section with ISO path input and Browse button - Partition selector buttons, volume grid, tag chips with color-coded dots (20-color palette) ### Testing - Go tests: 11 new (6 parseTags, 1 listTags, 4 API handlers) - Coverage: 64.8%, all pass - ESLint: 0 issues, golangci-lint: 0 issues ### Karpathy Principle Read-only view first (lstags is read-only). Write operations (settagi, clrtagi, inittags) planned for phase 2.
david added 1 commit 2026-06-22 11:14:44 +00:00
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)
david added 1 commit 2026-06-22 11:20:04 +00:00
- 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)'
david added 1 commit 2026-06-22 11:47:34 +00:00
david added 1 commit 2026-06-22 11:53:01 +00:00
david added 1 commit 2026-06-22 12:14:21 +00:00
david merged commit 7e9419e119 into main 2026-06-22 18:13:53 +00:00
david deleted branch feat/sample-tag-editor 2026-06-22 18:13:53 +00:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: david/akai-utils#17