Skip to content

0.2.0

Choose a tag to compare

@ShadobaDev ShadobaDev released this 18 Jul 15:52
· 131 commits to main since this release

Breaking API changes; consumers must be rebuilt. Workspace files stay compatible in both
directions — the new fields are additive, so older builds still open newer workspaces.

Added

  • Canvas profile change tracking — each page records the profile it was rendered with
    (canvasRenderFingerprint()), so a later edit to that profile is detectable
  • ProjectItem::detectCanvasConfigChange() — reports which pages a profile edit
    invalidated, or that the profile list itself changed
  • ProjectItem::effectiveCanvasProfileIds() — the profiles a project actually renders
    with, mirroring CanvasProfileMatcher's rule
  • ProcessingOutcome::appliedProfiles — which canvas profile the pipeline applied to
    each input

Changed

  • Breaking — ProjectItem::sanitize() now takes the workspace canvas profiles, and
    flags config-stale files as Desynchronized alongside the existing on-disk checks
  • Breaking — ProjectItem::applyProcessingResults() takes the applied profiles and the
    workspace profile list, so the canvas baseline is recorded with the render
  • Breaking — ScaledStrip::sliceAll() streams each slice to a callback instead of
    returning them all; non-const and single-use
  • Breaking — Slicer removed — it wrapped two ints and forwarded to ScaledStrip,
    which ProcessingPipeline already drove directly

Fixed

  • ScaledStrip memory contract — sources are released as slicing advances, as the class
    always documented but never did. Peak memory is now flat instead of growing with page
    count (24-page chapter: 534 MB → 213 MB). Output is byte-for-byte identical
  • Canvas profile edits were ignored — changing margins or canvas size left a project
    reporting itself up to date while its rendered output no longer matched
  • Windows CLI hang on exit — an intermittent deadlock in the loader's DLL teardown
    (LdrShutdownProcess), reproducible under both MinGW and MSVC. The CLI now flushes its
    output and terminates instead of unwinding the dependency graph