Skip to content

v0.2.0 — Acquisition Wizard, per-channel histogram/curves, mesh drift correction

Choose a tag to compare

@giulioroggero giulioroggero released this 12 Aug 13:57
· 157 commits to master since this release

Sky for Mac (skyformac) v0.2.0

The second tagged release. Still a development build — treat it as a preview, not a finished product. This release is almost entirely new capture/imaging workflow on top of v0.1.12's foundation: an Acquisition Wizard, Smart Live Stack, a full per-channel histogram/curves grading pipeline, and an experimental mesh-based drift correction technique, plus a batch of real hang/regression fixes found and fixed along the way.

How to run this build (same as before — read before opening)

The attached .zip is ad-hoc signed, not notarized. macOS will refuse to launch it after downloading — sometimes with the familiar "cannot be opened because the developer cannot be verified" dialog, but on current macOS it can also just silently fail to launch (Console will show OS_REASON_ENDPOINTSECURITY ... denied the process from executing). This is Gatekeeper reacting to the missing Developer ID signature/notarization, not a broken build.

To run it, clear the quarantine flag the browser attaches to anything downloaded from the internet:

xattr -cr /path/to/skyformac.app

(If that alone doesn't do it: xattr -d com.apple.quarantine /path/to/skyformac.app, then try launching again.)

What's new since v0.1.12

Acquisition Wizard — pick a target (Moon, Venus, Mars, Jupiter, Saturn, or a curated deep-sky list: M13/M56/M31/M42/M45/M51/M57/M27/M81/M8) and get a recommended starting setup — mode, ROI, gain, exposure, Reduce Drift/Smart Live Stack/Mesh Drift Correction — applied in one step. Save/Load Preset round-trip a setup to its own JSON file and work standalone too, from the Camera menu or right next to the camera in the sidebar.

Smart Live Stack (Autopilot) — turns Live Stack into a self-curating stack: every incoming frame is scored for sharpness and only folded in if it clears a quality floor (or discarded if Cloud Sentinel flags a cloud interruption), with a live kept/rejected count and an estimated-SNR-gain readout.

Mesh-Based Drift Correction (Experimental) — an alternative to the existing single-star-lock drift reduction: tracks an NxN grid of points across the frame instead of one, triangulating the mesh and blending each triangle's drift with barycentric interpolation (the same primitive real-time rendering rasterizes) into a smooth, spatially-varying correction — covers field rotation and differential drift a single global shift can't. Configurable mesh size, search-window overlap, and reaction sensitivity, with a live preview overlay showing the actual tracked grid and displacement vectors. Marked Experimental deliberately — its per-point measurement is a rougher single-pass estimate than the single-star lock's, and it hasn't been validated on real hardware yet.

Histogram overhaul — a "By Channel" toggle shows separate Red/Green/Blue histograms instead of the combined one, and switches the Black/White Point stretch from one shared pair to three fully independent pairs, for correcting a color imbalance (e.g. a light-polluted sky's orange cast) directly at the stretch stage.

Curves tab — Photoshop-style tone-curve grading next to the histogram: a master RGB curve plus independent Red/Green/Blue curves layered on top of it, applied as a post-stretch pass on both render paths, off by default.

Detachable Histogram/Curves panel — pop both into a separate floating window that can overlap the main one and stay open while working elsewhere.

"Running" status list — every currently-active pipeline (Live Stack, Lucky Imaging, Recording to Disk, SER recording, Planetary Tracking, Polar Alignment, Cloud Sentinel, Focus Assist) gets its own row right next to the camera, whether or not its own tab happens to be showing — with a one-click jump to its controls and a one-click Stop.

Other new capture features: an exported-files viewer (browse/reopen any FITS/PNG/TIFF/JPEG this app has written or exported), GPU satellite/aircraft streak masking for Live Stack, a full RGB24 (webcam/iPhone) pipeline for Live Stack and Lucky Imaging, GPU drift reduction (single-star lock-on alignment) with Pause/Resume, SER video recording, planetary presets (Saturn/Jupiter/Mars/Venus/Moon), ZWO gain/offset presets, a live dropped-frame counter, and ST4 pulse-guide buttons (untested against real guiding hardware).

Real fixes worth knowing about:

  • GPUSharpnessScorer (Smart Live Stack's/Record to Disk's quality gate) had no resolution cap, unlike its CPU sibling — a full-native-resolution Laplacian pass on every incoming frame, which is what actually caused the app to hang when the Moon's Acquisition Wizard preset (full-sensor ROI + Smart Live Stack on by default) was applied and a burst started.
  • Capture ROI always landed at the sensor's top-left corner regardless of the requested center — fixed, with a read-back confirmation showing what the camera actually applied.
  • Small-ROI live view flicker/slowdown, and a live-view regression that had crept back in — both fixed.
  • Live Stack and Lucky Imaging silently did nothing for an iPhone/webcam (RGB24) source — fixed.

Known limitations (dev-mode caveats, mostly unchanged from v0.1.12)

  • Real ZWO hardware testing remains daytime-only. A full overnight/dark-sky session with a real ASI camera is still outstanding — this release's new features (Mesh Drift Correction especially) have not been run against real night-sky conditions.
  • Not notarized, ad-hoc signed only. See "How to run this build" above.
  • No geometric alignment in stacking beyond single-star/mesh drift correction — still no full multi-star registration the way a dedicated stacking tool does.
  • Not a full plate solver. Star recognition/polar alignment use a small hand-curated bright-star catalog and triangle-similarity matching, not a general blind solver — sparse star fields may not resolve.
  • Mesh-Based Drift Correction is genuinely experimental — validated with unit tests and a live preview overlay, not yet against a real tracking-error scenario on real hardware.
  • ST4 guiding is untested against real guiding hardware — no ST4-cabled mount has been available to confirm a pulse produces a real correction end to end.

Requirements

macOS 14+, Apple Silicon recommended for the GPU render path. ZWO ASI camera optional — an iPhone (Continuity Camera) or any webcam works as a capture source without one.

License

GPLv3, with an additional permission (GPLv3 §7) to link against ZWO's proprietary ASI Camera SDK. See LICENSE.md/THIRD_PARTY_NOTICES.md in the repository.