iDither release notes
BETA VERSIONV6.12
Changes in this version
- Geometry analysis now detects same-direction shared edges and reconstructs invalid seams before color assignment. Browser 3MF and GLB exports validate directed edge topology; outdated 3MF caches are invalidated.
- When CMYK Optimized is ON, the palette recommender now shows only the two forced palettes (CMY+White and CMY+Black) regardless of the Palette Samples setting, reducing analysis time. Measured on one model: palette recommender dropped from 1,389 ms to 867 ms (38% faster), with total analysis time falling from 13.8 s to 4.8 s. The Palette Samples control still governs the optimizer-row search budget when CMYK Optimized is OFF.
- Removed Rose (#E75480) from PLA filament suggestions. Colors that previously resolved to Rose now map to their true nearest neighbor in the vocabulary — mostly Hot Pink, then Dark Pink and Crimson — so the label and purchase link accurately describe what prints. The median spacing between neighboring names in the vocabulary is 0.0479 in OKLab; Rose sat 0.2131 away from its nearest name (Magenta), about 4.5× that median, which would have misdescribed the printed color and sent the operator to buy a filament the analysis never modeled.
- CMY+White two-wall exports now use a 0.30 / 0.30 mm optical stack instead of 0.26 / 0.26, with the stock 0.50 mm first layer and 0.42 mm top surface. Measured on one part with the same colored band and paint fixes applied to both, 0.30 beads print 8h18m58s against 8h59m51s for 0.26 -- 41 minutes, 7.6% -- because bead width decides how many extrusion runs exist at all: outer-wall runs fall 37,920 to 33,292 and their median length rises 1.87 to 2.11 mm, with 11.5% fewer runs and 9.4% fewer wipe blocks overall. The colored band moves the other way under this change (0.9245 to 1.0792 mm at 0.12 mm layers) and loses, because the band only sets how deep color reaches while bead width sets how fragmented the toolpath is. The first layer and top surface widths do not enter the band at all, so taking stock values there costs nothing and gives back bed adhesion on a face that is coarse regardless. This is a speed result, not a calibration one: the stack is about 0.58 mm combined rather than 0.50 mm, so its translucency differs, and no appearance table has been measured or derived at either geometry -- both are still reported as provisional-geometry-mismatch, and a test print remains the way to judge appearance. The 0.26 / 0.26 profile is kept and still addressable by id rather than being rewritten. Exported 3MF cache identity changed, so archives built by an earlier build are regenerated.
- Fixed CMY+White dual-wall exports coloring far deeper into the model than the selected Colored Walls asked for. "Maximum width of a segmented region" is how stock Orca is told how deep painted color may reach, measured inward from each layer's outer contour, and iDither derives it from the wall line widths. It was derived before the CMY+White optical geometry narrows those walls to 0.26 mm, so the archive shipped the stock 0.42/0.45 band instead: 1.5959 mm at 0.12 mm layers over walls occupying 0.52 mm, letting paint run about 0.67 mm past the last wall and segmenting interior that was never meant to be colored. The band is now derived from the widths the archive actually ships, at every Layer Height offered in Advanced Settings (0.12 mm now yields 0.9245 mm). The visible surface is unaffected -- the colored walls sit inside the band either way -- but the slicer no longer segments the interior behind them, which removes regions, tool changes and travel that bought nothing. Exports that use the stock wall geometry are byte-identical. Exported 3MF cache identity changed, so archives built by an earlier build are regenerated.
- Fixed browser-recalculated custom palettes failing to export with HTTP 409 and the misleading advice "This legacy optimized analysis predates row-specific color/backing context. Re-analyze the model." The analysis was not legacy and re-analyzing could never help: the commit persisted the edited palette's colors into its private record but not that record's color context, and the export path resolves a custom palette's authoritative context from exactly that record. Canonical CMY+White or CMY+Black colors with no stored context are precisely what the exporter reads as a pre-context analysis, so every edited-swatch export was refused, and a fresh analysis rewrote the same record with the same field missing. The public palette carried the context all along. A custom palette committed by an earlier build is corrected the next time that row is recalculated.
- Fixed generated 3MF files pinning infill, solid infill and every unpainted wall to filament 1 (Cyan) in multi-volume exports, regardless of the Infill and Solid Infill filament settings and with no way to override it from the slicer. A painted part was written with a part-level extruder of 1, and stock Orca copies any non-zero part extruder straight onto that volume's wall, solid infill and sparse infill filament, which then beats the project settings. A painted part now states no part-level extruder at all (Orca's own encoding for that is 0), so the project filament settings govern the unpainted interior again; parts that genuinely own a single filament still declare it. This was most visible at 0.12 mm with Manual 5th Color On because those settings route the export through the multi-volume transport, which is the only path that writes part extruders. Exported 3MF cache identity changed, so archives built by an earlier build are regenerated rather than reused.
- Added a 0.14 mm Layer Height option and made 0.12 mm the Advanced Settings default. Restoring a completed analysis still reports the height that analysis actually used, so existing results are not relabelled.
- Export now merges painted regions that are execution-identical, cutting print time on a representative 251-color CMY+White mask from 9h41m12s to 8h10m33s (-15.6%) in stock Snapmaker Orca with no change to color assignment. A grouped cm1 recipe keeps its virtual identity all the way into G-code generation, so every distinct virtual id on a layer opened its own print region and same-color islands in different regions could not be ordered against one another; each painted leaf is now rewritten to the lowest-numbered recipe that deposits the identical physical filament on the outer wall, the inner wall and the infill on every layer that leaf spans, which is equality of the resolved filament rather than a color tolerance. Measured on the same Polymaker profile and byte-identical settings: travel -33.5%, wipe blocks -24.7%, retractions -27.8%, extrusion runs -21.9%, while tool transitions stayed flat (665 to 667 against a floor that moved 649 to 654), because the saving is fragmentation rather than tool ordering. Geometry, dimensions, all 251 recipes, CMYK Optimized, Manual 5th Color and the outer/inner wall architecture are untouched, and the browser and server exporters run the identical pass. Reconstructing the printed surface from the G-code, 98.85% of shared cells carry an overlapping tool set and per-tool surface area shifts at most 0.81 pp; the mask's own dither changes color between neighboring cells 24.4% of the time, so the residual deviation is far finer than the pattern itself. Weight rises 0.59 g because continuous perimeters fill slivers the fragmented version left open. Exported 3MF cache identity changed, so archives built by an earlier build are regenerated instead of reused.
- Fixed CMY+White with Manual 5th Color On producing fragmented inner-wall toolpaths across the 251-color palette. Analysis still selects native-40 outer/inner ordered-pair recipes directly against the true source color, but every recipe now shares the DualWallSearch nested rank and canonical phase for W/C/M/Y placement, so similar material counts retain the same inner positions instead of reshuffling. Exact ordered-pair and physical-filament counts are preserved; fixed-height color metrics are unchanged, Variable Optical Layers permits only bounded color-protection exceptions, and browser/PHP export remains transport-only for the authoritative analysis words.
- Beta cleanup: removed validation/production-policy export gates and export-policy cache identity, unified CMYW Dual-Wall aliases and browser/server extraction, enabled downloadable CMYW W/C/M/Y Dual-Wall 3MF output, and generalized Variable Optical Layers to every supported selected base layer height while preserving the native 40-position cadence. CMYW execution remains descriptive/unvalidated metadata only; printer execution and physical print quality still require independent verification.
- Fixed swatch edits failing on zero-upload and derived-share analyses whenever the edited row is not a canonical CMY+K or CMY+W quartet. The browser recalculation demanded an authoritative row context for every row and raised 'This palette is missing its authoritative color context' when none was detectable, so editing a typical alternative palette, or any 2-/3-toolhead result, failed outright while the identical server-backed path succeeded. A recalculated row that resolves to no printed-system context now simply carries none, matching the server commit path and the export gate's own reading of such rows. A row that does resolve is still validated, and a stale or contradictory stored context still fails closed. Export policy is unchanged: rows without a resolved context were never production-export gated.
- Enabled CMY+White production 3MF export. Every resolved row is now export-allowed in all four CMYK Optimized / Manual 5th Color states, replacing the policy that refused the whole CMY+White row. This is an explicit product decision, not a claim of validation: no CMYW stock-Orca printer-execution proof exists, so each exported CMY+White 3MF carries a note telling the operator to verify a test print before committing material. The capability is still resolved in one place as a single named field and mirrored across PHP, the browser app, both browser workers and the native core, and every transport still refuses a context that states a block, so the fail-closed mechanism remains intact for any future blocked context. Because the export capability participates in the color-context cache identity, CMY+White rows analyzed by an earlier build must be re-analyzed before export.
- Fixed Safari palette recalculation for local-only and derived-share analyses. Recalculated rows now retain the completed analysis CMYK Optimized and Manual 5th Color context, and browser failures remain visible instead of falling through to server endpoints that intentionally have no analyzed-job source for these jobs. Normal server-backed analyses retain their existing native fallback.
- Completed the CMYW measured-appearance integration as a testable beta. Numerical identity is now context-specific under cmyk-optimized-v6: CMYK+white cites its CMYK Plate1 and Plate2 inputs, CMYW+black cites only its own measured plate, and each no-backing context cites its own provisional model. CMYW metadata now reports the active profile/schema/hash and W/C/M/Y roles, source confidence labels are preserved, and production CMYW 3MF export remained fail-closed at that build (superseded in 6.12.27, which enables it).
- Integrated the measured printed-CMYW black-backing plate (plate1-spyder-cmyw-black-backing-v1, 2,295 records over a matte black backing). CMY+White with Manual 5th Color On is now an empirical, measured context answered by its own plate instead of the provisional Pigment Painter model, so it differs numerically from the no-backing CMY+White context for the first time. Each printed system now carries its own thickness ladder (the CMYW plate measures 0.64 mm / 8 layers at T7 where the printed-CMYK plate measures 0.72 mm / 9), and the Plate 2 phase/order term is never applied to printed CMYW, which has no K channel for a K-position correction to describe. The supplied high/medium/low confidence labels remain source truth; runtime weighting classifies numeric confidence separately without rewriting them. Measured CMYW optics is still not printer-execution validation, though production 3MF export for the row is now enabled by explicit policy.
- Split color-context provenance so every profile/model hash belongs to the identity it names, and added optimizer state to the canonical context key. A context now declares either a measured data profile (Plate1, with Plate1's own hash and its Plate2 calibration) or an algorithmic appearance model (with that model's own definition hash); provisional and unoptimized rows no longer report the empirical profile's hash, schema or display name. The context key gained optimizer state, so an Optimized-Off request can no longer collide with an Optimized-On analyzed row in cache identity, lock paths, transport comparison or tamper validation, while Optimized-Off Manual On and Manual Off still share one computational identity. CMY+White production export stays fail-closed for the whole row, now as a named policy with a stated reason.
- Bound local and server 3MF export to each analyzed palette row's authoritative color context. Cache identity, worker/API transport, proof checks, status, lock paths, downloads and archive metadata now consume the same validated context; changing the UI after analysis cannot silently reinterpret a row.
- Normalized local browser 3MF caching to effective Manual 5th Color state and retained valid context-keyed OPFS archives. With CMYK Optimized Off, Manual On and Off now share one local 3MF key and reuse the same generated archive while the requested UI preference remains separate.
- Legacy optimized analyses that predate independent row contexts are now stale and require re-analysis. They are no longer globally restored as Manual 5th Color On, which could falsely relabel the historical CMY+White row as a modern BLACK-backed solution.
- Corrected provenance semantics in native, PHP, browser workers, WASM metadata, previews and export metadata: Optimized Off is unoptimized and never provisional; either no-backing Optimized-On context is provisional; CMY+Black over white and CMY+White over black are empirical measured appearance contexts.
- CMY+White Manual On declares BLACK backing and uses its own measured CMYW appearance profile. Manual Off remains the provisional no-backing Pigment Painter context. Measured appearance does not validate the ordered dual-wall pair model or printer execution, so production export remains gated.
- Fixed a regression that silently disabled CMYK optimization for every default user: with CMYK Optimized On and Manual 5th Color Off the optimizer was gated off entirely and produced results identical to CMYK Optimized Off. CMYK Optimized now controls whether optimization runs, and Manual 5th Color controls only the backing context.
- Replaced the Color Mode selector with two independent settings. CMYK Optimized applies calibrated color optimization to both mandatory palette rows, CMY+White (printed C/M/Y/W) and CMY+Black (printed C/M/Y/K), each in its own printed system and backing context. Off keeps the existing unoptimized behavior for both rows.
- CMY+White is now a real optimization context. Row detection resolves both printed systems, so a CMY+White palette is optimized in the CMYW system instead of falling through to the unoptimized path as an ineffective printed-CMYK set. Printed-K packet cadence, the K tie-break and recipe identity remain printed-CMYK policies and are unchanged for CMY+White.
- CMY+Black over white and CMY+White over black each have their own measured appearance plate. Every no-backing Optimized-On context runs the same optimizer pipeline against its designated provisional model and reports provenance "provisional" with its own identity; Optimized-Off rows report "unoptimized" and are never provisional. Measurements are never reused across contexts.
- Manual 5th Color has no effect whatsoever while CMYK Optimized is Off, including on cache identity. Only the effective backing enters numerical cache keys, export cache keys and lock paths, so Optimized Off with Manual On and Manual Off address one cache entry instead of regenerating an identical archive under two keys.
- Backing metadata is now resolved from the row. CMY+White reports a black backing and CMY+Black a white one, so a result can no longer carry a backing_context that contradicts the row color_context on the same object.
- Legacy analyses that predate independent row contexts are marked stale and require re-analysis, because the historical CMY+Black white-backed meaning cannot truthfully reconstruct the mandatory CMY+White row as BLACK-backed.
- The browser-local zero-upload 3MF transport now enforces the same fail-closed production export policy as the server endpoints, from one shared capability decision. CMY+White and any black backing are refused in both transports, with no fallback printed-CMYK archive.
- Added Manual 5th Color (Off by default). It describes a user-provided backing/fill behind the printed shell, never another printed filament, tool, or slot. On: CMY+White assumes black backing and CMY+Black assumes white backing; Off: both rows use their free-standing no-backing profile. The control is disabled while CMYK Optimized is Off and has no effect on raw output.
- Both mandatory rows now always coexist after every analysis. No Color Mode state can hide or invalidate one of them, and the CMY+White and CMY+Black printed systems are internal row identities rather than mutually exclusive modes.
- Backing identity now participates in the optimizer metadata, numerical cache key, custom-palette cache keys, analysis cache reuse, server export variant/cache identity, browser 3MF storage key, and every row color_context. A no-backing solution can never satisfy a backed request, and a manual backing never becomes an Orca printer filament.
- The measured Plate 1 CMYK profile is white-backed and the measured CMYW profile is black-backed, so each applies only to its matching row when Manual 5th Color is On. Manual 5th Color Off reports both no-backing rows as provisional instead of silently reusing backed measurements.
- Low-level legacy callers that never state a manual backing retain the historical core identity, but stored analyses without independent row contexts are not restored or exported. Modern analyses always carry the requested setting and both authoritative row contexts.
- CMY+White dual-wall transport and production 3MF export remain fail-closed pending ordered-pair and printer-execution validation; the measured black-backed appearance plate alone does not open that gate.
- Enabled validated CMYK Dual-Wall Optical transport when Walls is exactly 2. Production-eligible v2 solutions now serialize independent native-L outer and inner cadence words as one stock Orca cm1 grouped pattern; schema, model, lineage, solver-quality, wall order, and tamper checks remain fail-closed, and budget-limited solutions cannot export. Walls 1 and 3-5 retain their existing behavior. CMYK (White) Black Core remains separately gated.
- Added CMYK (White) Black Core mode: a new Color Mode selector lets users choose between the existing CMYK (printed Black over white interior) and CMYK (White), which prints Cyan, Magenta, Yellow and White filament with no printed Black. After printing, the user fills the hollow interior with black mineral + acrylic casting material; darkness comes from removing buried White so the fixed black cast core shows through. CMYK (White) locks Walls to 2 and CMYK Optimized to Off, warns when Make Inside Hollow is Off, and exports fail-closed pending empirical optical calibration. The existing CMYK/K path is unchanged.
- Added Dual-Wall Optical infrastructure: shared native and browser search, independent outer/inner cadences, gradient continuity, nested black masks, and validated 3MF metadata. The synthetic regression establishes software behavior only; empirical optical accuracy, whole-slicer G-code execution, and physical print quality remain unconfirmed.
- Mixed CMYK recipes now distribute atomic two-layer chromatic packets from exact native counts. B26/C2/M10/Y2 stays at L40 with zero avoidable chromatic singletons and the minimum B run ceiling of four; fixed, VOL, Front Only, and Orca transport preserve packet adjacency.
- Walls now also writes ensure_vertical_shell_thickness = none and only_one_wall_top = 0. Without the first, generic Snapmaker Orca adds solid reinforcement behind sloped and curved colored walls to hold a uniform shell thickness, and that material blocks light from reaching the white core. Without the second, the profile\u2019s only_one_wall_top could still thin some top-surface regions to a single loop at Walls 2\u20135. Walls still does not change top/bottom shell layers: flat faces keep the profile\u2019s 5-layer solid skin.
- Added the Walls Advanced Option (1 by default, 2\u20135 available). Generated 3MF files now force the shell to exactly that many wall loops and confine painted color to the band those loops occupy, so a thin colored surface can let light through to a white core instead of opening in Snapmaker Orca with the profile\u2019s two walls and color filling everything behind them. Stock Snapmaker Orca has no \u201cnumber of colored walls\u201d setting, so the option is written as the wall_loops and mmu_segmented_region_max_width project overrides it does honor; top and bottom faces keep their full paint. Export-only: changing Walls never reruns color analysis.
- Fixed No-Dither analyses of exact-palette models reporting that endpoint assignment was “not applicable” in their diagnostics while exact physical color matching had in fact been applied. The reported policy now says so, matching what the server engine already reported. Diagnostics only: no palette, assignment or generated 3MF output changes.
- Fixed exact physical filament colors not being honored under CMYK Optimized. When a model's source colors are a small exact palette, a source color that is literally a loaded filament must print with that filament. That protection compared the source against the calibrated scoring colors, and CMYK Optimized scores Cyan as #49D4DE, so a raw #00FFFF texel matched nothing and the protection silently did nothing at all. Exact matching now always compares the raw filament swatches, while calibrated colors stay strictly for scoring.
- Fixed the same exact-color protection being skipped entirely on several paths regardless of CMYK Optimized: the winning palette could reuse an earlier assignment that was never exact-matched, so it got different semantics from the alternative palettes it was ranked against, and No-Dither never applied it at all. Exact matching is now one shared operation applied to every finished assignment - adaptive refinement, the reused winner, No-Dither, the spatial rerank candidates and custom palette recalculation - in the browser and in the server engine alike.
- A model whose source is not an exact palette is unaffected in either mode. For an exact-palette model, results change only where a source color that exactly matches a loaded filament is now painted with that filament.
- Duplicate filament slots now resolve deterministically to the lowest matching slot, identically in the browser and the server engine.
- Bumped the native engine marker so an analysis cached by the previous engine cannot be reused with the old assignment. Core ABI v10, CMYK Optimized v5 and every Plate 1 and Plate 2 calibration asset are unchanged.
- Fixed the Predicted print preview and the downloaded predicted GLB looking dull with CMYK Optimized On. The mode was doing two jobs: choosing which recipe reproduces a source color, and deciding what color to draw for it. A chosen virtual recipe was drawn in the empirical calibration’s own space, which spans Oklab L 0.347–0.867 with mean chroma 0.064 over the profile’s bulk thicknesses, so previews lost their blacks and their saturation while the generated 3MF stayed correct. CMYK Optimized now affects recipe selection only: every displayed color is the canonical Pigment Painter appearance of the chosen recipe, computed identically with the mode On and Off, and physical filaments keep displaying as their own swatches.
- The calibrated appearance remains the scoring model and is unchanged: it still drives palette narrowing, quality rescoring, the spatial print metric and final leaf assignment, and reaches the browser as its own assignment palette. The same recipes are chosen and the same paint is exported as before this fix.
- Published CMYK Optimized v5, retaining core ABI v10 and every Plate 1 and Plate 2 calibration asset unchanged. The version bump and the native engine marker exist so an analysis cached under v4 cannot be reused and shown with the old display palette.
- CMYK Optimized now predicts the physical Black, Cyan, Magenta and Yellow endpoints with the same empirical print calibration it already used for mixed virtual recipes. Previously the four physical filaments were scored from their raw sRGB swatches, so a pure Black was treated as a perfect black no printed stack can reach and competed against the mixes on different terms. Palette narrowing, full scoring, the spatial print metric and final leaf assignment now share one appearance space. Filament identity and export are unchanged: Black still exports as physical Black, Cyan as Cyan.
- Published CMYK Optimized v4, retaining core ABI v10 and every Plate 1 and Plate 2 calibration asset unchanged. The version bump exists so analyses cached under v3 cannot be reused for the new endpoint scoring.
- Fixed dark regions collapsing to solid Black triangles under CMYK Optimized by keeping neutral-bridge gap coverage applied across a whole region when interior dark leaves were regularized to Black.
- Restored the 3MF paint sub-triangle child order to match OrcaSlicer\u2019s right-to-left deserialization.
- Fixed browser 3MF downloads failing with “Can’t find variable: modelHeightMm”. The exporter now returns the measured model height from its valid scope and closes the temporary model file before packaging.
- Fixed IIS loading of shared-analysis export geometry by registering export_positions.f32 as binary content in both website configurations.
- Renamed the Advanced Option “U1 Bugs” to “Snap Back Compat” and made it On by default.
- Snap Back Compat now targets Snapmaker Orca V2.3.6-native MixedFilament transport/execution while preserving iDither’s optimized virtual-filament recipes and layer cadence.
- Added selectable 0.08, 0.10, 0.12, 0.16, 0.20, 0.24, and 0.28 mm layer heights. Generated 3MF files use the selected value for both normal and initial layer height, with 0.10 mm now the default.
- Added Subdivide Mix Layer. Turning it On also enables Full domain, while subdivision remains disabled for infill.
- Generated 3MF projects now inherit the current 0.10 mm Snapmaker color-mixing print-profile behavior, including supports enabled by default.
- Make Inside Hollow now defaults to Off.
- Raised Max Triangles from 300,000 to 1,000,000 so detailed models can retain substantially more printable surface geometry.
- Updated 3MF generation/cache isolation so Snap Back Compat, layer-height, and subdivision variants cannot reuse incompatible generated output.
- Fixed derived-share job identity handoff so deferred palette previews, custom status polling, and other server-backed actions use the published job immediately after zero-upload analysis.
- Fixed deferred Alternative palette previews on the browser zero-upload path by removing the stale hard-coded core ABI v8 gate; the runtime now accepts a well-formed iDither core ABI and lets the palette worker verify the exact loaded ABI, including production ABI 7.
- Added Variable Optical Layers V1 (On by default, export-only): generated 3MF files use one frozen global 40-layer 0.08 / 0.10 / 0.12 mm schedule averaging 0.10 mm for finer optical-depth steps in translucent CMYK/white-core printing. Height is global per layer while color/tool assignments stay local; V1 requires Snap Back Compat On and is incompatible with Subdivide Mix Layer On. This is an execution mechanism, not a measured color-accuracy claim.
- Repaired Variable Optical Layers V1 full-height slice correctness: exports now apply the repeating 40-layer profile across full model height with a real top cap, native-L toolhead cadence, single unified object_id=1 geometry, and synchronized browser/server mirrors; G-code proven 101/101 layers on 10.05mm fixture.
- Added CMYK Optimized (On by default): Cyan, Magenta, Yellow + Black filament sets are now optimized using iDither’s empirical CMYK print calibration, including stronger Black, thickness-dependent optical behavior, and white-backed color response.
- CMYK Optimized is wired through analysis identity, palette cache keys, and the browser/native core; turning it Off reproduces the generic pigment path exactly, as proven by the native selftest and the WASM on/off parity harness.
- Added Variable Optical Layers V1 native-40 exact lookup: cold 251-recipe planning ~34s→~36ms PHP, output-identical, 10660-row versioned table f8e340e8…, README U1-Bugs wording retired.
- Repaired remaining CMYK Optimized issues without changing calibration: fixed the browser zero-upload crash by initializing the request mode before coarse scoring, unified browser/native optical dedup on one shared preparation path, and made CMYK diagnostics report measured empirical usage/confidence and fallback share with detection confidence kept separate.
- Canonical CMYK quartet is now injected before browser coarse selection and force-carried through exact recheck on both backends, including No-Dither parity, with per-stage carry diagnostics and a stable winning-result metadata object.
- Added an Advanced diagnostics status block (profile, detection confidence, empirical usage/confidence, dedup counts, fallback share) with honest unavailable handling for legacy payloads.
- Fixed “VOL signed cadence length does not match recipe_lattice_units” for valid current rows: native-length and stock-length signed cadences are now validated in their own domains and recover the persisted native lattice counts, so Safari zero-upload, recalculation, derived-share reload, and browser/server 3MF export no longer reject valid stock-cadence rows; corrupt rows still fail closed.
- Added a CMYK Optimized Plate 2 phase-robustness tie-break so native-40 recipes prefer the more phase-stable cadence.
- Added Plate 2 K-position lightness from the photo-derived plate2-ab-photo-derived-v1 calibration.
- Published CMYK Optimized v3 with core ABI v10.
- Native, browser, and PHP cache keys stay in parity for the v3 optimizer identity, Plate 2 profile hash, and ABI v10 commit gate.
- Fixed “Only alternative palette rows can be built on demand.” when building a palette row on the server: preview_palette.php now accepts the same pal_N row IDs as every other endpoint, so the Best Match row can be rebuilt when its preview is unavailable and rows past Alternative 8 are no longer rejected.
- Fixed “Unsupported iDither core ABI: idither-core-abi-v10” after the CMYK Optimized v3 deploy: the browser core loader is now cache-busted by the ABI and runtime it targets, so an already-cached ABI v9 loader can no longer be paired with the rebuilt ABI v10 WebAssembly core and force zero-upload analysis and palette recalculation onto the native server fallback.
You’re viewing an older beta. Select V7.0 in the version list for the current changes.