Skip to content

Releases: adehad/py-scantailor

v1.0.0-rc4

v1.0.0-rc4 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 17 Oct 12:31

Fixes

  • Give Qt objects owners so the cycle collector never deletes them (#263) by @adehad

Packaging

  • Count rc pre-releases when drafting release notes (#261) by @adehad

Documentation

  • Rewrite the README for users and draft release notes from merged pull requests (#257) by @adehad

v1.0.0-rc3

v1.0.0-rc3 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 17 Oct 08:16

Features

Fixes

  • Fix the Select Content size fields, Fine Tune Page Corners and trimmed-edge page detection (#252, #242, #243, #5) by @adehad

Translations

  • Compile the translations without a manual step, at first start or into the wheel (#255, #55) by @adehad

Documentation

  • Help icons beside options, tooltips for every option, and Help > User guide (#241) by @adehad

Tests and maintenance

  • Fix the test run that hangs after a Qt crash (#244, #240) by @adehad
  • Run the help icon tests without a leftover app style sheet (#258) by @adehad

Other changes

  • Drop the duplicate neutral hover helper (#246) by @adehad

Full Changelog: v1.0.0-rc2...v1.0.0-rc3

v1.0.0-rc2

v1.0.0-rc2 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 14 Oct 23:54

Builds for Linux and macOS join the Windows build, and every build is smoke-tested.

Packaging

  • Add an end-to-end smoke test for frozen builds
  • Build Linux and macOS packages in the release workflow
  • Smoke-test the Windows release build instead of rerunning the test suite

Tests and maintenance

  • Let project_window finish its renders before a test moves the scans

Full Changelog: v1.0.0-rc1...v1.0.0-rc2

v1.0.0-rc1

v1.0.0-rc1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 14 Oct 21:52

The first pre-release of pyScanTailor, a Python and PySide6 port of ScanTailor Advanced. The port was built from the ScanTailor Advanced 1.2.1 sources over 93 earlier commits (2024 to April 2026) that are not listed here; the entries below are the changes made since the port was tracked in issues.

Features

  • Add image loading and TIFF/PNG writing with DPI (#117)
  • Port background estimation and real grayscale/colour output (#118)
  • Make pipeline stages build one transformation and resample once (#119)
  • Port C++ despeckle and expose colour options on output params (#120)
  • Lay out pages from a batch pre-pass and pass colour options to output (#121, #122, #123, #124)
  • Wire the main window to projects, pages and stage switching (#125, #126)
  • Match C++ defaults for despeckle level and page margins (#127)
  • Port mixed output, posterize, Wiener and Savitzky-Golay filters (#129, #130)
  • Add a process-pool batch runner with C++ output file naming (#131, #132)
  • Add a lazily rendered page thumbnail list (#133)
  • Show stage options and rendered pages in the main window (#134)
  • Port colour segmentation, split output and a numba grayscale reconstruction (#135)
  • Dewarp, resample to output DPI and segment colours in the output stage (#136)
  • Edit page geometry by dragging overlays in the stage image views (#137)
  • Run batches, apply settings to other pages and propagate edits from the main window (#138)
  • Port the C++ content box finder and per-method threshold adjustment (#139, #140)
  • Fix DPI, relink missing images, store relative paths and track recent projects (#141)
  • Add the remaining output options and a manual dewarping grid (#142)
  • Add jbig2-numba, a standalone lossless JBIG2 generic-region encoder (#145)
  • Port Mokji binarisation and align Bradley, EdgeDiv and picture detection with C++ (#152)
  • Load pages with the project's fixed DPI for rendering and batch (#154)
  • Add the welcome panel, output folder relinking and C++ Fix DPI limits (#155)
  • Detect pages on the batch pool and send stage defaults to workers (#156, #157)
  • Import PDF pages and map their text layer through the page transformation (#158)
  • Export output pages to PDF with JBIG2, G4 or JPEG images and text layers (#146, #159)
  • Rebuild a PDF end to end with its text layer kept (#160)
  • Add File > Open PDF and Export PDF and show detection progress in batches (#162)
  • Give the app one cross-platform look with Lucide icons and bundled Inter (#163)
  • Show dialogs that were opening blank and order new pages naturally (#164, #165, #166, #167)
  • Re-detect page split and deskew when their inputs change or Auto is clicked (#169, #170)
  • Order pages exactly like C++ SmartFilenameOrdering, which ignores letters (#168)
  • Adapt manual page splits like C++ and wire Page Split apply-to and page counts (#172, #173)
  • Make Settings and Default Parameters work, with JSON profiles for new projects (#174)
  • Ship the signed-off icon set with palette tints and a despeckle slider (#175, #176)
  • Polish the dark theme, binarization panel and deskew readouts; close leaked test windows (#179, #180, #181, #182, #183)
  • Apply Settings: units, thumbnail size and quality, TIFF compression, scheme preview (#184, #185, #186)
  • Import every filter setting from C++ .ScanTailor projects and refuse newer versions (#187)
  • Grow the page list for detected spreads, match C++ split scopes, auto-save (#189, #190)
  • Draw view overlays in theme colours and dim disabled controls (#62, #63)
  • Re-detect page splits saved without dependencies like C++ and document split scopes (#94, #95)
  • Keep C++ output file labels and stage defaults, and open non-UTF-8 C++ projects (#41, #66)
  • Add the C++ shortcuts, Units menu, status bar panel and thumbnail context menu (#10, #11, #12, #13, #14)
  • Keep upstream's new pause-sorting button on the shared theme
  • Open projects saved by upstream 1.2.x (format version 4) (#192)
  • Apply EXIF orientation when loading images, as upstream does (#194)
  • Port upstream oblique (shear) deskew and fix its open upstream bugs (#193)
  • Adopt upstream page focus, stored dewarp model and content box fixes; wire oblique deskew into the pipeline and main window (#37, #40, #43)
  • Add upstream's Margins size lock, Match size to all pages, per-side Apply and source DPI
  • Add upstream's top page edge deskew option, turning the page the right way
  • Add upstream's Fox, Window and Grad thresholds and fill outside page box; document the despeckle choice (#83)
  • Wire the round 14 features into the main window, settings, persistence and docs (#25)
  • Make image I/O safe: atomic writes, a finite bomb limit, alpha, odd TIFF resolutions and mode I (#75, #76, #77, #78, #79)
  • Port upstream's Output zone tools, tabs, Picture Shape, EdgePlus and BlurDiv (#16, #17, #19, #33, #213)
  • Render interactive stages faster, harden PDF import and export, and wire the Output tabs (#35, #47, #48, #49, #50, #51, #91, #93, #206, #208, #15, #18, #34, #36, #52, #53, #72, #92)
  • Pay down test and UI debt: batch panel form, non-owning widgets, pre-crop and harness tests (#45, #60, #80, #82, #85, #86, #46, #92)
  • Cut first-visit Output and Select Content time, pre-warm numba, and make the first thumbnail Qt call safe (#70, #71, #72, #74, #36)
  • Match upstream's image view interactions, view hints and per-stage thumbnail orders (#27, #28, #29, #30, #31)
  • Close upstream pipeline gaps: shadow cleanup, post-dewarp skew, Select Content dependencies, guides and continuous despeckle (#22, #23, #24, #42, #59, #64, #65, #67, #20, #44)
  • Wire round 16 into the main window and docs: re-run earlier pages, restore removed halves, sort orders, auto-save after batch (#21, #26, #32, #38, #39, #52, #68, #15, #18, #34, #53, #61, #69)
  • Detect page splits with upstream's PageLayoutEstimator, checked against a transcription of the C++ (#6, #5, #9)
  • Trace text lines and page edges with upstream's TextLineTracer and TopBottomEdgeTracer (#7, #8, #44)
  • Fix the Select Content side choice and top-edge deskew before shadow cleanup; honour the continuous despeckle strength; link margins by default (#215, #218, #67)
  • Wire round 17 into batch and views: stage-wide defaults, Fill Zones on the output image (#43)
  • Trace dewarp page edges on the source scan, as upstream does
  • Ignore the scan border when tracing dewarp page edges; refuse auto models with too small a span (#226, #227)
  • Extract PDF pages inside New Project (#228)
  • Add a headless scantailor-cli for scripting (#229)
  • Skip work the stage views do not show and reuse the Output render for its thumbnail (#36)
  • Map exported text through the same point mapper the Output view uses (#92, #53)
  • Reuse thumbnails whose inputs have not changed and render settled stages from a shrunk source (#36)
  • Rewrite the guide in plainer words with tables for options, and add performance notes (#96)
  • Port upstream's manual per-image trim in Fix Orientation
  • Show an applied oblique correction, name the Fix DPI tabs, add the missing guide screenshots

Fixes

  • Round-trip fix orientation settings through project JSON (#128)
  • Lock page split settings, drop cv2 wrappers and fall back to the whole image for background estimation (#147, #148, #149, #150, #151)
  • Apply output settings per group so zones and the dewarp model survive (#171)
  • Keep a manual deskew angle when a background detection finishes after it (#178)
  • Keep hand-drawn content and page boxes on their content when split cutters move (#202)
  • Remove the whole measured oblique lean, not half of it (#196)
  • Harden jbig2-numba: masked arrays, 32-bit lengths, and poppler-less test runs (#88, #89, #90)
  • Fall back to content deskew when the top page edge is not found or not confident (#210, #211)
  • Centre deskew ties, cut neighbour offcuts on Auto single pages, fix XSpline end segments (#219, #220, #225, #212)
  • Load translations by locale and compile .qm files at build (#56)
  • Drop late decodes for deleted stage widgets, remove NonOwningWidget, reset the test cursor (#46, #61)
  • Apply the chosen language at startup and switch the open window when it changes (#56)
  • Address the PR review: Manual alignment follows the checked button, StrEnum values, narrower excepts

Performance

  • Vectorise remove_small_components and reuse it in content finder (#115)
  • Vectorise dewarp remap grid computation (#116)
  • Search whitespace incrementally in the content box finder (#153)
  • Run PDF import, text layers and export on one shared process pool (#161)
  • Speed up despeckle, background estimation and dewarp maps with identical results (#73, #81, #84)

Translations

  • Refresh the translation catalogues with machine drafts flagged for review
  • Translate the PDF extraction prompts, with machine drafts flagged
  • Wrap user-visible strings in tr() and give each Apply dialog its own context

Packaging

  • Build the Windows exe from a v* tag and publish it as a release
  • Move to Python 3.14 with PySide6 6.12, numpy 2.5, scipy 1.18 and the latest tools
  • Skip the pdm type check on pre-commit.ci

Documentation

  • Bring the README remake checklist up to date and compile translations in the devcontainer
  • Add a user guide whose screenshots are taken from the running app (#188)
  • Rewrite the user guide from the code, add API pages and a generated sample book (#69)
  • Build the manual on Read the Docs from the lock, with screenshots made on the builder
  • Drop the remake checklist from the README and run each workflow as a single job

Tests and maintenance

  • Add pytest-qt harness and UI pathway tests (#114)
  • Keep the default test run fast and mark slow tests (#143)
  • Run the test suite in parallel with pytest-xdist (#144)
  • Fix UI tests that raced leftover windows and superseded renders (#177)
  • Tidy the docs and tooling for a Python-only project (#87)
  • Rename the project to py-scantailor
  • Accept anti-aliased caption text in the thumbnail test

Full Changelog: https://github.com/adehad/py-scantailor/commits/v1.0.0-rc1