Versions & Diff Viewer
Version snapshots
Each commit produces an immutable version snapshot — append-only, written atomically:
- First commit: the original upload is snapshotted as
v1, and once the write has landed the new file is snapshotted asv2. - Each subsequent successful commit produces
v{n+1}. - Snapshots are stored at
{dataDir}/models/{id}/versions/v{n}.ifc.
Diff panel
The "Diff" toolbar button opens the comparison panel:
- Choose a base (v1 / v2 / …) and a target (a version or
current). - Click "Compare": green = added, yellow = modified, red = removed.
- Click an entry to locate the element; modified entries expand to field-level old → new.
- "Clear" resets the coloring.
Diff semantics
- GlobalId is the entity identity:
added/removedare guid lists;changedis field-level old → new over direct attributes and pset attributes. - Based on ifcdiff, run with only the
attributes/propertyrelationships; entity reference attributes (ObjectPlacement, Representation and other geometry-representation layers) are not compared — no geometric diff is currently provided. - Removed elements no longer have geometry in the current XKT, so they only appear in the red list (design decision).
- When both base and target are immutable versions, the result is cached at
versions/diff-{base}-{target}.json;target="current"is not cached.
For the endpoint contract see IFC Editing API.