<feed xmlns='http://www.w3.org/2005/Atom'>
<title>demo.git/cnn_v3/tools/index.html, branch main</title>
<subtitle>Vide-coded 64k demo system</subtitle>
<id>https://git.taar-o.com/demo.git/atom?h=main</id>
<link rel='self' href='https://git.taar-o.com/demo.git/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.taar-o.com/demo.git/'/>
<updated>2026-03-25T05:25:53Z</updated>
<entry>
<title>feat(cnn_v3/tools): embed default weights in HTML tool; add --html export flag</title>
<updated>2026-03-25T05:25:53Z</updated>
<author>
<name>skal</name>
<email>pascal.massimino@gmail.com</email>
</author>
<published>2026-03-25T05:25:53Z</published>
<link rel='alternate' type='text/html' href='https://git.taar-o.com/demo.git/commit/?id=a71c95c8caf7e570c3f484ce1a53b7acb5ef2006'/>
<id>urn:sha1:a71c95c8caf7e570c3f484ce1a53b7acb5ef2006</id>
<content type='text'>
- cnn_v3/tools/weights.js: new file — base64-encoded cnn_v3_weights.bin +
  cnn_v3_film_mlp.bin; loaded at startup so the tool works without dropping files
- tester.js: preload() falls back to embedded weights.js constants when fetch
  fails; logs "Loaded embedded" vs "Preloaded" to distinguish the two paths
- index.html: load weights.js before tester.js
- export_cnn_v3_weights.py: add --html / --html-output flags that call
  update_weights_js() to regenerate weights.js after a training run
- HOW_TO_CNN.md: update pipeline diagram, §3 export commands, §7 HTML tool
  section (file table, workflow, weights.js description), Appendix A

handoff(Gemini): weights.js now the canonical source for HTML tool defaults;
regenerate with `uv run export_cnn_v3_weights.py &lt;ckpt&gt; --output ... --html`
</content>
</entry>
<entry>
<title>fix(cnn_v3/tools): zoom canvas fits remaining panel space (both axes, rAF measure)</title>
<updated>2026-03-22T15:40:02Z</updated>
<author>
<name>skal</name>
<email>pascal.massimino@gmail.com</email>
</author>
<published>2026-03-22T15:40:02Z</published>
<link rel='alternate' type='text/html' href='https://git.taar-o.com/demo.git/commit/?id=31c6287f58b128f3e9a8a7bca5b09befa7fc96b5'/>
<id>urn:sha1:31c6287f58b128f3e9a8a7bca5b09befa7fc96b5</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix(cnn_v3/tools): zoom channel via WebGPU re-render + fill panel width</title>
<updated>2026-03-22T15:36:28Z</updated>
<author>
<name>skal</name>
<email>pascal.massimino@gmail.com</email>
</author>
<published>2026-03-22T15:36:28Z</published>
<link rel='alternate' type='text/html' href='https://git.taar-o.com/demo.git/commit/?id=7249a40c54e9ce3fc144a37f7c1ff8c082e62191'/>
<id>urn:sha1:7249a40c54e9ce3fc144a37f7c1ff8c082e62191</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat(cnn_v3/tools): click vignette to show enlarged channel below grid</title>
<updated>2026-03-22T15:34:22Z</updated>
<author>
<name>skal</name>
<email>pascal.massimino@gmail.com</email>
</author>
<published>2026-03-22T15:34:22Z</published>
<link rel='alternate' type='text/html' href='https://git.taar-o.com/demo.git/commit/?id=856bcae814a69611d8619cc2f9944a0c476141fd'/>
<id>urn:sha1:856bcae814a69611d8619cc2f9944a0c476141fd</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat(cnn_v3): add G-buffer visualizer + web sample loader (Phase 7)</title>
<updated>2026-03-22T15:21:25Z</updated>
<author>
<name>skal</name>
<email>pascal.massimino@gmail.com</email>
</author>
<published>2026-03-22T15:21:25Z</published>
<link rel='alternate' type='text/html' href='https://git.taar-o.com/demo.git/commit/?id=159ca2ca19345515cdfebed9fd88646730492cd2'/>
<id>urn:sha1:159ca2ca19345515cdfebed9fd88646730492cd2</id>
<content type='text'>
C++ GBufViewEffect: renders all 20 feature channels from feat_tex0/feat_tex1
in a 4×5 tiled grid. Custom BGL with WGPUTextureSampleType_Uint; bind group
rebuilt per frame via wgpuRenderPipelineGetBindGroupLayout.

Web tool: "Load sample directory" button — webkitdirectory picker, FULL_PACK_SHADER
compute (matches gbuf_pack.wgsl packing), runFromFeat() skips photo-pack step,
computePSNR() readback + comparison vs target.png side-by-side.

36/36 tests pass. Docs updated: HOWTO.md §9, README, PROJECT_CONTEXT, TODO,
COMPLETED.

handoff(Gemini): CNN v3 Phase 7 done. Next: run train_cnn_v3.py (see HOWTO §3).
</content>
</entry>
<entry>
<title>fix(cnn_v3/tools): fix getElementById illegal invocation + auto-preload weights</title>
<updated>2026-03-22T12:25:20Z</updated>
<author>
<name>skal</name>
<email>pascal.massimino@gmail.com</email>
</author>
<published>2026-03-22T12:25:20Z</published>
<link rel='alternate' type='text/html' href='https://git.taar-o.com/demo.git/commit/?id=c8d5c02bae82e506f6bb507c9ed07aeba3a1bb87'/>
<id>urn:sha1:c8d5c02bae82e506f6bb507c9ed07aeba3a1bb87</id>
<content type='text'>
- Bind document.getElementById in filmParams() to fix 'Illegal invocation' error
- Add preload() that auto-fetches cnn_v3_weights.bin + cnn_v3_film_mlp.bin from
  workspaces/main/weights/ on init; skips silently if files not found
- Add '↺ Reload from workspace weights/' button for manual re-fetch

handoff(Gemini): cnn_v3 web tool fixed; serve from repo root via http.server
</content>
</entry>
<entry>
<title>feat(cnn_v3): HTML WebGPU tool (index.html + shaders.js + tester.js)</title>
<updated>2026-03-21T09:50:02Z</updated>
<author>
<name>skal</name>
<email>pascal.massimino@gmail.com</email>
</author>
<published>2026-03-21T09:50:02Z</published>
<link rel='alternate' type='text/html' href='https://git.taar-o.com/demo.git/commit/?id=35355b17576e93b035a2a78ecd05771e98f068ee'/>
<id>urn:sha1:35355b17576e93b035a2a78ecd05771e98f068ee</id>
<content type='text'>
3-file tool, 939 lines total. Implements full U-Net+FiLM inference in
the browser: Pack→Enc0→Enc1→Bottleneck→Dec1→Dec0 compute passes,
layer visualisation (Feat/Enc0/Enc1/BN/Dec1/Output), FiLM MLP sliders,
drag-drop weights + image/video, Save PNG, diff/blend view modes.

HOW_TO_CNN.md §7 updated to reflect tool is implemented.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
</feed>
