Changelog

All notable changes to LinkForge will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

1.4.1 (2026-06-04)

🐞 Bug Fixes

  • ci: exclude github commits urls from link checker (d652f36)

πŸ“š Documentation

  • fix Sphinx warnings, document missing APIs, and refine architectural guides (d3c9bec)

πŸ› οΈ Refactors

  • clean up test suite comments/fixtures and update docs (77399d4)

  • core: address API design findings for ergonomics and stability (eba7d18)

  • core: remove dead code and deduplicate constants (17cf8cf)

1.4.0 (2026-05-29)

πŸš€ Features

  • blender: implement high-performance mesh inertia integrator using NumPy vectorization (0c815ee)

  • composer: add context manager support and deep cloning to RobotBuilder (a2876fe)

  • core: harden xacro eval sandbox against dunder escapes (7def4d8)

  • core: implement abstract resource resolver (#166) (b746e40)

  • core: implement semantic validation linter and deep immutability (dfdf3b8)

  • core: implement structural XACRO caching for optimized robot assembly (a1dc8af)

  • core: modular validation registry and targeted checks (#167) (efe67ba)

  • hybrid RobotAssembly API (The Composer) (d7947a3)

  • Implement srdf generator (2019465)

  • implement SRDF intermediate representation (960ac48)

  • implement SRDF XML parser with XACRO support (8235793)

  • introduce sliver triangle detection and structured validation architecture (4e7264d)

  • parsers: add xacro console logging and custom ROS package paths (#179) (cb09062)

  • ROS XACRO Parity and Blender 5.x (Python 3.13) Support (#198) (7bfbd57)

🐞 Bug Fixes

  • blender test stability (a4cfcd8)

  • blender: sensor visibility and live physics gizmo updates (777fb1d)

  • build: shorten blender manifest tagline to respect 64 character limit (7cc682e)

  • ci: exclude flaky monorepo.tools from link checker and canonicalize redirects (8f623ad)

  • support disconnected links validation in blender (870d196)

  • synchronize LinkForge names with Blender object names (c844a3a)

  • urdf: handle out-of-order elements in iterative parser (869182a)

  • xacro: enhance spec compliance and hardening (010eeec)

πŸ“š Documentation

  • add ADR-001 for monorepo structure decision (#163) (2300f25)

  • add julianmueller as a contributor for test, and review (aac782f)

  • add lionelfung7 as a contributor for bug (#199) (5e48eaf)

  • add peci1 as a contributor for bug (3f2b0ad)

  • add peci1 as a contributor for ideas (be038b1)

  • add Python API reference and SRDF documentation (e2f1b51)

  • add Vision 2030 β€œUniversal Connector” section to VISION.md (af96a80)

  • clarify support for both comma and os path separators (630e6ac)

  • core: comprehensive README rewrite and examples API update (0be0b5c)

  • establish β€œLLVM for Robotics” vision and strategic roadmap (f912115)

  • exclude flaky academic URL from link checker (894d66f)

  • formalize .lf standard and consolidate strategic technical roadmap (082bb02)

  • overhaul vision, streamline README, and align documentation for v1.4.0 (e70b47c)

  • refine README, contributing guidelines and fix citation metadata (46216d5)

  • standardize core docstrings, clean up comment silencers, and align vision roadmap (aecc258)

  • synchronize and standardize core and blender docstrings (b06805e)

  • update docs and refine core API (f544c76)

  • update issue assignment policies in CONTRIBUTING.md (bd8e315)

  • update readme file (381040b)

  • update v1.3.0 roadmap status and CITATION.cff release date (#168) (ab1ba5b)

⚑ Performance Updates

  • optimize collision quality slider with BMesh and true debounce (db6b0c3)

πŸ› οΈ Refactors

  • blender: clean up dead code, redundant facades, and improve imports (61a1ee6)

  • blender: consolidate test structure and boost platform coverage (88a47e9)

  • blender: stabilize naming synchronization and decouple translator architecture (ebbcac9)

  • clean up generator comments and overhaul core documentation (e5c54ed)

  • core: implement shared RobotXMLGenerator engine (#186) (0e7646e)

  • core: modularize xacro parser dispatch logic (d18193d)

  • core: refactor URDFParser engine (b417148)

  • extract heavy scene calculations from export_panel.py draw loop (#182) (6a5ecb8)

  • finalize blender platform stability and test (d3abbf3)

  • harden core model encapsulation and stabilize naming utilities (b4fea84)

  • harden integration infrastructure and professionalize static analysis for v1.4.0 (de5fd2a)

  • harden LinkForge architecture and centralize Core API (1096425)

  • harden mesh inertia calculations with strict validation and topology checks (e009352)

  • harden physics inertia pipeline and blender platform API architecture (d1faba2)

  • hardened core architecture and comprehensive test stabilisation (9da8efa)

  • migrate to structured error handling with ValidationErrorCode and absolute Import Normalization (2b4c909)

  • modernize core architecture and normalize XML generation (06eda1d)

  • physics: enhance mesh inertia robustness and numerical stability (d7d6de9)

  • physics: harden mesh topology validation and inertia pipeline (b511d6a)

  • physics: harden mesh topology validation and inertia pipeline (0927906)

  • physics: mesh topology validation (5787c52)

  • rename RobotAssembly to RobotBuilder and enhance programmatic API (b8d1a05)

  • unify Blender architecture and optimize scene traversal (#183) (a777a8e)

1.3.0 (2026-03-01)

πŸš€ Features

  • add component search filter for component browser (#128) (e7ac61a)

  • enhance joint model with safety/calibration and fix xacro grouping (#140) (a0c0c3e)

  • enhance ros2_control intelligence and unify simplified mesh terminology (7de79fe)

  • ros2-control: joint sync, xacro modularity, and 100% core test coverage (#156) (7b78606)

🐞 Bug Fixes

  • core: resolve security gaps and documentation discrepancies (d1dc15a)

  • enhance XACRO generator to remove additional types of empty placeholder (#160) (bbb99e6)

  • resolve xacro import failures for ros2-style robot descriptions (#134) (c162d5c)

  • robust mesh import cleanup and xacro improvements (#136) (2dede4f)

πŸ“š Documentation

  • add andreas-loeffler as a contributor for code, and test (#130) (fd02561)

  • add dco signoff requirement (3484345)

  • add julianmueller as a contributor for ideas (f565cd5)

  • align component READMEs and refine documentation (af63a14)

  • align multi-package roadmaps and correct architectural references (781a9b2)

  • clarify link/joint frame hierarchy and mesh origin behaviour (01094ea)

  • transition core branding to β€œThe Linter & Bridge for Robotics (#127) (73e44e2)

  • vision: upgrade vision image to β€˜the truth layer’ (#137) (3b1eea9)

⚑ Performance Updates

  • Depsgraph Caching, NumPy acceleration, and Formal Kinematic Graph (ab4485b)

πŸ› οΈ Refactors

  • modernize exception hierarchy and domain-specific validation (3c75d15)

1.2.3 (2026-02-14)

🐞 Bug Fixes

  • blender: achieve 100% type safety, fix regressions, and modernize imports (570c84b)

  • core: parser hardening, hybrid package resolver, and DAE restoration (0260082)

πŸ“š Documentation

  • add GeorgeKugler as a contributor for bug (#112) (80283a2)

  • synchronize documentation with v1.2.2 and refactor CI workflows (#113) (9c275c4)

1.2.2 (2026-02-07)

🐞 Bug Fixes

  • clean mesh export naming and reach add more test coverage (#107) (384c708)

  • preserve root link world transform and robust rotation mode handling (#106) (d7c1185)

  • stabilize test registration infrastructure and resolve CI collection errors (#108) (4d7c2fa)

πŸ“š Documentation

  • add MagnusHanses as a contributor for bug (#102) (c44d589)

πŸ› οΈ Refactors

  • orthogonal adapter architecture with comprehensive test coverage (#109) (64c5b82)

1.2.1 (2026-02-04)

🐞 Bug Fixes

  • implement native high-fidelity XACRO parser (#97) (55bff31)

  • resolve round-trip regressions and harden numerical stability (#98) (0afba33)

  • xacro: autodetect numeric types in properties/args for math eval… (#99) (d62c023)

πŸ“š Documentation

  • add arounamounchili as a contributor for code, design, and 2 more (#87) (ae6a1ef)

  • Configure all-contributors to use smaller images and remove the usage link. (8e5558b)

  • finalize professional branding and vision (#81) (7409999)

  • generalize transform descriptions in URDF generator and add contributor acknowledgment to README. (40b31da)

  • Remove pip installation of the current project from Read the Docs build configuration. (10b2f31)

  • Update README to detail new features like Mimic Joints and advanced sensors, clarify existing capabilities, and refine usage instructions. (c9dcf9b)

πŸ› οΈ Refactors

  • core data safety and test coverage (#86) (7776f9b)

  • finalize v1.2.0 universal architecture and zero-dependency core (#83) (1f0bc83)

  • modernize Parser API & enhance architectural stability (#84) (1fdf000)

1.2.0 (2026-01-24)

πŸš€ Features

  • add centralized ros2_control dashboard and refine export logic (69894bc)

  • add CODEOWNERS, citations, and refine guidelines (#39) (#40) (2fd4752)

  • blender: expose inertial origin in physics panel (#70) (#71) (45b9bc2)

  • blender: implement robust persistent inertia visualization with CoM sphere (#74) (6d35659)

  • blender: modernize GPU overlays and fix viewport drawing logic (684d6a8)

  • full core coverage (#67) (217123d)

  • implement professional virtual link handling and robust alignment (#62) (838f25c)

  • core: implement 100% dependency-free robotics logic

  • blender: transition to dependency-free extension architecture for 90% size reduction

  • blender: remove legacy DAE/Collada support in favor of production-ready GLB/OBJ/STL metrics

  • blender: discontinue automatic transmission conversion in favor of explicit ROS 2 Control Dashboard configuration

  • docs: exhaustive documentation audit and synchronization with v1.2.0 UI terminology

  • docs: update all tutorials and how-to guides to reflect new β€œCreate Link from Mesh” and β€œCreate Sensor” labels

  • tests: reorganize integration tests into specialized parsers/, blender/, and features/ subdirectories

  • tests: centralize path management via examples_dir fixture and create comprehensive tests/README.md

  • docs: synchronize ARCHITECTURE.md, CONTRIBUTING.md, and Sphinx reference index with new test organization

🐞 Bug Fixes

  • add missing register/unregister logic to import_ops.py (3017eca)

  • blender: handle Collada removal in Blender 5.0+ (#68) (8e2ffbf)

  • blender: restore missing bpy import and add type hints to utilities (e4cbf56)

  • ci: simplify release-please extra-files by removing dynamic docs and README (0812552)

  • ci: split blender setup steps in release pipeline (dab8293)

  • ci: switch release-please to python type for robust versioning (1d182fd)

  • Collision import preventing accidental degradation during the import-export cycle (18c2530)

  • core: correct string formatting in XACRO detection error msg (d76f0f9)

  • implement data-level mesh cloning for export robustness (#59) (#60) (9ddb06a)

  • make all property group registrations idempotent to prevent double registration errors (1d54cd0)

  • Xacro split-file generation and manual qa doc (#75) (6719a70)

πŸ“š Documentation

  • branding: update social preview with new tagline (dd89679)

  • clarify coordinate system uses 1:1 mapping, not conversion (#56) (b025d57)

  • correct object mapping table (#45) (de008b5)

  • finalize architecture and contributing guides for v1.1.0 release (ffb8aa6)

  • improve pre-commit installation instructions in README and CONTRIBUTING (fd3f746)

  • make documentation version dynamic by importing from package (1d8b393)

  • refine tagline and enhance technical specifications (24ef9fd)

  • sync architecture and API references with modular codebase (cf91bd9)

  • sync documentation version and add automation hint (0e80499)

  • synchronize all documentation with v1.2.0 features (#78) (7f10ca8)

  • update the roadmap (fd8d3aa)

  • use standard version variable in conf.py for automation (d3a08da)

πŸ› οΈ Refactors

  • core: eliminate redundant index rebuilds and harmonize comm… (#58) (189b6a6)

  • core: eliminate redundant index rebuilds and harmonize comments (189b6a6)

  • delete tools directory and remove related code references (3039e9e)

  • delete tools directory and remove related code references (3a83616)

  • formalize hexagonal architecture and unify collision display (#72) (#73) (92c8b75)

  • polish error message formatting in urdf_parser.py (0240a64)

  • remove tool reference from urdf_parser.py (ce1d403)

  • restructure test suite into tiered architecture (#63) (#64) (6bfb262)

  • arch: formalize monorepo structure with decoupled core and blender packages

  • blender: implement policy-compliant vendorizing for core logic (Zero sys.path changes)

  • separate import/export logic and refine xacro error message (5649837)

1.1.0 (2026-01-07)

πŸš€ Features

  • align documentation and versioning with product strategy (#18) (5e0ebee)

🐞 Bug Fixes

  • add CI collector job for stable branch protection status (b473d6d)

  • add missing bpy import to property_helpers (4d7b5ac)

  • blender: modernize extension logic and fix GPU overlay (#20) (29a9dfb)

  • blender: resolve UnboundLocalError and finalize v1.1.0 community standards (#21) (f4215fd)

  • blender: robust DAE export and Blender 5.0 compatibility (#23) (d3ac437)

  • blender: sanitize robot component names to resolve .001 conflicts (5266ec1)

  • docs: use correct relative paths for logo and favicon (7af18f3)

  • reset manifest version (#31) (d6d2798)

  • resolve CI artifact name collision and pin stable actions (#9) (a923105)

  • unify sensor visual shape to sphere (#6) (#7) (eddc88e)

πŸ“š Documentation

  • add workflow diagram and code owners (dda0fd0)

  • clarify platform-specific zips in README (3ce93c7)

  • evergreen installation instructions in README (a30b390)

  • finalize architecture documentation for unified mirroring (b227076)

  • remove stale handler comments in blender/init.py (507d503)

  • unify assets and set single source of truth in docs/assets (4da663c)

  • update ARCHITECTURE.md to reflect handler removal (365c2dc)

  • upgrade Code of Conduct to v3.0 (#33) (777f2a4)

  • upgrade README with premium technical specs and roadmap (fb8e0f2)

πŸ› οΈ Refactors

  • completely remove the handlers module to show standard-compliance (24cf1e7)

  • improve type safety in core generators (#36) (c5abbde)

  • remove depsgraph handlers and implement property mirroring for names (703b53f)

  • standardize URDF/Xacro headers and eliminate duplication (ef475d0)

  • unify imported object display sizes with addon preferences (a781a71)

1.0.0 - 2025-12-23

[!NOTE] v1.0.0: Initial Production-Ready Release

LinkForge 1.0.0 is the first production-ready release of the professional URDF & XACRO exporter for Blender.

Features

  • Complete URDF/XACRO Support: Full bidirectional import and export logic.

  • Sensor Suite: Comprehensive support for Camera, Depth Camera, LiDAR, IMU, GPS, Contact, and Force/Torque sensors.

  • ROS2 Control Integration: Native ros2_control configuration generation for Gazebo and real hardware interfaces.

  • Automatic Physics: Automatic calculation of mass and inertia tensors for both primitive shapes and complex meshes.

  • Smart Validation: Built-in validator to catch errors like disconnected links, missing inertia, or invalid joint limits before export.

  • Round-Trip Fidelity: Importing a URDF and re-exporting it preserves all properties, including sensor origins and visual/collision geometries.

  • Resilient Parsing: The parser gracefully handles minor errors (like invalid geometry dimensions) by logging warnings instead of crashing.

  • XACRO Powers: Automatic macro generation, material extraction, and support for split-file export organization.

  • Viewport Visualization: Semantic feedback in the viewport for joint axes, limits, and transmission actuation vectors.

  • Modern Standards: Support for modern Gazebo Sim sensor types (gpu_lidar, navsat) and ROS 2 conventions.

Security

  • Path Validation: Strict validation of mesh paths to prevent path traversal vulnerabilities.

  • XML Hardening: Protection against XML bomb attacks through depth limits.

  • Input Sanitization: Numeric constraints to prevent NaN/Inf injection.