The last seiza check-in ended at 0.8.1 with a promise: PSF Guard integration was next. Five days and four minor versions later, seiza is at 0.12. PSF Guard now uses it to solve and stack images, and Seiza has native Mac and Windows apps.

Live stacking

The new seiza-stacking crate does linear image stacking — calibration with bias, dark, and flat masters (and tools to build them), drift-tolerant registration, meridian-flip handling, and provenance tracked through the whole pipeline. The stack stays linear f32 FITS; stretching is display-only.

The incremental LiveStacker engine accepts frames one at a time as they come off the camera and the stack updates additively — the same engine serves batch and live use, from the CLI, from Python, and over the C ABI. Color composition supports RGB, LRGB (including a new additive super-luminance mode), and narrowband palettes from mono channel stacks.

Several new crates handle image processing and file formats: seiza-stretch (a parameterized GHS/MTF/percentile display pipeline), seiza-background (automatic gradient extraction — fit, then subtract or divide), seiza-deconvolution (experimental, conservative linear-image restoration with support for masked inputs), and seiza-xisf (XISF reading and Float32 writing for use with PixInsight).

Who streaked my frame?

The other new subsystem: seiza-satellites. Give it a solved image and its capture time, and it predicts which satellite tracks crossed the field during the exposure. A rolling, zstd-compressed mirror of orbital elements lets it look up the elements for a frame you shot months ago and identify its trail by name. The matcher also handles trails with large orbital offsets, so slightly stale elements can still match.

Two native apps, one engine

Seiza now has native desktop apps, both driven by the same Rust engine through the new unified seiza-cabi C ABI crate:

  • Seiza for Mac — a native Swift FITS viewer and plate solver: browse folders of frames with thumbnails, stretch live with a reorderable stack editor, subtract gradients, deconvolve, blind-solve locally with no uploads, and export with overlays. Quick Look previews included.
  • Seiza for Windows — a WinUI 3 viewer and solver with GPU-accelerated pan and zoom, per-channel color rendering, background plate solving with star, deep-sky, and motion overlays, and built-in catalog install and repair.

The CLI, Python bindings, C ABI and desktop apps use the same engine.

Plate solving and stacking in PSF Guard

PSF Guard 0.5 shipped the piece promised last week: on-demand seiza plate solving with a whole new grading dimension built on it. Astrometry quality grading classifies solve evidence by which solver stages actually ran, then flags frames that are off-target, jumped, or drifting — with a solved-pointing scatter plot showing every frame’s actual position against the target:

PSF Guard’s sequence analysis with astrometry grading: a solved-pointing scatter plot, quality timeline, and a row of Veil nebula frames — two rejected for degradation and HFR, the rest accepted with per-frame offsets

The satellite work plugs in too: on-demand satellite track identification over graded frames, resolving historical catalogs as needed.

PSF Guard also builds stack previews from your accepted frames — per-channel, rebuilt incrementally with live progress, inspectable at full resolution — then composes them into LRGB and narrowband color previews with editable processing: palette, stretch, seiza background extraction, and opt-in deconvolution. That’s the hero image above — a Foraxx-palette SHO preview of the North America Nebula, composed entirely inside PSF Guard from graded mono stacks. When you’d rather finish elsewhere, a take-out export hands your graded lights to any stacking pipeline.

PSF Guard also dropped OpenCV entirely. A new pure-Rust seiza-imgproc crate reimplements the needed primitives with OpenCV-exact semantics — verified bit-identical — which deleted the heaviest native dependency and then made the N.I.N.A.-style HocusFocus detector more than twice as fast through bit-exact hot-path rewrites. Same numbers, half the wait, no C++.

Everything is on GitHub: seiza, seiza-mac, seiza-win, and psf-guard — with binaries on each repo’s releases page, seiza 0.12 on crates.io and PyPI, and the hosted demo still at seiza.fyi.