|
5 | 5 | {"id":"taglib-wasm-2sq","title":"Verify WASM file resolution chain for npm consumers","description":"dist/index.js:177,179 references 'taglib.wasm' but actual files are taglib-web.wasm, taglib-wasi.wasm, taglib_wasi.wasm. Verify the Emscripten wrapper resolution actually works for npm consumers.","status":"closed","priority":1,"issue_type":"task","owner":"charles@wiltgen.net","created_at":"2026-02-10T15:48:46.140602-08:00","created_by":"Charles Wiltgen","updated_at":"2026-02-11T14:15:34.373221-08:00","closed_at":"2026-02-11T14:15:34.373221-08:00","close_reason":"Verified: dist/ is gitignored, CI rebuilds. taglib-wrapper.js correctly resolves taglib-web.wasm via import.meta.url relative to dist/.","dependencies":[{"issue_id":"taglib-wasm-2sq","depends_on_id":"taglib-wasm-ocp","type":"blocks","created_at":"2026-02-10T15:49:16.586931-08:00","created_by":"Charles Wiltgen"}]} |
6 | 6 | {"id":"taglib-wasm-2xw","title":"Add missing sidecar test coverage","description":"Add tests for: process crash mid-operation, malformed MessagePack responses, concurrent operations, shutdown during active operation, large responses.","status":"open","priority":2,"issue_type":"task","owner":"charles@wiltgen.net","created_at":"2026-02-09T12:26:47.415872-08:00","created_by":"Charles Wiltgen","updated_at":"2026-02-09T12:26:47.415872-08:00","dependencies":[{"issue_id":"taglib-wasm-2xw","depends_on_id":"taglib-wasm-s3m","type":"blocks","created_at":"2026-02-09T12:27:01.076368-08:00","created_by":"Charles Wiltgen"}]} |
7 | 7 | {"id":"taglib-wasm-2xx","title":"Rename simple API stragglers to read*/apply* convention","status":"closed","priority":2,"issue_type":"task","owner":"charles@wiltgen.net","created_at":"2026-02-11T17:49:35.612933-08:00","created_by":"Charles Wiltgen","updated_at":"2026-02-11T17:58:13.423294-08:00","closed_at":"2026-02-11T17:58:13.423294-08:00","close_reason":"Closed"} |
| 8 | +{"id":"taglib-wasm-2zu","title":"Split runtime/detector.ts (277 lines) into sub-modules","status":"open","priority":3,"issue_type":"task","owner":"charles@wiltgen.net","created_at":"2026-02-14T15:08:34.110363-08:00","created_by":"Charles Wiltgen","updated_at":"2026-02-14T15:08:34.110363-08:00"} |
8 | 9 | {"id":"taglib-wasm-3nc","title":"Remove ghost writeTags JSDoc reference","description":"index.ts:82 has @see writeTags - Deprecated alias for applyTags but writeTags does not exist as a public export. Misleading API docs.","status":"closed","priority":0,"issue_type":"bug","owner":"charles@wiltgen.net","created_at":"2026-02-10T15:48:56.749725-08:00","created_by":"Charles Wiltgen","updated_at":"2026-02-10T16:31:48.503321-08:00","closed_at":"2026-02-10T16:31:48.503321-08:00","close_reason":"Removed ghost writeTags JSDoc, fixed simple.ts example to use applyTags","dependencies":[{"issue_id":"taglib-wasm-3nc","depends_on_id":"taglib-wasm-ocp","type":"blocks","created_at":"2026-02-10T15:49:16.023444-08:00","created_by":"Charles Wiltgen"}]} |
9 | 10 | {"id":"taglib-wasm-40c","title":"Remove unused .husky/ directory (using .githooks/ instead)","status":"open","priority":3,"issue_type":"task","owner":"charles@wiltgen.net","created_at":"2026-02-11T10:16:11.625679-08:00","created_by":"Charles Wiltgen","updated_at":"2026-02-11T10:16:11.625679-08:00"} |
| 11 | +{"id":"taglib-wasm-41s","title":"Split msgpack/index.ts (326 lines) into sub-modules","status":"open","priority":3,"issue_type":"task","owner":"charles@wiltgen.net","created_at":"2026-02-14T15:08:32.554806-08:00","created_by":"Charles Wiltgen","updated_at":"2026-02-14T15:08:32.554806-08:00"} |
| 12 | +{"id":"taglib-wasm-46n","title":"Split msgpack/types.ts (296 lines) into sub-modules","status":"open","priority":3,"issue_type":"task","owner":"charles@wiltgen.net","created_at":"2026-02-14T15:08:33.198985-08:00","created_by":"Charles Wiltgen","updated_at":"2026-02-14T15:08:33.198985-08:00"} |
10 | 13 | {"id":"taglib-wasm-474","title":"Fix TagLibInitializationError code mismatch","description":"src/errors.ts:61 passes 'INITIALIZATION' but TagLibErrorCode type defines 'INITIALIZATION_FAILED'. Consumers matching on error.code will never match.","status":"closed","priority":0,"issue_type":"bug","owner":"charles@wiltgen.net","created_at":"2026-02-10T15:48:44.291233-08:00","created_by":"Charles Wiltgen","updated_at":"2026-02-10T16:31:46.846658-08:00","closed_at":"2026-02-10T16:31:46.846658-08:00","close_reason":"Normalized TagLibErrorCode type to match constructor values","dependencies":[{"issue_id":"taglib-wasm-474","depends_on_id":"taglib-wasm-ocp","type":"blocks","created_at":"2026-02-10T15:49:14.414764-08:00","created_by":"Charles Wiltgen"}]} |
11 | 14 | {"id":"taglib-wasm-51b","title":"Split src/folder-api.ts into directory module (697 lines → 250 max)","status":"open","priority":2,"issue_type":"task","owner":"charles@wiltgen.net","created_at":"2026-02-11T10:15:52.819249-08:00","created_by":"Charles Wiltgen","updated_at":"2026-02-11T10:15:52.819249-08:00"} |
12 | 15 | {"id":"taglib-wasm-52l","title":"Fix tags: {} violating Tag type in scan error paths","description":"In scanWithWorkerPool and scanWithTagLib (folder-api.ts), error paths return { path: filePath, tags: {}, error: err }. The empty object {} does not satisfy the Tag type which has required fields (title, artist, album, etc.). Consumers destructuring tag fields from error entries get undefined. Return a proper empty Tag with default values instead.","status":"closed","priority":3,"issue_type":"bug","owner":"charles@wiltgen.net","created_at":"2026-02-11T21:01:02.677645-08:00","created_by":"Charles Wiltgen","updated_at":"2026-02-11T21:08:34.321902-08:00","closed_at":"2026-02-11T21:08:34.321902-08:00","close_reason":"Fixed in folder-api.ts: removed duplicate I/O, shared progress ref, EMPTY_TAG constant"} |
|
31 | 34 | {"id":"taglib-wasm-d40","title":"Add taglib.edit() callback-scoped write method","status":"closed","priority":2,"issue_type":"feature","owner":"charles@wiltgen.net","created_at":"2026-02-11T17:49:41.170839-08:00","created_by":"Charles Wiltgen","updated_at":"2026-02-11T17:58:13.503854-08:00","closed_at":"2026-02-11T17:58:13.503854-08:00","close_reason":"Closed"} |
32 | 35 | {"id":"taglib-wasm-dcr","title":"Fix package author information","description":"package.json has placeholder author info. Update with correct details.","status":"open","priority":4,"issue_type":"task","owner":"charles@wiltgen.net","created_at":"2026-02-09T12:26:55.715643-08:00","created_by":"Charles Wiltgen","updated_at":"2026-02-09T12:26:55.715643-08:00"} |
33 | 36 | {"id":"taglib-wasm-dqn","title":"Increase test coverage from 64% to 80% target","status":"open","priority":2,"issue_type":"task","owner":"charles@wiltgen.net","created_at":"2026-02-11T10:16:42.209152-08:00","created_by":"Charles Wiltgen","updated_at":"2026-02-11T10:16:42.209152-08:00"} |
| 37 | +{"id":"taglib-wasm-dxw","title":"Split msgpack/encoder.ts (306 lines) into sub-modules","status":"open","priority":3,"issue_type":"task","owner":"charles@wiltgen.net","created_at":"2026-02-14T15:08:32.772235-08:00","created_by":"Charles Wiltgen","updated_at":"2026-02-14T15:08:32.772235-08:00"} |
34 | 38 | {"id":"taglib-wasm-e34","title":"Split src/simple.ts into directory module (1,229 lines → 250 max)","status":"open","priority":1,"issue_type":"task","owner":"charles@wiltgen.net","created_at":"2026-02-11T10:15:48.056678-08:00","created_by":"Charles Wiltgen","updated_at":"2026-02-11T10:15:48.056678-08:00"} |
35 | 39 | {"id":"taglib-wasm-f99","title":"Fix flaky concurrent operations performance test","description":"tests/taglib.test.ts:681 has 2000ms limit that is too tight for local runs (failed at 2070ms). Already skipped in CI. Consider 3000ms or env var for limit.","status":"closed","priority":2,"issue_type":"bug","owner":"charles@wiltgen.net","created_at":"2026-02-10T15:48:59.011246-08:00","created_by":"Charles Wiltgen","updated_at":"2026-02-11T13:59:22.86175-08:00","closed_at":"2026-02-11T13:59:22.86175-08:00","close_reason":"Assert total time across all formats instead of per-format","dependencies":[{"issue_id":"taglib-wasm-f99","depends_on_id":"taglib-wasm-ocp","type":"blocks","created_at":"2026-02-10T15:49:20.42287-08:00","created_by":"Charles Wiltgen"}]} |
36 | 40 | {"id":"taglib-wasm-gd4","title":"Remove unused imports in simple.ts and taglib-worker.ts","status":"open","priority":3,"issue_type":"task","owner":"charles@wiltgen.net","created_at":"2026-02-11T10:16:19.283189-08:00","created_by":"Charles Wiltgen","updated_at":"2026-02-11T10:16:19.283189-08:00"} |
| 41 | +{"id":"taglib-wasm-gid","title":"Split msgpack/decoder.ts (299 lines) into sub-modules","status":"open","priority":3,"issue_type":"task","owner":"charles@wiltgen.net","created_at":"2026-02-14T15:08:32.985379-08:00","created_by":"Charles Wiltgen","updated_at":"2026-02-14T15:08:32.985379-08:00"} |
37 | 42 | {"id":"taglib-wasm-gio","title":"Simplify AudioFile/AudioFileInterface dual export","description":"index.ts:41-44 exports class as AudioFile and interface as AudioFileInterface. Consumers see both in autocomplete, unclear which to use for type annotations.","status":"closed","priority":2,"issue_type":"task","owner":"charles@wiltgen.net","created_at":"2026-02-10T15:48:54.768786-08:00","created_by":"Charles Wiltgen","updated_at":"2026-02-11T14:15:41.074002-08:00","closed_at":"2026-02-11T14:15:41.074002-08:00","close_reason":"Removed AudioFileInterface type export from index.ts. The AudioFileImpl class (exported as AudioFile) already serves as both value and instance type in TypeScript, making the interface alias redundant.","dependencies":[{"issue_id":"taglib-wasm-gio","depends_on_id":"taglib-wasm-ocp","type":"blocks","created_at":"2026-02-10T15:49:19.372467-08:00","created_by":"Charles Wiltgen"}]} |
38 | 43 | {"id":"taglib-wasm-gqm","title":"Clean up stubs, docs, and memory files","status":"closed","priority":2,"issue_type":"task","owner":"charles@wiltgen.net","created_at":"2026-02-09T15:29:12.443559-08:00","created_by":"Charles Wiltgen","updated_at":"2026-02-09T15:37:04.285032-08:00","closed_at":"2026-02-09T15:37:04.285032-08:00","close_reason":"Closed","dependencies":[{"issue_id":"taglib-wasm-gqm","depends_on_id":"taglib-wasm-ss1","type":"blocks","created_at":"2026-02-09T15:29:17.868423-08:00","created_by":"Charles Wiltgen"}]} |
39 | 44 | {"id":"taglib-wasm-h5x","title":"All Emscripten-dependent tests must work via both backends","description":"Test quality gap: ~23 tests in taglib.test.ts + tests in picture-api, rating-api, extended-metadata, codec-detection, edge-cases, worker-pool, folder-api, partial-loading, and error-handling only test the Emscripten backend (via TagLib.initialize()). These tests fail in Deno because the unified loader selects WASI (which crashes via Wasmer SDK path). Root causes: (1) loadTagLibModule() in index.ts doesn't forward forceWasmType to the unified loader (2) The Wasmer SDK WASI path has function signature mismatches. Fix: Either fix the unified loader passthrough bug, or migrate these tests to use the backend-adapter.ts pattern (forEachBackend) so they run against both WASI and Emscripten. All user-facing features should be validated on BOTH backends.","status":"open","priority":1,"issue_type":"task","owner":"charles@wiltgen.net","created_at":"2026-02-10T09:02:19.21565-08:00","created_by":"Charles Wiltgen","updated_at":"2026-02-10T09:02:29.192038-08:00"} |
| 45 | +{"id":"taglib-wasm-ivd","title":"Split runtime/wasmtime-sidecar.ts (315 lines) into sub-modules","status":"open","priority":3,"issue_type":"task","owner":"charles@wiltgen.net","created_at":"2026-02-14T15:08:33.452723-08:00","created_by":"Charles Wiltgen","updated_at":"2026-02-14T15:08:33.452723-08:00"} |
40 | 46 | {"id":"taglib-wasm-iyc","title":"Phase 6: Integration workflow tests","status":"closed","priority":2,"issue_type":"task","owner":"charles@wiltgen.net","created_at":"2026-02-10T08:30:06.849544-08:00","created_by":"Charles Wiltgen","updated_at":"2026-02-10T08:57:28.865444-08:00","closed_at":"2026-02-10T08:57:28.865444-08:00","close_reason":"Integration (8 steps), unicode comprehensive (22 steps) pass for both backends.","dependencies":[{"issue_id":"taglib-wasm-iyc","depends_on_id":"taglib-wasm-9jz","type":"blocks","created_at":"2026-02-10T08:30:15.930859-08:00","created_by":"Charles Wiltgen"}]} |
41 | 47 | {"id":"taglib-wasm-j18","title":"Split src/runtime/wasi-adapter.ts (520 lines → 250 max)","status":"open","priority":3,"issue_type":"task","owner":"charles@wiltgen.net","created_at":"2026-02-11T10:16:16.322881-08:00","created_by":"Charles Wiltgen","updated_at":"2026-02-11T10:16:16.322881-08:00"} |
42 | 48 | {"id":"taglib-wasm-jzw","title":"Split src/workers.ts into directory module (492 lines → 250 max)","status":"open","priority":2,"issue_type":"task","owner":"charles@wiltgen.net","created_at":"2026-02-11T10:16:03.420326-08:00","created_by":"Charles Wiltgen","updated_at":"2026-02-11T10:16:03.420326-08:00"} |
43 | 49 | {"id":"taglib-wasm-kit","title":"Remove 6 stale build scripts from build/ (build-poc, build-wasi-test, build-dual, test-*)","status":"open","priority":2,"issue_type":"task","owner":"charles@wiltgen.net","created_at":"2026-02-11T10:16:04.423157-08:00","created_by":"Charles Wiltgen","updated_at":"2026-02-11T10:16:04.423157-08:00"} |
44 | 50 | {"id":"taglib-wasm-l64","title":"Fix duplicate worker pool reads in scanWithWorkerPool","description":"scanWithWorkerPool pre-fetches readTags/readProperties/readPictures, then processFileWithWorker makes the same 3 calls again. Every file is read from the worker pool twice. Remove the pre-fetch block (originally labeled 'warm up the worker pool') in folder-api.ts.","status":"closed","priority":3,"issue_type":"bug","owner":"charles@wiltgen.net","created_at":"2026-02-11T21:01:01.2838-08:00","created_by":"Charles Wiltgen","updated_at":"2026-02-11T21:08:34.116096-08:00","closed_at":"2026-02-11T21:08:34.116096-08:00","close_reason":"Fixed in folder-api.ts: removed duplicate I/O, shared progress ref, EMPTY_TAG constant"} |
| 51 | +{"id":"taglib-wasm-lyc","title":"Split runtime/wasi-host.ts (285 lines) into sub-modules","status":"open","priority":3,"issue_type":"task","owner":"charles@wiltgen.net","created_at":"2026-02-14T15:08:33.681276-08:00","created_by":"Charles Wiltgen","updated_at":"2026-02-14T15:08:33.681276-08:00"} |
45 | 52 | {"id":"taglib-wasm-m5t","title":"Split src/runtime/unified-loader.ts (360 lines → 250 max)","status":"open","priority":3,"issue_type":"task","owner":"charles@wiltgen.net","created_at":"2026-02-11T10:16:30.047209-08:00","created_by":"Charles Wiltgen","updated_at":"2026-02-11T10:16:30.047209-08:00"} |
46 | 53 | {"id":"taglib-wasm-me3","title":"Split src/runtime/wasi-loader.ts (412 lines → 250 max)","status":"open","priority":3,"issue_type":"task","owner":"charles@wiltgen.net","created_at":"2026-02-11T10:16:25.292612-08:00","created_by":"Charles Wiltgen","updated_at":"2026-02-11T10:16:25.292612-08:00"} |
47 | 54 | {"id":"taglib-wasm-nj0","title":"Update build scripts for WASI SDK 30","status":"closed","priority":2,"issue_type":"task","owner":"charles@wiltgen.net","created_at":"2026-02-09T15:29:08.473985-08:00","created_by":"Charles Wiltgen","updated_at":"2026-02-09T15:30:44.58087-08:00","closed_at":"2026-02-09T15:30:44.58087-08:00","close_reason":"Closed"} |
|
52 | 59 | {"id":"taglib-wasm-pfw","title":"Fix SonarCloud coverage path bug (hardcoded /Users/ in CI)","status":"open","priority":3,"issue_type":"bug","owner":"charles@wiltgen.net","created_at":"2026-02-11T10:16:46.295691-08:00","created_by":"Charles Wiltgen","updated_at":"2026-02-11T10:16:46.295691-08:00"} |
53 | 60 | {"id":"taglib-wasm-ptz","title":"Fix: Bun incorrectly triggers WASI loader path (GH #12)","description":"Bun sets process.versions.node for compat, so isNode() returns true. Bun gets detected as node-wasi, triggering the WASI path. Also, static import of @wasmer/sdk fails in non-Deno environments. Fix: add isBun() detection before Node checks, and make wasmer-sdk-loader import lazy.","status":"closed","priority":1,"issue_type":"bug","owner":"charles@wiltgen.net","created_at":"2026-02-11T14:55:39.64528-08:00","created_by":"Charles Wiltgen","updated_at":"2026-02-11T15:07:37.104721-08:00","closed_at":"2026-02-11T15:07:37.104721-08:00","close_reason":"Fixed: Bun now detected before Node.js, wasmer-sdk-loader import made lazy"} |
54 | 61 | {"id":"taglib-wasm-qof","title":"Split src/runtime/wasmer-sdk-loader.ts (472 lines → 250 max)","status":"open","priority":3,"issue_type":"task","owner":"charles@wiltgen.net","created_at":"2026-02-11T10:16:20.594599-08:00","created_by":"Charles Wiltgen","updated_at":"2026-02-11T10:16:20.594599-08:00"} |
| 62 | +{"id":"taglib-wasm-quu","title":"Split utils/file.ts (280 lines) into sub-modules","status":"open","priority":3,"issue_type":"task","owner":"charles@wiltgen.net","created_at":"2026-02-14T15:08:33.89746-08:00","created_by":"Charles Wiltgen","updated_at":"2026-02-14T15:08:33.89746-08:00"} |
55 | 63 | {"id":"taglib-wasm-r0h","title":"Phase 3: Backend-specific test fixes","status":"closed","priority":1,"issue_type":"task","owner":"charles@wiltgen.net","created_at":"2026-02-10T08:30:05.340119-08:00","created_by":"Charles Wiltgen","updated_at":"2026-02-10T08:38:47.740809-08:00","closed_at":"2026-02-10T08:38:47.740809-08:00","close_reason":"WASI write roundtrip: 12 tests pass for all 5 formats + unicode + overwrite.","dependencies":[{"issue_id":"taglib-wasm-r0h","depends_on_id":"taglib-wasm-ttp","type":"blocks","created_at":"2026-02-10T08:30:14.294613-08:00","created_by":"Charles Wiltgen"}]} |
56 | 64 | {"id":"taglib-wasm-s3m","title":"Harden sidecar — fix critical/high code review issues","description":"Fix 6 issues from code review: (1) Add try-finally in wasmtime-sidecar.ts #sendRequest()/#receiveResponse(), (2) Add path traversal validation in taglib_sidecar.c, (3) Fix buffer accumulation in #readExact() (pre-allocate from length prefix), (4) Add mutex/state machine for shutdown race condition, (5) Wrap setSidecarConfig() shutdown in try-finally, (6) Add max length validation for mpack strings in C.","status":"closed","priority":1,"issue_type":"bug","owner":"charles@wiltgen.net","created_at":"2026-02-09T12:26:45.173216-08:00","created_by":"Charles Wiltgen","updated_at":"2026-02-09T13:13:51.046143-08:00","closed_at":"2026-02-09T13:13:51.046143-08:00","close_reason":"C shim now supports path-based access. WASI stubs updated for new binary signatures. Sidecar binary rebuilt with path_open imports."} |
57 | 65 | {"id":"taglib-wasm-ss1","title":"Refactor taglib_shim.cpp to use FileRef","status":"closed","priority":2,"issue_type":"task","owner":"charles@wiltgen.net","created_at":"2026-02-09T15:29:10.785164-08:00","created_by":"Charles Wiltgen","updated_at":"2026-02-09T15:32:35.55565-08:00","closed_at":"2026-02-09T15:32:35.55565-08:00","close_reason":"Closed","dependencies":[{"issue_id":"taglib-wasm-ss1","depends_on_id":"taglib-wasm-yi4","type":"blocks","created_at":"2026-02-09T15:29:17.594843-08:00","created_by":"Charles Wiltgen"}]} |
|
0 commit comments