The last seiza check-in ended at 0.8.1 with a promise: PSF Guard integration was “in flight.” Five days and four minor versions later, seiza is at 0.12, the integration didn’t just land — it brought friends. Seiza has quietly grown from a plate solver into an imaging engine.

Live stacking

The headline: a new seiza-stacking crate does linear image stacking — real 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.

And it’s built around an incremental LiveStacker engine: feed it 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 rides on top: RGB, LRGB (including a new additive super-luminance mode), and narrowband palettes from mono channel stacks.

Around the stack, a set of processing crates appeared to make the output actually look good: seiza-stretch (a parameterized GHS/MTF/percentile display pipeline), seiza-background (automatic gradient extraction — fit, then subtract or divide), seiza-deconvolution (deliberately conservative linear-image restoration, masked inputs supported, and honestly labeled experimental), and seiza-xisf (XISF reading and Float32 writing, for meeting PixInsight halfway).

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. The clever part is history: a rolling, zstd-compressed mirror of orbital elements means the question works retroactively — resolve the epoch-appropriate elements for a frame you shot months ago and identify the trail that ruined it, by name. Trails with large orbital offsets are handled too, so slightly-stale elements still match.

Two native apps, one engine

Seiza now has real 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.

CLI, Python, C ABI, Mac, Windows — every surface runs the same engine; pick the one that fits.

PSF Guard: the integration, landed

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.

And grading now flows straight into results. PSF Guard 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.

One more thing worth an appreciative nod: PSF Guard 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.