This project has not tagged a release yet — everything below describes
develop branch history. Reconstructed from git log, not hand-maintained
during development, so treat it as a summary of what happened, not a
promise of exact chronological order within each entry.
Ran a long stabilization phase: fixing and test-covering what already
existed before adding features. That phase is now substantively complete
(see NEXT.md for current status); the original policy document is
archived at docs/history/STABILIZATION.md. See plan.md for the active
backlog. Live task counts are tracked in plan.md/NEXT.md, not
duplicated here (they went stale the last time they were).
Highlights from the stabilization phase so far:
- Full XML round-trip test coverage for all 10 primitive types and all N1–N7 schema extensions, including edge cases.
- MCB binary format round-trip test coverage (base scene + all N1–N7 extension types).
- XSD validation fixtures for every schema section, including a
from-scratch audit that found and fixed 8 real gaps between
mc3.xsdand whatMc3XmlWriter.cppactually writes (objectid,layer, per-object<state>, instancematerial_override/variants,uv_mapping's real attributes, environmentbackground_texture/skybox_texture, texturename) — plus one genuine round-trip bug found along the way (texture rename was silently discarded on save/reload). - Mock-HTTP-server test coverage for the AI Assistant integration (no real network call needed) and real XSD validation of AI-generated scene XML before it can be applied.
- Editor undo/redo, save/load, auto-save, and dialog-lifecycle test coverage across the whole command surface.
- A security/robustness pass (S19): confirmed the API key is never persisted to disk or logged, SQLite queries are fully parameterized, and the parser handles hostile inputs (path traversal, a 10MB malformed-XML file, a 10MB texture URI) without crashing or hanging.
--versionCLI flag and a project version number (0.1.0).
Chronological by when each landed, reconstructed from git log's
lettered commit-message convention:
- M1 —
<include file="…"/>: share definitions/materials/textures across scenes without inlining them. - M2 — Model Registry: SQLite-backed library of reusable model definitions, browsable and insertable from the editor.
- M3 — AI Assistant: Claude API integration — describe a change in natural language, review the generated scene XML, apply it or save individual definitions to the registry.
- N1–N7 — schema extensions: SVG textures, embedded glTF, Lua
scripts, sound/music, triggers, scene states, and a general-purpose
meta key/value map. All fully round-tripped (XML, MCB, XSD) and editable.
The editor rasterizes SVG textures, previews audio, runs sandboxed Lua on
explicit request, fires trigger steps explicitly, and applies scene-state
overrides interactively. Bounded Event Preview/Play (
SYS-W14-40) additionally dispatches timer bindings, Walk Mode Area enter/exit transitions, and viewport-picked object clicks automatically, each through one isolated, validated document transaction; seeMC3_FORMAT.md's per-section status notes.
Smaller, more numerous changes grouped by the same lettered convention.
Only groups that actually appear in git log are listed — several
letters that would sit between these (e.g. A–D) either predate this
repository's history or were never used as a label.
- E — editor UX: named layers (hierarchy filter + Properties field), "Export Subtree as Template".
- F — file/scene operations: mesh-source browse dialog, Export
Selection, Merge Scene, configurable auto-save interval, rotating
.backup.1/.backup.2backups, headless screenshot mode, an Export Settings dialog (GLB/GLTF toggle). - G — geometry: procedural LOD (3 segment tiers by camera distance) for round primitives.
- H — advanced editing tools: proportional editing (Gaussian falloff on nearby objects during Move), Scatter Along Curve.
- R — rendering: 3-point directional lighting for the solid primitive draw pass.
- S (early) — mc3togltf stabilization: canonicalized the mesh
srcattribute, fixed planesize(vec3 → canonical vec2), removed a duplicate XML parser frommc3togltfin favor of the sharedMc3library, addedmc3togltfto the top-level CMake build, added XSD validation, warnings for unimplemented primitives/unsupported CSG nodes, rewroteREADME.md, createdMC3_FORMAT.md. (This is a different numbering than the currentS0–S20stabilization sections inplan.md— see the note above.) - T — tooling/integration: replaced a
mc3togltfsubprocess call with a direct library call from the editor.
plan.md— the authoritative per-task status for the current stabilization effort.NEXT.md— short, operational: current status, current blocker (if any), exact next task.git log— the actual commit history; this file summarizes it, it doesn't replace it.