Changelog

Version History

This page contains the detailed changelog for all EM Tools releases. For the latest changes, see the CHANGELOG.md file.

Unreleased (in development)

Added — US creation workflow unification (2026-04)
  • Unified “Add Stratigraphic Unit” dialog (strat.add_us): single floating form used by the Stratigraphy Manager (new + Add US button under the list), the Proxy Box Creator (+ next to the Active US picker), and Surface Areas (+ next to the Existing US picker). Fields: Type, Name + gap-aware suggest-next, Description, Shared-numbering toggle (default ON), Epoch (mandatory, drives the Activity filter), Activity (optional, writes is_in_activity), optional stratigraphic link. OK optionally saves the graphml and pins the new unit as active.

  • ``us_helpers.create_us_node(…)`` factory: one entry point for US creation; writes has_first_epoch, optional is_in_activity (mirrored on the PD nodegroup when created), optional stratigraphic relation, and populates the Stratigraphy Manager list in one pass.

  • ``us_types.py`` facade: JSON-driven US type registry derived from s3Dgraphy’s datamodel v1.5.2 (patch) and its classification API (is_real / is_virtual / is_series + US_PROPER_TYPES / ALL_US_TYPES).

  • Activity picker filtered by epoch: scene.activity_manager.filtered_activities + ACTIVITY_OT_filter_by_epoch + draw_activity_picker widget. Shows only activities matching the US’s epoch; inline refresh icon re-runs the filter.

  • ParadataNodeGroup per US (<US>_PD): Proxy Box Creator wraps every new paradata chain (Document instance clone → Extractors → Combiner → PropertyNode) inside a per-US container. Inherits is_in_activity from the US so both sit in the same yEd group.

  • Document instance cloning: Proxy Box Creator duplicates the Step-1 anchor Document into a fresh instance per run so extractors never attach to a Document already in another PD group.

  • Chain summary box in the Proxy Box Creator (collapsible).

  • Save-after-create toggle (persist_after_create, default ON) on both the Add-US dialog and the Proxy Box Creator.

  • Custom Add-US icon (proxies_rows_add) — visually distinct from the dialog-internal + suggest-next.

  • Next-number gap-aware from 1: fills the first unused number starting at 1 (was scanning only [min(used), max(used)]).

  • Shared-pool numbering: counts trailing digits across every US type; SU001US.1 in the pool. Opt-in via a toggle in the dialog; default ON.

  • Legacy prefix aliases: Italian SU… treated as alias of English US… (and USNEG / US_NEG as alias of USN).

  • Negative Stratigraphic Unit (USN): new canonical type in every US picker (dashed border in yEd). Replaces the ad-hoc US_NEG UI placeholder.

Changed — US creation workflow unification (2026-04)
  • US creation consolidated to one form; the inline create_new_us toggles in Proxy Box Creator and Surface Areas are gone.

  • Proxy Box Creator edge direction/types corrected: extractors → Document is extracted_from (dashed) instead of non-canonical has_extractor (solid); Combiner → Extractors is combines instead of is_combined_in.

  • Proxy Box Creator PropertyNode named after the canonical qualia (“Proxy Geometry”, property_type="proxy_geometry", new entry in em_qualia_types_additions.json).

  • Centralised hardcoded US-type lists across 10 files (15 occurrences); three were incomplete — fixed incidentally.

Removed — US creation workflow unification (2026-04)
  • PROXYBOX_OT_suggest_next_us, EMTOOLS_OT_suggest_next_us operators.

  • Inline create_new_us branch fields on ProxyBoxSettings and SurfaceArealeSettings.

  • GENERIC placeholder from the Surface Areas US type picker.

Fixed — Visual Manager show/hide-all pairs (2026-06)
  • “Show All RMs” no-op when any RM had been hidden via the outliner eye icon or the H key — the operator set hide_viewport=False / hide_render=False but never called obj.hide_set(False), so the per-view-layer eye flag stayed ON and the object remained invisible. Symmetric hole on the HIDE side left state inconsistent across the three Blender visibility flags. Fixed by clearing all three flags (hide_set + hide_viewport + hide_render) unconditionally in EM_strat_show_all_rms / EM_strat_hide_all_rms.

  • MESH-only filter excluded valid RMs: CURVE objects and Cesium tileset EMPTY wrappers (which carry the tileset_path custom property) are accepted as RMs by the container subsystem (is_rm_candidate) but were silently skipped by the show/hide pair. The show/hide operators now reuse is_rm_candidate so non-MESH RMs participate.

  • Container-only RMs invisible to show/hide: meshes added to an RM container without an active epoch (the container “Add selected” path warns and proceeds) live in scene.rm_containers[*].mesh_names but not in rm_list. The show/hide operators now iterate a third source — rm_containers — and union it with rm_list plus the legacy RM collection.

  • Stale object cache after rename / LOD switch could cause cache.get_object(item.name) to return None for objects whose Blender name changed without affecting the object count. The show/hide RM and RMDoc operators now invalidate the cache on entry.

  • Same three-flag bug also fixed for SF (Special Finds) and RMDoc show/hide pairs so all four Visual Manager pairs (Proxy / RM / SF / RMDoc) now behave consistently: each flips hide_set, hide_viewport, and hide_render together.

  • User-facing documentation for the four pairs lives at Bulk Visibility Controls.

Fixed — US creation workflow unification (2026-04)
  • Paradata chain edges rendered as solid lines (canonical edge types now used — extracted_from / combines / has_data_provenance / has_property).

  • Extractor / Combiner NodeLabel positioned as Corner-NorthWest; previously modelName=Internal, modelPosition=Center.

  • ParadataNodeGroup positioning anchored to the host US’s epoch Y (was (0,0) outside any swimlane row); children nested in the PD’s <graph>.

  • ActivityNodeGroup containment: children with is_in_activity nested inside the Activity’s <graph>.

  • Document instance collisions: Proxy Box Creator resolves the Step-1 anchor by UUID and clones it locally instead of sharing with other PD groups.

  • Activity filter silent-fail: the epoch-change update callback used bpy.ops.activity.filter_by_epoch which Blender rejects silently inside update callbacks. Direct populator call now.

  • “Add-US dialog not on operator stack” warning when clicking the + next number button — resolved via shared scene-level sentinel.

Added
  • Landscape mode (multi-graph): manage 2+ archaeological graphs simultaneously in a single Blender scene

  • CronoFilter: chronological horizons manager for landscape mode

  • Horizon-based filtering: Stratigraphy Manager filters nodes by temporal overlap with CronoFilter horizons

  • Horizon-based coloring: Visual Manager “Horizons” display mode applies CronoFilter colors to 3D proxies

  • RM visibility sync with horizons: Representation Models shown/hidden based on epoch overlap with active horizon

  • Graph badges in Stratigraphy list: colored icons differentiate nodes from different graphs

  • Active graph indicator: Anastylosis Manager and RM Manager show active graph code

  • Landscape-aware graph reload: reloading GraphML in landscape mode correctly repopulates lists

  • Proxy detection in landscape: uses GRAPH_CODE.NODE_NAME naming convention (e.g., GT16.USM100)

  • Support for detecting placeholder dates (XX) in epochs

  • Warnings for incomplete or malformed GraphML files in EM Data Tree

  • Flag system for experimental features

  • Improved UI synchronization controls in the Paradata Manager panel

Changed
  • Epoch Manager becomes “Horizons” label in Visual Manager when in landscape mode

  • Stratigraphy Manager filter shows “By Horizon” with horizon name in landscape mode

  • CronoFilter simplified: removed filter/reset buttons, now purely a chronology/horizon editor

  • Renamed panel from “US/USV Manager” to “Stratigraphy Manager”

  • Improved robustness of the GraphML import system

  • Reorganized the Stratigraphy Manager panel

  • Separated filter and synchronization controls in the Stratigraphy Manager

Removed
  • EMviq exporter from the main UI (moved to experimental features)

  • Proxy inflation tool from the main UI (moved to experimental features)

  • 3D GIS mode from 1.5.0 (moved to 1.6.0)

  • Soloing functionality, toggle reconstruction, and toggle selectable from the Epoch Manager

Fixed
  • RuntimeError: Object cannot be hidden wrapped in try/except

  • IndexError when disabling horizon filter with stale list index

  • GraphML import bug with “XX” date format

  • Memory Error during UI updates

  • Infinite UI update loops in the Paradata Manager

v1.5.0-dev.71 (2025-01-20)

Added
  • Conversion from Blender add-on to Blender Extension

  • Automatic dependency management via wheels

  • GitHub Actions workflow for automated releases

  • Heriverse export functionality with texture optimization

  • GPU instancing support for improved performance

  • Advanced export options (Draco compression, separate textures)

  • Export of ParaData objects (Documents, Extractors, Combiners)

  • Special Finds model export capability

  • Development scripts for contributors

Changed
  • Configuration migrated to blender_manifest.toml format

  • Simplified installation process

  • Minimum Blender version updated to 4.0

  • Updated Python dependencies (pandas 2.x, numpy 1.26.x)

Removed
  • Manual dependency installation UI

  • Legacy external modules installer

Fixed
  • Compatibility issues with Blender 4.x series

  • Dependency conflicts with system Python installations

  • Export errors with large archaeological datasets

v1.4.0 (2024-05-20)

Added
  • XLSX import for stratigraphic data

  • Batch export capabilities

  • Volume calculation tools

Changed
  • Improved performance of GraphML parser

  • Better memory handling for large projects

  • Updated CIDOC-CRM mapping

Fixed
  • Synchronization issues in period manager

  • Label creation in orthographic views

  • Visibility toggle for proxy models

v1.3.2 (2024-02-15)

Fixed
  • Critical bug in epoch handling

  • GraphML import for complex hierarchies

  • Memory leak in paradata streaming

v1.3.1 (2024-01-10)

Added
  • Paradata streaming mode

  • Real-time graph synchronization

  • Improved error reporting

Changed
  • Optimized 3D view updates

  • Improved collection management

v1.3.0 (2023-11-30)

Added
  • EMviq web export functionality

  • ATON framework integration

  • Reconstruction uncertainty visualization

  • Multi-graph support (experimental)

Changed
  • Redesigned export manager interface

  • Improved period visualization system

v1.2.0 (2023-07-15)

Added
  • Support for negative stratigraphic units

  • DosCo folder integration

  • Custom material system for Epochs

  • Soloing mode for epochs

Changed
  • Visual manager refactored

  • Updated for Blender 3.6 support

v1.1.0 (2023-03-20)

Added
  • Basic GraphML import/export

  • US/USV manager

  • Period manager

  • Basic visualization tools

v1.0.0 (2022-12-01)

Added
  • Initial release

  • Core Extended Matrix functionality

  • Basic 3D visualization

  • Simple export capabilities

Semantic Versioning

EM Tools follows Semantic Versioning:

  • MAJOR version for incompatible API changes

  • MINOR version for new functionality (backwards compatible)

  • PATCH version for backwards compatible bug fixes

Version Support

Table 2 Version Support Matrix

EM Tools Version

Blender Versions

Python Version

Support Status

1.5.x (dev)

4.4+

3.13

Active Development

1.4.x

3.6 - 4.1

3.10 - 3.11

Maintenance

1.3.x

3.3 - 3.6

3.10

End of Life

1.2.x

3.0 - 3.3

3.9

End of Life