Changelog
1.0.0
June 2026 (target release, upcoming)
Pipeline
- New custom image pipeline: no ImageMagick or sharp required
- Multi-threaded worker-based conversion
- Direct buffer path to processing engine, no intermediate TIFF files
- ~40–50x faster than legacy negfix8 + ImageMagick pipeline
Inversion
- Custom inversion engine replaces negfix8 (no more ImageMagick dependency)
- Roll-level analysis: computes a shared color profile across all frames for consistent results
- Automatic outlier frame rejection: backlit or unusual frames are excluded from the shared profile so they don't skew the rest of the roll
- Percentile-based pixel rejection: ignores brightest/darkest pixels (default 0.1%) to prevent dust and specular highlights from affecting the profile
- Tunable border exclusion: ignores outer edge pixels (default 2%) to eliminate film holder and rebate artifacts
- Independent shadow/highlight clipping:
--clip-blackand--clip-whitefor fine control over contrast stretch - Clipping risk detection: warns when narrow-density negatives may clip too aggressively, with suggested alternative settings
- LUT-based per-pixel inversion: ~26x faster than per-pixel
Math.pow() - Per-image balancing mode: optional per-frame profiling via
--per-image-balancing
CLI & Configuration
- macOS Finder Quick Action (
--install-quick-action) - Automatic update notifications via npm dist tags
- Output directory auto-increment to avoid overwrites
--dir-outwithINPUT_DIRplaceholder support- Global config file support (
~/.pprc/configs/default.json) - Last-run config saved automatically: copy to reuse settings
License
- Switched from GPL-3.0 to PolyForm Noncommercial 1.0.0. Free for personal, educational, and non-commercial use.
0.x (Legacy)
Earlier releases between 2016 and 2026
- Inversion & balancing via third party negfix8 script (ImageMagick-based), each file inverted individually
- Basic planar raw to TIFF conversion
- Initial CLI