From 315df5cd4749cc2f8234d4959942895c747d3f8a Mon Sep 17 00:00:00 2001 From: Hakan Seven Date: Sun, 27 Sep 2026 07:11:40 +0300 Subject: [PATCH] chore: pin opencadcodec 4f7bd51 (merlinnot codec fixes #56-#61) Brings in: unchanged ACSH extrusion history and DIMASSOC records kept byte for byte; native dynamic-action field layouts corrected; evaluation graph expressions written as owned; evaluated block metadata copy; source class numbers kept on same-version legacy saves; explicit block attribute flags kept. The dynamic-action model now names its fields after their native meaning, so the object summaries read parameter ids, the move offsets' distance multiplier and the lookup table's columns. The empty PropertiesTable variant is gone; such tables stay opaque objects. Pins opencadcodec 4f7bd51, opencadkernel 8186605, opencadgraph 048c9c5. Co-Authored-By: Claude Opus 5.5 --- Cargo.lock | 8 ++++---- Cargo.toml | 8 ++++---- crates/ocs_plugin_api/Cargo.toml | 4 ++-- crates/ocs_web_worker/Cargo.toml | 2 +- plugins/opencad-python/Cargo.lock | 2 +- src/entities/object_data.rs | 22 ++++++++++------------ 6 files changed, 22 insertions(+), 24 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a9881fcf7..43381b363 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4201,7 +4201,7 @@ dependencies = [ [[package]] name = "opencadcodec" version = "0.5.5" -source = "git+https://github.com/HakanSeven12/opencadcodec.git?rev=1109d52#1109d52f65ae8f00d75f43445908bff48807c0c5" +source = "git+https://github.com/HakanSeven12/opencadcodec.git?rev=4f7bd51#4f7bd514a95329d8b0188ff7e3e04a820f529e23" dependencies = [ "ahash 0.8.12", "anyhow", @@ -4224,7 +4224,7 @@ dependencies = [ [[package]] name = "opencadgraph" version = "0.1.0" -source = "git+https://github.com/HakanSeven12/opencadgraph.git?rev=3c4af1c#3c4af1c3bdebc968630ad3c28046173bed0aa200" +source = "git+https://github.com/HakanSeven12/opencadgraph.git?rev=048c9c5#048c9c517a1e10579fcebf459b55d03c74568199" dependencies = [ "opencadkernel", "serde_json", @@ -4233,7 +4233,7 @@ dependencies = [ [[package]] name = "opencadkernel" version = "0.1.0" -source = "git+https://github.com/HakanSeven12/opencadkernel.git?rev=8a246b0#8a246b0026fb9c626a39a6ba8ccf681f1bf0461e" +source = "git+https://github.com/HakanSeven12/opencadkernel.git?rev=8186605#8186605b5c9854bfa2ad3ab54ffba121074bd626" dependencies = [ "cavalier_contours", "opencadcodec", @@ -4244,7 +4244,7 @@ dependencies = [ [[package]] name = "opencadkernel-constraints" version = "0.1.0" -source = "git+https://github.com/HakanSeven12/opencadkernel.git?rev=8a246b0#8a246b0026fb9c626a39a6ba8ccf681f1bf0461e" +source = "git+https://github.com/HakanSeven12/opencadkernel.git?rev=8186605#8186605b5c9854bfa2ad3ab54ffba121074bd626" dependencies = [ "nalgebra", ] diff --git a/Cargo.toml b/Cargo.toml index d6cc5899f..b3a3272fc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -33,10 +33,10 @@ rfd = "0.17" clap = { version = "4", features = ["derive", "string"] } env_logger = "0.11" log = "0.4" -codec = { package = "opencadcodec", git = "https://github.com/HakanSeven12/opencadcodec.git", rev = "1109d52", features = ["serde"] } -kernel = { package = "opencadkernel", git = "https://github.com/HakanSeven12/opencadkernel.git", rev = "8a246b0", features = ["acis", "offset"] } -kernel-constraints = { package = "opencadkernel-constraints", git = "https://github.com/HakanSeven12/opencadkernel.git", rev = "8a246b0" } -graph = { package = "opencadgraph", git = "https://github.com/HakanSeven12/opencadgraph.git", rev = "3c4af1c" } +codec = { package = "opencadcodec", git = "https://github.com/HakanSeven12/opencadcodec.git", rev = "4f7bd51", features = ["serde"] } +kernel = { package = "opencadkernel", git = "https://github.com/HakanSeven12/opencadkernel.git", rev = "8186605", features = ["acis", "offset"] } +kernel-constraints = { package = "opencadkernel-constraints", git = "https://github.com/HakanSeven12/opencadkernel.git", rev = "8186605" } +graph = { package = "opencadgraph", git = "https://github.com/HakanSeven12/opencadgraph.git", rev = "048c9c5" } dwg-thumbnailer = { path = "crates/dwg-thumbnailer" } flate2 = "1" image = { version = "0.25", default-features = false, features = ["png", "jpeg", "bmp", "tiff"] } diff --git a/crates/ocs_plugin_api/Cargo.toml b/crates/ocs_plugin_api/Cargo.toml index e160ec5d1..a36e9a127 100644 --- a/crates/ocs_plugin_api/Cargo.toml +++ b/crates/ocs_plugin_api/Cargo.toml @@ -15,7 +15,7 @@ serde_json = { version = "1", optional = true } # Pulled in only by the `host` feature, which adds the `opencadcodec`-typed # `HostApi` runtime surface. The default crate stays dependency-free so engine # crates and external tooling can depend on the manifest/ribbon contract cheaply. -codec = { package = "opencadcodec", git = "https://github.com/HakanSeven12/opencadcodec.git", rev = "1109d52", optional = true, features = ["serde"] } +codec = { package = "opencadcodec", git = "https://github.com/HakanSeven12/opencadcodec.git", rev = "4f7bd51", optional = true, features = ["serde"] } # Runtime IPC and serialization (host feature only). interprocess = { version = "2", optional = true } @@ -39,7 +39,7 @@ serde_json = "1" serde = { version = "1", features = ["derive"] } cargo-lock = "11" # opencadcodec is scanned at build time to generate the embedded type registry. -codec = { package = "opencadcodec", git = "https://github.com/HakanSeven12/opencadcodec.git", rev = "1109d52", features = ["serde"] } +codec = { package = "opencadcodec", git = "https://github.com/HakanSeven12/opencadcodec.git", rev = "4f7bd51", features = ["serde"] } [dev-dependencies] serde_json = "1" diff --git a/crates/ocs_web_worker/Cargo.toml b/crates/ocs_web_worker/Cargo.toml index 8dc3430c2..502d05c57 100644 --- a/crates/ocs_web_worker/Cargo.toml +++ b/crates/ocs_web_worker/Cargo.toml @@ -8,7 +8,7 @@ publish = false crate-type = ["cdylib"] [dependencies] -codec = { package = "opencadcodec", git = "https://github.com/HakanSeven12/opencadcodec.git", rev = "1109d52", features = ["serde"] } +codec = { package = "opencadcodec", git = "https://github.com/HakanSeven12/opencadcodec.git", rev = "4f7bd51", features = ["serde"] } bincode = "1.3" serde = { version = "1", features = ["derive"] } console_error_panic_hook = "0.1" diff --git a/plugins/opencad-python/Cargo.lock b/plugins/opencad-python/Cargo.lock index fe0b3cc43..b3735b68c 100644 --- a/plugins/opencad-python/Cargo.lock +++ b/plugins/opencad-python/Cargo.lock @@ -1265,7 +1265,7 @@ dependencies = [ [[package]] name = "opencadcodec" version = "0.5.5" -source = "git+https://github.com/HakanSeven12/opencadcodec.git?rev=1109d52#1109d52f65ae8f00d75f43445908bff48807c0c5" +source = "git+https://github.com/HakanSeven12/opencadcodec.git?rev=4f7bd51#4f7bd514a95329d8b0188ff7e3e04a820f529e23" dependencies = [ "ahash 0.8.12", "anyhow", diff --git a/src/entities/object_data.rs b/src/entities/object_data.rs index 39c65eee7..4c0a678d1 100644 --- a/src/entities/object_data.rs +++ b/src/entities/object_data.rs @@ -620,26 +620,25 @@ fn dynamic_data_text(data: &DynamicBlockData) -> String { value.class_version ), DynamicBlockData::MoveAction(value) => format!( - "{}; dependencies {}; actions {}; offsets {:.6},{:.6}; angle {:.6}", + "{}; dependencies {}; parameters {}; distance multiplier {:.6}; angle {:.6}", value.action.element.name, value.action.dependencies.len(), - value.action.action_ids.len(), - value.offsets.offset_x, - value.offsets.offset_y, + value.action.parameter_ids.len(), + value.offsets.distance_multiplier, value.offsets.angle_offset ), DynamicBlockData::FlipAction(value) => format!( - "{}; dependencies {}; actions {}; connections {}", + "{}; dependencies {}; parameters {}; connections {}", value.action.element.name, value.action.dependencies.len(), - value.action.action_ids.len(), + value.action.parameter_ids.len(), value.connections.len() ), DynamicBlockData::RotateAction(value) | DynamicBlockData::ScaleAction(value) => format!( - "{}; dependencies {}; actions {}; base {:.6},{:.6},{:.6}; dependent {}", + "{}; dependencies {}; parameters {}; base {:.6},{:.6},{:.6}; dependent {}", value.action.action.element.name, value.action.action.dependencies.len(), - value.action.action.action_ids.len(), + value.action.action.parameter_ids.len(), value.action.base_point.x, value.action.base_point.y, value.action.base_point.z, @@ -653,13 +652,13 @@ fn dynamic_data_text(data: &DynamicBlockData) -> String { value.row_offset ), DynamicBlockData::LookupAction(value) => format!( - "{}; dependencies {}; table {}×{}; expressions {}; rows {}", + "{}; dependencies {}; table {}×{}; expressions {}; columns {}", value.action.element.name, value.action.dependencies.len(), value.row_count, value.column_count, value.expressions.len(), - value.rows.len() + value.columns.len() ), DynamicBlockData::StretchAction(value) => format!( "{}; dependencies {}; points {}; handles {}; codes {}", @@ -698,8 +697,7 @@ fn dynamic_data_text(data: &DynamicBlockData) -> String { value.record_history ), DynamicBlockData::SolidHistoryNode(value) => history_operation_text(value), - DynamicBlockData::PropertiesTable - | DynamicBlockData::AlignmentParameterEntity + DynamicBlockData::AlignmentParameterEntity | DynamicBlockData::BasePointParameterEntity | DynamicBlockData::FlipParameterEntity | DynamicBlockData::LinearParameterEntity