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** (``_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; ``SU001`` ≡ ``US.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 :ref:`Visual_Manager_bulk_visibility`. **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 ````. - ActivityNodeGroup containment: children with ``is_in_activity`` nested inside the Activity's ````. - 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 --------------- .. list-table:: Version Support Matrix :widths: 20 30 30 20 :header-rows: 1 * - 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