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:

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.