Build log.

Honest notes from each session — what broke, what we fixed, what we built. No polish. Just the work.

APR 02, 2026 v0.4.0 ENGINE

Engine Rebuild Decision

Decided to rebuild the in-house Python mesh engine from scratch directly into the FastAPI backend. The original stack — multiview.py, trace.py, loft.py, quality.py, export.py — was built for the Electron prototype and the files aren't accessible on this machine. Rather than recreate it with generic libraries, we're rebuilding module by module using the same architecture: multi-view depth merging → contour tracing → CadQuery lofting → Open3D Laplacian smoothing → vertex-color GLB. No PyTorch. No Blender.

APR 02, 2026 v0.3.8 FORGE

3-Way Reconstruction Routing

Added routing to forge_worker.py: HARD_SURFACE uses the CadQuery loft pipeline, ORGANIC uses Poisson reconstruction from a point cloud, NONE is a fast-pass for 2D-only assets. Tinker Mode now threads the prospect job ID through to Forge so a single locked image can seed the pipeline without completing Smelting.

APR 01, 2026 v0.3.5 SMELT

Smelting 400 Errors — Root Cause Found

Tracked down two root causes of Smelting 400 errors. First: a Python or None bug — False or None = None, so the IPAdapter override was being ignored and always defaulting to True even when the custom node wasn't installed. Second: ComfyUI's LoadImage node cannot read arbitrary OS paths — the reference image must be uploaded via /upload/image first. Both fixed. Also added an error state to the Smelting UI so failures show a message and retry button instead of silently resetting.

APR 01, 2026 v0.3.2 FRONTEND

Frontend / Backend Contract Drift Fixed

Reconciled a drift between the frontend and backend that was there from the start: the art style IDs in the UI's ART_STYLES array didn't match the backend's STYLE_MODIFIERS keys — both sides were written independently and never reconciled. Backend is now the source of truth. Also removed the dead svg_ready SSE handler from Prospecting — SVG generation had already moved to Smelting in a previous session and the frontend listener was never cleaned up. Fixed SVG regen path to use the absolute disk path stored in the job result rather than deriving it from the served URL.

MAR 30, 2026 v0.3.0 QUALITY

Generation Quality Pass

Upgraded generation quality across the board. Switched sampler from euler_ancestral at 25 steps to DPM++ 2M Karras at 30–35 steps. Added quality prompt tokens (masterpiece, best quality, highly detailed, sharp focus) to character, weapon, and prop configs. Strengthened negative prompts with oversaturation, flat shading, and low-detail terms. Moved rembg background removal entirely out of Prospecting — it now only runs in Smelting where it belongs, removing the 45s delay after generation that was blocking the done event.

MAR 28, 2026 v0.2.5 APP

Tinker Mode

Added Tinker Mode — a dev toggle that bypasses all pipeline gates. Lets you jump to any stage freely without completing previous stages. Useful for testing the Forge pipeline without waiting for a full Prospect → Smelt run. Toggle lives in the header. An amber banner shows when active. The gate bypass threads through App → Forge → MeshPipeline so the run button is enabled and the warning is hidden.