Changelog

What changed, release by release.

Every version of Spot Tone that has shipped, newest first—the same notes the app shows before you update. Current release: 1.0.1.

1.0.1

October 15, 2026
  • After Reset Spot Work, a Dust Lasso loop no longer appears to change pixels far outside the loop. The canvas was still showing the repair from before the reset; the saved file was always right.
  • The launch notices (beta ending, license problems) now wait until the terms have been accepted instead of appearing on top of them.
  • A new install is offered the 14-day free trial on first launch, so everything is on from the start. Before, the trial was only offered at Export or in Settings, and a fresh install opened without the Tone panel or Crop.
  • Saved detections now age out like cached repairs: a frame's marks are removed after 60 days with no Detect and no hand edits, and come back with a re-detect. Settings shows how many detections are cached and their size.

1.0.0

October 14, 2026
  • Spot Tone 1.0.

    Indie and Lab licenses are on sale at spottoneapp.com: Indie is $99 once, for two Macs; Lab is $50 per seat a month, with a 14-day trial. If you installed during the beta, every feature stays free through December 31, 2026, and the app tells you so once at launch. New installs get the 14-day trial of everything, then the hand tools.

  • Big brush fills land on the film's tone.

    A wide stroke used to start from whatever film happened to touch its edge and could settle a few levels dark on grainy film; it now starts from the film around it and reaches the film's level, including when the edge of the stroke sits on the mark's own halo, or on an earlier repair.

  • Grain in big fills matches the film's grain size.

    On coarse-grained film a large fill came back as fine salt at the right strength; the fill's grain is now built to the film's own clumping, measured around each stroke.

  • A refunded or replaced license says so.

    When the app learns a license was revoked, it drops it, tells you at once, and Settings ▸ License shows the date. Entering a revoked license shows the same explanation.

0.3.1

October 13, 2026
  • Settings shows every Tone panel section.

    The list under Settings ▸ Tone panel was cut off after five rows, so Levels and Split Toning could not be reordered or hidden from there. The list now fits all seven.

  • New detector.

    New installs start with the October 11 detection model.

0.3.0

October 11, 2026
  • The tools have names.

    Each tool in the toolbar now shows its name under the icon. View ▸ Show Tool Labels turns them off once you know them.

  • Zoom lands on clean values.

    ⌘+ and ⌘− step through set levels (25%, 33%, 50%, 67%, 100%, 200%, and up) instead of odd in-between ones, and a 1:1 button sits beside the zoom readout in the status bar.

  • Contributing says what it sent.

    When a commit skips a frame, the status line names it and says why. A commit also uploads on its own once its files have settled, instead of waiting for your next edit.

0.2.99

October 10, 2026
  • Detect takes a second look at large marks.

    A second model checks each large mark and sets aside the ones that are part of the picture, such as printed letters, eyebrows, the highlight on a smile, and bright rims along a dark shape. Small marks are untouched. It's on by default; Settings ▸ Detect ▸ Advanced turns it off.

  • Fine scratches running side by side repair more cleanly.

    When two thin scratches close together are detected as one wide band, Repair still evens out the band and now also fills the fine line each scratch left behind. The film between them stays as it was scanned.

  • The installer shows the terms of use, formatted.

    It showed an older disclosure as raw text.

  • An updated privacy notice.

    It now describes everything the app sends, including crash reports as macOS writes them and the notice the developer gets when the app checks for an update. You'll be asked to read it once when you open the new version.

0.2.98

October 9, 2026
  • Contributing says exactly what is sent.

    The prompt and Settings ▸ Contribute now describe it as it is: a copy of the frame you corrected, downscaled if it's over 3,600 pixels on its long edge, with your marks and your Sensitivity setting, and now and then a frame you accepted as-is when the detection was borderline. Uploads carry a random ID and the name of your Mac. Nothing about what is sent has changed; the description has.

  • The Hot Folder keeps up on network drives.

    Checking whether each file is a camera scan no longer happens on the main thread, so a large folder on a server no longer makes the app stutter.

  • Help ▸ Acknowledgments shows the full license texts

    for the open-source parts inside the app.

0.2.97

October 9, 2026
  • A repair across a soft edge no longer darkens the film beside it.

    Where a scratch crosses a gentle gradient, 0.2.96 could lay a dark patch on either side of the mark. Repair now checks what it is about to write outside the mark and, when that would move the film by more than a few levels, fills the mark on its own instead. Repairs across hard edges are unchanged.

  • Start Watching is easier to find.

    The Hot Folder's Start and Stop button now runs the width of the panel in the accent color, like Detect and Repair.

  • Camera scans get the edge check automatically.

    On a file that came from a camera copying film (the Lento dock, or any capture with camera EXIF), Detect now sets aside marks that lie along the picture's own edges, so a tree line or a jaw is no longer read as a scratch. Scanner files are untouched; this only switches on when the file says it is a camera scan.

0.2.96

October 6, 2026
  • Brush softness sits beside Size.

    The Brush section of the panel now has a Softness slider for how a heal meets the film at the edge of your stroke, the same setting as Settings ▸ Editing. Hard, the default, is unchanged.

  • Canceling a repair clears its status.

    The status line could keep saying "composing the repair…" after a cancel until you switched tools.

  • No blank canvas while a big repair loads.

    On Macs with less memory, switching between the scan and a large repair (P) could show an empty canvas for a moment; the previous picture now stays until the new one is ready.

  • Dust on the black border repairs cleanly.

    A mark on the unexposed film around the picture, whether you brush it or Detect finds it, is now rebuilt from the picture's own edge. The edge carries on straight under the mark with its own softness, and the border keeps its own grain. Before, a big blob there could come back jagged or speckled with grain from the picture.

  • Show overlay and Overlay Opacity have tooltips.
  • Every keyboard shortcut is in Help.

    Sync Settings is now listed as ⌥S, the key the Image menu shows. Help now also lists Shift-P for the Tone preview, Detect Everywhere, ⌘. to stop, zoom in and out, Option-arrows, Save Session As, and Save & Return. And ⌘? now opens Help, where it used to open the release notes on the website.

0.2.95

October 4, 2026
  • A hair that runs off the edge of the frame is removed to the edge.

    The last few pixels at the border used to stay behind as a short bright stub.

  • A long hair crossing into a soft-edged shape no longer drags light into it.

    Where a hair crosses into, say, the soft edge of a hat, the repair could pull the light background into the shape as a faint smear; those stretches now get the same edge-aware fill as hard edges.

  • A long hair across a soft edge heals the way it did in 0.2.92.

    Two changes since then had undone it: a bright hair crossing an edge was handed to the fill as its whole thick detection and left a trail through the edge, and the second pass that re-heals long marks had stopped using its edge-aware fill. Both are back to right, and the edge pass's reach is now recorded, so it no longer shows as unexplained violet.

  • The full-resolution pass is your call, frame by frame.

    Its switch moved under Settings ▸ Detect ▸ Advanced, next to a new one: Show the Full-res pass checkbox. With that on, the Detect panel gets a checkbox on large frames for whether the model also runs at full resolution. Uncheck it on a frame where the pass marks texture as dust, and that frame remembers. It replaces a three-way switch that could draw oversized and unlabeled.

  • The fence-sitter tooltip names the color you're seeing.

    When the overlay switches to cyan on a frame with orange tones, fence-sitters turn magenta, and the tooltip now says so.

  • Long marks near a hard edge no longer leave unexplained violet.

    The second pass that re-heals long marks section by section blends a little film on either side of an edge. That blend is now recorded as part of the repair, so the overlay draws it as the mark's reach instead of violet, and erasing the mark takes it back.

  • Detect asks before it marks film you already examined.

    Skipping examined film is off unless you turn it on, and the first Detect over a frame with your own marks or heals now explains what it will do and offers to leave that film out, with hollow marks showing what it would have found there. Your answer can be remembered; Settings ▸ Detect changes it later.

  • A detected scratch is leveled to its end.

    When Detect marks a scratch as a band, the repair levels the scratch's lines rather than filling the band. It used to stop where the detection stopped, which on a long fine scratch left the last stretch standing; it now follows each line past the detection while the line clearly continues.

  • The repair's reach hugs the mark.

    The lighter area the overlay draws around a repaired mark now shows only film the repair visibly changed, close to the mark, with no gap between the two.

  • Thumbnails no longer spin forever.

    When memory ran low, a filmstrip thumbnail still on screen could be cleared and never asked for again.

  • The cursor over the floating options bar is the arrow.

    With Clone, Crop or Dust Lasso, the tool's cursor stayed on while you used the bar's sliders.

0.2.94

October 2, 2026
  • Brushing a blemish takes its soft edge too, even where you erased before.

    Erasing tells the repair to keep something as film, and a fill used to leave every erased pixel alone, so a blemish whose soft edge you had erased earlier kept a faint ring around it. Right beside a new stroke, erased pixels that are clearly part of the blemish now join the fill; erased film that reads as the picture stays as it was.

  • Fills follow the slope of the skin around them.

    On a patch that shades from light to dark, a repair came out lighter than the surround at the top and darker at the bottom, a visible bubble. The fill now takes on the same slope as the film around it.

  • Fine straight scratches keep their grain.

    When detection marks a band holding a few fine parallel scratches, Repair now levels the scratches out instead of repainting the whole band, so the film's own grain stays.

  • Your exports are yours.

    Spot Tone no longer treats an exported file as the frame's saved repair, so editing an export in Photoshop can't change what the app shows for that frame later. Repairs are now kept as just the pixels they changed, in the app's own data: a few megabytes per frame instead of a full-size copy, and a repaired frame comes back exactly as you left it.

  • Small heals near an edge come out clean.

    A speck or short hair brushed where dark hair fades into skin, or inside a dark pupil, could fill a patch brighter than anything around it, or come out speckled and clotted. The fill now stays with the shading it sits on and carries the film's own grain.

  • Cloned fills keep the film's slope.

    A small fill cloned from nearby film used to bring the donor patch's own light-to-dark tilt with it, so a disc could brighten downward where the picture darkens. The fill now takes the tilt of the film around it; its brightness and grain are unchanged.

  • There's a Discord now.

    Questions, bug reports, before-and-afters, and the person who makes this reading along. Help → Spot Tone Community, or discord.gg/MteUVyp6zy.

  • Small fills on soft highlights sit level.

    A speck on a bright out-of-focus highlight could heal as a dim disc with a hard rim, sometimes tinted toward the donor's color. The fill now follows the curve of the light around it instead of a flat estimate, takes the local color, and the thin ring the clone lays around a mark moves with the mark instead of being left at the donor's level.

  • Scratch stays on your line.

    When Scratch follows a scratch past the ends of your stroke, it now keeps to a narrow cone around the line you drew. On water it had left a scratch for the brighter wave crests beside it and leveled those instead; the trace now stops where the ridge it is following turns away.

  • Settings has a Detect pane.

    Where Sensitivity starts, Detect-on-open, the full-resolution pass, and scanner-line removal moved from Editing into their own pane; Editing keeps the brush and repair options. The Editing pane had outgrown a 13-inch screen.

  • Heal edge softness.

    Settings has a slider for how the brush heal meets the film at the edge of a stroke. Hard, the default, is how it has always worked; a few pixels of softness blend the last pixels of the stroke into what was there, so the seam shows less on smooth skin and skies.

  • The full-resolution pass can be set per frame, and Detect says when to.

    On scans the pass applies to, the Detect panel has a Settings / On / Off switch for that frame alone. Off helps on grainy frames and on textures the pass mistakes for dust (water, foliage); the choice is saved with the session and copied by Copy Settings. When a large area was marked only by that pass, the status line says so and points at the switch.

  • The overlay shows everything a repair will change.

    Where Repair bridges the gap between two marks on a faint scratch, or takes in the soft edge of a blemish you had erased, those pixels now appear in the overlay in a lighter tint of the mark color. Before, they changed without a mark to say so. The eraser puts them back as it always did.

  • Detect respects the film you have already gone over.

    On a frame with your own marks or heals, a new detection that lands on film you examined is kept quiet: drawn as a hollow mark, not repaired. Your verdict stands; Detect still marks everything else. Brush over a hollow mark to take it, or use Detect Everywhere (⌥⌘D) to get every mark regardless. The status line says how many were kept quiet each time.

  • Sensitivity tops out at 95%.

    The last few percent were below the level where the detector agrees with itself from one tile of the frame to the next; on textures like water it could draw a mark with a ruler-straight edge along a tile boundary, and the repair followed it. Frames saved at 99% open at 95%.

  • Very large repairs get grain all the way through.

    In a repair wider than about 60 pixels, the grain was put back only near the edges; the middle stayed smooth and pale, with a hard, right-angled border between the two. The grain now reaches the whole fill.

  • Big brush heals no longer come out as a patchwork.

    A stroke larger than the fill engine handles in one piece was filled in sections, and each section came out a slightly different tone, with hard rectangular seams between them. On a large-format plate a wide stroke could leave visible blocks. The sections now blend into each other, so a big heal reads as one fill.

  • Brush heals build on each other.

    A stroke over a spot you had already repaired used to start again from the original scan, so a second pass could put the blemish back before it could improve on the first. Each stroke now starts from the picture as it looks at that moment, so you can work a stubborn spot in several passes.

  • A heal beside a sharp edge stays on its side.

    A brush heal that touched the edge of a chair back or a hat brim could pull the far side's tone across into the fill. Where the film around a heal is two distinct levels, the fill keeps to the level it sits on.

  • Fills keep the local color.

    A repair between two scanner lines on color film could borrow a neighbor's tint, leaving a faint orange mark on blue sky. The fill now takes the color of the film around it and keeps only its own grain.

  • Scratch says when a line is too faint to trace.

    On grainy film, a scratch too close to the grain to follow now gets a message suggesting the brush instead of a wandering trace.

  • A faint hair on bright skin no longer leaves a ghost.

    Repair used to trim a detected hair back to its brightest core, and the fill picked up the soft edges it left behind, leaving a pale copy of the hair. The parts the detector is sure of now stay in the repair.

0.2.93

September 27, 2026
  • Stop stops.

    Canceling a batch export, Repair All, or stopping the Hot Folder now interrupts the frame being repaired instead of letting it finish and write its file.

  • The Line tool is now the Scratch tool.

    Same K shortcut, same behavior, a name and icon that say what it's for. Its tooltip and Help explain when to use it: fine scratches the picture still shows through, at any angle; gouges still belong to the brush.

  • Tooltips work again.

    Hover any button in the main window, the tools, Fit, 1:1, rotation, the inspector, or a filmstrip thumbnail, and it says what it does. On thumbnails, the tooltip explains the frame's badges.

  • The Daylight theme is light all the way up.

    The status line and tool strip stayed dark in Daylight; they now follow the theme, and so does the window's title bar.

  • Batch export and Repair All keep your hand work.

    Heals you made with the brush and scratches you leveled were left out when a batch rebuilt a frame's repair; they're now laid back on, as a single-frame repair always did.

  • Scratch marks survive a relaunch.

    The orange marks showing where the Scratch tool leveled a scratch now reopen with the frame, and undo and redo move them with the change.

0.2.92

September 27, 2026
  • Long scratches and hairs repair the way your brush would.

    After Repair fills a long scratch or hair, it goes back over it in short pieces, the way you would with the brush, and each piece is re-healed on the repaired picture. Where a scratch crosses a soft edge, like the rim of a hat against the sky, the same steps the brush uses keep the fill from bleeding one side into the other. Short hairs lying on a soft edge get the same treatment. It is on by default and adds a few seconds to a frame with long marks; Settings ▸ Editing has "Re-heal long marks in sections" to turn it off.

  • The Line tool fixes fine scratches that don't cross the whole frame.

    It used to measure a line across the full width of the picture, so a scratch covering part of it went unnoticed. Now, when a line doesn't run the frame, the tool measures along your stroke and removes only that line's brightness offset, leaving the grain untouched, which works well for fine straight scratches on grainy film. Scanner lines that run the whole frame are repaired exactly as before.

  • The Line tool follows scratches at any angle, and curved ones, and finds the rest of the scratch on its own.

    Draw over part of a slanted or curving scratch, with any brush size, and the tool finds the scratch under your stroke, follows it past both ends for as long as it continues, and removes its brightness offset along its length, keeping the grain. The stroke doesn't have to sit exactly on the scratch. It works on fine scratches over intact film; on a gouge, a blown-out mark, or a picture edge it declines and says so in the status line ("this mark needs the brush") rather than making it worse. Scanner lines that run the whole frame are repaired as before.

  • The Line tool shows what it changed.

    With the overlay on (O), the pixels it leveled are drawn as marks (they are not part of the mask, so Repair leaves them alone). With the overlay off, they flash for a second after the stroke finishes. ⌘Z removes both the change and its mark. The overlay setting is now remembered between launches, as you last set it.

  • A long Line stroke looks for lines only in the direction you drew it.

    A long horizontal stroke also swept every column it crossed and could mistake textured picture detail for vertical lines, changing far more of the frame than intended.

0.2.91

September 25, 2026
  • A tight Dust Lasso loop takes the small speck you circled.

    A tiny speck at the middle of a tight loop could be passed over for a larger mark nearby, and a dark speck on a frame where most dust reads bright could be ruled out before it was judged. The loop now gives the speck at its middle the benefit of the doubt, whichever way it reads, and chooses by how clearly each candidate stands out rather than by its size. Keep the speck near the middle of the loop.

  • Clone's Match tone reads the film around the stroke, not under it.

    It measured the tone partly from the pixels being covered, so cloning over a dark scratch could carry some of the scratch's darkness into the fix. It now measures a ring of film just outside the stroke. It also uses far less memory when the source is far from the stroke on a very large frame.

  • Moving to a new frame shows the picture right away.

    A repaired 16-bit frame could leave the canvas an empty gray for a second or two while it loaded; a soft preview of the frame now fills that moment.

  • The Hot Folder can go back to the bottom of the panel.

    Settings ▸ Panels has "Place Hot Folder below Tone," or right-click the Hot Folder header.

0.2.90

September 25, 2026
  • Export now asks, every time, in one dialog.

    Where the files go (a folder, with or without the scans' own subfolders, or next to the originals), how they are named, and the format are all on one sheet that opens filled in with what you used last, so Return exports as before. Nothing in it hides or moves. Save the whole setup as a preset and pick it next time. In Overwrite Mode the Export button still writes straight back over the originals; File ▸ Export makes a copy through the dialog instead.

  • File names are built from four slots.

    Each slot is the original name, text you type, a sequence number, the date, the folder, or an order detail, with an example of the result above them. A sequence starts wherever you say, and how you write the start sets the padding: 0001 starts at 1 with four digits.

  • Order details for lab work.

    Order number, client, client ID, and twin check sit in the dialog and can go into the file name. One filled in but not used in the name gets a note, so it does not go missing quietly.

  • The clone tool has options.

    Softness, opacity and tone matching sit in a bar above the picture, the way Crop's options do. Tone matching evens out a clone taken from a slightly lighter or darker part of the film.

  • A retrained dust detector marks less of what is not dust.

    On our test frames it makes about a quarter fewer false marks on grain, reticulation and color noise, and finds nearly all of the dust the previous one did. It also arrives on its own as a model update, if you do not update the app.

  • A tight Dust Lasso loop finds faint specks in mid-tones.

    In gray, grainy areas a small loop or dab could settle on a clump of grain instead of the faint speck you circled. It now weighs how much evidence each candidate has as a whole, so a real speck wins.

  • Long detected hairs and scratches heal like short ones.

    Detected marks over a certain size skipped the smoothing and level matching every smaller heal gets, so a long hair or scratch could heal a little mottled, or a level off the film around it. They now get the same treatment.

  • No flash when the repaired picture comes back.

    With the preview off, erasing marks and pressing P could fade the picture toward gray for a moment before the repair appeared.

  • Saved sessions show their names.

    Browse Sessions labeled saved sessions by the folder of their first frame; they now show the name you saved them under, with the folder in the tooltip.

  • Hot Folder is easier to find.

    It sits above Tone in the inspector and says what it does before you choose a folder.

0.2.89

September 23, 2026
  • Detected spots on soft, fine-grained material no longer fill as smooth ovals.

    On skin in a tintype, every detected speck came back as a slightly smoother disc with a soft edge, where a lasso or brush heal of the same speck looked right. The detected spots were being sent through the magnified repair path meant for hand strokes, which averages away fine grain; they now take the same path the hand tools do only when you actually brushed them.

0.2.88

September 23, 2026
  • A Mac you have paid for is never watermarked again.

    A Lab seat whose subscription ended, on a Mac that had also been offline for a month, could fall back to watermarked exports. It now falls back to Indie and stays there: the lab automation stops on the day the subscription ends, and everything you bought outright keeps working cleanly, offline, indefinitely.

  • Spot Tone now shows its terms of use and privacy notice, and asks you to accept them.

    They appear once on the first launch of this version, and again only if they change. Both are readable any time under Help, and a new Settings ▸ Privacy tab shows what leaves your Mac, what stays on it—with the folders, their sizes, and a button to go look—and when you accepted. Nothing is sent to us, not even the install record or a crash report, until you have accepted.

  • Dust sitting on a hard edge in the picture is detected again.

    0.2.87 added a filter meant to stop camera-scanned frames marking a subject's outline as dust, and it was too eager: a speck that happened to sit on a strong edge—the shoulder of a shirt, the side of a face—could be skipped. The filter is off by default again, and when it is on it now only applies to long, thin marks that trace an edge, never to compact specks.

  • A fat brush stroke over a hair now takes the hair out.

    When a wide stroke covered a thin hair, the repair kept the hair and refilled the film around it: the fill for the hair sampled a small window that, deep inside a wide stroke, held nothing but the stroke itself, so it wrote the hair back. The fill now reaches for real film, and the stroke is trimmed to the hair and its flanks rather than to everything on mottled film that looked a little off—so less of the surrounding film is rewritten, too.

0.2.87

September 22, 2026
  • Small heals match the film's grain and level more closely.

    The fast path that repairs small specks worked in a magnified crop and finished there, so its fills could sit a couple of levels off the surrounding film with too little grain. They now get the same level and grain matching as everything else, at the frame's own scale.

  • Heals on scans with an unusual embedded color profile no longer come out lighter than the film.

    The repair read the healed image through a generic color space while the scan itself was read as-is, so on a scan whose profile sits far from sRGB every heal landed a step brighter than its surroundings—and each pass over it made a brighter patch. Both are now read the same way.

  • Opening a repaired 16-bit frame no longer pauses while its tiles are prepared.

    The last half-second of main-thread work at open—converting the repaired image's tiles for display—now happens in the background, so the window stays responsive from the first frame.

  • The Help window now covers the whole app.

    Every tone section (Light, Curves, Levels, Color, Split Toning, the Vectorscope), Detect and Clear Detection, the Before chip, the View menu (Visualize Spots, the Examined-Area Overlay, Navigator, Workspace Background), Auto-Rotate, saved sessions and Browse Sessions, and the Getting Started tour each have their own entry, in the same words as their tooltips.

0.2.86

September 22, 2026
  • Opening a repaired frame no longer freezes the app.

    A large repaired TIFF was being read from disk again every time the canvas drew a piece of it—on the main thread—so a big 16-bit frame could lock the window for ten seconds or more while it opened, and again after each edit. The repaired image is now read once, in the background. This is also the cause of the sluggishness some of you saw stepping between repaired frames.

  • A small heal on dark film no longer comes out as a dark blot.

    When the film sat near a boundary between the tone bands the grain matcher works in, fill pixels could be read against the wrong band's table and pulled down by up to 26 levels—a white speck became a dark spot, and each pass over the spot made it bigger. The tables now continue sensibly past the fill's own range.

  • The Dust Lasso re-heals what it finds that is already marked.

    Circling a speck in an area you have already worked could appear to do nothing: the lasso can only add marks, and those pixels were already marked. What it finds now joins the heal, bounded to what you circled.

  • Turning the repair preview off stays off while you erase.

    Erasing a mark heals the area, and that was switching the preview back on every time—so working with marks visible meant pressing P again after every erase.

  • A repair you healed on top of survives quitting.

    Repairing a frame and then brushing or healing it left the result in memory only: the file on disk was abandoned as soon as the first heal landed, and nothing replaced it. Reopening the session re-ran the repair from scratch instead of reloading yours, which could not give back the same frame. The repaired image is now written back to disk a few seconds after you stop working on it, and any repair still in memory is saved before the app quits (the status line says "Quitting…" while it does).

  • The Dust Lasso writes only inside your loop.

    A find at the edge of a loop could be re-healed past it, because the sweep searches a padded area around what you drew and the fill grows a little around what it finds. The write now stops at the loop, with a one-pixel rim so a mark touching the line still heals whole.

  • A tight lasso picks the mark you aimed at.

    Circling a cluster of small dots, the lasso could take one bigger blob elsewhere inside the loop instead. Among marks that clear the bar, it now prefers the certain one nearest the middle of your loop, rather than the largest.

  • Detect All asks once before running over frames you have already worked

    , the same question Detect asks per frame, and with the same "don't ask again."

  • Repair shows its result even with the preview off.

    Turning the preview off to erase is remembered, but an explicit Repair, or moving to another frame, shows the repair again.

  • Clear Detection asks first.

    It removes a detection for good, and it sits directly under Detect Dust in the Image menu, so it was easy to hit by accident. Suppressible.

  • A lasso loop finishing no longer cuts off the loop you are drawing.

    While a sweep was still working, finishing it wiped the outline of the next loop out from under the pen, and the rest of that loop was never drawn.

  • The warning about hand work now comes before Detect, not before Repair.

    If a frame already has your marks or heals on it, Detect asks first and says that it cannot be undone. In exchange, Repair no longer asks: detecting, touching up and then repairing is an ordinary way to work and it used to warn every time.

  • Browse Sessions shows your saved sessions.

    A session you named with Save Session As… now appears in its own Saved section at the top of the browser, instead of only in a drop-down.

0.2.85

September 21, 2026
  • Tone sliders keep up on big frames.

    While you drag, the preview is computed from a smaller copy and the full-size version lands when you let go.

  • A stroke or lasso made during a Repair is healed as soon as the Repair finishes

    , instead of waiting for the next one.

  • The Stats page counts the Lab tools too

    : levels, light, highlights and shadows, color, curves, split toning, crops drawn, and Hot Folder runs. Local unless you turn sharing on, and still numbers only.

  • A small lasso around one speck is believed.

    Circle a single spot and, if the best thing in the loop is a hair under the bar, it is taken: you said there is a mark there. Wide sweeps are unchanged, so clean film stays quiet.

  • "Open Settings" in a license message actually opens Settings.

    On some Macs the button did nothing.

  • Examined Coverage is now the Examined-Area Overlay

    , and the menu explains what it shades: the film you have not yet looked at closely on this frame.

  • A Before button in the status bar.

    Hold it to see the scan as it was before the repair, let go to come back. P still leaves it on if you want both hands free.

  • Tone sliders stay smooth on very large frames.

    The preview copy a drag works from is now made once per drag instead of many times a second.

  • Moving between repaired images is responsive again.

    Selecting a repaired frame re-read its full-size repair from disk before it would draw anything, which on a folder of repaired frames turned every step into a pause.

  • Tone sliders no longer throw away your zoom.

    Dragging a tone control while zoomed in snapped the canvas back to Fit and drew the marks overlay at the wrong size for the length of the drag.

  • A repair always shows up on the canvas.

    In rare cases part of the picture kept its pre-repair pixels until you toggled the repair preview.

  • The canvas keeps your chosen shade between frames.

    Moving to another image flashed the default surround until the picture appeared.

  • The marks overlay draws the whole frame again.

    Zoomed out, only part of the overlay was painted, and which part changed as you toggled it or zoomed.

  • Each tone section resets on its own.

    A small revert button appears in a section's header when something in it has moved, and puts just that section back. Curves, Levels, Light, Color, and Split Toning each keep their own.

  • "Out of Date" no longer sticks while you work.

    Undoing a stroke while its heal was still running could drag the repair a version behind the marks, and from then on every heal was judged stale even though the picture was current. The badge only reads out of date when it is.

  • The Visualize Spots menu item explains itself again.

    Its description had drifted onto the button below it, so neither one said what it did.

0.2.84

September 19, 2026
  • The mark count under Masked is one line

    : "401 marks, 23 tiny, 41 big." Hover it for what tiny and big mean and how many marks came from Detect versus your brush.

  • Tone gains Split Toning.

    A hue and strength for the shadows and for the highlights, and a balance for where they meet. It changes color, never brightness, and it works on black-and-white scans too: a toned black-and-white frame exports as RGB so the tone survives.

  • Tone gains Highlights and Shadows.

    Two new sliders in the Light group, Camera Raw's numbers. They work by region, not by pixel: a blurred guide decides what counts as shadow or highlight, so a bright speck in a dark area is left alone and edges don't halo. Lab tier, like the rest of Tone.

  • Big brush strokes no longer come back speckled or flat.

    A wide stroke down a plain area next to a brighter one used to heal with a smooth patch in the middle and coarse dark specks at the ends. Two causes: the fill's own grain was being counted short, so a second layer of grain was laid on top of it; and the grain matcher was judging the fill against the wrong film. Both fixed; the film's grain now runs straight through the stroke.

  • A lasso or stroke made while a heal is running is healed next, not lost.

    Before, it kept its marks but never got its heal, and the repair read as out of date.

  • You can see a heal is still running, how many are waiting, and stop it.

    A big lasso can take ten or twenty seconds to heal after it reports what it found. The Repair section now shows a sweeping bar, a clock, and a count of heals waiting their turn while any heal is in flight, with an ✕ to stop. Stopping removes the loops that hadn't landed yet, marks and all, and leaves finished ones alone. ⌘Z on a loop that is still healing stops its fill too. The status line says "Healed N px" when a heal lands.

  • Undo is available the moment a stroke or lasso lands

    , not after its heal finishes. ⌘Z also takes back a lasso that is still being scored, or waiting its turn behind one, before it ever becomes marks.

  • Undo no longer marks the repair out of date.

    Undoing or redoing a brush stroke or a lasso puts the mark and its heal back together, so a repair that was current stays current.

  • Erasing a mark takes its rim with it.

    Where a repair had absorbed a mark's faint flare just outside the mask, erasing the mark used to leave that flare standing as a light halo. It now goes too.

0.2.83

September 16, 2026
  • Brush strokes down a hair no longer carry a faint copy of it through the fill.

    When a stroke follows a hair or scratch, the ends of the defect outside the stroke used to guide the fill, so a ghost of the line continued across the repair. The fill now ignores the parts of a line that run out of the stroke's ends; a line that crosses a stroke is still treated as picture and continues.

  • Fill grain matches the film's clumping, on every stock.

    The grain synthesized into a fill was finer than real film grain, so a repair could read as a smoother patch. Each fill now measures how the surrounding grain clumps and matches it, so a 120 scan and a 35mm scan each get their own grain.

  • Fewer dark specks inside brush fills.

    The fill was being given a full dose of synthetic grain on top of texture it already had, and the dark tail of that excess showed as tiny black specks. Fills now add only the grain they are missing.

  • The Brush heals on release, from the first stroke.

    A brush stroke used to heal live only after the frame had been repaired once; before that it only left a mark waiting for Apply, so the same stroke behaved two ways. Now it heals as you lift the pen every time, like Heal, the Lasso, and Clone. The mark still counts, and Apply still runs the detections.

  • The view stays put when you switch tools at Zoom to Fit.

    Holding space to pan, or picking Hand after the Lasso or Crop, used to snap the picture back to center as the tool's options bar came and went. Only Zoom to Fit itself moves the view now, and it still fits below the bar.

  • Detect says what it found.

    After a detection the status bar reads "143 marks found—review, then Apply" instead of just "detection done."

  • Export… no longer freezes the app while it writes.

    Exporting a single frame from the panel wrote the file on the main thread; it now works in the background like batch export, and the status bar says when it's done.

  • Share how you use Spot Tone—if you want to.

    Settings › Stats has a new switch, off by default. When on, once a week the counts on that page are sent with the app and model version, your macOS version, how much memory the Mac has, and a random install id. Numbers only, never a picture, a filename, or a path. It tells us what is working inside the app and what isn't.

  • Automatic repairs kept on disk are now visible and managed.

    Detect + Repair All stores each result so a frame opens repaired. Settings › General shows how many are kept and their size, with a Clear button; untouched results age out after 60 days. A frame you brushed or healed keeps its result until you forget it, and clearing never touches your brush edits.

0.2.82

September 15, 2026
  • Brush strokes no longer leave a light line along one edge and a dark line along the other.

    A brightness correction meant for small spots was being applied to whole brush strokes, where it pushed each edge of the fill away from the film beside it. It now runs on spots only; brush strokes are left to match the film around them. Repairs of marks the detector found are unchanged.

  • No more embossed seam partway along a brush stroke.

    The fill was being solved over a slightly larger area than the stroke, then trimmed, so where the two met a faint ridge could appear, most visibly on strokes that overlap an earlier one or cross a tonal edge. The fill is now solved over exactly the area the stroke writes.

  • Brush strokes keep the film's mottle.

    A smoothing pass that helps small spots was flattening the mid-scale texture inside larger brush strokes, which is why a repaired stroke could read as an even patch at 50% and above. Strokes larger than a small spot now skip that pass. Spots and detected marks still get it.

  • A stroke across a tonal edge keeps each side's color.

    On film without color grain, the fill's color was averaged across the whole stroke, so a stroke from a warm dark area into a cool light one came out slightly cool on the dark side and warm on the light side. Each part of the fill now takes its color from the film next to it. Film with visible color grain is handled as before.

0.2.81

September 14, 2026
  • Repair's second look no longer repairs bright highlights.

    Since 0.2.78 it also searched for tiny bright specks the detector scores too faintly to mark, and repaired them without marking them. Checked against scans with every speck marked by hand, most of what it found was not dust but bright detail: sunlit leaves, specular points, highlights in grain. That search is off until it can tell the difference.

  • Every spot Repair's second look repairs is marked.

    Specks it found on the cleaned frame and repaired were never marked, so those repairs showed only when you toggled P. They now appear with the rest of the marks when you turn marks back on after a repair, stay marked after reopening, and can be erased like any other.

  • Reset Spot clears the marks right away.

    Zoomed in, the old marks stayed on screen until you zoomed or scrolled.

  • New export format: Auto.

    Beside TIFF and JPEG in the export bar, Settings and the Hot Folder: each frame is written in its original's format. A TIFF comes back as a TIFF at its own bit depth, a JPEG as a JPEG, a PNG as a PNG, so a folder of mixed scans leaves the way it arrived. Auto is the default unless you have already picked a format; a Hot Folder that was already set up keeps writing TIFF until you change it.

  • The Hot Folder's Out folder holds only finished files.

    The QC log now lives in a _qc folder inside the In folder, beside _completed and _needs_review, so an Out folder you deliver from carries nothing else. The red-overlay QC images are now a setting, Save QC overlays, off by default; turn it on and they go in the same In folder _qc. In Overwrite originals mode nothing at all is written to Out.

  • Exporting 16-bit scans no longer freezes the app between frames

    , and the check for unusable repairs before an export no longer freezes it on a slow network share. The save panel also opens without first preparing a full-size copy of the frame.

  • An interrupted export can't leave a cut-short file behind.

    Quitting, or a network share dropping, partway through copying an original to the export folder could leave a truncated file under its final name that looked finished. Copies now land under that name only once complete.

  • Retrying a repair on a very large scan uses far less memory.

    Brushing again over a spot the repair missed prepared a full-size copy of the whole frame; it now works on just the area around the spot.

  • Color TIFFs export with three channels, as they came in.

    Exports of color TIFF scans carried an extra, fully opaque alpha channel, making the file larger and structurally different from the scan the lab delivered. Black-and-white scans were not affected.

0.2.80

September 13, 2026
  • Repairs on 16-bit scans are kept.

    In 0.2.78 and 0.2.79 a 16-bit frame's saved repair was wrongly rejected whenever it was loaded again—after reopening a session, or during an export—and the frame came back unrepaired. Black-and-white scans could be caught the same way. Both are fixed. A frame that lost its repair this way needs to be repaired again.

  • Black-and-white scans export with their own tones.

    A grayscale scan whose profile is not the sRGB curve—Gray Gamma 1.8 is the common one—came back lighter across the whole frame: its tones were written into the file without being converted back to its own profile. They are now, and an export matches the original everywhere except the repaired spots. If you exported black-and-white scans with an earlier version, export them again.

  • Frames you have not opened export with their repairs.

    After a session is reopened, a frame repaired with heal strokes, or with Repair but never exported, waits to rebuild its repair until you open it. Until then an export wrote the original instead, without a word, and that copy then counted as the frame's repair. Export now rebuilds a heal-stroke repair itself, and a frame whose Repair has to be run again, or is still being restored, is named before anything is written. Overwrite Mode includes those frames too; it used to leave their originals untouched and count them as done.

  • Repair + Export All with tone, crop or JPEG keeps the new repair.

    When the exported file could not stand in for the repair, the frame went on showing, and exporting, the repair it had before.

  • Repairing a frame again replaces an earlier export of it.

    A frame exported and then repaired again could keep the earlier export standing in as its repair, so reopening the session brought back the older result.

  • Quitting while a repair is running asks first

    , instead of throwing the repair away. Removing a frame, or quitting, also warns about a repair that has not been exported even when an earlier repair of the same frame was.

  • Before an export, frames whose repair can't be used are named.

    If a saved repair is missing or no longer matches its frame, the export asks first and lists those frames: Stop and Show Them, Export Originals, or Skip Them. Stop and Show Them exports nothing and shows only those frames, each with a red badge, so you can repair them and export again. "Needs Re-repair" beside the filmstrip's filter field (under it when the filmstrip is at the side), and View ▸ Show Frames Needing Re-repair, switch between those frames and the whole roll.

  • A frame exported without its repair says so

    , in a warning you can turn off and in exported-unrepaired.txt in the destination folder, with the reason when it is known.

  • Export failures say why

    , in export-failures.txt, and a failure caused by a momentary shortage of memory is retried. A repair that turns out to be unusable partway through an export no longer fails the frame: it is exported as it is and listed.

  • Exporting never overwrites a file.

    If the destination already holds a file with the same name, or two frames would get the same name, the new one is saved as name-1, name-2 and so on, and the status line says how many were renamed. Only Overwrite Mode replaces files.

  • A warning when the export folder syncs to iCloud.

    A synced folder can move files to the cloud as they are written, so an export can look like it is missing files.

  • Frames without a repair are copied exactly.

    A frame with no repair and no tone, crop or rotation, exported in its own format, is now a byte-for-byte copy of the original instead of a re-saved one, so nothing is lost to recompression and its metadata stays. One that is re-saved keeps its full bit depth; a 16-bit scan used to come out 8-bit.

  • Exporting as JPEG no longer swaps your repair for the JPEG version.

    The exported JPEG used to become the frame's saved repair, so later heals and exports were built on a compressed copy.

  • Exports from different drives no longer rebuild the full folder paths.

    Frames that share nothing more specific than the drives they are on are written straight into the folder you choose. Frames from one drive keep their folders, so a lab's roll folders come through intact.

  • The filmstrip filter now limits what bulk actions touch.

    With a filter on, Repair, Detect, Sync, Auto Levels, Auto-Rotate, Rotate, and Export act only on the frames shown, and their buttons say how many. Select All and Shift-click select only the frames shown.

  • Removing a frame from the list keeps its brush work.

    Remove from List, and Forget in the Missing Files window, used to delete a frame's brush marks and heals. They now stay saved with the image and come back, with the frame's detection, when you open it again. Reset still starts the frame over. A reopened session now says when a frame's brush edits are no longer on disk.

  • ⌘F goes to the filmstrip filter

    , and clicking a frame takes the keyboard back from it, so ⌘A selects frames again rather than the filter's text.

  • Repair warns about replacing hand work only when there is some.

    The warning appeared on frames repaired with Repair, and on frames whose only hand work was erasing marks. It still warns before a repair built from your marks alone is replaced by one that repairs everything Detect found.

  • Brushing gives steadier results from stroke to stroke.

    Most strokes laid near an earlier repair were being treated as a request to try again, which changed how the repair was set up each time—why results could swing from good to bad and back. Only drawing the same mark again counts as a retry now.

  • A small touch-up no longer brings back a scratch you already repaired.

    Film beside the stroke that the repair reads for reference could still show the original scan, defect included, instead of the picture as it is now.

  • Re-heal no longer freezes the window on large frames

    while it gets ready.

  • Brush marks are saved safely.

    The new file is written before the old one is replaced, so running out of disk space can no longer leave a frame with no saved marks, and a failed save is reported.

  • The hot folder reports files it could not write

    , with a count in its monitor.

  • Feedback is kept and sent later

    when the server can't be reached, instead of being lost.

  • The Sensitivity slider moves in whole percents

    , matching the number it shows.

0.2.79

September 11, 2026
  • Full-resolution pass on large scans

    , in Settings ▸ Editing, off by default. Scans wider than 4,400 px have always been detected at 3,600 px, which is why a 12,000 px lab scan or an 8×10 plate came back with the big marks and few of the small ones. On, the model also runs over the frame at full resolution and the two results are combined. On the large frames in the corpus it found 2,406 of 3,669 labeled marks where the shipping pass found 1,312. It also marks grain on grainy film, so it is a switch and not the default. Detection takes longer on big frames.

  • Repair All reports its progress where its button is

    , in the Repair section beside Apply Repair, the same way Detect All reports in Detect. It used to report at the bottom in the export bar. Export batches still report there. Asked for by the techs at Indie Film Lab.

  • A frame's detection now survives switching sessions.

    Opening another session used to discard the saved detection of every frame not in it, so a repaired frame you came back to showed no marks and could not be applied until you detected it again, minutes on a big plate. Marks and heals were never at risk; only the map was. It stays with the frame now, like the mask.

  • The repair progress bar covers the whole repair.

    It used to reach 100% at the end of the first pass, then sit there through the second pass and the final composite, a good while on a big plate. The second pass and the composite now have their share of the bar, and the status line says which is running.

  • Erase no longer sticks for a second on mouse-down on big frames.

    Its preview of the original under the stroke was handing the whole scan to the graphics system on every press; it now hands over only the part of the frame on screen.

  • The brush no longer sticks for a second on mouse-down with the examined fog showing, on big frames.

    The fog and the mark overlay were drawn through image views that re-rendered themselves at the full size of the frame on every change, 850 MB of drawing on an 8×10 plate. They are now plain layers the graphics system scales on its own.

  • Clone stamps and undo of a heal no longer redraw the whole frame.

    Each now tells the canvas exactly which patch changed, the way a live heal already did, so on a big plate a stamp lands in milliseconds instead of a two-second freeze.

  • P is instant on big frames.

    Toggling between the scan and the repair used to hand the whole picture back to the graphics system every time, a one- to two-second freeze on an 8×10 plate. Both pictures now stay resident and a toggle just switches which one shows. On Macs with less memory the old behavior remains for very large frames.

  • Marks are drawn exactly at every zoom, on every frame.

    On big scans the mark overlay was built at a quarter (or less) of the picture's resolution, so at 640% each mark was a block of 4×4 image pixels while the picture underneath was sharp, and at moderate zooms it still showed the coarse copy until you were most of the way in. Now the part of the frame on screen is always drawn from the full-resolution map, scaled to your screen, however far in or out you are. Found on an 8×10 plate.

  • Cleaner repairs where a mark crosses a soft edge.

    Healing across a tonal boundary—the edge of a face against a bright sky, a shoulder against a wall—used to drag the bright side toward the dark and shift the edge itself. The repair now keeps the film sitting on the boundary as evidence of where the edge goes, instead of asking the model to invent it. Measured on real heals: eight levels less darkening, and the edge moves about half as far.

  • Brushing a speck the repair left now does something, whatever brush you are using.

    Painting over a mark that is already there used to do nothing at all when the brush was small: the app saw no new pixels and stopped. It now takes that as what it plainly is—the same spot, drawn again—and tries a different repair on it. A stray click cannot set one off, and repeats are spaced so a burst of clicks does not queue several.

  • Brushing the same spot again gives a different answer.

    It often gave the identical one. The model works in a window laid over the frame, and on a small repair that window could land in exactly the same place every time, so the second and third attempts were the first one again. The window's content is now varied on each attempt, which the geometry cannot undo.

  • A repair no longer puts a speck back where it had already been cleaned.

    The engine is shown the original scan inside the area it is about to fix, so it can see what it is removing. Where it then left a pixel alone—a spot no pass covered—that original was being written back into the picture, putting the defect over film an earlier pass had cleaned. A pixel the repair does not touch now keeps what the picture already showed.

  • A brush stroke is no longer cut into pieces.

    Dragging along a faint hair on light film could leave the middle of the hair in place: the app narrowed the stroke to the parts that stood out most and those came apart into separate islands, and only the islands were repaired. A stroke is still narrowed to the mark under it, but never broken up, so what you drag over is what gets healed.

  • Set where the Sensitivity slider starts

    , in Settings ▸ Editing. New frames used to start at the middle, and a lab that had settled on the maximum had to set it per frame or carry the slider with "Use this sensitivity on new frames" and never nudge it. Now the default is a setting. A frame you have already reviewed keeps its own reading, and the carry-over option still wins when it is on.

  • Returning the Sensitivity slider to where it was no longer marks the repair out of date.

    Moving it away and back used to leave the badge up and ask for another Apply Repair even though nothing had changed. The repair is out of date only while the slider sits somewhere other than where it was applied.

  • The same repair every launch.

    The order in which the model's windows were laid over a frame depended on the launch, so the same frame with the same marks could fill slightly differently after a relaunch. It is fixed now.

  • The filmstrip opens on the frame you were working on.

    Restoring a session with the open frame far down a long roll used to leave the strip at the top, so you scrolled to find the picture already on screen.

  • The erase preview no longer slides in from your last stroke.

    On mouse-down it appeared to glide from where the previous erase ended to where the pointer is; it now appears where you press.

  • The navigator shows what the canvas shows.

    It used to draw the original scan whatever was on screen; now it follows the repair, the tone panel, and the spots view.

  • The Acknowledgements window no longer clips its longest license link.

    Each license is named on its own line with the project link under it.

  • The Sync Settings sheet is tall enough for its list.

    It used to scroll to reveal about ten pixels.

0.2.78

September 8, 2026
  • "Show fence-sitters" now sits right under the Sensitivity slider

    , since that slider is what defines a fence-sitter. "Sticky between images" is now "Use this sensitivity on new frames", which is what it always did: the value carries to frames that have not been detected yet, and never overrides one you have already reviewed.

  • Detect Dust and Apply Repair no longer wrap onto two lines

    when the button beside them says "5 Images" instead of "All". The shortcut hint steps aside to make room.

  • One Export button.

    It writes this frame, the selected frames, or all of them, and says which: "Export…", "Export 5…", "Export All…". "Repair + Export All", "Detect + Repair All" and "Export N Repaired" are gone from the export bar; Repair All now sits beside Apply Repair. If any frame you are exporting has no repair, the app asks first: export it as it is, so the order is complete at the destination, or write only the repaired ones. Overwrite Mode follows the same grammar and never overwrites a frame that has no repair.

  • The order you are working on is shown at the top right.

    The frame's folder, in bold, then the file. Hover for the folder's location; click to show the file in the Finder. Asked for by the techs at Indie Film Lab.

  • Repair has an All button beside Apply Repair

    , matching Detect's. It repairs the selected images, or every image when nothing extra is selected, detecting first where needed, all in the app with nothing written until you export. The "Detect + Repair All" button leaves the export bar, which now holds only what writes files. Lab license.

  • The Dust Lasso's marching ants stay a hairline at high zoom.

    Past about 200% they thickened with the zoom while the dashes did not, so at 500% and up the outline looked chunky.

  • Marks are drawn exactly where you put them.

    On frames with no detections (marking by hand, or with the Dust Lasso), the orange marks were drawn from a half-size copy of the mask, so every mark grew outward to a 2-pixel grid the moment the stroke ended. The mask underneath was always precise; now the picture is too.

  • The smallest brush is reachable everywhere.

    The Size slider now goes down to 1 like the [ key does, and a pen's pressure floor no longer lifts a size-1 brush to size 2.

  • Recover License now asks for a code.

    Enter the email you bought with and a six-digit code is sent to it; enter the code and your license loads. The code works for fifteen minutes and only on the Mac that asked. If that email bought more than one license, you are asked which to load, and the result says which one it was. Earlier versions of Spot Tone cannot complete this step: if Recover License reports no license found, reply to the code email and the file will be sent to you.

  • A license you have paid for never stops because our server is unreachable.

    An Indie license keeps working indefinitely offline. A Lab license keeps working through its paid-through date, which the license file itself carries. Only a Lab subscription that has ended and has also been offline past its grace period steps down to the hand tools.

  • Help ▸ Acknowledgements

    lists the open-source work that ships inside the app.

  • Text-entry dialogs put the cursor in the field.

    The license prompts (recover, code, choose Lab seats, free a seat) and Save Session As opened with a button focused, so typing did nothing until you clicked the field.

  • Twelve recent sessions are kept instead of six.

    Only affects installs that never changed the setting.

  • License seats are now enforced.

    A licensed Mac claims its seat automatically the first time it launches online; nothing to click. An Indie license covers two Macs, a Lab license one Mac per seat, and Settings ▸ License shows which Macs hold them and lets a lab choose. A Mac that cannot reach the license server keeps working for 90 days on an Indie license and 30 days on a Lab license. A lab with more active Macs than seats keeps the hand tools on every Mac; the lab features step aside on the extra Macs until the lab admin reassigns seats. The public beta is unaffected: every beta Mac keeps every feature through December 31.

  • Panoramas no longer get clipped in a left- or right-docked filmstrip.

    A vertical strip sized its thumbnails as if it were a horizontal one, so a wide frame's cell came out wider than the strip itself. Cells now fit the strip they're in—and portraits in a vertical strip grow to use its full width.

  • One View menu.

    There were two menus called View; their contents are now in one, in the same order, with the same shortcuts.

  • Big Dust Lasso loops are dramatically faster—a 23-megapixel loop now sweeps in about 15 seconds.

    Two fixes. The search's tuning values were being re-read from the system on every pixel, which cost seconds per tile and got worse the more tiles ran at once; they're now read once per sweep. And a loop larger than about 2.4 megapixels is searched in tiles that used to run one after another; they now run at the same time, on as many cores as you have. A loop that took three minutes on 0.2.77 takes seconds.

  • Loops drawn during a sweep run, in order.

    Draw a second (or fifth) loop while the last one is still searching and it's queued and run next—the status bar says how many are waiting. Previously a loop drawn mid-sweep was dropped, and if several were drawn quickly only the last survived, which is why a loop sometimes seemed to vanish. A loop finished while Space was held for a pan no longer waits for the tool to come back, either.

  • The Dust Brush says when a mark runs past your stroke.

    B repairs exactly what you paint, so a mark whose bulk lies outside the stroke can't clear by brushing it again. The app now says so—with the size of what's outside—and points you to the heal (W), which traces the whole thing.

  • Brush heals beside an edge no longer leave the halo behind.

    A stroke straddling a tonal edge (a shirt against a background) could come back with the speck's fringe untouched; the part of the stroke the refine second-guessed is now reclaimed on every path, not just some.

  • The tour now runs on the real window, on a sample scan that ships with the app.

    First launch opens a filthy sample frame and walks the flow on the actual controls—Detect, Sensitivity, a brush mark, Apply, Export—spotlighting each one and moving on when you do the thing. Nothing you do to the sample touches a file you own. Skip Tour from any step; Help ▸ Getting Started runs it again, and Help ▸ Open Sample Scan opens the frame on its own.

  • No more "did you examine the whole frame?" question at commit.

    If you did look the whole frame over, say so once with View ▸ Mark Whole Frame Examined (the same thing the dialog's first button did); otherwise the frame is recorded exactly as you worked it.

  • Mark Spots Shown.

    With Visualize Spots on, set the slider where the white dots are dust and not grain, then click Mark Spots (beside the slider) or use View ▸ Mark Spots Shown: every small, compact spot shown becomes a mark and heals right away, the same as a lasso commit. Undo takes the batch back in one step. Hairs, large structures, the frame border, and colored image detail are never marked this way.

  • Large, soft dust blobs are repaired whole instead of hollowed out.

    An out-of-focus speck—a bright core inside a soft glow—used to have its middle trimmed away before the fill, so the repair was solved from the blob's own bright pixels and came back as a smudge. The trimming step now recognizes a fat blob and leaves the detector's mark intact; thin hairs and scratches are trimmed exactly as before.

  • A long, faint scratch is repaired as one line, not as the pieces the detector happened to catch.

    A scratch at grain level comes back from the detector in fragments with gaps between them, and nothing in any tool could see the gaps: the pixels there look exactly like grain, and Sensitivity, the Dust Lasso, and the brush all judge pixels. What the fragments have in common is that they line up. Detection now follows a chain of collinear marks and closes the gaps between them, so the whole scratch heals in one pass instead of leaving stragglers to brush by hand. The refinement step also no longer trims a mark that is already thin, and no longer loses the middle of a scratch that is wider than its own measuring window: a 3-4 px scratch across plain sky was being judged against a background that was mostly the scratch itself, so half of it was handed back as film and survived every Apply as two bright chunks. Each stretch of a mark is now measured against the film around that stretch.

  • Apply now makes a second pass.

    After the first repair, the app looks at the cleaned frame once more and repairs what that uncovered: the small specks the detector could not see until the larger dust around them was gone (on the hero frame, every one of the misses you could point to). Only marks outside the first pass's repairs are taken, so a fresh fill is never re-read as dust. The same pass also picks up pinholes, the tiny bright specks the detector scores near zero: a spot that stands well clear of its grain, 80 levels or more over the film around it, and alone in its patch is repaired with the rest. One extra detection per Apply; Settings ▸ Second pass turns both off.

  • Reset cancels a repair that is still running.

    Resetting a frame's spot work while its repair was in flight (typically the automatic re-repair right after launch) let that repair finish and land on the freshly reset frame. The reset now stops it first.

  • A repair file that doesn't match the frame is refused, not displayed.

    A saved repair with this frame's dimensions but a different color space or bit depth used to be accepted, so pressing P toggled between two encodings—a whole-frame density shift with no repair under it. Both are now compared, including for frames loaded ahead in the filmstrip.

0.2.77

September 4, 2026
  • Canceling a repair is immediate—including during "prep."

    The Cancel button used to wait for the whole repair task to wind down, and the preparation stage before the fill ignored it entirely. Cancel now releases instantly and every stage honors it. (The same fix the Dust Lasso's Cancel got in 0.2.76.)

  • The first repair of a session starts sooner.

    The fill engine loads once at launch, in the background, instead of adding about two seconds to your first repair's "prep…".

  • Apply Repair asks before replacing hand-built work.

    If you've hand-cleaned a frame and a fresh detection would repair far more than your own marks, Apply now asks first—your marks and heal strokes survive either way, but the curated result deserves a warning before an automatic one replaces it. Its counterpart shipped quietly after 0.2.76: Revert Repair now says how many hand-healed pixels it would discard, and asks.

  • Licensing is built in, ahead of launch.

    Settings ▸ License accepts a license by paste or file and activates your seat in one step; "Recover License" fetches a lost license with your purchase email; a lost or dead Mac's seat can be freed by name from any machine. Nothing changes during the free beta—every feature stays on through 2026-12-31—but a purchased license works today, and your Mac introduces itself to the license server only when you use one.

  • A lapsed Lab subscription falls back to a 2-seat Indie license

    —stated here, in the terms, and in the app, so it's a disclosed rule rather than a surprise. Hand tools never lapse.

  • The Stats pane reads properly

    —its explanatory text was right-justified and hard to scan; both notes are now ordinary paragraphs.

0.2.76

September 2, 2026
  • Cancel on the Dust Lasso is immediate.

    Canceling a large sweep could take many seconds—the button waited for the search to fully stop, and it competed for the machine with any repair still finishing. The bar now releases the moment you press, and the search winds down quietly in the background.

  • Big lasso sweeps are faster.

    A probe that only matters when you circle a single mark was running on every tile of a large sweep; it now runs only where it can change the answer.

  • The Dust Lasso tells you when a mark was too big to take.

    Circling a large blotch used to report clean film; it now says the mark hit the size ceiling, so you know to brush it instead.

  • Circling a single faint speck now takes it.

    A tight loop around one speck that measured a hair below the acceptance bar was refused as grain. When you have plainly pointed at one thing, a near miss within a small margin is now taken.

  • A lasso that runs off the edge of the picture stays closed.

    Loops drawn partly outside the frame used to fall open and enclose nothing; the path is now clamped to the border.

  • The brush writes exactly what you paint.

    A dab could quietly repaint two to three times its area by adopting nearby pixels; B now writes the paint, the whole paint, and nothing but the paint. Tracing a whole connected defect is W's job, as before.

  • Brushing the same spot again tries harder.

    A re-stroke on ground already repaired now routes to the reconstructing engine with a wider view, instead of re-running the same fill that just failed you.

  • Fills along a tonal edge keep the step and lose the noise.

    Repairs that crossed dark-against-bright could come out speckled or smeared. The fill now pins to the structure it found while the grain is laid down once. Measured across 700,000 edge-crossing pixels: error at the crossing down 24 percent.

  • The Clone tool has its own cursor badge.

    A hand-drawn rubber-stamp glyph, so you can tell at a glance which tool is loaded; cursor badges now also size and place themselves correctly at any zoom and rotation.

  • The navigator appears with the picture.

    It used to wait for the first repair to finish before showing at all.

  • Everything the app sends is now encrypted.

    Corrections always were; now the install ping, crash reports, and diagnostic signals are sealed with the same key before they leave your Mac. Bundles you contribute also carry your Mac's name and the network address our edge sees, so we can trace a bad bundle to its source—spelled out in the beta disclosure.

  • A lapsed Lab subscription falls back to Indie, never to unlicensed.

    The hand tools you bought outright never stop working. Crop and straighten without a Lab license are kept with the frame rather than applied, and the app says so when you open a session that relies on them.

  • Erasing at the very edge of the frame no longer risks a crash.

0.2.75

September 1, 2026
  • A spot beside a hard edge no longer comes back as a gray disc.

    Brushing or lassoing a speck where dark meets bright—a coat against a shirt, a face against a black ground—often filled with a soft gray blotch, sometimes a diamond. The fill engine had it right; the passes that level a fill to the film around it were treating the dark side of the picture as the black border of the film and lifting the whole patch. A hole that sits across an edge is now handed to the reconstructing engine and leveled against neither side. Measured on a brush across a 170-level edge: the dark half was 60 levels too bright; it is now within grain.

  • Space during a lasso no longer abandons the loop.

    Pressing space mid-drag switched to the Hand tool and left the marching ants frozen with nothing behind them. Space now waits for the mouse to come up.

  • The Dust Lasso's loops travel with your corrections.

    Loop-only passes uploaded as ordinary brush edits and the loop geometry stayed on your Mac; it now rides along.

  • Small spots you brush by hand are repaired under magnification.

    The fill runs on a 2x-enlarged crop and is scaled back down—fine structure a hole sits on, like lettering or a thin line, survives the repair far more often. Measured against ground truth: error inside these fills dropped by more than a third.

  • Missing part of a speck no longer sours the retry.

    Clipping a dot and brushing again used to pull the missed bright fragment into the fill's math; the repair now brings fragments within a few pixels of your stroke into the hole with it.

  • The eraser truly restores.

    Everything under an erase stroke returns to the source scan—including pixels earlier repairs left behind that no longer showed as marked. One swipe is now a reliable "put it back."

  • The window says what's open.

    The title bar shows the session's name (or its job folder) and frame count, and updates as you work.

  • Reordering the Tone panel's sections works to the top.

    Dragging a section to the first position dropped it at the bottom; each row also gains up/down arrows.

0.2.74

September 1, 2026
  • Settings has a License pane.

    It shows what this copy is licensed for and takes a license when you have one. Nothing changes for the public beta: every feature stays on for everyone through the date shown there, and no license is needed until then.

  • Crash reports can carry your email, if you want a reply.

    Settings ▸ Updates has an optional address field. Leave it empty and nothing about you is sent—the report is the same as before, with file names and folder paths removed.

  • The installer now shows what the beta collects before it installs.

    The same text as Settings ▸ Contribute, on screen where you can read it first.

  • Dust Hunt is no longer in the Image menu.

    It was built to gather training data and has no place in day-to-day work; the tool itself is unchanged.

0.2.73

August 31, 2026
  • Toggling the repair preview no longer shows a patchwork of tones.

    After healing a spot, pressing P could redraw part of the picture from the repaired version and the rest from the scan—a subtle density change at first, and after several heals a strong, colorful mismatch. The whole picture now redraws together.

0.2.72

August 30, 2026
  • The Dust Lasso disturbs clean film less, and no longer ignores a speck for reading the "wrong" way.

    Two changes to how it measures: each speck is judged against the noise of its own neighborhood rather than one number for the whole selection, and a speck that reads the opposite way to most of what's in your loop is no longer discarded unheard—it answers to a stricter bar instead.

  • Apply Repair now says why it can't run.

    While one frame is being repaired, asking for a second gave a beep or simply did nothing. It now names the frame holding things up and tells you to try again when it finishes.

  • The Lint Roller is now the Dust Lasso.

    Same tool, same L shortcut, same lasso—the old name described a rolling motion, and what the tool actually does is enclose a spot. Only the name has changed.

  • A sweep says whether it took one mark or every mark.

    Circling under a threshold means "this exact spot" and returns the single best mark; a wider loop returns everything it finds. The status line now names which happened and how large an area you circled, so two loops that look the same to draw no longer behave differently without explanation.

  • The Dust Lasso no longer marks huge streaks along edges.

    A mark could grow down the whole length of a strong tonal edge and be sent for repair. Marks are now capped, so a sweep cannot hand the repair a slab of the picture.

0.2.71

August 29, 2026
  • The Sensitivity slider's ends are labeled Minimum and Maximum.

    The right-hand end used to read "Every speck", which promised more than any detector can deliver. The new labels describe the control itself, so they stay accurate as the detection model improves.

  • New: British English.

    Spot Tone now speaks en-GB, with British spellings throughout and the platform's own wording where macOS differs. Choose it in System Settings ▸ General ▸ Language & Region ▸ Applications, where you can set a language for one app without changing your Mac's.

  • Overwrite Mode always starts off.

    It no longer carries over from your last session: a mode that replaces original files should never be running before you've turned it on and seen the warning. If it was on when you quit, the app says so on the next launch.

  • Settings ▸ Panels can hide the Hot Folder panel.

    If you never watch a folder, the inspector no longer carries the section. Hiding it changes nothing that's running.

  • Stats: "picked up, not used" no longer counts panning.

    Holding space to pan, or stepping out to Hand, Zoom, or Crop and back, was tallied as abandoning the tool you were about to use. Only switching to a different tool without using the first one counts now.

  • Opening a session no longer re-reads or re-repairs a frame that's already open.

    A frame you have open that also belongs to the session you're opening keeps its decoded pixels and, when its repair is current and the session doesn't name a different repair file, its repair too—on a large scan that was minutes of reloading and rebuilding. Marks and settings still come from the session.

  • New: File ▸ Reload from Disk.

    Re-reads the current frame's file, for when another app has saved over it. The app also tells you when it notices an open frame's file has changed on disk.

  • A renamed file no longer counts as missing.

    If you rename a scan in place while it's open (or between sessions), the session finds it again by identity and keeps its marks and repairs. Locate… matches renamed files too.

  • New in Overwrite Mode: Detect + Repair + Overwrite All.

    One action for the lab flow—detects and repairs every frame, then writes each repair back over its original. Asks first; frames whose repair fails are left untouched.

  • Model updates follow whatever version is published—including a rollback.

    If a newer detection model turns out worse and the previous one is republished, the app now installs it; before, it treated anything older than what it had as "up to date."

  • Heals on very large scans no longer freeze the app for a moment.

    On an 8×10 scan every brush heal used to stall the whole window for about two seconds while the entire picture was re-sent to the display. The picture is now handled in tiles, so a heal updates only the tile it touched.

  • A launch that opens nothing can no longer erase your last session.

    If a restore came back empty (a renamed file, a skipped restore) and you quit without opening anything, the app used to save that empty state over your session. It now leaves the session on disk alone until you actually open or remove frames.

  • An interrupted session restore now asks instead of silently skipping.

    If Spot Tone was quit while restoring (or just closed within a second of launching), the next launch used to skip your session with only a line in the status bar. It now asks: Restore It or Skip.

  • A session whose files were renamed no longer comes back empty.

    If the only frames in your last session had been moved or renamed, relaunching silently dropped them and showed the session picker with no explanation. They now appear in the missing-files sheet like any other missing frame.

  • Big Lint Roller sweeps run, show progress, and can be canceled.

    Sweeps over about 2 megapixels used to be refused as "too big"; they now search in tiles, the status line counts them off, and a Cancel button in the Lint Roller bar stops the search. Sweeps past 24 MP still ask first; past 64 MP the answer is still no, instantly.

  • New: Overwrite originals in the Hot Folder.

    Its own switch in the Hot Folder settings (off by default, separate from Overwrite Mode for exports): repairs are written back over the original files in the In folder instead of copies in Out. It confirms when you turn it on and again when you start watching, and the monitor shows OVERWRITING ORIGINALS the whole time. Frames flagged for review are still set aside, never replaced.

  • Hot Folder picks up a file you drop in again.

    A file it had already processed and moved aside was silently ignored if you put it back in the IN folder, no matter how long ago. It now processes it again; only a file that could not be moved aside stays skipped.

0.2.70

August 27, 2026
  • Overlapping sweeps no longer leave the repair marked "out of date."

    Starting a Lint Roller loop before the previous one had finished healing could heal everything correctly and still show the out-of-date warning, with a full ⌘R the only way to clear it.

  • Examined Coverage clears the inside of a Lint Roller loop.

    Circling a patch used to clear the fog only along the line you drew, leaving the area inside—the part the tool actually searched—still marked unexamined.

  • Lint Roller outline is visible at every zoom.

    Around 200% the outline's black dashes sat exactly on top of its white ones, so on dark film the selection all but disappeared until you changed zoom. The two now stay offset at any magnification, and the outline keeps its hairline weight as you zoom in to inspect.

  • Zoom to Fit now clears the Crop and Lint Roller tool bars.

    Those bars float over the top of the canvas, and Fit used to put the top of the picture—and the top crop handles—underneath them. Fit now aims for the space below the bar, so every handle is reachable at Fit.

  • A huge Lint Roller sweep asks before it commits.

    On very large scans, lassoing a big area could mean minutes of silent work; past 24 megapixels the sweep now tells you what it's about to take on and offers the faster path—several small sweeps that show results as you go.

  • A big repair no longer sits at 0% looking hung.

    On very large scans the repair spends minutes preparing before the first visible progress; during that stretch the bar now sweeps continuously and shows elapsed time ("prep… 1:20"), so you can tell working from stuck at a glance.

  • Contributed corrections now note which scanner made the scan

    (the EXIF make and model already in the file—a machine name, never a person). Different scanners leave different fingerprints, and training can now tell them apart.

  • New: Detect + Repair All.

    Detects any frame that needs it, repairs every frame in the app, and writes nothing—the other half of Repair + Export All. Batch first, review what it did, then export (or overwrite) what you're happy with. The status line names the heaviest frames so you know where to look first.

  • The export bar shows one export button when one frame is repaired.

    "Export 1 Repaired…" duplicated the single-frame Export beside it; the repaired-set button now appears from two frames up.

  • Switching themes now recolors the whole window at once.

    The export bar, status area, filmstrip, and inspector could keep the previous theme's colors until something else made them redraw.

  • In Overwrite Mode, the buttons say what they'll do.

    "Export N Repaired…" becomes "Overwrite N Originals…", and the single-frame export becomes "Save (Overwrite)…"—replacing that frame's file directly, no save panel.

  • New: Overwrite Mode, for labs.

    Turn it on (Settings ▸ Export) and Export and Save Back replace the original files in place—no copies, no suffixes—with the file's format, bit depth, profile, and metadata preserved. It confirms every time it turns on, and a banner stays across the window the whole time it's active, so there is never any doubt which mode you are in.

  • New: Settings ▸ Stats.

    Your own numbers—frames detected, repairs applied, pixels healed, sweeps, exports—counted on your Mac and shown to you. They live in a small file on this machine and are never sent anywhere.

0.2.69

August 26, 2026
  • Undo is reliable during fast brushwork.

    When strokes came quickly, a repair could get filed under the wrong stroke—so ⌘Z sometimes reverted the wrong spot and left another unreachable. Each repair now stays with the stroke that made it.

  • Hot-folder and Photoshop round-trip repairs now use the same repair margin as the app.

    They had quietly drifted to a slightly wider one; measured against ground truth, the app's setting is better on every axis.

  • The Line tool no longer brings back dust it crosses.

    Leveling a scanner line measured against the original scan, so where your line crossed an already-repaired spot, the old dust could reappear inside the leveled strip—and stick through re-repairs. It reads your current result now.

  • Healing a bright speck now takes its glow too.

    A speck on film blooms wider than its hard center; repairs used to replace the center and leave the faint halo, so the spot looked like it never quite went away—no matter how many times you repaired it. The whole speck goes now, halo included.

  • Brushing over a repair you don't like now redoes what's under the brush.

    A stroke on repaired ground used to rewrite only the center of what you marked, leaving the rest of the old repair standing—which often looked like nothing happened. Everything under your stroke re-solves now, each repeat stroke tries a different source, and nothing outside your stroke is ever touched.

  • No more dark dots after a Lint Roller sweep over smooth areas.

    On a gentle tonal rolloff the repair could take its film samples from too far away and leave small plugs that did not match the gradient—and a re-repair brought them back. The sampling now stays local.

  • Fast Lint Roller sweeps no longer lose work.

    Sweeping again before the previous sweep's repair finished computing could throw that repair away silently—the specks stayed, and whether a sweep "took" depended on your rhythm. A repair that loses that race now re-runs instead of giving up.

  • Reset now comes in two strengths.

    Reset Image - SPOT Only starts you over on the Spot side—detection, brush edits, repair, touch-ups, Sensitivity—while Tone, crop, straighten, and rotation stay exactly as you locked them in. Reset Image - SPOT and TONE takes everything back to freshly opened. Both live in the Image menu and the filmstrip right-click, just under Clear Brush Edits, with confirmations you can suppress. Your file on disk is never touched by either.

0.2.68

August 26, 2026
  • Brush marks on a repaired frame now show their result instantly.

    A heal made on top of an existing repair was computed and saved correctly, but with no tone adjustments active the canvas was never told to repaint—the stroke looked like it did nothing until the frame was reopened. If you have ever brushed a spot, seen no change, and found it fixed later: this was why.

  • Drawing over a repair means "redo this."

    A stroke on already-repaired ground used to touch only the few fresh pixels at its edges. It now re-heals everything under the brush, and each repeat stroke tries a genuinely different source—a different patch of donor film, a different solve—instead of returning the same answer. Pixels you placed with Clone are never re-opened.

  • A mark on part of a hair no longer redraws the rest of the hair.

    The fill could read the unmarked remainder as film worth continuing. It still repairs only what you brushed, but the surrounding defect can no longer serve as its template.

  • Align draws like Adobe Camera Raw.

    Press A and the cursor becomes a small level: drag a line along anything that should be level or plumb—a horizon, a doorframe—and the picture turns to match. No more pre-placed line to fish for. Rotating by dragging outside a corner still works.

  • Reset Image resets everything

    —including tone, crop, and straighten, which used to survive it. The confirmation says plainly that a reset cannot be undone, and grows a "Don't ask again" checkbox.

  • A new detection model.

    Better at small faint specks—the kind worth finding on a lab scanner's output—with false marks held in check, and it no longer learns bad habits from scanner-mask edges on over-scanned film.

0.2.67

August 21, 2026
  • A frame no longer flashes the wrong way up when you open it.

    While a scan's full-size pixels decode, Spot Tone shows its thumbnail so you see the right picture immediately—but that stand-in was drawn unturned, so any frame whose stored pixels are not upright appeared as it came off the scanner and then snapped around when the decode landed. Most visible right after Auto-Rotate, and only on the first visit to each frame. Reported by Josh and Emma at Indie Film Lab.

  • Moving between frames no longer shows you the previous one for a beat.

    With Preview adjustments on, the picture on the canvas was held over until the new frame finished rendering. Harmless-looking on a roll shot alike, thoroughly confusing after Auto-Rotate, where the frame you just left was drawn at the new frame's rotation.

  • Fit is recalculated when a frame is turned.

    A quarter turn swaps the picture's proportions, but the zoom was only recomputed when the pixel dimensions changed—so turning a frame left it at the previous magnification until you pressed ⌘0.

  • New: an Auto-Rotate button in the toolbar

    , beside Rotate Left and Rotate Right. It says what it will act on: "Auto-Rotate All", or "Auto-Rotate 12" when you have several frames selected.

  • Workspace Background stays in the Image menu

    when Auto-Rotate is switched off in Settings. The switch was taking the neighboring menu with it.

0.2.66

August 21, 2026
  • Cropping no longer keeps a sliver of the film border.

    The exported crop was rounded outward by up to a pixel on every edge, so a crop placed just inside the frame edge brought the rebate with it—a thin light outline along the sides. It rounds inward now, so nothing you cropped away can survive. Reported by Emma at Indie Film Lab.

  • Erasing a detection at the highest sensitivity now counts.

    At Sensitivity 99% the marks you rub out were being recorded as "no opinion" rather than "not dust", so the most useful correction a person can make—overruling a faint detection—taught the detector nothing. Only 99% was affected; every setting below it was already fine.

0.2.65

August 20, 2026
  • The filmstrip fits the pictures in it.

    Every cell was the same landscape box whatever the frame was, so a 6x6 negative or an upright portrait sat in a box a third empty and the pictures looked far apart. Each frame now gets a cell its own shape, read from the file before the thumbnail is even decoded.

  • A frame you have turned is drawn the size of the others.

    A quarter-turned thumbnail was being shrunk to 72% to keep it inside its cell, so a rotated frame read as smaller than its neighbors.

  • The selection ring goes round the photograph

    , not round the box it sits in. A square frame was getting a landscape outline with dark bars inside it.

  • Bigger thumbnails in a top- or bottom-docked filmstrip.

    A row of height was reserved for badges that are drawn over the image and take no room, leaving a dark band above and below.

0.2.64

August 20, 2026
  • Your repairs now stay with the image.

    They used to belong to the session that made them: once that session aged out of the last few, the brush work went with it. Open the same negative again—from a session, the Finder, or a round trip—and the work is where you left it. Settings ▸ Saved Repairs lists what is kept and is the only thing that removes it. Repairs on files that live on a drive you have unplugged are safe; a missing file is never read as a deleted one.

  • New: Capture One.

    Select variants, then Scripts ▸ SpotTone. Capture One processes them to 16-bit TIFF through a recipe it creates once, hands them over, and Save & Return (⌘S) imports each cleaned frame back into the collection it came from. Your originals are never opened or written. The recipe is a normal one you can edit—change its output folder or profile and Spot Tone follows what you set.

  • One Lint Roller.

    Destroy was never a second tool—it was the Lint Roller with one flag set, and no name could honestly separate them. Now there is one tool, and whether the detector gets a vote is a checkbox in its options bar. D and L both reach it. Sweeping an area still finds marks the detector scores zero on, which is the point of it.

  • The adjustments preview checkbox reads "Preview adjustments", which is what it does.

0.2.63

August 19, 2026
  • Dragging the filmstrip divider now tracks your cursor.

    It was moving at exactly half speed—the divider sits inside the pane it resizes, so every point the pane grew canceled a point of the drag, and it fell behind and stuttered after the pointer.

  • Fit no longer overflows the window on a rotated frame.

    With both a crop and a rotation—which "Frame whole image" and Auto-Rotate now produce together—Fit was zooming for the frame's pre-rotation shape.

  • Bigger thumbnails in a top- or bottom-docked filmstrip.

    Space was being reserved for a scrollbar that floats above the content and never needed it.

0.2.62

August 19, 2026
  • New: Light.

    Exposure, Contrast, Whites, and Blacks, above Curves in the Tone panel—Camera Raw's group in its order and its numbers. Exposure works in linear light, so it clips highlights and moves midtones the way stops do rather than sliding everything up. Highlights and Shadows are deliberately not here: theirs is a local adjustment that reads a region by what surrounds it, and imitating it with a curve would carry the names without the behavior.

  • New: Warmth and Tint

    , in Color. Channel gains, which is what white balance can be on an already-developed scan—hence "Warmth" rather than a temperature in Kelvin it couldn't honor.

  • New: Auto-Rotate (experimental)

    , in the Image menu. Turns frames upright from the faces in them, and pools each roll so a frame with no face can follow the rest of its roll. It selects what it turned, ⌥← ⌥→ steps between just those, and ⌘Z undoes one. About one turn in fourteen is wrong on real rolls, so it is a suggestion to look over—it never runs unattended, and Settings can remove it entirely.

  • Rotation is undoable.

    ⌘Z after turning a frame used to undo whatever you did *before* it; the rotate commands recorded nothing.

  • The bottom-docked filmstrip has its scrollbar back.

    It was being drawn underneath the export bar, where it could never be seen—the vertical strip was never affected. Bottom-docked filenames were also being clipped.

  • New: Workspace Background.

    Right-click the area around the frame, or View ▸ Workspace Background, for a lighter surround—the film's own edges are hard to find against the dark default.

  • The number of selected images

    now appears in the bar above the tools, not only on the Sync button.

  • SPOT reads Detect, Brush, Repair.

    "Detect" and "Detection" were two names for the same step; Sensitivity and the overlay controls now sit under Detect.

  • The Open button says which of two things it will do

    —"Open All Inside" when a folder is selected, since that opens every image underneath it, and double-clicking looks inside instead.

  • The correction upload token is locked

    behind the same switch the model share token uses. An upload to a wrong token fails silently.

  • Export setting renamed to "Apply your rotation to exported files", which is what it does.

0.2.61

August 18, 2026
  • Opening a session now tells you what it opened.

    The summary—how many frames came back, how many changed on disk, how many couldn't be found—was written and then immediately overwritten by the frame load, every time. If a session came up short, nothing said so.

  • A session accounts for every frame in it.

    Frames whose folder had been deleted were dropped from the count without appearing anywhere: not the status line, not the missing-files list. Open a session listing 17 frames, get 1, and hear nothing about the other 16.

  • New: Locate… and Forget

    , in the missing-files sheet. Locate points the session at the folder those files moved to, matched by filename, and carries their brush edits across with them. Forget drops them for good when they're gone rather than moved.

  • The missing-files warning can be turned back on.

    "Don't show this again" applied to every session, for ever, and the only switch for it lived inside the sheet it silenced. It's now in Settings ▸ General too, and says what it actually does.

  • Sync Settings is ⌥S and now works.

    The shortcut was quietly switching you to the Clone tool instead—the tool letters were claiming it before the menu ever saw it.

  • Detector type is off the Sync sheet

    while it's deprecated.

  • Bundles a detection model trained on the full correction backlog—color hair recall improved sharply.

0.2.60

August 18, 2026
  • Repair + Export All now applies brush edits on frames you never opened.

    Marks drawn in an earlier session live on disk until you click that frame, and the batch was reading them as absent—so the detector's dust was repaired and every hand-drawn mark was silently dropped. Erasures went the same way, meaning a false positive you'd rubbed out came back repaired. If you mark up a roll and then export without visiting each frame, this was losing that work.

  • Hot Folder can write JPEG.

    It always wrote TIFF regardless of the export format, because its filename was fixed. Format is now its own setting in the Hot Folder panel, separate from the export bar on purpose: a watched folder runs unattended for days and shouldn't change because you picked JPEG for a one-off.

  • Hot Folder sensitivity goes lower

    , down to 1%, for a conservative pass that repairs tightly. Worth knowing what it does: almost everything the detector flags, it flags with near-total confidence, so this mostly shrinks each repair rather than removing whole false detections.

  • Sync Settings is ⌥S

    , matching Camera Raw, and a Sync button now appears beside the export buttons whenever more than one frame is selected.

  • Sync's Levels can read each frame on its own.

    Pick "Auto, per image" and this frame's numbers don't travel—every frame gets the black and white points its own histogram asks for.

0.2.59

August 18, 2026
  • Crop ratios you can type.

    A Custom… entry in the Ratio menu with separate W and H fields, decimals included—2.39, 1.85, 1.414. It commits on Return, so typing "16" over a "4" no longer lurches the crop through 416 on the way, and Return hands the keyboard back instead of swallowing the next tool letter.

  • Changing the ratio reshapes the box you already drew.

    Picking a shape, or flipping 4:5 to 5:4, used to change only what the *next* drag would do and leave the box on screen exactly as it was. It now turns in place, holding its area and its center.

  • An extreme ratio keeps its crop box on the image.

    A 45:4 crop reshaped to about 14,900px wide on a 5,444px frame, then had its width clipped to the film and its height left alone—so the box hung off the picture and no longer held the ratio it was locked to. It's now scaled down to fit at the shape you asked for.

  • The rotate cursor appears when the crop box is on the frame's edges.

    The gesture always worked there; the cursor never showed it, because the only reachable part of the ring was inside the box. You can also now reach past a corner into the gray surround to rotate, which is where that gesture wants to live.

  • The dead 1-pixel band along the right and bottom edges of a crop is gone.

    With the box around the whole frame, the far edges showed a crosshair that did nothing when clicked. The left and top edges were always fine, which is what gave it away.

0.2.58

August 18, 2026
  • The menus work while a repair is running.

    Opening a menu during a repair—Open Recent Session, say—made it flicker and close before you could pick anything. The progress percentage was rebuilding the whole menu bar every time it ticked. It now updates the progress bar and nothing else.

0.2.57

August 18, 2026
  • "Export Repaired" no longer skips frames it counted.

    A repair restored from a previous session lives only in its edit history until you look at that frame, so any frame you hadn't clicked on since relaunch was counted by the button and then silently left out of the export. It now writes them.

  • Auto Levels All Frames no longer freezes the window

    while it works, and gives each frame's pixels back as it goes instead of holding the whole roll in memory.

  • Auto-clean can't be pulled out from under itself.

    Removing images or starting a new session while an automatic round-trip clean was running could leave it saving over a file you'd just removed. Both now wait for it to finish or be canceled.

0.2.56

August 18, 2026
  • New: Sync Settings (⌘⌥S).

    Finish one frame, tick what should travel, push it onto the rest—sensitivity, levels, curves, color, crop & straighten, rotation, detector type. Crop and straighten always move together, because a rotation without a crop would export on a black ground. Syncing sensitivity marks an existing repair as out of date rather than silently recomputing it, and each frame keeps its own undo.

  • New: Auto Levels All Frames.

    Sets black and white on every frame from *its own* histogram—which is the opposite of syncing levels, where one frame's numbers are copied to the rest. A roll shot in changing light wants this one.

  • Opening a folder now includes its subfolders.

    A roll filed as Job/Roll1, Job/Roll2 used to open as nothing at all, because the folder you picked held only more folders. Above 400 images it asks first. Folders Spot Tone itself creates inside a watched tree are skipped, so a hot-folder input no longer opens every frame twice.

  • New: File ▸ New Session (⌘N).

    Clears the filmstrip and goes straight to Open. The session you were in is archived first, so it's one click away again under Open Recent Session.

  • The tool buttons can be reached and used from the keyboard.

    Tabbing to them worked; pressing them didn't, because Space is held by the Hand tool. Return now commits the focused button—tools, Fit, 1:1, both rotates and Help.

0.2.55

August 18, 2026
  • Erasing where there was nothing to erase no longer counts as training data.

    An erasure is recorded as "this is not dust" only where the detector actually saw something—rubbing out blank film asserts nothing it didn't already believe, and recording it buried the real judgments under bulk. Erasing a faint mark the model half-sees still counts, and is still the most valuable correction you can make.

  • Crop's Reset now leaves a box around the whole frame

    instead of nothing at all, and levels the rotation with it.

  • A thumbnail can no longer disagree with the image.

    The filmstrip and the main window worked from two different starting orientations kept in step by hand; they now share one. Fixes rotated frames whose thumbnail faced a different way than the picture—and, along the way, the filmstrip previewing the wrong region for a crop on any rotated file.

0.2.54

August 17, 2026
  • Auto Levels' per-channel stretch gets real sliders.

    Stretching R, G and B separately (for a cast a single Black/White pair can't reach) used to leave no way to see or adjust what it did, and no way to undo it short of ⌘Z. Reset now recognizes and clears it, and R/G/B Black/White sliders appear under Levels once it's set—drag them more or less aggressive in either direction, same as the composite sliders. Never touches a curve you've drawn by hand on the Curves tab.

  • Hot Folder can desaturate and apply Auto Levels automatically.

    Desaturate fully strips all color from every processed frame—for a scanner that leaves an RGB cast on nominally black-and-white film. Apply Auto Levels sets black/white points from each frame's own histogram, composite only and defaulting to no clipping, so an unattended folder can't stretch more aggressively than a person watching one frame at a time would.

  • New: "Frame whole image"

    , next to Ratio in the crop bar. Draws a box around the full frame the moment Crop opens, until you draw a real one of your own or use Align—Reset doesn't use it up, only actually cropping or aligning does.

  • Fill and 1:1 now respect a crop.

    Once a crop is made, both used to keep fitting and centering on the original frame underneath it rather than the crop itself.

  • The level line is back

    , next to Ratio and Reset, and now turns itself off once you've drawn a line with it rather than staying the active tool. A switches to Crop and the level line together, matching Camera Raw.

  • Auto-detect turns the overlay on

    the moment it actually runs, so a detection landing on a new frame is visible without a separate press of O.

  • New: Sticky Sensitivity.

    Carries the Sensitivity slider to the next frame instead of resetting, but only onto a frame that's never been detected—one you've already reviewed keeps its own value.

  • A crop could silently fail to export

    on a frame that had never been individually opened this session—the crop (and sometimes the rotation) just didn't make it into the file, with nothing to say why. Exporting now works correctly regardless of whether you've clicked through every frame first.

  • A batch export's failures are no longer just a number.

    "12 exported, 2 failed" used to be the whole story; a text file listing which ones and why now lands next to the exported images.

0.2.53

August 17, 2026
  • Preferences is split into General, Editing and Export.

    The old General tab stacked every setting in the app into one column, tall enough to run off the bottom of a 15" screen. Each tab now covers what it says: interface and session in General, brush and repair behavior in Editing, export destination/rotation/format in Export.

  • The model share token and password are locked by default

    , under an "Unlock to edit" checkbox in Updates. They're the two fields where a stray click or a keystroke while tabbing through the form does real, silent damage—pointing future model updates at the wrong share, or clearing the token and turning updates off with nothing on screen to say why. Unlocking doesn't stick between visits, on purpose.

0.2.52

August 17, 2026
  • New: Straighten, inside Crop.

    Drag just outside any corner of the crop box and the picture turns underneath it while the box stays upright, the way Camera Raw does it. The angle reads out in the bar under the toolbar and has its own Reset. Non-destructive like the crop itself: the angle is stored with the frame and applied when you export, so it can be changed or removed at any time and never touches a pixel.

  • A straighten always brings a crop with it.

    Turning a frame opens empty wedges at its corners, so the box is held to the film as you rotate—whatever it encloses is real picture, never a black corner. Clearing the crop clears the rotation for the same reason: a tilt on its own would export the frame sitting on black.

  • Crop opens with nothing selected

    , crosshair in hand, so your first drag draws a box rather than adjusting one that was already sitting there.

  • A crop handle outside the picture can be grabbed again.

    Pull a box past the edge of the frame and its handles went out of reach, leaving only the part still over the film clickable.

  • The cursor says what it is about to do

    —crosshair to draw a box, arrow over a handle or inside one, curved arrow where a drag will rotate.

  • The status line sits under the toolbar

    , beside the picture, instead of along the bottom of the window.

  • The dust overlay has an opacity slider

    , so the marks can be faded back against the film they cover.

  • A repair shows up without toggling the preview.

    After a certain run of edits the canvas kept drawing the version rendered before the repair, so brush, heal, and the Destroyer all appeared to do nothing until you switched the repaired preview off and on again.

0.2.51

August 15, 2026
  • A finished repair no longer shows the old dust.

    With any tone adjustment set, the canvas kept displaying the version rendered before the repair, so the frame looked untouched until you toggled the preview off and on. Reported by Indie Film Lab.

  • The crop box has handles on every side

    , not just the corners, so one edge can be moved on its own—and ⌥ while dragging moves both sides at once, as in Camera Raw.

0.2.50

August 15, 2026
  • New: Crop (C).

    Non-destructive—the rectangle is stored with the frame and applied when you export, so it can be re-drawn or cleared at any time and never touches a pixel. Drag to draw, drag inside to move, corners to resize, ⇧ to keep the shape you have, or lock a ratio in the bar under the toolbar. The canvas keeps showing the whole frame with the crop outlined, because dust outside it still matters the moment you re-crop; the filmstrip shows the finished picture.

  • New: Clone (S).

    ⌥-click the film you want to copy from, then paint. For a mark lying along an edge—a hair on a lit chin, a scratch down a shoulder—where no automatic donor is the right answer. The film you're about to copy shows inside the brush as you move it, so you can aim; hold ⌥ again and the preview steps aside while you pick a new source. The offset locks on your first stroke, so an area can be built up in passes. Works at the file's own bit depth, and on frames that have never been repaired.

  • Export in the direction you're viewing

    , optional, in Settings. Off, exports keep the file's own pixel orientation and its EXIF flag, which is what a round trip to Lightroom expects. On, your rotation is written into the pixels and the file is marked upright, so every viewer shows what you saw.

  • Clipping now appears only while you drag a levels slider with ⌥ held

    , and goes when you let go. It used to show on ⌥ alone, so resting a finger on the key repainted the whole frame.

  • Optional: hide the dust marks when a repair starts.

    They're drawn over the pixels the repair is about to change, so they land on top of the result and have to be cleared by hand before you can judge it. Off by default; Settings ▸ General. Asked for by Indie Film Lab.

  • The ⌥ clipping preview is three times faster.

    It was allocating memory for every pixel in the frame—205 ms a pass on a 10-megapixel scan, against 73 ms for an ordinary tone render doing more arithmetic.

  • Save Back keeps the original geometry

    —a crop or a rotation leaves through Export instead. The file belongs to the app that handed it over, and its edit stack is built on those dimensions.

0.2.49

August 15, 2026
  • A repair on the edge of something no longer leaves a bright lump.

    A mark sitting on an edge—a hair against a lit chin, a scratch along a shoulder—was being repaired with a mask ten to fifteen times wider than the mark itself, so the fill was asked to invent a band of film where only a few pixels were damaged, and it filled across the edge with the wrong side's tone. Masks are now cut back to the mark before filling. On the frame that showed this worst, the dark side of the edge was being lightened by twelve levels; it is now half a level, and the lump is gone.

  • Marks the Destroyer once refused are now removed.

    It was consulting a detection made at reduced size, where a hair-thin fiber is smaller than a pixel and simply absent.

  • Drawing over a repair you have already made now tries something else

    instead of laying down the same answer again. Each stroke reads the cleaned frame and writes only what you drew, so building a difficult area up in passes works the way it looks like it should.

  • New: Tone.

    A histogram, curves, black/white/midtone levels, saturation, and vibrance, under the repair tools. Laid out the way Camera Raw lays it out—the histogram at the top with clipping indicators, and each control as one row with a tick at the value it does nothing at. Nothing here touches your pixels until you export: the settings are numbers, so they never degrade the file, never affect detection or repair, and never travel with a contributed correction.

  • Curves have red, green and blue channels

    , which is the honest tool for a scanner's color cast—saturation can only mute a cast, at the cost of the whole frame's color.

  • Auto Levels, with the clipping in your hands.

    Set how much may be thrown away at each end, and *none* means exactly that: the black and white points go to the darkest and lightest pixels in the frame, so the stretch costs nothing. Stretch each channel separately and it also corrects a cast that lives in the black and white points—base fog, or one channel running hot—landing in the R/G/B curves where you can see and adjust what it did.

  • Hold ⌥ over Levels to see what is being clipped

    , as in Photoshop, and it names which channel when only one is going.

  • Copy and paste tone settings between frames

    (⌘⌥C / ⌘⌥V), onto the whole selection when several are picked. A roll scanned in one sitting wants one tone move, not the same move twenty times.

  • A black-and-white scan now comes back black and white.

    A single-channel file was being exported as a three-channel color one—the same picture, but a different kind of file and up to three times the size. Color scans are unaffected.

  • The panel is yours to arrange.

    Hide any tone section from the View menu or by right-clicking its header, and drag them into the order you want in Settings ▸ Panels. Hiding a section never switches it off, and the panel tells you if a hidden one is still doing something.

  • Export no longer waits for a repair.

    A frame with only a tone change—or no change at all—can be exported now. It writes a new file and never touches your original, so there was nothing for the old restriction to protect.

  • ⌘Z now undoes the last thing you did

    , whether that was a brush stroke, a repair, or a tone change.

  • Shift-P previews your tone changes

    , independently of P, so you can look at the scan, the repair, the tone, or all of it.

  • The tools are grouped as Spot and Tone

    , each collapsible, with their sections foldable inside.

  • Remove scanner lines moved to Settings.

    It is a property of your scanner, not a decision to make on every frame.

0.2.48

August 14, 2026
  • Destroyer (D) now asks the model what it can actually see.

    It was consulting the detection made at reduced resolution, where a hair-thin fiber is smaller than a pixel and simply absent—so it was asking a witness who had never seen the mark. It now runs a fresh full-resolution detection on the area you sweep, using both detectors together, and the model's opinion can keep a mark on its own rather than only nominating one for the statistics to judge. On the first frames tested it held a scratch of over a hundred marks that the old version discarded whole.

  • Less of your film is replaced on every repair.

    Each mask was being expanded by two pixels in every direction before filling, which on one measured frame added twenty-one thousand pixels of clean film to the repair for no gain. That margin is now one pixel, and the marks it exists to cover are still covered.

  • A new app icon

    , and it sits at the size Mac icons are meant to sit at.

  • The Destroyer has its own pointer

    —the wand from the tool strip, with its tip on the spot you are aiming at.

  • The brush outline no longer sticks on screen after a repair

    until you move the mouse.

  • Tabbing away from a button takes one press

    , not two.

0.2.47

August 13, 2026
  • Destroyer (D): a repeat sweep now re-heals instead of saying "already marked".

    Sweeping ground you have already marked used to add nothing and stop—no fill, no change—while the same request made with the brush re-healed it. Same intent, two different answers depending on which tool was in your hand.

  • The Lint Roller can reach small, strong specks.

    A mark standing 5 sigma clear of the film could be refused for being under five pixels, and every message the app had for that case said "nothing here". Its floors are separated now: two pixels to be considered, and the measured gate decides what is kept.

  • Re-heal no longer works from the original scan.

    Asking for a second pass in an area you had already repaired rebuilt it against the untouched scan, so your earlier repairs were handed back to it as dust—which could bring a scratch you had removed back up. It now works from what you are actually looking at.

  • Brushing the same spot again does something.

    A stroke that lands on ground already marked used to change nothing at all. It now re-heals that spot from a different donor.

  • One orange.

    Sliders, progress bars, checkboxes, and the Apply button drew from three different colors—two of them the macOS system accent rather than the app's, so they changed with your Mac's settings rather than your theme.

  • The brush ghost no longer sticks after a repair.

    The outline of your last stroke could stay on screen until you moved the mouse.

  • Tabbing away from a button takes one press.

    The focus ring added a second stop in the tab order.

0.2.46

August 13, 2026
  • New tool: the Lint Roller (L).

    Circle an area where you can see dust the detector missed, and it finds it—every mark in the region, not one. It consults no model at all, and that is the point: across 55 specks the detector had missed, dropping the model's own threshold as far as it goes recovered 9% of them, so neither the Sensitivity slider nor the Heal brush can reach this dust. The Lint Roller finds 89% of it by measuring the film instead. Marks with a lasso, marching ants while you draw, and it says "nothing here" rather than inventing something when the film really is clean.

  • The brush no longer sleeps on every image while one image repairs.

    A repair on one frame put every tool to sleep on every frame; only the frame actually being repaired is held now.

  • Line moves to K.

    L now selects the Lint Roller, which is the key the hand reaches for.

  • Fixed three crashes on strokes that leave the canvas.

    A stroke dragged off the edge of the frame could take the app down—in the new tool, in the Line tool, and in the dust-hunt overlay. All three had the same cause.

0.2.45

August 12, 2026
  • A brushed scratch is no longer left half-repaired where it widens.

    A long mark is traced as a thin line, and wherever it broadened—usually right where it crosses something—the rest of it was discarded before the repair ran, so the mark survived inside your own mask. On the frame this was found with, that stretch went from 3% repaired to 85%, and what was left of it was the most visible thing on the picture.

  • Repairs hold their brightness along the whole length of a mark.

    The correction used to be worked out once for each mark. On a scratch crossing a sky that meant it could run five levels dark for four hundred pixels, drift back, and still measure correct on average—invisible up close, a faint band when you step back. It is now worked out pixel by pixel against the film beside it.

  • Grain goes back with its highlights intact.

    The replaced grain carried about the right amount of energy, but its bright specks were a third too dim and its dark ones a fifth too shallow, which reads as flat gray at 100% no matter how well the average matches. Its whole distribution is now matched to the film around it.

  • A mark that runs slightly wider than its mask is taken with it.

    Film just outside a mark that is still part of that mark used to become the repair's reference, so the fill rebuilt a piece of the defect out of the defect.

  • Hand-brushed marks keep more of what you drew.

    The test deciding which of a brush stroke is real defect used a single measurement for the whole mark. On a stroke running from light film into dark it kept everything at one end and discarded real mark at the other.

0.2.44

August 12, 2026
  • Repairs now match the brightness of the film around them.

    A filled mark could land slightly lighter or darker than the film beside it—invisible on a speck, but a long scratch across an even sky read as a faint band once you stepped back. Every repair is now compared against its surroundings, tone by tone, and nudged to match.

  • Grain follows the density along a mark.

    A scratch running from a dark area into a light one used to get a single grain strength for its whole length, which is too much at one end and too little at the other. Grain is now measured and applied by tone, so each part of the mark carries the grain the film has there.

  • A hand-drawn mask is no longer buried by an automatic detection.

    A frame you masked entirely by brush has no detection on it, by definition—so reopening it passed the "detect on open" test and ran a detection straight over your work. Frames carrying brush edits are now left alone.

  • Image ▸ Clear Detection.

    Discards a detection and keeps your brush work. Clear Edits does the opposite and Reset Image discards both; there was no way to drop just the detection.

  • Stored work is no longer applied to a file that has changed.

    If a scan is re-exported or edited after Spot Tone saved a detection and brush edits for it, that work describes pixels which no longer exist. Spot Tone now notices and declines it instead of laying it over the new image.

  • Brushing during a repair no longer looks like it worked.

    The brush has always been asleep while a repair runs, but the canvas drew the stroke anyway—so the mark appeared under the pen and then vanished when the repair landed. The pointer now shows the brush is unavailable, and nothing is drawn.

0.2.43

August 12, 2026
  • The repair progress bar now tells the truth.

    On frames where a lot of dust crosses an edge, the bar reached 85% in a few seconds and then appeared to hang for half a minute—the last stage was doing most of the work while claiming a sixth of it. The bar is now weighted by how much work each part actually is, measured per image, and it moves the whole way through.

  • ⌘. cancels a repair

    (or a detection, if that's what's running)—the Mac shortcut for stopping a long job.

  • Cancel works during the slow part of a repair.

    It was ignored during the two longest stages, so pressing it looked like nothing happening.

  • "Detected by an older model" stopped appearing on detections you just made.

    The app compares against the model it has loaded, and none is loaded until the first detection of a session—so every restored detection was reported out of date until you detected something. It now says nothing until it knows.

  • Progress no longer follows you to another image.

    Moving to a different frame mid-repair showed the first frame's percentage against the second, as though the new image were repairing.

  • A frame that opens needing both a fresh detection and a repair now does them in that order.

    The repair used to run first, against the old detection, so the frame arrived already out of date and needed repairing again.

  • Repairs are faster.

    Around a third off on a heavily marked frame, from work that was being repeated needlessly inside the new fill.

0.2.42

August 11, 2026
  • Removing a frame from the filmstrip now sticks.

    Taking an image out of the list and quitting straight afterwards could bring it back on the next launch—the list is written a moment after you change it, and quitting inside that moment discarded the write. It is now written before the app closes.

  • Faster on frames with a lot of dust.

    The new repair only does its extra work where a mark sits across a tonal edge, which is the only place it helps. Marks on even film skip it. On a frame carrying over a thousand specks that is roughly a third off the repair time.

0.2.41

August 11, 2026
  • Marks that cross an edge repair properly now.

    A hair or scratch running from a dark area into a light one used to be filled with a gray smear—the old fill could only average what surrounded it, and there is no single average that is right on both sides of an edge. Repairs now hold the edge through the mark, and take their grain from the film beside them. Judged blind against the previous version on 76 comparisons: preferred on 96% of marks crossing an edge, and indistinguishable on ordinary dust, where the previous fill was already good.

  • Repairs take longer on heavily marked frames.

    A frame carrying well over a thousand marks can take around three times as long as before. Ordinary frames are unaffected.

0.2.40

August 11, 2026
  • Repairs blend more than one donor.

    A filled mark took its texture from the single best-matching patch of nearby film. It now blends the top matches, which averages away the quirks of any one patch—grain that reads as grain rather than as a copied fragment.

  • A new app icon.
  • Safelight is now the default interface.

    The warm accent is the app's own; the previous default palette is still there, renamed Neutral (Settings ▸ General ▸ Interface palette). Switching palettes now updates every control immediately instead of waiting for a relaunch.

  • The detection overlay is a deeper orange.

    Bright red sat at the same brightness as film highlights and could compete with them; the new color sits on top of the image rather than among it. Red is still available, and ⇧O cycles the choices.

  • The Sensitivity and brush sliders are quieter.

    They were drawn at full accent strength and pulled the eye away from the picture they exist to adjust.

  • Opening a saved session that can't be found now tells you why.

    Choosing a session from the menu whose files live on an unmounted drive did nothing at all and said nothing. It now names what is missing, and says plainly when the volume itself is not mounted rather than implying the files are gone.

0.2.39

August 9, 2026
  • Two-finger scrolling could push the image right off the canvas, and then fight you bringing it back.

    Panning by gesture was only bounded while the pointer happened to be over the picture—the moment the image moved away from the cursor, nothing held it, so a casual scroll could send it out of view entirely and getting it back moved in stubborn little steps. All scrolling is now bounded the same way the Hand tool always was, wherever the pointer is.

  • Opening a file to look at it can no longer clean it and quit.

    A file was treated as a Photoshop hand-off—cleaned, saved over, and the app closed behind it—whenever any .json happened to sit beside it with a matching name. That is the exact shape of a correction bundle unpacked for review, so opening one to inspect it overwrote it. Spot Tone now reads that file and only treats it as a hand-off if Photoshop actually wrote it.

  • Spot Tone no longer quits out from under your other work.

    Handing a frame back to Photoshop closes Spot Tone so the editor comes forward—but that quit fired even when the hand-off was one file among many, so a single image opened from Finder could take a whole restored session with it. It now only closes when the handed-over file is the only thing open; otherwise it stays put and tells you it saved.

0.2.38

August 5, 2026
  • The Heal tool's keyboard shortcut is now J, matching Photoshop's healing brush.

    It used to be W, which was only ever a leftover from before the tool was called Heal. W still works, so nothing breaks if your hands already know it—but everything on screen now says J.

  • Repairs made through Photoshop and the hot folder were being cut down to a fraction of the mark.

    Anything sent that way had most of each detected mark discarded before it was repaired, so marks came back barely touched—a large blob might have under a tenth of it filled. Repairs made in Spot Tone itself were never affected. Both paths now do the same thing.

  • The brush goes one size smaller.

    The smallest brush was a 13-pixel disc; there is now a 5-pixel one below it, for single specks that the old minimum painted straight over. The brush size refects as "1px".

  • Save a session with your own name.

    File ▸ Save Session As… keeps the current set of images, with their detections and brush edits, under a name you choose. Recent sessions are replaced as you open other work; named ones stay until you delete them, so a job you come back to over weeks is not quietly rotated away. Reopen from File ▸ Open Saved Session.

  • When files can't be found, Spot Tone now says which ones.

    Move or rename scans while a session remembers them—or work from a drive that isn't mounted—and you get a list of the full paths, selectable, with a button to copy them. Suppressible if you'd rather not see it. Missing frames are marked in the filmstrip instead of spinning forever as though they were still loading.

  • Old missing files stopped following you around.

    A file that had gone missing was remembered indefinitely and reported again every time you opened anything, long after you had moved on to other work. Now it is only mentioned while you still have other frames from the same folder open.

  • The mark beside the brush cursor no longer touches the ring.

    It was drawn hard against the circle at small brush sizes because the spacing was measured before the outlines were drawn, not after.

0.2.37

August 3, 2026
  • Photoshop and Lightroom round-trips were using an older detector than the app.

    The command-line tool behind those integrations resolved its model separately and had fallen three updates behind, so the same frame could come back different depending on which way you sent it. Both now resolve the same model, and the installer checks they still agree.

  • Launch no longer waits on the archive volume.

    Spot Tone listed the entire training corpus at every launch—about eighteen seconds on an external drive—and until it finished, frames you had already contributed were shown as if you hadn't. It now remembers the answer between launches and re-checks quietly in the background. Restoring a session no longer touches the disk from the main thread either.

  • Stepping through repaired frames is smooth.

    Showing a repaired frame decoded it on the spot, stalling the window for about half a second each time. Decoding now happens ahead of you, on the next frame along. Large rolls of repaired frames also stay within their memory budget, which previously did not count them at all.

  • A light interface.

    Settings ▸ General ▸ Interface palette ▸ Daylight. The area around the picture stays neutral either way, so it does not change how the image reads.

  • Spot Tone talks to VoiceOver.

    The toolbar, the tools and the filmstrip announce what they are and what they do, rather than reading out an icon name. Keyboard shortcuts are spoken as part of each control's name.

  • Space activates the control you have tabbed to

    , in Settings and elsewhere, and the focus ring is now visible where it was being drawn over.

  • The overlay is readable without relying on color.

    On the Cyan and Green palettes, marks and fence-sitters were nearly identical in lightness and could only be told apart by hue. All five palettes now separate them by brightness as well.

  • Filter the filmstrip by filename.

    Useful on a long roll when you want one frame or one run of frames.

  • The filmstrip no longer jitters when you drag it wider.
  • Detect All no longer skips a frame

    when you move to it while a detection is already running; it waits for the one in flight instead.

  • Spot Tone tells you when a detection was made by an older model

    , in the inspector, so you know when a frame is worth re-detecting. Re-detecting (⌘D) keeps your brush edits—only Reset Image clears those.

0.2.36

August 1, 2026
  • Some marks were detected and then never repaired. They are now.

    Spot Tone protects the film's own edge—the rebate, or the holder—because a frame border looks exactly like a long scratch to the detector, and filling one leaves a solid streak. The test was too broad—any mark with a different tone on its two sides, like a hair across a shadow or a collar, was treated as the film's own edge and left alone.

  • Removing scanner lines is safer on vertical subjects, but still catches brick and mortar.

    The automatic sweep used to mistake hard vertical subjects—bare trunks against bright sky, industrial stacks—for scanner lines and smooth them away; those are fixed. Horizontal courses of brick or mortar still fool it, and will be flattened. If a repair loses detail it shouldn't, switch off Scanner lines and repair that frame again.

  • Repairing the same frame twice now gives the same result.

    Grain was synthesised from a fresh random source every run, so two identical repairs came out slightly different.

  • Erasing a mark the model was unsure about now teaches it something.

    Rubbing out one of the faint teal detections used to change nothing that reached training—the strongest judgment you can make, that a thing the model half-saw is not dust, was being thrown away. Those erasures are now recorded and weighted heavily. This applies to corrections made from here on.

  • The zoom level is shown in the status bar

    , beside the masked percentage.

  • Check for Updates has moved to the Spot Tone menu

    , directly under About Spot Tone, where macOS apps keep it. Both the app and detection-model checks are there.

  • The Erase brush's minus sign stays horizontal

    on a rotated frame, instead of turning with the image and reading as a vertical bar.

  • The mark beside the brush cursor sits closer to the ring

    , and keeps the same visual gap at any zoom or brush size.

0.2.35

July 31, 2026
  • Repairs on faces and other detailed areas no longer paste a visible patch.

    When Spot Tone repairs by copying nearby film, it looks for a patch whose tone and grain match. On smooth film there is usually a good one. On a face, a hand, or anywhere with real detail, there often isn't—and it was taking the closest thing it could find and pasting it anyway, which could leave a distinct disc with an edge running through it. It now refuses a poor match outright and reconstructs that spot instead. Repairs on detailed frames take a little longer as a result.

  • Tool marks stay put.

    The Heal, Re-heal and Line brushes carry a small mark beside the cursor. It sat where a pointer's tip would be, so the eye kept aiming with the mark instead of the dot in the middle, and it drifted to a different corner depending on how the frame was rotated. It now stays in one place, clear of the ring, whatever the image is doing.

  • The Erase brush has its own mark.

    A minus, so all four marked tools read as a set and the plain brush stays unmarked.

0.2.34

July 29, 2026
  • Model updates are reported honestly.

    "Check for Model Updates" could tell you that you were up to date when a newer detection model had already been published—sometimes for hours. The file that announces a new model carried no cache instructions, so macOS was free to guess how long its copy stayed good, and the guess got longer the longer a model had been in place. It's now always fetched fresh. (Fixed on the server side too, so it's already right even before you install this.)

0.2.33

July 28, 2026
  • Brushing a defect now clears more of it.

    When you paint over something the detector missed, Spot Tone decides which pixels under your stroke are really the defect. That judgment was too tight: on shallower stretches of a hair it was keeping two pixels where a careful hand retouch used nineteen, so the repair left a visible trace no matter how well you brushed. Retuned against a hand-cleaned frame rather than by eye. On the test frame the leftover halved, and a hair on a second frame now comes out as clean as painting the whole stroke in by hand.

  • The Line tool handles thick lines.

    Some scanner lines are a broad shallow band rather than a crisp line—several rows wide, only a level or two deep. The tool measured across a fixed narrow span, which for a wide line meant looking at the line on *both* sides of itself and concluding there was nothing there; it would report finding nothing on a line you could plainly see. It now widens its measurement until it clears the line. Sweep across the whole width of a band like that, not just its middle. Thin lines got better too.

  • New Prompt for contributing.

    The checkbox in the Getting Started walkthrough works now. And if you never touched it, Spot Tone asks once—after you make a correction that would genuinely help, so there's something concrete to say yes or no to, instead of on day one before you've repaired anything. Decline and it won't ask again. You can always turn it on at Settings ▸ Contribute, any time.

0.2.32

July 26, 2026
  • Brushing over a dark hair or scratch works properly now.

    Painting with B over a defect that's *darker* than the film around it could do nothing at all—the mark went down, the repair ran, and the defect was still there. The brush was being quietly overruled: before healing, Spot Tone looks for the thin thing inside your stroke, and that search could only ever recognize defects *brighter* than their surroundings. On a busy frame it would latch onto some bright texture beside the hair, treat that as what you meant, and throw the rest of your stroke away. It now has to justify itself—if what it found doesn't account for what you painted over, your stroke is used as drawn.

  • Detect All says how far along it is.

    The bar showed the current image's progress but never how many were left. It now reads "47% · 3 of 12" beside the bar, and the status line names the position too. Canceling reports where it stopped instead of going quiet.

  • Update notes now show everything since your last version

    , not just the newest release—useful if you skip a few.

0.2.31

July 26, 2026
  • Scanner lines come out properly now.

    The long horizontal and vertical lines a scanner lays across a whole frame are much more completely removed. Three separate faults were making a mess of them: the worst lines were being corrected the *least* (the measurement that decided how much of a line to treat got harder to satisfy the deeper the line was), a dark line could come back lighter than the film around it, and what did get repaired was laid down in hundreds of short dashes that read as a mottled smear. All three are fixed, and the automatic pass now also catches the faint bright bands that sit either side of a line—part of the same defect, previously left behind. On a test scan the result is now flatter than a careful hand clean-up of the same frame.

  • New Line tool (L).

    For a line the automatic pass still won't take. Sweep across it and the whole length of that one row or column is measured and leveled—the stroke only says *which* line. That's why it reaches lines Sensitivity can't: a line four levels deep is invisible one pixel at a time, and only shows up once you measure along its full length. Finds nothing? It says so and changes nothing.

  • Defects touching the bright scan edge heal cleanly.

    A hair sitting on the white holder band at the edge of a scan could come back as a dark blotch dipping into the picture. The tone correction was pulling the whole patch down to the film level, including the part that legitimately belonged up at holder brightness.

  • Reset Image.

    Image ▸ Reset Image… (also on the filmstrip right-click) puts a frame back to freshly opened—detection, brush edits, repair, touch-ups, Sensitivity, and rotation all cleared. Revert only drops the repair and Clear My Brush Edits only drops your strokes, so there was no way back to a clean slate short of removing the frame and re-adding it. Your file on disk is never touched. If a correction from that frame hasn't been sent for training yet, it's withdrawn too—resetting means you didn't want that work.

0.2.30

July 24, 2026
  • Thin hairs and fibers finally heal properly.

    Brush over a stray fiber—roughly, any brush size—and Spot Tone now finds the fiber itself instead of grabbing a chunk of your stroke. It works the way your eye does: judging each point against its immediate surroundings rather than the whole area's average, recognizing that a fiber lying on the film is *sharper* than a soft-focus picture, and following the curve through the faint stretches. The fill is simpler too—for something that thin, the surrounding image already tells us what belongs underneath, so nothing is cloned or invented. Previously these came back as a flat patch or a mottled smear no matter how carefully you brushed. Very faint tails can still survive; a second pass helps.

  • Repairs near the film edge stay on the film.

    A defect close to the black rebate or the white holder could pull the border into the picture, or heal as a hard-edged shape with a bite taken out of the frame edge. Fills now keep both the repair and the film it borrows from on the picture side of the border.

  • Re-detecting tells you the repair is out of date.

    Running Detect again on an already-repaired frame now flags the repair as stale, so exporting can't quietly save the older version.

  • New app icon.

0.2.29

July 23, 2026
  • Quit whenever you like—your repairs come back.

    Reopening a session now restores the work itself, not just the files: frames you healed by hand return pixel-for-pixel as you left them, and frames repaired with ⌘R quietly repair themselves again the first time you view them, with your hand touch-ups laid back on top. While a frame is coming back the brush pauses for a moment ("Repairing—the brush wakes when it finishes") and then you're off.

  • Your hand work survives a re-Apply.

    Running ⌘R again—say after raising Sensitivity—no longer re-rolls spots you'd already perfected with Heal, Re-heal, or the brush. Hand-healed pixels win over the global pass, and erased spots stay erased.

  • Brush and Erase now update live every time.

    Once a repair exists, every stroke heals (or un-heals) on release—they used to quietly stop after an undo or a Sensitivity nudge, while Heal kept working.

  • A stale repair now says so.

    Touching up a frame whose repair was out of date (marks changed since ⌘R) used to mark it current by accident, so exports could miss marks you'd added. It stays honestly out of date until you re-Apply.

  • Undoing a heal no longer protects that dust forever.

    ⌘Z takes the heal back without quietly pinning the dust against every future repair—Erase remains the deliberate "leave this alone" tool.

  • No more freeze on the first repair after an update.

    The fill model now warms up in the background, same as the detector.

0.2.28

July 22, 2026
  • Faster launch right after an update.

    The detector now warms up in the background instead of on the main thread, so the window no longer freezes while macOS re-optimizes the model the first time you launch a new build (most noticeable with "Detect on open" turned on).

  • Behind the scenes, the app moved to its final identity ahead of wider release. This update carries it over for you—settings, sessions, and repairs are untouched. (If macOS asks once more to let Spot Tone control Photoshop during a round trip, that's why; allow it and it won't ask again.)

0.2.27

July 22, 2026
  • Getting Started now spells out the Photoshop and Lightroom hand-offs.

    The tour shows exactly how to send a frame in from each—Photoshop's File ▸ Scripts ▸ SpotTone, Lightroom's Plug-in Extras ▸ Clean in Spot Tone… or a one-time Edit In ▸ Spot Tone setup—and that the installer already put both in place, no plug-in to add.

  • Contributing corrections is its own page now

    , laying out what's actually sent (the dust you brush, never your photographs), and that precise marks teach the model more than rough ones.

  • Noted that a 16-bit scan exports as a 16-bit TIFF (JPEG is 8-bit by nature).
  • — The rest of this list is the big 0.2.26 update, in case you're jumping straight here —
  • Re-heal (R): a second opinion for a repair that isn't right.

    Sweep the new Re-heal brush over a spot you've already fixed and it heals it again from a different patch of clean film—sweep again to cycle through other sources until one sits right. ⌘Z steps back if a pass looks worse. It only re-does what the last repair filled under your stroke; the clean film around it stays put.

  • Smart Dust is now Heal

    , and both healing brushes carry a bandage cursor so it's clear which one you're holding. Heal also reaches more: it combines what the model sees with a contrast pass in a single stroke, catching faint fibers it used to walk past—and a defect the model already found is no longer trimmed back before it heals.

  • Repairs near the film edge no longer drift toward it.

    A defect close to the black rebate or the white holder used to heal a shade too dark or too light, pulled toward the border. Fills now settle to the surrounding film tone—even a long scratch that crosses from bright film into shadow, corrected in pieces along its length.

  • The trickiest defects heal from real film.

    Thin scratches, fibers, and scanner lines—the ones that used to leave a faint blotch—now clone real grain from nearby and match its tone, so they disappear the way a hand retouch does.

  • Undo takes the heal with it.

    Undoing a brush stroke after a repair now reverts what it healed too, not just the mark—no re-apply needed to bring the original back.

  • Let each frame detect itself.

    Turn on Settings ▸ General ▸ Detect on open and every frame you land on runs detection quietly on its own, stepping aside the moment you pick up a brush.

  • Browse Sessions opens ready to use.

    The first session is selected the instant the window appears, so arrows and Return work right away, and it's sized to show a full set without scrolling.

  • Refinements: with the overlay off, a stroke you draw lingers a moment and then clears to reveal the heal beneath it; and a repair you started with Heal or Re-heal can't be disturbed by a full Apply running at the same moment.

0.2.26

July 21, 2026
  • Re-heal (R): a second opinion for a repair that isn't right.

    Sweep the new Re-heal brush over a spot you've already fixed and it heals it again from a different patch of clean film—sweep again to cycle through other sources until one sits right. ⌘Z steps back if a pass looks worse. It only re-does what the last repair filled under your stroke; the clean film around it stays put.

  • Smart Dust is now Heal

    , and both healing brushes carry a bandage cursor so it's clear which one you're holding. Heal also reaches more: it combines what the model sees with a contrast pass in a single stroke, catching faint fibers it used to walk past—and a defect the model already found is no longer trimmed back before it heals.

  • Repairs near the film edge no longer drift toward it.

    A defect close to the black rebate or the white holder used to heal a shade too dark or too light, pulled toward the border. Fills now settle to the surrounding film tone—even a long scratch that crosses from bright film into shadow, corrected in pieces along its length.

  • The trickiest defects heal from real film.

    Thin scratches, fibers, and scanner lines—the ones that used to leave a faint blotch—now clone real grain from nearby and match its tone, so they disappear the way a hand retouch does.

  • Undo takes the heal with it.

    Undoing a brush stroke after a repair now reverts what it healed too, not just the mark—no re-apply needed to bring the original back.

  • Let each frame detect itself.

    Turn on Settings ▸ General ▸ Detect on open and every frame you land on runs detection quietly on its own, stepping aside the moment you pick up a brush.

  • Browse Sessions opens ready to use.

    The first session is selected the instant the window appears, so arrows and Return work right away, and it's sized to show a full set without scrolling.

  • Refinements: with the overlay off, a stroke you draw lingers a moment and then clears to reveal the heal beneath it; and a repair you started with Heal or Re-heal can't be disturbed by a full Apply running at the same moment.

0.2.25

July 19, 2026
  • Browse Sessions looks right and lets you tidy up.

    Wide (panoramic) thumbnails no longer spill across neighboring cards—and, less visibly, that overflow had been throwing off which card your click landed on. Hover any session and click the × to remove just that one, instead of clearing the whole list. Sessions whose files are gone say so plainly rather than opening to nothing.

0.2.24

July 19, 2026
  • Smart Dust (W) now repairs the moment you use it

    —no separate Apply step, whether or not the frame has been repaired yet. Paint over a defect, it's gone. Brush and Erase still work alongside a repair as before.

  • Your corrections upload once per frame, not once per repair.

    Repairing, brushing more, and repairing again used to send the same frame several times with a half-finished mask each time—which taught the model that an unfinished mask was the right answer. Corrections now settle before they're sent, so a session contributes one complete example. "Send now" in Settings still sends immediately.

  • Clearer errors: failures name what actually went wrong instead of an internal code.

0.2.23

July 19, 2026
  • Repairs now heal with real film instead of synthesized texture.

    Where clean film exists nearby, Spot Tone clones it into the repair and lets a correction field blend the tone—the same thing a retoucher does by hand. Fills used to be a smooth patch with grain sprinkled on, which could match the grain's strength but never its character, so repairs stayed faintly visible at 100%. Measured against a hand-retouched frame, repairs now match the surrounding film as closely as the manual work does. Long scratches and fibers improved most: the model that fills them returned a grain-free surface that was never re-grained until now.

  • A brush mark means "look here", not "replace all of this."

    Painting over a speck used to heal the entire stroke, replacing good film around a small defect—which is why brushed repairs looked worse than Smart Dust's. Now only the film that actually differs gets healed, so a rough stroke repairs as cleanly as a precise one. A stroke that finds no defect still heals exactly as drawn.

  • Touch-ups heal as you make them.

    Once a frame has a fresh repair, a brush or Smart Dust stroke repairs itself on release instead of marking the whole frame out of date—and erasing brings the original back, so you can see exactly what a mark is doing. The first repair stays deliberate: detect, review, ⌘R.

  • Smart Dust works even where the detector doesn't.

    If the model scores nothing under your stroke, W now finds the defect by contrast instead of reporting nothing. The status bar says when it did, because those are the frames most worth committing for training.

  • Repairs no longer invent color.

    On black-and-white scans, fills stay black-and-white.

  • Export where the scan lives.

    Settings ▸ General can start export panels in the folder the file came from, rather than wherever you last saved.

  • New look, new names.

    The palettes are now Spot Tone (the default), Safelight (graphite with a warm orange accent), Ortho, and Darkroom—the first two were previously called Instrument and Studio Neutral. Getting Started is a proper walkthrough now, showing the real controls page by page.

  • Fixes: holding Space for the Hand tool always releases back to your brush; hiding the overlay hides marks you make while it's hidden (the stroke still shows as you draw it); Preferences closes with Esc.

0.2.22

July 18, 2026
  • Pick how the app looks.

    Settings ▸ General ▸ Interface palette now offers four: Instrument (cool graphite, the default), Safelight (graphite with a warm orange accent), Studio Neutral (true grays and blue), and Darkroom (warm blacks and brass). Changes apply immediately—every window, panel, and sheet turns over together, no relaunch. The image area stays neutral in all four, so nothing tints your read of a frame.

  • Keyboard works where the focus ring says it should.

    Space and Return activate a focused checkbox or menu, Esc closes Preferences, and the spacebar still grabs the Hand tool whenever the canvas has the keyboard rather than a control.

0.2.21

July 18, 2026
  • Pick up where you left off, visually.

    File ▸ Browse Sessions shows your past sessions as cards—first frame, job folder, date, frame count—instead of a list of timestamps. The Open Recent Session menu gets the thumbnails too. If a launch opens nothing at all, the browser greets you rather than an empty window (switch that off in Settings ▸ General).

  • The interface got a proper wardrobe.

    Chrome is no longer stock gray: Settings ▸ General ▸ Chrome style offers Darkroom (warm blacks, brass), Studio Neutral (true grays, blue), and Instrument (cool graphite). Takes effect on relaunch. Buttons now speak in a consistent hierarchy—the actions that produce work stand out, the housekeeping ones recede—and the canvas surround stays deliberately neutral so nothing tints your read of a frame.

  • ⌘A works in the Open dialog again.

    It was being intercepted app-wide; selecting all files, and all images, both behave now.

0.2.21

July 18, 2026
  • Pick up where you left off, visually.

    File ▸ Browse Sessions shows your past sessions as cards—first frame, job folder, date, frame count—instead of a list of timestamps. The Open Recent Session menu gets the thumbnails too. If a launch opens nothing at all, the browser greets you rather than an empty window (switch that off in Settings ▸ General).

  • The interface got a proper wardrobe.

    Chrome is no longer stock gray. The new default, Instrument, is cool graphite and nearly colorless—maximum deference to the image. Settings ▸ General ▸ Chrome style also offers Studio Neutral (true grays, blue) and Darkroom (warm blacks, brass); takes effect on relaunch. Buttons now speak in a consistent hierarchy—the actions that produce work stand out, housekeeping recedes—and the canvas surround stays deliberately neutral so nothing tints your read of a frame.

  • ⌘A works in the Open dialog again.

    It was being intercepted app-wide; selecting all files, and all images, both behave now.

0.2.20

July 17, 2026
  • Lightroom Classic's own Photo ▸ Edit In now round-trips.

    Both "Edit Original" and "Edit a Copy" arrive recognized, so you get Save & Return instead of just Export—no plugin required for the hand-off to work (the plugin's richer flow is still there in Library ▸ Plug-in Extras). Under the hood: Lightroom identifies itself in a legacy address format from the classic Mac OS days that took some archaeology to decode. Files you open yourself are still never treated as round trips.

  • Auto-clean now locks the canvas while it works.

    A stray brush stroke mid-run used to invalidate the repair and quietly cancel that frame's return. While a run drives, a progress panel owns the window; Cancel (or Esc) stops cleanly—frames already returned stay returned, the rest stay open for your review.

  • Photoshop hand-backs skip the replace-file warning.

    The file being replaced is PS's temporary render—your document just gets the cleaned layer, so there's nothing to warn about.

0.2.19

July 16, 2026
  • The overlay picks a color that shows.

    On frames where red would sink into the image—warm plates, red-scale film—the mask now renders cyan automatically. ⇧O cycles the color by hand (Auto · Red · Cyan · Green · White) for anything the automatic pick misses; the status bar names each as you cycle, your brush strokes preview in the matching color, and the fence-sitter color always stays distinct from the mask's.

0.2.18

July 16, 2026
  • Two-finger panning is fixed for real.

    Since the first beta, a small trackpad or Magic Mouse scroll could fling the image into a corner no matter how gently you moved. The culprit turned out to be macOS proposing a garbage scroll position (literally negative infinity) whenever the overlay scrollbars woke up—Spot Tone now ignores nonsense proposals, so panning follows your fingers and stops inside the working buffer.

  • Typing in the filename-suffix box no longer traps your keyboard.

    Return, Esc, or a click on the image all hand the keys back to the tools.

  • Inspector tidy-up: buttons left-align to match the detector menu, and the detector menu and Clear My Brush Edits get icons like everything else.

0.2.17

July 16, 2026
  • Fixed a crash when using Smart Dust near an image edge

    —a stroke that wandered past the pixels took the app down. Two of you found it within hours; that's the beta working.

  • The working buffer around the image is back.

    0.2.16 clamped panning hard at the image edges and pinned smaller images dead center. Now you can pull an edge toward the middle to brush it comfortably—panning just can't strand the image: at least half of it always stays on screen.

0.2.16

July 16, 2026
  • Fence-sitters, on request.

    Turn on "Show fence-sitters" (Detect section) and the overlay adds teal marks where the model *half-sees* something—above the Smart Dust floor, below your Sensitivity setting. Teal means "one W stroke marks this." Off by default; teal on purpose, so doubt never reads as a faint detection.

  • Adjust what Smart Dust grabbed, live.

    After a smart stroke, = loosens and - tightens the cutoff instantly—no re-detect, it re-reads the scores it already has. Works after a "found nothing" stroke too: tap = until it bites.

  • No more spinner between frames

    —you see the frame immediately (softly, from its thumbnail) and it sharpens when the full file lands.

  • Sideways lab scans fixed, twice over.

    Files whose uprightness lives in their EXIF flag (camera-scanned rolls, some lab JPEGs) showed upright thumbnails but a sideways canvas—and worse, *exported* sideways, because the flag was being stripped on save. The canvas now honors the flag, exports keep it, and your own ⌘[ ⌘] rotations stack on top.

  • Auto-clean returns—as a switch, not a button

    (Settings ▸ Auto-clean round trips, off by default). When Lightroom or Photoshop hands frames over, they're detected, repaired, saved back, and returned automatically; frames the model isn't confident about are left open for your review. Only verified hand-offs qualify—files you open yourself are never touched.

0.2.15

July 16, 2026
  • Smart Dust brush (W).

    Somewhere between the brush and the magic wand: paint over a defect and the model re-examines *just that area at full resolution*, then marks only the pixels it agrees are dust. On big plates this matters—the whole-image detect sees a 16k scan zoomed way out, where a hair-thin fiber all but vanishes; the cropped look sees it at 100%. Clean plate under the stroke stays clean, the stroke previews ghosted, real marks land on release, and if nothing qualifies the status bar tells you what the model actually scored there.

  • Forget These Sessions

    (bottom of File ▸ Open Recent Session) clears the session history—including the brush edits stored with it, which it tells you before doing.

  • Sharper bookkeeping behind the scenes: re-quitting the same set of scans updates its history entry instead of freezing it at the first quit, and switching to an already-loaded frame cancels the abandoned load behind you.

0.2.14

July 15, 2026
  • Big scans no longer take the app down with them.

    Spot Tone kept the last three images in memory no matter their size—fine for 35mm rescans, but three 16-bit 80-megapixel plates is nearly 5 GB, and macOS quietly kills apps that ask for too much (no crash, no report, just gone). It now budgets by actual memory and by what your Mac has, keeps far more small scans than before, and hands memory back when the system says it's tight.

  • Nothing freezes while an image loads.

    Opening a frame—or restoring a session at launch—used to lock the app up while it decoded. That work moved off the main thread, so the app stays responsive. It also fixes a full-screen relaunch that could come up black.

  • The filmstrip only loads the thumbnails it's showing

    , and they now yield to the frame you're actually looking at—a big roll on a network drive or external RAID stops fighting itself.

  • Corrections you commit for training are checked before they're sent.

    If a frame's saved detection can't be read back (moved, re-scanned, or re-exported at a different size), it's skipped with a note instead of contributing a misleading example. Re-run Detect and commit it again.

  • Faster updates: this one downloads as a small patch rather than the whole app.

0.2.13

July 15, 2026
  • Save & Return is now only offered for real round trips.

    A frame handed over by Lightroom or Photoshop gets saved back over—that's what it's for. Anything you open yourself (⌘O, drag, Finder, the Dock) never does; use Export. Until now *any* file opened from Finder was offered it, one keystroke from overwriting an original. The first Save & Return of a session asks first, too. Lightroom users: the plugin now installs with the app and needs to be current.

  • Auto Clean is gone for now

    —same reason: it could write over a file you opened yourself. It'll come back once the round-trip rules have settled.

  • Export lives in a bar along the bottom now

    , Camera Raw style: format and filename suffix on the left, the buttons on the right. "Export N Repaired" counts what it will *actually* write—a repair lives in memory until it's exported, so frames repaired before a relaunch need Repair + Export (your brush edits are still there; it recomputes from them).

  • Revert Repair (⇧⌘R)

    —throw a repair away and go back to the mask. Nothing is lost: ⌘R recomputes it from the original. And a repair that no longer matches your edits now says so instead of quietly exporting the old result.

  • Your past sessions are kept.

    File ▸ Open Recent Session reopens any of the last few (Settings sets how many). Scans on a drive that isn't mounted are held in the session instead of silently dropped—reconnect and relaunch. Hold ⇧ or ⌥ while launching to skip restoring, and if a session ever fails to load, the next launch skips it on its own.

  • Erasing shows as you go again

    —in 0.2.12 it only appeared when you let go.

  • The image stays put when you resize the window, and a two-finger flick can't fling it off into the corner any more.
  • Batch and export show progress (3 of 12, with a bar) and can be stopped.
  • ⌘A selects all images reliably, Hot Folder folds away when you're not using it, and "Clear edits" is now "Clear My Brush Edits".

0.2.12

July 15, 2026
  • Two detectors now ship in the app.

    Digital captures get a sensor-dust model; film scans keep the film model—picked automatically per image (or choose in the inspector, including "camera-scanned film," which runs both).

  • Dust Hunt (Image → ⇧⌘H):

    after a Detect, the model deals out the spots it's *least sure about*, one at a time—you call each dust or not (→ / ← / ↓ to skip). It exists purely to help train the model where it's weakest; if you contribute corrections, your verdicts do exactly that. The main view jumps to each spot at 1:1 for context.

  • Much smoother brushing: strokes now draw fluidly at full input speed, the live stroke tapers and swells with exact pen pressure, and the outline stays steady.
  • Arrow keys no longer change the image behind an open dialog.
  • Downloads and updates now come from spottoneapp.com.

0.2.11

July 13, 2026
  • Dust detection is now a Sensitivity slider (was "Threshold"): slide right to catch more specks, left for only the obvious ones—the red overlay updates live as you drag.
  • New here? A quick welcome walkthrough runs on first launch, and lives under Help → Getting Started anytime.
  • Help → Send Feedback…

    sends a bug or idea straight to me, no email needed.

  • Smoother brushing:

    the brush outline shows its true size at every zoom level, and responds to pen-tablet pressure (Wacom & friends)—press lighter for a finer point.

  • From now on, this window shows what changed in each update.

0.2.10

July 13, 2026
  • Crashes now report themselves automatically so bugs get fixed faster—no digging through Console. Turn it off anytime in Settings → Updates.

0.2.9

July 13, 2026
  • New toggle in Settings → Updates to control automatic app-update checks.

0.2.8

July 13, 2026
  • Export as TIFF or JPEG, with a filename suffix you choose (Settings).
  • Rotate the view

    (⌘[ / ⌘], or ⇧F2 for a whole roll)—display only, your file is never altered.

Generated 2026-10-15 from the release history.