deploy webservice static-file routing for docsite folder URLs, per-instance step-cache db, and constant-height panel title bars.

This commit is contained in:
2026-08-27 14:51:37 +08:00
parent 1fc510af5e
commit 2a98ae7556
1468 changed files with 182837 additions and 18888 deletions
+199 -11
View File
@@ -87,11 +87,199 @@
<article data-uid="">
<h1 id="release-note">Release Note</h1>
<h2 id="hinc-packages-version-326">HiNc Packages Version 3.2.6</h2>
<h3 id="at-a-glance">At a glance</h3>
<p>3.2 is largely one piece of work: the NC interpreter that reads a controller program is now composed
from configurable parts rather than written into one class, and most of this release is the brand
coverage that made possible. A Siemens or Heidenhain program that 3.1.175 could not interpret past
its first computed coordinate or subprogram call now replays end to end.</p>
<p><strong>Control-language coverage.</strong> The figure is <strong>how far our own verification has reached</strong> on that
dialect — it is not the share of the language that is implemented, and it is not a guarantee for a
program we have not seen:</p>
<table>
<thead>
<tr>
<th>Control language</th>
<th>Verification reached</th>
</tr>
</thead>
<tbody>
<tr>
<td>Cutter location (NX CLSF / APT source)</td>
<td>~90%</td>
</tr>
<tr>
<td>Fanuc</td>
<td>~80%</td>
</tr>
<tr>
<td>Siemens SINUMERIK</td>
<td>~60%</td>
</tr>
<tr>
<td>Heidenhain (klartext and DIN/ISO)</td>
<td>~40%</td>
</tr>
</tbody>
</table>
<p>Syntec and Mazak run on the Fanuc-family vocabulary; their brand-specific syntax has not been worked
through and they are not covered by the figures above. The per-construct picture — including what is
recognized and deliberately <em>not</em> simulated — is in the
<a href="../fundamentals/nc-parsing/index.html#brand-support">brand support matrix</a>.</p>
<p><strong>Failures say what went wrong.</strong> The class of defect this release spent most effort on is the
silent one: a Siemens tool offset with no table row that resolved to zero and machined a whole
program one tool length low, a G68 rotation that did nothing while reporting itself active, a tilted
plane the machine could not reach. Each of those is now a named, searchable diagnostic rather than a
plausible-looking wrong result — see the <a href="upgrading-to-3.2.html#new-diagnostics-you-may-now-see">diagnostic id
table</a>.</p>
<p><strong>Simulation is faster and holds a bigger program.</strong> Physics moved into the native kernel (a paired
play: 59.3 s / 16.1 GB allocated → 40.6 s / 3.4 GB), building the topology of a large STL is linear
rather than quadratic in triangle count, and a long program no longer degrades as it plays. Figures
and their conditions are under
<a href="upgrading-to-3.2.html#performance-and-footprint">Performance and footprint</a>.</p>
<p><strong>The application product moves to the web API.</strong> From 3.2 the shipped application is the web
service, and its source is the same <code>HiNC-2025-webservice</code> sample we publish — what you read there is
what the product runs. The Blazor front end is not on this line.</p>
<div class="IMPORTANT">
<h5>Important</h5>
<p><strong>Adoption status.</strong> This drop is published for review. Verification is still in progress across
most areas, and the coverage figures above are the honest state of it.</p>
<p><strong>Do not put 3.2 NC optimization into production.</strong> It is not finished on this line. Work that
depends on optimization should stay on the 3.1 line, which is serviced as <code>3.1.175.&lt;patch&gt;</code>. The
Blazor front end likewise remains on 3.1.</p>
</div>
<h3 id="what-changed">What changed</h3>
<p><strong>This one entry covers everything since 3.1.175.</strong> The 3.1 line is closed at the 3.1.175 package
set and is serviced only as <code>3.1.175.&lt;patch&gt;</code>; <code>master</code> moved all ten packages onto the <strong>3.2</strong> line
on 2026-07-26 and restarted their build counters. So a 3.2 build number starts low — <code>3.2.6</code> is
newer than <code>3.1.204</code>, the two counters are not comparable, and the gap between them is expected
rather than a missing upload. The versions in between were never published as a release set, which
is why they are merged here rather than listed separately.</p>
<p>Everything below therefore lands at once on a caller moving a 3.1.175 reference to 3.2.
<strong>See <a href="upgrading-to-3.2.html">Upgrading from 3.1.175 to 3.2</a> for the full detail</strong> — the summary here
is the shape of the upgrade, not the whole of it.</p>
<h3 id="breaking-changes">Breaking changes</h3>
<p>In the order they will bite. Full table with replacements on the upgrade page.</p>
<ul>
<li><strong>Registration:</strong> <code>XFactory.Generators</code> becomes a <code>ConcurrentDictionary</code> (a caller declaring the
old type breaks at compile time), and <code>LocalProjectService.Reg()</code> must still be called once at
startup before any project XML is deserialized</li>
<li><strong>Messages:</strong> <code>MixedProgress0</code>, <code>MultiTagMessage</code> and <code>MultiTagMessageUtil</code> are removed; every
message parameter is retyped from <code>IProgress&lt;object&gt;</code> to <code>IProgress&lt;IMessage&gt;</code>; <code>Category.General</code>
is deleted and <code>NcDiagnostic.Text</code> renames to <code>Notification</code></li>
<li><strong>Session lifetime:</strong> <code>LocalProjectService.SessionShell</code> is null outside a session and
<code>ShellProgress</code> is recreated per session — hold no long-lived reference; <code>MachiningSession</code> takes
an injected <code>IMachiningService</code>, and <code>IMachiningService</code> replaces
<code>PlayerCancellationToken</code> / <code>PausePlayer</code> with one <code>PacePlayer</code></li>
<li><strong>Play verbs:</strong> <code>PlayNcFile</code> / <code>RunNcFile</code> gain an <code>NcKind kind = NcKind.Auto</code> parameter and
dispatch by extension; the old narrow verbs become <code>PlayBrandNcFile</code> / <code>RunBrandNcFile</code>. The
&ldquo;Control&rdquo; vocabulary retires with them (<code>IControlRunner</code> → <code>INcRunner</code>, <code>RunControlLines</code> →
<code>RunNcLines</code>, <code>ControlKind</code> → <code>NcKind</code>)</li>
<li><strong>Hard renames, no shim:</strong> runtime geom → <strong>meshed geom</strong> across <code>WorkpieceService</code>;
<code>IContourTray</code> / <code>UniformContourTray</code> / <code>FreeContourTray</code> → <strong><code>IFluting</code> / <code>UniformFluting</code> /
<code>FreeFluting</code></strong> and <code>MillingCutter.FluteContourTray</code> → <code>Fluting</code>; HiNc's <code>Hi.Common.ResourceUtil</code>
→ <code>ResourceLayout</code> (it was shadowing HiGeom's same-named type); the native topo-STL wrappers move
to <code>Hi.Geom.Topo</code>; <code>ITimeGetter</code> → <code>ITimecoded</code>; <code>ClStrip.DrawingRefreshing</code> →
<code>DrawingRefreshed</code>; <code>SoftNcRunner.NcDependencyList</code> → <code>PipelineNcDependencyList</code></li>
<li><strong>Removals:</strong> <code>CsvRunner0</code> and <code>EnableSoftCsvRunner</code>, <code>RawCsvRunner</code>, <code>IndexedSentence</code>,
<code>SimpleSessionCommand</code>, <code>LsStl</code>; the GUI-layer types <code>MachiningProjectDisplayee</code>,
<code>IsoCoordinateEntryDisplayee</code>, <code>HeidenhainCoordinateEntryDisplayee</code>, <code>UserConfig</code>, <code>UserService</code>
and <code>PlayerDivConfig</code>; the managed physics kernel types <code>FluteZData</code>,
<code>MillingForceUtil.RuntimePack</code> / <code>LayerPack</code> / <code>AnglePack</code> and
<code>MillingPhysicsBrief.YieldStressMinHeight_mm</code>; <code>CultureUtil.SupportedCultureNames</code> and
<code>SetCurrentCulture(string)</code>; eight <code>gl*</code> P/Invoke declarations that had no backing export; and
<code>PostExecutionCommand</code>'s meshed-geometry output pair (use <code>RecordMeshedGeomCommand</code> /
<code>ExportMeshedGeomToStlCommand</code> instead)</li>
<li><strong>Shapes:</strong> <code>MachiningToolHouse</code> derives from <code>Dictionary&lt;int, IMachiningTool&gt;</code>;
<code>MachiningStep.ActualTimecode</code> / <code>ActualDateTime</code> become get-only views onto the new
<code>ActualTime</code>; <code>PreSettingCommand</code> becomes a legacy bundle that expands on load into five
single-setting commands and is never written back; <code>ToPresentDto</code> wire keys change</li>
<li><strong>Defaults:</strong> <code>EnableSoftNcRunner</code> is <code>true</code> — SoftNc is the NC engine and <code>HardNcRunner</code> is the
opt-out fallback; <code>EnableNativeMillingPhysics</code> is <code>true</code> and a shipping build throws if you set
it <code>false</code>; <code>YieldingStressRatio</code> reports <strong><code>NaN</code></strong> instead of <code>0</code> when it cannot be evaluated, so
a caller reading <code>0</code> as &ldquo;no constraint&rdquo; must add a <code>NaN</code> branch</li>
<li><strong>New licence feature <code>NcComposition</code> (id 22)</strong> gates registering a non-built-in unit into a
<code>SoftNcRunner</code> pipeline and executing an NC-embedded C# script. Degradation is silent and
functional — the unit is skipped with one <code>Composition--NotLicensed</code> — so an unlicensed
installation produces a <em>different simulation</em>, not an error</li>
<li><strong>Packaging:</strong> x64 only; the shipped machine-tool packages are renamed and now carry the <code>.default</code>
marker (<code>MachineTool/Table-B1.default</code>, <code>MachineTool/CT-350.default</code>), so a project that refers to
one by its earlier path must be repointed; HiNcServer pins request localization to English and
HiNcRcl drops the inert <code>HiNC:DisplayEngine:FontFile</code> key</li>
</ul>
<p>Some results change without any code change — the pivot-transform anchor, a G68 rotation that was a
silent no-op, blank lines resetting G90/G91, Heidenhain absolute arc centres, five-axis IK about
1000× tighter, and MC-linear moves stepping by euclidean tip travel. They are listed with their
symptoms under
<a href="upgrading-to-3.2.html#results-that-change-on-upgrade">Results that change on upgrade</a>.</p>
<h3 id="new-in-this-release">New in this release</h3>
<ul>
<li><strong>Siemens SINUMERIK programs replay end to end</strong> — real <code>.mpf</code> / <code>.spf</code> files rather than an ISO
subset: modal vocabulary and <code>T=&quot;name&quot;</code> tool calls, an expression evaluator over R-parameters and
<code>$</code>-system variables, programmable frames and <code>$P_UIFR</code>, <code>TRAORI</code> RTCP and <code>CYCLE800</code> swivel,
subprogram and <code>MCALL</code> cycle calls, full control flow with iteration watchdogs, the
<code>AC()</code> / <code>IC()</code> / <code>DC()</code> per-word coordinate functions and the coded-position family</li>
<li><strong>Heidenhain plays both dialects on one preset</strong> — klartext motion, datums, tool calls, arcs and
cycles; Q-parameter evaluation with FN 9–12 conditional jumps; the <code>PLANE</code> / <code>FUNCTION TCPM</code> /
<code>M128</code> tilt and RTCP stack; subprogram and <code>CALL PGM</code> calls; post-processed spellings written
without separators; and the DIN/ISO dialect with its absolute <code>I</code> / <code>J</code> / <code>K</code> arc centres</li>
<li><strong>Fanuc Custom Macro B and polar interpolation</strong> — <code>#var</code> expressions, <code>IF</code> / <code>GOTO</code> / <code>WHILE</code>,
<code>M98</code> / <code>M99</code> subprograms and <code>G65</code> / <code>G66</code> macro calls; <code>G12.1</code> / <code>G13.1</code> polar coordinate
interpolation with <code>G41</code> / <code>G42</code> compensation on the hypothetical plane</li>
<li><strong><a class="xref" href="../api/Hi.NcParsers.SoftNcRunner.html">SoftNcRunner</a> is the default NC pipeline.</strong> See
<a href="../fundamentals/nc-parsing/index.html">NC Parsing Engine</a> for its architecture and the per-brand
support matrix</li>
<li><strong>NC optimization runs on that pipeline</strong> — <em>not finished on this line, see Adoption status above</em>
— regenerating text as anchored token edits over the verbatim source block, so lines the optimizer
does not touch round-trip byte-identically. Output follows the source's decimal digits and is
written back in the source file's encoding, so a GBK or Big5 program keeps its comments</li>
<li><strong>Cutter-location files drive a real machine chain</strong>, not only a <code>ClMillingDevice</code>, and a played CL
program converts to Fanuc NC through <a class="xref" href="../api/Hi.MachiningProcs.SessionShell.html#Hi_MachiningProcs_SessionShell_ConvertClToNcFiles_">ConvertClToNcFiles</a></li>
<li><strong>Milling physics moved into the native kernel</strong> — engagement, force and the sequential thermal
chain — with the tool's scalar physics frozen once per session into
<a class="xref" href="../api/Hi.Milling.MillingTools.MillingToolPhysicsPack.html">MillingToolPhysicsPack</a>, which also makes force waveforms
reproducible between two plays of the same program</li>
<li><strong>Session commands declare themselves</strong> through
<a class="xref" href="../api/Hi.SessionCommands.CommandCatalogAttribute.html">CommandCatalogAttribute</a> and
<a class="xref" href="../api/Hi.SessionCommands.CommandFieldAttribute.html">CommandFieldAttribute</a>, so a generic editor renders them without a
hand-written form; the HTTP surface answers a no-session or no-project call with 409 and an
<a class="xref" href="../api/Hi.MachiningProcs.ApiActionResult.html">ApiActionResult</a> envelope carrying the call's notifications</li>
<li><strong>Diagnostics carry a template and its arguments</strong>, so a front end can re-render a notification in
its own language, and repeats fold into one per-run summary instead of one message per block</li>
<li><strong>Shipped resources carry a <code>.default</code> marker</strong> distinguishing system territory from user files,
and HiNc-Resource ships the five brand controller presets and three coolant presets so those load
browsers start populated</li>
<li><strong>A parser configuration is a file, and it is shareable.</strong> <a class="xref" href="../api/Hi.NcParsers.NcRunnerSuit.html">NcRunnerSuit</a> bundles
a runner with its per-case data as one loadable unit, and per-case data now travels as proxy
placeholders that resolve against the owning project — so one controller configuration is no longer
welded to the job it was first built for</li>
<li><strong>A long program no longer degrades as it plays.</strong> A dead equality guard made the session append an
NC-optimization option entry for every played act instead of only at change points, and reading the
last one walked the whole map — together, quadratic. On a 2.35-million-line Siemens program the
per-100,000-line rate now stays flat instead of climbing from 73 s to about 11 minutes. It applied
to every runner, including sessions doing no optimization at all</li>
<li><strong>Performance and footprint, measured</strong> — physics in the native kernel takes a paired play from
59.3 s / 16.1 GB allocated to 40.6 s / 3.4 GB; building the topology of a large STL is linear
instead of quadratic in triangle count (18.7× at 300k triangles, and it was 99.6% of the load);
re-triangulating after a cut is about 2.2× faster; and a long program no longer exhausts client
memory (session retention on a 25,000-block play: 406 MB → 142 MB). Every figure with its
conditions — including the two things that cost more on purpose — is under
<a href="upgrading-to-3.2.html#performance-and-footprint">Performance and footprint</a></li>
<li><strong>Stability and data integrity</strong> — the native crashes from disposing a display or geometry object
still in use, the intermittent &ldquo;No cut / No data for step&rdquo; on freshly-simulated steps, the
project-file race between a Load and a Save, and non-reproducible milling-force waveforms are all
fixed; large geometry now builds its display topology off-thread instead of freezing the UI</li>
</ul>
<h2 id="hinc-packages-version-31175">HiNc Packages Version 3.1.175</h2>
<ul>
<li><a class="xref" href="../api/Hi.NcMech.Workpieces.WorkpieceService.html">WorkpieceService</a> file IO now takes <strong>relative</strong> paths and resolves them against a base-directory <code>Func&lt;string&gt;</code> injected by <a class="xref" href="../api/Hi.MachiningProcs.LocalProjectService.html">LocalProjectService</a> — the runtime-geometry write/read no longer requires the caller to pre-combine an absolute path. <code>WorkpieceService.ReadRuntimeGeom</code> (now <code>ReadMeshedGeom</code>) now returns whether the source file existed (the not-found notice moves to the calling shell)</li>
<li>Rename runtime-geometry mesh-export methods to the <code>Export*</code> convention (STL/OBJ/PLY are foreign interchange formats, not native writes): <code>WriteRuntimeGeomToStl/Obj/Ply</code> → <a class="xref" href="../api/Hi.MachiningProcs.SessionShell.html#Hi_MachiningProcs_SessionShell_ExportRuntimeGeomToStl_">ExportRuntimeGeomToStl</a> / <a class="xref" href="../api/Hi.MachiningProcs.SessionShell.html#Hi_MachiningProcs_SessionShell_ExportRuntimeGeomToObj_">ExportRuntimeGeomToObj</a> / <a class="xref" href="../api/Hi.MachiningProcs.SessionShell.html#Hi_MachiningProcs_SessionShell_ExportRuntimeGeomToPly_">ExportRuntimeGeomToPly</a>; the session command <code>WriteRuntimeGeomToStlCommand</code> → <code>ExportRuntimeGeomToStlCommand</code> (now <a class="xref" href="../api/Hi.SessionCommands.ExportMeshedGeomToStlCommand.html">ExportMeshedGeomToStlCommand</a>) keeps the old <code>&lt;WriteRuntimeGeomToStlCommand&gt;</code> element name as a back-compat alias so existing projects still load</li>
</ul>
<h2 id="hinc-packages-version-31173">HiNc Packages Version 3.1.173</h2>
<ul>
<li>Improve <a class="xref" href="../api/Hi.MachiningSteps.MachiningStep.html#Hi_MachiningSteps_MachiningStep_Mrr_mm3ds">Mrr_mm3ds</a> precision: the material-removal-rate now sums each cut contour's signed area-vector (fan triangulation, skipping non-finite triangles) projected on the feed direction, replacing the per-contour bounding-box area that over-estimated the cut cross-section</li>
<li>Add <a class="xref" href="../api/Hi.MachiningProcs.SessionShell.html#Hi_MachiningProcs_SessionShell_AlignWorkpieceProgramZeroToIso_">AlignWorkpieceProgramZeroToIso</a> script command: resolves a G54/G55/… entry from the project ISO coordinate table and places workpiece + fixture so the program zero coincides with that machine coordinate (topology math delegated to the new <a class="xref" href="../api/Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentUtil.html#Hi_Machining_MachiningEquipmentUtils_MachiningEquipmentUtil_AlignWorkpieceProgramZeroToIso_">AlignWorkpieceProgramZeroToIso</a> extension)</li>
<li>Drop gRPC plumbing from the HiNc package: remove <code>Hi.Grpcs.*</code> ClStrip/Player service runners and protos, <code>MachiningProjectGrpcServer</code>, <code>MonitoringPlayer</code>, and <code>UniversalNcMonitorClient</code>; fold <code>CsvRunnerConfig</code> back into <a class="xref" href="../api/Hi.Numerical.FilePlayers.CsvRunner.html">CsvRunner</a> (gRPC services now ship in HiNcRcl / UJoinRcl)</li>
<li>Drop gRPC plumbing from the HiNc package: remove <code>Hi.Grpcs.*</code> ClStrip/Player service runners and protos, <code>MachiningProjectGrpcServer</code>, <code>MonitoringPlayer</code>, and <code>UniversalNcMonitorClient</code>; fold <code>CsvRunnerConfig</code> back into <code>CsvRunner0</code> (gRPC services now ship in HiNcRcl / UJoinRcl)</li>
</ul>
<h2 id="hinc-packages-version-31172">HiNc Packages Version 3.1.172</h2>
<ul>
@@ -106,7 +294,7 @@
</ul>
<h2 id="hinc-packages-version-31167">HiNc Packages Version 3.1.167</h2>
<ul>
<li>Introduce <a class="xref" href="../api/Hi.NcParsers.SoftNcRunner.html">SoftNcRunner</a> as a pluggable NC parser/runner replacing the legacy <code>HardNcRunner</code>; opt in via <a class="xref" href="../api/Hi.MachiningProcs.SessionShell.html#Hi_MachiningProcs_SessionShell_EnableSoftNcRunner">EnableSoftNcRunner</a>. <strong>see <a href="softnc-rewrite-report.html">HardNc → SoftNc Rewrite — Progress Report</a> for the in-flight rewrite scope and remaining work</strong></li>
<li>Introduce <a class="xref" href="../api/Hi.NcParsers.SoftNcRunner.html">SoftNcRunner</a> as a pluggable NC parser/runner replacing the legacy <code>HardNcRunner</code>, opt-in at the time via <a class="xref" href="../api/Hi.MachiningProcs.SessionShell.html#Hi_MachiningProcs_SessionShell_EnableSoftNcRunner">EnableSoftNcRunner</a>. It became the default pipeline in 3.2 — see <a href="../fundamentals/nc-parsing/index.html">NC Parsing Engine</a></li>
<li>Extend coolant model to <a class="xref" href="../api/Hi.Numerical.CoolantMode.html">CoolantMode</a> Flood/Mist/Off and refactor <a class="xref" href="../api/Hi.Physics.CoolantHeatCondition.html">CoolantHeatCondition</a> / <code>MillingTemperatureUtil</code> for multi-mode coolant</li>
<li>Bind session events to <a class="xref" href="../api/Hi.MachiningProcs.MachiningSession.html">MachiningSession</a> lifetime: <a class="xref" href="../api/Hi.MachiningProcs.SessionShell.html#Hi_MachiningProcs_SessionShell_SessionStepBuilt">SessionStepBuilt</a>, <a class="xref" href="../api/Hi.MachiningProcs.SessionShell.html#Hi_MachiningProcs_SessionShell_SessionStepSelected">SessionStepSelected</a>, <a class="xref" href="../api/Hi.MachiningProcs.SessionShell.html#Hi_MachiningProcs_SessionShell_SessionSyntaxPieceRan">SessionSyntaxPieceRan</a>, <a class="xref" href="../api/Hi.MachiningProcs.SessionShell.html#Hi_MachiningProcs_SessionShell_SessionSourcedActEntry">SessionSourcedActEntry</a> (legacy aliases kept as <code>[Obsolete]</code>); add <a class="xref" href="../api/Hi.MachiningProcs.SessionShell.html#Hi_MachiningProcs_SessionShell_RegisterWriteSyntaxPieces_">RegisterWriteSyntaxPieces</a> / <a class="xref" href="../api/Hi.MachiningProcs.SessionShell.html#Hi_MachiningProcs_SessionShell_RegisterWriteSyntaxPiecesWithActs_">RegisterWriteSyntaxPiecesWithActs</a> for syntax-piece debug tracing</li>
<li>Add <a class="xref" href="../api/Hi.Common.XmlUtils.ProjectApiVersion.html">ProjectApiVersion</a> carrier through <a class="xref" href="../api/Hi.Common.XmlUtils.XFactory.html">XFactory</a> deserialization for project-XML version negotiation; resolve <a class="xref" href="../api/Hi.NcMech.Workpieces.Workpiece.html">Workpiece</a> through a lazy <code>Func</code> getter in <a class="xref" href="../api/Hi.NcMech.Workpieces.WorkpieceService.html">WorkpieceService</a></li>
@@ -118,8 +306,8 @@
<li>Add <a class="xref" href="../api/Hi.Common.Messages.ActionProgress-1.html">ActionProgress&lt;T&gt;</a>.<a class="xref" href="../api/Hi.Common.Messages.ActionProgress-1.html#Hi_Common_Messages_ActionProgress_1_FromLogger_">FromLogger</a> to bridge <code>IProgress&lt;object&gt;</code> APIs to <code>ILogger</code></li>
<li>Rename <code>ShowIfCatched</code> → <a class="xref" href="../api/Hi.Common.Messages.ExceptionUtil.html#Hi_Common_Messages_ExceptionUtil_CatchExceptions_">CatchExceptions</a> with explicit <code>Action&lt;Exception&gt;</code> handler; remove <code>RoutineBlocker0</code></li>
<li>Extract <a class="xref" href="../api/Hi.NcMech.Workpieces.WorkpieceService.html">WorkpieceService</a> from <a class="xref" href="../api/Hi.NcMech.Workpieces.Workpiece.html">Workpiece</a> for runtime geometry operations</li>
<li>Update ISO coordinate rendering for 3+2 axis machines: coordinate position now uses <a class="xref" href="../api/Hi.Numerical.IsoCoordinateEntryDisplayee.html">IsoCoordinateEntryDisplayee</a> with full machining chain anchor instead of table-buckle-only anchor</li>
<li>Rename <code>SessionMessageHost</code> → <code>SessionProgress</code> on both <a class="xref" href="../api/Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_SessionProgress">SessionProgress</a> and <a class="xref" href="../api/Hi.MachiningProcs.SessionShell.html#Hi_MachiningProcs_SessionShell_SessionProgress">SessionProgress</a> (<code>SessionShell.SessionMessageHost</code> is kept as <code>[Obsolete]</code>)</li>
<li>Update ISO coordinate rendering for 3+2 axis machines: coordinate position now uses <code>IsoCoordinateEntryDisplayee</code> with full machining chain anchor instead of table-buckle-only anchor</li>
<li>Rename <code>SessionMessageHost</code> → <code>SessionProgress</code> on both <a class="xref" href="../api/Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_ShellProgress">ShellProgress</a> and <a class="xref" href="../api/Hi.MachiningProcs.SessionShell.html#Hi_MachiningProcs_SessionShell_ShellProgress">ShellProgress</a> (<code>SessionShell.SessionMessageHost</code> is kept as <code>[Obsolete]</code>)</li>
<li>Remove obsolete <code>HiLog</code> logging utility and <code>DynamicMachiningProjectDisplayee0</code></li>
</ul>
<h2 id="hinc-packages-version-31160">HiNc Packages Version 3.1.160</h2>
@@ -152,7 +340,7 @@
<ul>
<li>Add cubetree geometry defect scanning (<a class="xref" href="../api/Hi.MachiningProcs.SessionShell.html#Hi_MachiningProcs_SessionShell_ScanRuntimeGeomInfDefect_">ScanRuntimeGeomInfDefect</a>) and clearing (<a class="xref" href="../api/Hi.MachiningProcs.SessionShell.html#Hi_MachiningProcs_SessionShell_ClearDefectDisplayee_">ClearDefectDisplayee</a>) for detecting and visualizing geometry anomalies in workpieces (see <a class="xref" href="../workflows/geometry-validation.html">Workflow: Geometry Validation</a>)</li>
<li>Upgrade internal fraction representation to float128 precision for improved cubetree geometry accuracy and numerical stability</li>
<li>Refactor messaging system from <code>IMessageHost</code> to standard <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress&lt;T&gt;</a> pattern; <a class="xref" href="../api/Hi.MachiningProcs.SessionProgress.html">SessionProgress</a> (formerly <code>SessionMessageHost</code>) now implements <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress&lt;T&gt;</a>, and all messaging methods renamed from <code>Add*</code> to <code>Report*</code> (e.g., <code>AddProgress</code> → <a class="xref" href="../api/Hi.Common.Messages.MultiTagMessageUtil.html#Hi_Common_Messages_MultiTagMessageUtil_ReportProgress_">ReportProgress</a>)</li>
<li>Refactor messaging system from <code>IMessageHost</code> to standard <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress&lt;T&gt;</a> pattern; <a class="xref" href="../api/Hi.MachiningProcs.ShellProgress.html">ShellProgress</a> (formerly <code>SessionMessageHost</code>) now implements <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress&lt;T&gt;</a>, and all messaging methods renamed from <code>Add*</code> to <code>Report*</code> (e.g., <code>AddProgress</code> → <code>MultiTagMessageUtil.ReportProgress</code>)</li>
<li>Fix cubetree initialization crash</li>
<li>Improve postprocess precision by applying sin–cos parameterization instead of direct angle-based formulation for rotary axis numerical solving in <a class="xref" href="../api/Hi.Numerical.Xyzabc.XyzabcSolver.html">XyzabcSolver</a></li>
<li>Add asynchronous anchor solid preparation on project load for improved startup performance</li>
@@ -199,13 +387,13 @@
<li>Improve <a class="xref" href="../api/Hi.MillingForces.Training.MillingTraining.html">MillingTraining</a> module with separate lead and result parameter templates for more accurate cutting parameter training</li>
<li>Separate C++ library for code protection</li>
<li>Add UTF-8 file path support for runtime geometry IO operations</li>
<li>Improve <a class="xref" href="../api/Hi.Numerical.FilePlayers.CsvRunner.html">CsvRunner</a> with enhanced time mapping pattern</li>
<li>Improve <code>CsvRunner0</code> with enhanced time mapping pattern</li>
<li>Various architecture improvements and bug fixes</li>
</ul>
<h2 id="hinc-packages-version-3191">HiNc Packages Version 3.1.91</h2>
<ul>
<li>Add <a class="xref" href="../api/Hi.NcOpt.NcOptimizationEmbeddedLogMode.html">NcOptimizationEmbeddedLogMode</a> to control embedded log detail level (None/SimpleLog/FullLog) (see <a href="../workflows/nc-optimization.html#embedded-log-comments">Embedded Log Comments</a>).</li>
<li>Fix bug of <a class="xref" href="../api/Hi.NcOpt.NcOptProc.html">NcOptProc</a> duplicated feedrate assignment</li>
<li>Fix bug of <code>NcOptProc</code> duplicated feedrate assignment</li>
</ul>
<h2 id="hinc-packages-version-3190">HiNc Packages Version 3.1.90</h2>
<ul>
@@ -216,7 +404,7 @@
</ul>
<h2 id="hinc-packages-version-3186">HiNc Packages Version 3.1.86</h2>
<ul>
<li>Re-build <a class="xref" href="../api/Hi.NcOpt.NcOptProc.html">NcOptProc</a> with stricter optimization logics</li>
<li>Re-build <code>NcOptProc</code> with stricter optimization logics</li>
<li>Add optimization logging features (see <a href="../workflows/nc-optimization.html#optimization-logs">Optimization Logs</a>):
<ul>
<li><code>.flatproc.log</code> file output for optimization process analysis</li>
@@ -232,14 +420,14 @@
<li>Optimize memory usage by shrinking map-size of clStripPos</li>
<li>Fix design pattern of cutting parameter training module (<a class="xref" href="../api/Hi.MillingForces.Training.MillingTraining.html">MillingTraining</a>)</li>
<li>Add <a class="xref" href="../api/Hi.MachiningProcs.SessionShell.html#Hi_MachiningProcs_SessionShell_LoadCuttingParaByFile_">LoadCuttingParaByFile</a> function to load cutting parameters from file</li>
<li>Improve <a class="xref" href="../api/Hi.Numerical.FilePlayers.CsvRunner.html">CsvRunner</a> actual time parsing: automatically calculate step duration from actual time when duration is not provided</li>
<li>Enhance message handling in <a class="xref" href="../api/Hi.MachiningProcs.SessionShell.html">SessionShell</a> by unifying <a class="xref" href="../api/Hi.MachiningProcs.SessionProgress.html">SessionProgress</a> usage</li>
<li>Improve <code>CsvRunner0</code> actual time parsing: automatically calculate step duration from actual time when duration is not provided</li>
<li>Enhance message handling in <a class="xref" href="../api/Hi.MachiningProcs.SessionShell.html">SessionShell</a> by unifying <a class="xref" href="../api/Hi.MachiningProcs.ShellProgress.html">ShellProgress</a> usage</li>
<li>Improve optimization performance with better task scheduling</li>
<li>Various performance improvements and bug fixes</li>
</ul>
<h2 id="hinc-packages-version-3175">HiNc Packages Version 3.1.75</h2>
<ul>
<li>Add actual time tracking functionality (<a class="xref" href="../api/Hi.MachiningSteps.MachiningStep.html#Hi_MachiningSteps_MachiningStep_ActualTime_">ActualTime</a>)</li>
<li>Add actual time tracking functionality (<a class="xref" href="../api/Hi.MachiningSteps.MachiningStep.html#Hi_MachiningSteps_MachiningStep_ActualTimecode_">ActualTimecode</a>)</li>
<li>Various stability improvements and bug fixes</li>
</ul>
<h2 id="hinc-packages-version-3174">HiNc Packages Version 3.1.74</h2>