Releases: marcinz606/NegPy
Releases Β· marcinz606/NegPy
Release list
NegPy 0.41.0
0.41.0
- New: Stitch multi-shot scans β select overlapping shots of one frame (e.g. a 6Γ6 scanned in two halves) on the contact sheet and pick Stitch selected frames. Alignment, exposure matching and blending happen on the linear scan data before conversion, so the result develops like a single raw. No new file is written: the composite edits and exports like any frame, and Unstitch restores the parts. IR dust data is kept when all parts have it.
- New: Manage Databaseβ¦ β dialog to inspect and clear stored data; Clear Saved Edits or Reset Everything, both guarded. @linkmodo
- Change: Copy/paste and Apply-to-roll are now per-setting β instead of a handful of broad section checkboxes, pasting settings and Apply settingsβ¦ open a picker that lists exactly the settings you changed on the source frame, grouped in collapsible sections (Tone, Colour, Lab, Toning, Finish, Crop, Process, Retouch, Metadata, Export) with each value shown. Tick only what you want, hit Apply. Paste now pops the same picker (Ctrl+V) rather than replacing everything at once; per-frame things like dust spots, heal strokes and crop bounds are never overwritten.
- New: Contact sheet labels and colours β per-frame labels plus background/label colour, saved as templates. @jboneng
- Change: Bottom toolbar streamlined β zoom slider removed, GPU/CPU toggle moved to the overflow menu, tooltips on every item; Before/After and Peak Flat are now mutually exclusive and survive rotate/flip. @linkmodo
- Change: pieusb scans use NegPy's IR dust removal β RGBI scan routed through NegPy's own dust removal instead of the scanner's. @hullrich
- Fix/Change: Linear RAW now controls TIFF decoding β TIFFs are no longer always degamma'd to linear when the sRGB tag is wrong.
- Fix: RGB preset scans expose correctly β framing light dimmed 3 stops, preset exposure asserted when the scan window opens, Scan gated until the writes land. @light-sntchr
- Fix: Correct colour profiles on every export format β greyscale JPEG/WebP now tagged, ACES/XYZ fall back to the tagged working space, contact-sheet JPEGs embed sRGB. @linkmodo
- Fix: Contact sheets no longer drop frames on large rolls β tiles downsample to target size instead of holding every frame full-res in memory. @linkmodo
- Fix: Saved export destination restored on reopen β the Folder mode no longer resets to "Subfolder of source". @paulglover
NegPy 0.40.0
0.40.0
- New: Sharpening rebuilt β Radius, Masking and a new Deconvolution mode β the Sharpen controls, now in their own section, gain a Radius slider (how fine or broad the sharpened detail is), a Masking slider (holds sharpening off flat areas like skies and skin so grain and noise stay quiet), and a Method dropdown: Unsharp Mask (the classic, now with halo suppression on high-contrast edges) or Deconvolution (Richardson-Lucy, which models the lens/scan blur in linear light to pull back genuinely soft detail). Existing edits keep their look on Unsharp Mask.
- New: Nikon Coolscan support - foundation work β Initial backend preparation for expanded support. Current implementation stil relies on SANE but it's now done via generic ScannerBackend protocol - in preparation for supporting projects reverse-engineering old Nikon drivers. Initial SANE implementation supports auto focus, auto exposure, 6-frame preview from SA-21 and 6-frame batch scans. IR scanning is also supported but with some hacks on SANE side.
Mainline sane coolscan3 is buggy and has missing features, proper SA-21 spacing and & IR capture require you to compile patched sane backends until proper fixes are upstream - consider it feature for nerds for now :). - Change/Fix: IR dust removal rebuilt β heal more defects, minimize dark halo around repairs, very dusty scans no longer silently disable IR cleaning, and hairs are reconstructed from the surrounding film instead of turning into clone blobs. Based on ideas from digital-fauxice (@rohanpandula). Existing edits load unchanged; IR-cleaned frames render better.
- Change/Fix: Camera scanning is faster and clearer β the R/G/B triplet cadence tightens (shorter, channel-purity-verified LED settle, with the next channel settling while the last shot's events drain), and a live roll now gives feedback: the capture progress bar sits below the view and tints per channel, a green flash confirms each capture, and scan pop-ups stay above the batch progress dialog. @light-sntchr
- Change: More crosstalk adjustment range β the Process panel's spectral-crosstalk matrix allows a wider range of manual adjustment.
- Change: Rotate buttons are easier to tell apart β Rotate CCW/CW reused the same circular-arrow glyphs as the Undo/Redo buttons beside them; they now use distinct page-with-rotation-arrow icons, a touch larger. @linkmodo
- Change: Analysis Region shows when it's active β the Freedraw Analysis Region button carries a small dot whenever a custom region is overriding the Analysis Buffer slider, so it stays obvious after the draw tool closes. @linkmodo
- Fix: Preview and export sharpen the same β the GPU preview used a fixed kernel that sharpened the wrong detail band at export scale, so a full-size export could look softer or harsher than the preview. Both paths now sharpen identically at every zoom and output size.
- Fix: Filmstrip thumbnails matched canvas colour + there is thumbnail size slider β thumbnails double-applied the workingβsRGB conversion the canvas already bakes in when soft-proofing, oversaturating them; both paths now share one colour-transform. There is also additional control for thumbnail size so you can decide between single column of bigger thumbnails vs cramming more of them in more columns. Warning: First launch might re-generate your thumbnails @linkmodo
- Docs: Expanded user guide β USER_GUIDE.md rewritten for the current tabbed layout, covering every panel and control (including the ones the old guide never mentioned) in the order the pipeline applies them.
NegPy 0.39.0
0.39.0
- New: Half Frame mode β a toggle in the Session panel for half-frame cameras (Pentax 17, Olympus Penβ¦) whose scans hold two photos side by side. Each scan appears as two frames in the contact sheet, split automatically at the gutter between them; every half gets its own edits, its own exposure measurement, its own sidecar, and exports as
name_1/name_2. Toggling off puts the scans back together without losing the per-half edits. - New: Set your own Auto Density and Auto Grade targets β the autos used to aim at fixed numbers baked into the code, which suited one scanner and one taste. A Set Targets button next to the two toggles opens sliders for what they aim at: how bright the metered midtone prints, how punchy the roll comes out, and how far each meter is trusted (at zero you get a fixed setting for every frame, at full every frame is forced to the same key or contrast). The preview follows the sliders live, Cancel puts them back, and Restore Defaults returns to the shipped values. It's a calibration rather than an edit β it applies to every image, including ones you've already worked on, and is remembered between sessions.
- Change: Also moved the default Auto Grade to be slightly more contrasty.
- Change: Update notice is now a link β the "Update Available" banner under the logo is clickable and takes you straight to the GitHub releases page, with a download icon.
NegPy 0.38.0
0.38.0
- New: Finish panel β edge burn, filed carrier and print mats β a new Finish panel finishes the print after crop: Edge Burn replaces vignette with a true exposure burn in stops (radial or, via Roundness, a rectangular card-burn), Filed Carrier prints the black rebate of a filed-out negative carrier with a roughened inner edge, and Border adds a mat with adjustable width and colour, a bottom-weighted (window-mat) proportion, and a Match Paper White option that ties the mat colour to the toned paper white instead of a picked colour.
- New: Tweaked infrared dust cleaning β IR dust removal now uses ratio-normalized detection instead of raw-IR thresholding, catching dust it used to miss and losing the slider cliff that could flag the whole frame. A new IR Restore tier recovers the image hiding under semi-transparent dust so only the opaque cores get cloned, and a cycling Overlay button (Off / Spots / Marked / IR) shows exactly what auto and IR detection are catching, for tuning. B&W and Kodachrome scans are skipped.
- New: Keep / Reject triage on the contact sheet β cull a roll where you see it:
Kmarks a frame as a keeper (small check badge),Shift+Xrejects it (cross badge + dim). Rejected frames stay on the sheet but drop out of batch exports and sidecar writes; a Sheet filter (All / Keepers only / Hide rejected) sits next to Sort, a tally counts the roll, and marks persist across sessions. - New: Dye Mute β a new Lab slider that mutes colour in step with print contrast, the way paper dyes lose separation at hard grades.
- New: Narrowband Scan β scans lit by narrowband RGB LEDs can come out extra saturated compared to white light. A new Process-panel toggle corrects the preview and every export automatically; a custom Input ICC still takes precedence. Enabling RGB Scan mode now switches Narrowband correction on for you (both the current frame and as the default for new frames). The internal profile no longer clutters the ICC dropdowns.
- New: Roll-aware Batch Autocrop β Geometry can analyze every visible landscape frame together before Batch Analysis, using confident frames to calibrate weaker detections for more consistent camera-scan crops. It runs in the background with progress/cancel, preserves existing manual crops and ambiguous frames, and saves explicit per-frame crop and fine-rotation settings. The first release supports Image-only mode. @rohanpandula
- New: Common crop ratios, tidier picker β the crop Ratio dropdown drops the duplicate reversed entries (the tool already auto-orients a ratio to your drag) and gains the ones that were missing: 7:5 (5Γ7 print), 16:9, 16:10 and US Letter. Old saved ratios still display correctly. @linkmodo
- New: Unreadable files get a badge β a frame that fails to decode or thumbnail wears a red badge with the reason in its tooltip instead of sitting silently in the grid; clicking it retries, a successful load clears it.
- Change/Fix: Default exposute/colour tweaks β Fixed a bug that resulted in mixing ProphotoRGB output space with AdobeRGB. Using full prophoto primaries at output results in unnaturaly saturated colors that are pain to correct. Now pipeline output is using AdobeRGB primaries which should result in most faithful and natural looking image. Existing edits will render a little different.
- Change: True Black is now Paper Black β the toggle is inverted and renamed: left off (the new default) it keeps blacks pure, exactly as before; turned on it shows the paper's own slightly-lifted maximum black instead. Existing edits keep their look.
- Change: Roll-wide actions are undoable β Batch Analysis, roll-baseline loads and "Apply settings" now write each affected frame's edit history:
Ctrl+Zon any frame steps back to before the roll action. Reset Settings and preset loads are recorded the same way instead of bypassing the log. - Change: One grammar for the canvas tools β first
Escclears in-progress points, second puts the tool down (fixes Esc going dead mid-draw); toolbar Undo matchesCtrl+Z; a stray click outside a tuned crop no longer wipes it. New keys:Shift+SScratch,Shift+BDodge & Burn,Shift+RAnalysis Region,|flat-master peek (plus a toolbar button). - Change: Quieter canvas β the "Renderingβ¦ / READY / Loadingβ¦" toasts are gone (the progress bar already covers that activity); the canvas-background swatches move into the More-actions menu as a checkable group that shows the active colour, with a new pure White option; and committing a manual crop on a large file now shows a busy spinner instead of freezing silently. @linkmodo
- Change: Leaner previews, faster frame switching β preview-load memory is roughly halved (peak dropped from ~2.9 GB to ~1.6 GB on a 56 MP TIFF), and navigating back to a frame you've already seen is now instant, reusing its last render instead of processing it again. @linkmodo
- Change: Naming and panel tidy-up β visible labels standardize on "colour", and the white-balance section is renamed Filtration so "Colour" unambiguously means the Lab & Toning tab; Tone's four "Width" sliders become "Toe Width" / "Shoulder Width"; editing presets and contact-sheet templates can be deleted from their panels; the Roll Analysis section gets a header reset; drag-and-drop opens the first frame like Add Files.
- Fix: CLAHE now renders the same everywhere β the GPU preview and the CPU fallback used two slightly different local-contrast algorithms, so the same slider value could look noticeably different between them, worst at high strength. Both now run one identical algorithm on the CIELAB lightness channel: local contrast no longer over-saturates boosted areas, the preview predicts the export at every zoom level, and the effect at high strength is cleaner. Expect a subtle look shift on frames with CLAHE above zero.
- Fix: Scanner TIFFs now develop exactly like their DNGs β 16-bit TIFFs without an embedded colour profile were wrongly treated as sRGB, so the same scan rendered and exported differently as TIFF and DNG. They now load as linear scanner data (existing ones will render slightly differently), and scanner-TIFF and JPEG thumbnails no longer appear nearly black.
- Fix: Exact 16-bit colour on export β cross-space TIFF, DNG and JXL exports now colour-manage through lcms2 at full 16-bit precision instead of a 3-D lookup table that drifted up to ~6% from the correct values; same-space exports keep full precision as before. @RP2
- Fix: Camera auto-calibration converges β per-channel ETTR calibration measured each frame against its own brightest pixel instead of an absolute reference, so it plateaued or drifted and never truly settled; the decode is now pinned to a fixed reference. A calibration that can't reach its target at the hardware limits now aborts early and saves nothing β with a pop-up telling you which way to move the aperture or ISO β instead of quietly saving a best-effort preset that misses. The bogus "0 Β°C" light readout is also hidden on RGB-only Scanlights that have no temperature sensor. @light-sntchr
- Fix: The camera dot shows when another app holds the body β on macOS, Preview/Photos/Image Capture can claim the camera so every scan attempt fails; the connection dot now turns red "Camera (in use)" with a hint to close the other app, clears itself the moment the body is free, and shows the camera's real model name (e.g. ILCE-7CM2) from the start. @light-sntchr
- Fix: Paper Black sticks across frames β it was the one toggle in its group that reset on every frame; it now carries to the next like the Snap, Auto Density, Auto Grade and Paper White toggles it sits beside.
- Fix: Heals survive frame switches β placing a heal or scratch and switching to another frame no longer discarded it; the edit now persists like every other canvas action. @linkmodo
- Fix: Batch export honours the session's format β exporting all saved frames now uses the delivery format and colour space set for the session instead of a stale value left on individual frames from an earlier export. @RP2
- Fix: Overflow menu keeps its entries β the More-actions menu no longer drops items when you toggle a side panel off and the canvas widens. @linkmodo
- Fix: Canvas toolbar stays visible on narrow windows β it now collapses controls into the overflow menu adaptively instead of getting cut off when the viewport is small. @jboneng
- Fix: Pin then reset restores the original layout β resetting the panel layout returns panels to their original docked position and size. @jboneng
- Fix: The H&D chart shows where zero is β the analysis curve's grid stopped short of the axes, so a curve flat at black looked like it hovered above the bottom of the plot instead of sitting on it. The 0 and 1 grid lines are now drawn.
- Fix: Hidden dodge & burn masks stay hidden β a mask you hid came back visible as soon as you switched to another frame, and the hide state was lost on restart; it now sticks per frame and across sessions. @paulglover
- Fix: Cast Removal strength sticks across frames β the slider now carries to fresh files like True Black and Auto Density, since it's a workflow preference rather than a per-image look.
NegPy 0.37.2
0.37.2
- New: Drag to heal β the Heal tool now paints while you drag: a plain click still heals a single spot, but click-and-drag sweeps a heal along the cursor and commits the whole path as one stroke (one undo, one render). @linkmodo
- Change: Canvas UX polish β Enter confirms and closes the crop like double-click; the heal brush, scratch pen and white-balance picker fall back to the normal arrow over empty canvas (and the floating toolbar stays on the arrow); the current-frame Export scope reads "Export Current Frame"; tooltips wait longer before popping; and the Windows scanner placeholder text no longer clips. @linkmodo
- Fix: Camera Scanning follow-ups β RGB-only Scanlights (v1βv3, no white LED) now light the live view from the preset's own R/G/B instead of going dark, with the W slider and white-light preset hidden on those bodies; reopening Live View no longer flashes the previous session's last frame; and a rotating
negpy.logplus a catch for unhandled UI errors turns a hard crash into a non-fatal notice with an attachable traceback. @light-sntchr
NegPy 0.37.1
0.37.1
- Fix: export no longer crashes on non-ASCII film metadata β a film format like
4x5(with aΓ) or other non-Latin characters NegPy writes into the EXIF no longer aborts a JPG, TIFF or PNG export; they're safely substituted. @RP2 - Fix: spot densitometer no longer crashes on file switch β hovering the image to read densities while switching frames could abort the app; the readout now goes quiet during the transition instead. @linkmodo
NegPy 0.37.0
0.37.0
- New: Crosstalk matrix editor β a Manage button beside the Process β Crosstalk dropdown opens an editor: browse the bundled matrices (read-only), make an editable copy, adjust the channel-mixing terms with live preview, and save your own profiles as
.tomlfiles in the NegPy/crosstalk folder. - New: Editable Dodge & Burn masks β the panel lists every mask you've drawn; pick one to select it, then reshape it right on the canvas (drag a point to move it, click an edge to add a point, right-click a point to remove it) and tune its sliders β no need to redraw from scratch.
- New: Straighten tool β draw a reference line on the image (ruler button under Geometry β Alignment, key
L) and the frame rotates to match: lines near horizontal level the horizon, lines near vertical plumb an edge. Composes with Fine Rotation and the crop rotation handles. @linkmodo - New: Iron Blue, Copper and Vanadium Green toners on the Toning page (B&W only) β navy shadows, pink-to-brick red with weakened blacks, and green mids over black shadows.
- New: Spot densitometer β hover the image to read the pixel under the cursor: per-channel density above film base (ΞD), the print's reflection density, and its print zone (Zone V = 18% grey); a dot tracks the pixel along the H&D curve.
- New: Zone strip β a Zone System bar under the chart shows how much of the print falls in each zone (0βIX) and flags blocked shadows or blown highlights in red.
- Change: Dust & healing overhaul β Auto Dust, IR removal and the manual Heal tool now share one texture-preserving clone instead of the old smoothed fill: sources are matched to their surroundings, edges feather with brush size, the halo around auto-fixed spots is gone, and hairs and scratches are traced along their length. Detection runs once on the source scan, so the fixed set no longer shifts as you drag sliders and preview heals exactly the spots export does. Auto Dust now works on E-6 slides too.
- Change: Analysis chart redesign β the histogram and the H&D curve merge into a single graph: the print's RGB histogram sits behind the curve, and a second grey histogram along the exposure axis shows where the negative's densities land on the paper curve β how much of the image rides the toe, the straight line or the shoulder, live as you drag Grade or Density (the LIN/LOG toggle scales both). The stats below reduce to the essentials: the negative's density range with a development read (flat / normal / contrasty), exposure in EV, and clipping β the scan-clip warning appears only when the scan actually clips.
- Change: Heal & Scratch tools work fully on the canvas β right-click opens a tool menu (Undo/Clear, Confirm Scratch, and Delete This Heal on a placed patch), the Scratch tool shows a pen cursor,
Ctrl+Zundoes the last heal and Backspace steps back a scratch point; the two tools are now mutually exclusive and suspend/restore when you leave and return to their tab. The placed-heal outline no longer sits slightly offset from where you clicked. @linkmodo - Change: Toner combinations simulate sequential baths β silver claimed by one toner is locked to the ones after it: selenium before sepia protects the shadows, partial sepia plus iron blue splits green. Single-toner looks are unchanged.
- Change: Smoother masks and scratch heals β Dodge & Burn mask outlines and Scratch heal strokes now follow smooth curves through their points instead of straight segments, and the line previews curved as you draw it.
- Change: Fine Rotation now reads clockwise-positive β dragging the slider (or the crop handles) to the right turns the image clockwise on screen, the photographer's convention, under every flip. Saved rotations render exactly as before. @linkmodo
- Change: Customize Shortcuts redesign β shortcuts are grouped into collapsible sections with one shortcut per row, slider rows merged with per-control keyboard step sizes, and a search box to jump to an action; the read-only shortcut overview gets the same press-to-search lookup. @jboneng
- Change: Camera Scanning presets lock the whole exposure β a preset now stores the ISO and aperture the film base was metered at alongside the RGB levels and shutter, and re-asserts all of them before every shot, so a bumped dial between scans can't skew a scan. @light-sntchr
- Change: Snappier camera live view β stepping ISO / shutter / aperture waits for you to pause before writing to the body instead of firing a slow write per click, so rapid stepping settles far quicker and no longer flickers back mid-write. @light-sntchr
- Change: More reliable auto-calibration β per-channel ETTR calibration now copes with dense film bases where one channel is much brighter than another: it tolerates a negligible base clip, pulls the LED down until the base truly stops clipping, and settles on the best shutter instead of oscillating. @light-sntchr
- Change: Smaller TIFF exports β TIFFs now use ZIP (Deflate) compression with a horizontal predictor instead of LZW, typically 15β25% smaller for 16-bit images with no change to the pixels. @RP2
- Fix: camera reconnects cleanly after scanning β closing the Live View or new-preset calibration window now releases the tethered camera session, so bodies (Fuji especially) that stick in tethered-capture mode no longer hang on the next connection. @bbatha
- Fix: export no longer crashes on non-ASCII metadata β accented or non-Latin characters in a source file's EXIF (e.g. Image Description) previously aborted a TIFF export; they're now safely substituted. @RP2
- Fix: a B&W print toned only with gold or split tints rendered grey in preview and export.
- Fix: presets no longer embed the source frame's heal strokes, and Apply settings no longer overwrites other frames' heals.
- Fix: numpad keys bind separately β the shortcut editor no longer collapses
Num+9onto plain9, so numpad and number-row keys can hold different shortcuts. @jboneng - Fix: no more 'surround' warning on load β edits saved before the old surround control was removed no longer log an unknown-key warning every time you open a file. @linkmodo
- Fix: edits survive EXIF changes β editing a file's EXIF metadata (e.g. tags) changes its content hash, which previously orphaned its saved edits; NegPy now falls back to matching by file path and re-homes the edits under the new hash. @RP2
- Fix: B&W renders match between CPU and GPU β black-and-white previews and exports no longer come out darker or subtly tinted on the CPU path, and the Analysis histogram is smooth instead of combed.
- Fix: batch export honours the current destination β exporting saved or selected frames now writes them to the destination you've set for the session (e.g. same-as-source) instead of the stale path each frame was last saved with. @RP2
NegPy 0.36.0
0.36.0
- New: Camera Scanning β a new tab captures negatives with a tethered camera and feeds the RGB Scan merge. Two auto-selected modes: Narrowband RGB (@jackw01 open-source Scanlight flashes red, then green, then blue while the camera captures each exposure) and normal (a single exposure under any light, imported as an ordinary RAW). Includes per-channel ETTR auto-calibration metered on the clear film base, film-stock presets, and a live view with the camera's hardware focus magnifier and live ISO/shutter controls. Cameras are detected on the USB bus automatically β no address, login or pairing. macOS and Linux only (verified on Sony bodies, other brands need testing). @light-sntchr
- New: Split grade β Shadows Grade / Highlights Grade sliders on the Tone page trim each zone's contrast in ISO-R points, like a split-grade darkroom exposure: harder shadows without blowing the highlights, or softer highlights without flattening the shadows. Mid-sparing and bounded by the paper's black and white, like the zone density sliders, and scoped per colour layer through the Global/R/G/B selector like the main Grade.
- New: Per-layer trims (crossover correction) β a Global / Red / Green / Blue selector on the Tone and Process pages scopes the curve controls (Grade, Toe, Shoulder, Widths, Snap) and the White/Black Point sliders to a single colour layer. Filtration can only shift a layer; these trims re-shape it, fixing casts that differ between shadows, mids and highlights. The H&D chart tracks the per-layer curves live.
- New: Deeper control over the print curve, grouped under a Paper Response header on the Tone page: Snap adjusts the paper's midtone punch, Shadows / Highlights Density darken or brighten each zone while rolling into the paper's black and white limits instead of clipping, and True Black (off by default) anchors the deepest print black to true display black instead of ~5% grey. The Toe slider is recalibrated so its full throw is felt as clearly as the Shoulder's β frames without a manual toe render identically.
- New: Gold toner β a third chemical toner on the Toning page (B&W only). Alone it works like the archival gold bath: a cool blue-black shift in the highlights and mids with a slight density boost, dense shadows hold. Over sepia it recreates the classic gold-over-sepia combination, pushing the toned highlights from yellow-brown toward orange-red.
- New: Crop composition guides β the crop tool's fixed thirds grid becomes a Guide dropdown: Thirds, Phi Grid, Diagonals, Golden Triangles, Golden Spiral, Armature, Diagonal Method or Grid.
Ocycles guides,Shift+Orotates the spiral/triangles. - New: Crop rotation handles β four handles at the edges of the crop box spin the frame freehand, composing with the Fine Rotation slider for fine-tuning; both now range Β±45Β°. @linkmodo
- New: Reverse scroll-to-zoom β an optional toggle in Customize Shortcuts for users who expect scroll-up to zoom out. @linkmodo
- Change: Auto Cast is built in β the toggle is gone: Cast Removal always adapts its strength to how confidently the frame's neutral greys read, and the slider (default 0.5) trims on top; 0 = off. Frames that had Auto Cast off will shift slightly.
- Change: One visual language across the app β all panels share the same section cards, button styles and sizes; every active tool and toggle uses the same red armed state; edited sliders, selectors and tabs are marked with a small red dot instead of coloured text; tooltips word-wrap; the Metadata page uses collapsible sections like the rest; the Analysis stats read-out shows plain values without the qualitative labels.
- Change: UI polish pass β tooltip shortcut chips render as bordered keycaps; hovered items in menus, dropdowns and combo boxes highlight clearly; active/checked tools (Linear RAW, Lock Bounds) now read as engaged; Undo/Redo move to the toolbar (Save Edits into the More Actions menu); the crop tool shows contextual hover cursors (rotate / resize / move / draw); and confirmation dialogs default to the affirmative button on Enter. @linkmodo
- Change: Confirm before unloading β Unload / Unload Selected / Clear All now prompt first, and the Delete key unloads the selected frame(s). @linkmodo
- Removed: Flare and Contrast Lift β Snap and the zone density sliders cover the same ground with real control. Old edits load cleanly and render without them.
- Fix: flip under Fine Rotation now mirrors correctly β flipping a straightened frame produced a doubled tilt instead of a true mirror of the current render. @linkmodo
- Fix: manual crop and freehand analysis region rotate with 90/180 turns β they stayed put before, so a quarter-turn left the crop framing the wrong area. @linkmodo
- Fix: viewer clears when the session empties β Clear All or Unloading the last frame left the previous image on screen with no way to dismiss it. @linkmodo
- Fix: startup no longer crashes when the Documents folder is missing (windows) β a OneDrive-backed Documents path that doesn't exist on disk (OneDrive unlinked or signed out) now falls back to
~/Documentsand then the home directory instead of failing to launch. @linkmodo - Fix: Apply Settings counts only the frames you can see β with a filename filter active, "Whole roll" counted (and would apply to) every loaded file instead of just the visible ones. It now matches the filtered list.
NegPy 0.35.0
0.35.0
- New: Gear Library β a searchable library of cameras, lenses and film stocks; picking gear for a frame writes scan-rig and film metadata into the exported XMP. There are some bundled items but library is easily user-extendable. @jboneng
- New: Freehand analysis region β draw the exposure-metering area directly on the canvas instead of relying on the centered Analysis Buffer inset; a draw/clear pair sits on the Process page. @linkmodo
- Change: Manual healing now clones real texture β heals copy a matching patch from elsewhere in the frame and blend the seam, keeping grain intact instead of a smoothed synthetic fill; existing heal spots convert automatically.
- New: Scratch Tool β heal hairs and scratches by clicking a polyline along the defect (double-click or Enter to commit), instead of forcing them through the round brush.
- New: Enter now also commits an in-progress Dodge & Burn stroke, same as double-click.
- Change: Canvas redesign β the status bar and info rows around the preview are gone; the image fills the whole central area. File info moved to overlay pills in the canvas corners, the toolbar floats over the image, status messages show as a short toast.
- Change: Export now warns before overwriting files β a batch that would clobber existing files stops for an Overwrite / Rename / Cancel prompt instead of silently overwriting; tick "Always overwrite without asking" to bring back the old silent behavior. @linkmodo
- Change: Bundled gear and crosstalk profiles now load live from the app instead of being copied into your docs folder. Docs folder is reserved for your personal profiles & gear
- Change: Selecting a thumbnail now opens it β a single click loads the frame into the viewer (Ctrl/Shift-click still builds a multi-selection for batch actions); double-clicking inside an open crop box now confirms and closes the tool. @linkmodo
- Change: Cyan now has an assignable keyboard shortcut alongside the other white-balance sliders, unbound by default (you should not be touching cyan!) β set it in the shortcut editor.
- Change: Export UX pass β one red Export button replaces the toolbar Export, "Export All" and the "Sync export settings" toggle; its chevron menu selects what the button does (current frame, selected, all visible) and remembers the choice, with Export Presets working the same way. Default sizing is now Original resolution, multi-frame exports ask for confirmation, and failed frames are reported instead of a false "complete".
- Fix: crop no longer inflates under Fine Rotation β the manual crop rectangle is now measured in the same already-rotated view you draw it on, instead of being mapped through the tilt and re-bounded, which grew the cropped area as the tilt increased. @linkmodo
- Fix: locked/disabled controls now are greyed-out β sliders, buttons and fields under an active lock (e.g. Analysis Buffer under Roll Average, Flat-Field k1 with no reference profile) now show a grey disabled state instead of looking identical to normal ones.
- Fix: Next/Prev buttons now follow the sorted/filtered order shown in the filmstrip instead of raw load order β fixes them greying out mid-roll or staying stuck (but unresponsive) at the end of a roll not loaded alphabetically.
- Fix: large (tiled) exports no longer drift from the preview when Separation is on or a freehand analysis region is drawn β the tiled export path was metering exposure off the raw image instead of the same unmixed, region-restricted one the preview uses.
- New: Protect original metadata toggle in the Metadata tab β exports keep the source file's EXIF/XMP untouched instead of NegPy rewriting it. @jboneng
- Perf: CPU rendering is now multithreaded, ~3.5x faster on a full-res render. @linkmodo
- Fix: HQ preview toggle no longer shows a stale render; zoom % now reflects true pixel zoom (with Fit/1:1 buttons); tooltip shortcut chips and the Crosstalk tooltip no longer overflow; Batch Analysis warning now leads with the crop count. @linkmodo
NegPy 0.34.0
0.34.0
- Change: Dodge & Burn moved into the print exposure β masks now adjust exposure before the paper curve instead of scaling the finished image, which is how dodging and burning physically work. Strong burns and dodges roll off through the paper's toe and shoulder instead of clipping flat. The section moved to the Exposure tab; existing dodge/burn edits will render slightly differently.
- Change: Selenium and Sepia work on print density β both toners now convert silver density instead of tinting by brightness, matching the real baths. Selenium acts on the densest areas (deeper blacks, cooler shadows); sepia acts on the thinnest (warmer highlights, shadows hold). Existing toned edits will render differently.
- Change: Export Presets main button now runs only the selected frames (previews the single frame when just one is selected) instead of always exporting everything. @jboneng
- New: Export Presets gains an export-all-visible option, with a confirmation dialog before it runs. @jboneng
- Fix: dodge/burn mask overlay now shows the real feathered falloff instead of a hard-edged polygon β the on-canvas mask previously didn't match the soft edge the pipeline actually renders.
- Fix: exporting all RGB-scan triplets no longer fails with "Input/output error" on most frames. Batch export was reusing stale saved paths for each frame's green/blue exposures instead of the ones the triplet was actually built from, so it tried to read files that weren't there; it now uses each frame's own exposures, the same as exporting one at a time.
- Fix: exported JPEG EXIF no longer blocks ExifTool from rewriting tags β stale RAW preview SubIFD pointers are now stripped on export. @jboneng