| Age | Commit message (Expand) | Author |
| 13 hours | fix(cnn_v3): L1 loss + depth-grad tanh normalization to reduce flat convergenceHEADmain | skal |
| 14 hours | fix(cnn_v3): remove dec0 ReLU, load FiLM MLP at runtime | skal |
| 38 hours | fix(cnn_v3/training): fix defaults and help strings across py tools | skal |
| 38 hours | feat(cnn_v3): upgrade architecture to enc_channels=[8,16] | skal |
| 47 hours | fix(cnn_v3/training): rebuild optimizer before loading state on resume past F... | skal |
| 2 days | feat(cnn_v3/training): load prev.png when available; document web tool prev gap | skal |
| 2 days | feat(cnn_v3): 3×3 dilated bottleneck + Sobel loss + FiLM warmup + architectu... | skal |
| 3 days | feat(cnn_v3/training): add --single-sample option + doc fixes | skal |
| 3 days | feat(cnn_v3): add infer_cnn_v3.py + rewrite cnn_test for v3 parity | skal |
| 3 days | feat(cnn_v3/tools): embed default weights in HTML tool; add --html export flag | skal |
| 3 days | add more samples + tool html | skal |
| 3 days | move and improve the 'adjust.html' tool | skal |
| 4 days | add a registration tool | skal |
| 5 days | feat(cnn_v3): shadow→dif migration complete (ch18) | skal |
| 5 days | add full dataset | skal |
| 5 days | feat(cnn_v3): add weight assets to assets.txt, update HOW_TO_CNN export docs | skal |
| 5 days | docs(cnn_v3): add uv inline deps to export_cnn_v3_weights.py | skal |
| 5 days | fix size | skal |
| 5 days | feat(cnn_v3): patch alignment search, resume, Ctrl-C save | skal |
| 5 days | normalize sample dimension | skal |
| 5 days | docs(cnn_v3): add uv inline deps to train_cnn_v3.py + HOW_TO_CNN note | skal |
| 5 days | perf(cnn_v3): cache dataset images at init to avoid per-patch disk I/O | skal |
| 5 days | fix(cnn_v3): correct weight budget in docstring (3.9→5.4 KB f16) | skal |
| 5 days | fix(cnn_v3): resize target to albedo dims when sizes differ | skal |
| 5 days | docs(cnn_v3): add full Old House example to HOW_TO_CNN §1b | skal |
| 5 days | fix(cnn_v3): native OPEN_EXR_MULTILAYER + quiet render + flexible channel names | skal |
| 5 days | fix(blender_export): version detection + Blender 5.x warning + cleanup | skal |
| 6 days | fix(cnn_v3): blender_export Blender 5 compositor activation + document Render... | skal |
| 6 days | feat(cnn_v3): blender_export print pack_blender_sample.py batch command after... | skal |
| 6 days | fix(cnn_v3): blender_export fallback socket name aliases for Shadow etc. | skal |
| 6 days | fix(cnn_v3): blender_export discard dir next to --output, not in /tmp | skal |
| 6 days | fix(cnn_v3): blender_export.py Blender 5 File Output node slots + file_name | skal |
| 6 days | docs(cnn_v3): clarify --output is a base dir, not a frame_### pattern | skal |
| 6 days | fix(cnn_v3): blender_export.py Blender 5.x API compatibility | skal |
| 6 days | fix(cnn_v3): blender_export --view-layer flag + fallback to layer[0] | skal |
| 6 days | feat(cnn_v3): gen_sample tool + 7 simple training samples | skal |
| 6 days | feat(cnn_v3): gen_sample tool + 7 simple training samples | skal |
| 6 days | feat(cnn_v3): gen_sample tool + 7 simple training samples | skal |
| 6 days | refactor(cnn_v3): code review — comments, simplifications, test fix | skal |
| 6 days | feat(cnn_v3): export script + HOW_TO_CNN.md playbook | skal |
| 6 days | feat(cnn_v3): Phase 6 — training script (train_cnn_v3.py + cnn_v3_utils.py) | skal |
| 6 days | feat(cnn_v3): Phase 5 complete — parity validation passing (36/36 tests) | skal |
| 8 days | feat(cnn_v3): G-buffer phase 1 + training infrastructure | skal |
| 2026-03-05 | add training photos | skal |
| 2026-02-27 | remove old files, add new training set | skal |
| 2026-02-15 | feat(cnn): add CNN v3 directory structure with training data | skal |