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-black and --clip-white for 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-out with INPUT_DIR placeholder support
  • Global config file support (~/.pprc/configs/default.json)
  • Last-run config saved automatically: copy to reuse settings

License

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