@@ -697,3 +697,129 @@ Size Comparison:
697697- Browser integration polish F15 remains (packaging/treeshake verification)
698698
699699---
700+
701+ ## Round 2025-12-16 (39) — Browser polish F15 + WASM baked-in extensions
702+
703+ ** Tasks executed**
704+ - ` .tasks/done/TASK-065-browser-multitab-integration-polish.md `
705+ - ` .tasks/done/TASK-067-zig-wasm-baked-in-extensions.md `
706+
707+ ** Commits**
708+ - ` 5dc8b4ce ` — delegate round 39: browser polish F15 + WASM baked-in extensions (sqlite-vec/FTS5/JSONB)
709+
710+ ** Modified files (root repo)**
711+ - ` zig/wasm-build/build-sqlite-wasm.sh ` — Added sqlite-vec v0.1.6 download and linking
712+ - ` zig/browser-test/tests/crsql-wasm.spec.ts ` — Added 12 new extension tests
713+ - ` zig/browser-test/fixtures/sql-wasm.js ` — Rebuilt WASM bundle
714+ - ` zig/browser-test/fixtures/sql-wasm.wasm ` — Rebuilt WASM bundle
715+ - ` zig/browser-dist/sql-wasm.js ` — Rebuilt WASM bundle
716+ - ` zig/browser-dist/sql-wasm.wasm ` — Rebuilt WASM bundle
717+ - ` .tasks/done/TASK-065-browser-multitab-integration-polish.md ` — Completed (moved from backlog)
718+ - ` .tasks/done/TASK-067-zig-wasm-baked-in-extensions.md ` — Completed (moved from backlog)
719+ - ` research/zig-cr/92-gap-backlog.md ` — Updated status
720+
721+ ** Environment**
722+ - OS: darwin (macOS ARM64)
723+ - Tooling: pnpm, vitest 3.2.4, nix, zig (via nix), playwright
724+
725+ ** Commands run (exact)**
726+ ``` bash
727+ # TASK-065 verification
728+ pnpm -F @effect-native/crsql-mesh check
729+ pnpm -F @effect-native/crsql-mesh test --run
730+ pnpm --filter " @effect-native/crsql-mesh" build
731+
732+ # TASK-067 verification
733+ make -C zig test-browser
734+ ```
735+
736+ ** Outputs (paste)**
737+
738+ <details >
739+ <summary >TASK-065: crsql-mesh tests (81 pass) + TypeScript check + build</summary >
740+
741+ ``` text
742+ $ pnpm -F @effect-native/crsql-mesh check
743+ > tsc -b tsconfig.json
744+ (no errors)
745+
746+ $ pnpm -F @effect-native/crsql-mesh test --run
747+ ✓ test/browser/coordinator-sw.test.ts (12 tests) 5ms
748+ ✓ test/browser/coordinator.test.ts (18 tests) 13ms
749+ ✓ test/browser/provider.test.ts (25 tests) 43ms
750+ ✓ test/IntegrationSqlite.test.ts (3 tests) 31ms
751+ ✓ test/Receive.test.ts (4 tests) 43ms
752+ ✓ test/Mesh.test.ts (7 tests) 110ms
753+ ✓ test/VersionVector.test.ts (3 tests) 44ms
754+ ✓ test/Integration.test.ts (4 tests) 54ms
755+ ✓ test/Apply.test.ts (5 tests) 60ms
756+
757+ Test Files 9 passed (9)
758+ Tests 81 passed (81)
759+
760+ $ pnpm --filter "@effect-native/crsql-mesh" build
761+ Successfully compiled 11 files with Babel
762+ ```
763+
764+ ** Result:** No code changes needed — exports already tree-shakeable, no node-only dependencies, clean public surface.
765+ </details >
766+
767+ <details >
768+ <summary >TASK-067: browser tests (30 pass)</summary >
769+
770+ ``` text
771+ $ make -C zig test-browser
772+ Running 30 tests using 2 workers
773+
774+ ✓ 1 tests/multitab-basic.spec.ts › Multi-tab Database Coordination › two tabs can connect to SharedWorker
775+ ✓ 2 tests/crsql-wasm.spec.ts › SQLite WASM in Browser › sql.js loads and initializes successfully
776+ ... (18 existing tests)
777+ ✓ 19 tests/crsql-wasm.spec.ts › Baked-in Extensions › FTS5 › FTS5 virtual table can be created
778+ ✓ 20 tests/crsql-wasm.spec.ts › Baked-in Extensions › FTS5 › FTS5 full-text search works
779+ ✓ 21 tests/crsql-wasm.spec.ts › Baked-in Extensions › JSON/JSONB Functions › json() function works
780+ ✓ 22 tests/crsql-wasm.spec.ts › Baked-in Extensions › JSON/JSONB Functions › json_extract() function works
781+ ✓ 23 tests/crsql-wasm.spec.ts › Baked-in Extensions › JSON/JSONB Functions › jsonb() function works (SQLite 3.45+)
782+ ✓ 24 tests/crsql-wasm.spec.ts › Baked-in Extensions › JSON/JSONB Functions › json_array() and json_object() work
783+ ✓ 25 tests/crsql-wasm.spec.ts › Baked-in Extensions › sqlite-vec Extension › vec_version() returns a version string
784+ ✓ 26 tests/crsql-wasm.spec.ts › Baked-in Extensions › sqlite-vec Extension › vec_f32() creates a float32 vector
785+ ✓ 27 tests/crsql-wasm.spec.ts › Baked-in Extensions › sqlite-vec Extension › vec_distance_l2() calculates L2 distance
786+ ✓ 28 tests/crsql-wasm.spec.ts › Baked-in Extensions › sqlite-vec Extension › vec_distance_cosine() calculates cosine distance
787+ ✓ 29 tests/crsql-wasm.spec.ts › Baked-in Extensions › sqlite-vec Extension › vec0 virtual table can be created
788+ ✓ 30 tests/crsql-wasm.spec.ts › Baked-in Extensions › sqlite-vec Extension › vec0 supports vector insert and KNN query
789+
790+ 30 passed (18.0s)
791+ ```
792+
793+ ** Extensions baked in:**
794+ - ** FTS5** : Full-text search (compile-time flag)
795+ - ** JSON/JSONB** : JSON1 + JSONB (compile-time flags, JSONB in SQLite 3.45+)
796+ - ** sqlite-vec v0.1.6** : Vector similarity search (statically linked)
797+
798+ ** WASM size:** 1,440,717 bytes (increased ~ 100KB due to sqlite-vec)
799+ </details >
800+
801+ ** Reproduction steps (clean checkout)**
802+ 1 . ` git clone <repo> && cd cr-sqlite `
803+ 2 . ` cd effect-native && pnpm install `
804+ 3 . ` pnpm -F @effect-native/crsql-mesh check `
805+ 4 . ` pnpm -F @effect-native/crsql-mesh test --run `
806+ 5 . ` pnpm --filter "@effect-native/crsql-mesh" build `
807+ 6 . ` make -C zig test-browser `
808+
809+ ** Work summary**
810+ 1 . ** TASK-065 (F15)** : Browser multi-tab integration polish — verified already correct, no changes needed
811+ - Tree-shakeability: explicit named exports, no barrel files
812+ - No node-only dependencies: zero external imports in browser modules
813+ - Clean public surface: Browser namespace export + direct imports supported
814+
815+ 2 . ** TASK-067** : WASM baked-in extensions
816+ - Added sqlite-vec v0.1.6 download and static linking
817+ - FTS5 and JSONB already enabled via compile flags
818+ - 12 new tests proving each extension works
819+ - WASM size increased by ~ 100KB (acceptable tradeoff for features)
820+
821+ ** Known gaps / unverified claims**
822+ - No coverage captured
823+ - ` .wishes/wasm-extras.md ` satisfied — could move to ` .wishes/done/ `
824+
825+ ---
0 commit comments