Releases: MichaelLevAstro/DeAstroStacker-ci
Release list
DeAstroStacker 0.11.6
DeAstroStacker 0.11.6. Everything since 0.11.5.
New
- Sous-chef. A chat column in The Season. Tell an agent already on this computer what is wrong with the picture - Claude Code, or any Agent Client Protocol agent such as Codex - and it changes the Line on screen. Every change is a card you can compare, go to or undo on its own. Messages can carry pictures, and the conversation is saved with the project. No API key: each agent signs itself in.
- Camera raws. DSLR and mirrorless raws come in like any frame: NEF, ARW, CR2, CR3, DNG, RAF, ORF, RW2, PEF and the rest, read by LibRaw. Everything written from them is XISF and carries their ISO, black and white levels and white balance. Camera black level, a Cook box, stands in for a bias nobody shot.
- Starters. Fifteen ready-made Lines on the Line's row: RGB, LRGB, HaRGB, SHORGB, SHO, HOO, dual-band HOO and a single mono filter, from a colour camera or mono filters, plus a planet, the Moon and the Sun. A starter uses the tools installed here (RC-Astro, Seti Astro Suite Pro, StarNet, GraXpert) and goes on the picture on screen; the other pictures keep their Lines. A Save button sits beside it.
- Brush and PixelMath masks. A Mask can be painted with a brush (paint, erase, clear), and PixelMath can output a mask.
- Timelapse on any night. The Serve plays any night of two or more main pictures, deep sky included, as MP4 and/or GIF, forward or ping-pong. It comes back with its project and exports in the background with Cancel. The connector's
serve_runmakes the same one. - Planetary stacking methods. The planetary Cook has a Method: Patches (the default), Patches · cubic, Patches · Lanczos, Warp and Fourier.
- Align all frames. A planetary Cook tick that puts the planet in the middle of every stack, so a night of recordings plays as a steady timelapse.
- Set Line to others. On a picture's right-click menu: its steps go on every other picture, so forty stacks of one rotation are seasoned once.
- Stacking clocks. The planetary Cook shows how long each recording took to stack, and how long the night has been going.
- Camera offset. For FITS lights with no bias or dark, a Cook box reads the camera's offset off the flats' noise and takes it off, so the flats stop over-correcting. The flat check reads a colour camera's flats by their light and says when the offset is still in the lights.
- The connector reaches every setting the window has.
recordings_setandscale_settake every planetary and Scale setting, and a planetary night goes on through the Season, the Serve and a project. AI clients move to skill 3 (Settings, under AI clients); restart any client that was connected to the app. - General improvements.
macOS: the app is not signed by Apple, so the first launch is
refused. One line clears it, and it is only ever needed once:
xattr -dr com.apple.quarantine /Applications/DeAstroStacker.app
Windows: SmartScreen will warn for the same reason - More info,
then Run anyway.
DeAstroStacker 0.11.5
DeAstroStacker 0.11.5. Everything since 0.11.2: the app explains itself to an
AI client, the stars of three filters become a picture you can work on, and
PixInsight reads the sky the right way up.
Driving it from an AI client
Every step has a page on the Menu, written beside the code it runs. A page
says where the step goes on a Line, what its Auto measures, the trap that looks
as if it worked, how to read its note, and the algorithm itself. A client reads
menu instead of trusting a skill written against another build, which is how
one session set a target on an mtf Stretch that never reads one.
A night through the connector costs about 25 KB to read, down from 193 KB.
Answers carry their own result, so no show call follows each action, and jobs
wait until they land. ticket_show gives the stage, the next step and the
questions only you can answer. A client can read a Line, taste it, edit it as a
list of edits, try it on a proxy in seconds and look at the result. Finished
masters go straight to the Season, and Omakase runs the whole night as one job
and stops at the first open question.
- A connector ends when you are done. Claude Desktop keeps two connectors
running for as long as it is open, each holding the app's files, and an update
stopped on "the following applications are using files".connector_stop
ends one, five hours with no call ends it too, and the installer stops any
connector running from the folder it replaces. - Every build carries its own skill. Settings installs the newest skill that
fits this app, from what it holds, what is published and what it shipped with,
so it works offline. Apps up to 0.11.4 stay on the 1.x skill; 0.11.5 reads
skill 2. - A Special has a Menu page too, and its author writes it.
specials check
says what a page is missing, by the rules this app's own steps are held to,
and checks the next version of a Special you already have installed, which
used to collide with the installed copy. The kit API is 2; a Special written
against 1 still loads. - A planetary recording measured through the connector stays measured for the
next call. The measurement is saved beside the recording, and only the measure
itself read it back, so the stack after it refused. lookfinds the picture the Season starts from, and the last try.- A starter Line keeps its step ids from one call to the next, so
season_edit
accepts the idseason_linejust showed.
Stars
Combine stars is a new button beside Combine filters. It takes each
filter's stars off with a Remove stars preset and mixes them through a palette
meant for a star field: NB stars to RGB with or without sulphur, RGB, or LRGB.
The result is a picture of its own, with a Line to stretch and saturate it on,
and Add stars pointed at it puts them back. The Stars dropdown on Combine
filters is gone. It only did anything when every filter's Line had already
taken its stars off, and what it made never reached anywhere you could work on
it. A combination whose channels had their stars split off still makes their
stars, as before.
Add stars picked from its list put nothing back. A session of one picture
does not name its stars, so the screen labels them "Stars", and nothing in the
recipe answered to that word. Picking it bound the slot to a picture that did
not exist. Behind that sat a second bug: naming the stars made the step replay
every crop above the fork a second time. A mirror or a quarter turn keeps the
size, so the stars came back flipped, with a note saying it went well.
Presets keep the Auto toggle. Applying a preset turned Auto off; it now
puts back what the step was on when you saved it. Older presets read as off,
as they always did. A list that names something this machine lacks shows it as
"(not on this machine)" instead of writing its first entry back.
Projects and PixInsight
- PixInsight reads the XISF's solution the right way up. WCS keywords do
not say which way their rows run, so PixInsight guesses, and it guessed right
only when north pointed into the upper half of the frame. Otherwise the
solution came out mirrored and SPCC could not match a star. The XISF now
carries PixInsight's own astrometric solution beside the keywords. The
rotation matches the one PixInsight reports, where a north-up frame used to
read -179 degrees, and ordinary frames are no longer called mirrored. - An unpacked project can be seasoned. Its pictures were filed as the Season's
output, so the Season found no stack and said to cook first. - Seasoning without naming a Line runs the ticket's own Line when it has one,
the one a project was unpacked with or the last file run. It used to run the
measured starter over your project's pictures. - A packed project carries its seasoned picture as a thumbnail, is no longer
titled after the first filter it was handed, and holds a preset once however
many steps use it. - Show in Explorer opens the project's folder when its path has a space in it.
It opened Documents. - Scale spread called the softest frame the best one, by ranking four metrics
that are better small as if bigger were better.
Steps that did not match their own description
Writing each step's Menu page turned up behaviour that disagreed with what the
step said it did. Fixed:
- Crop's Auto measured before its quarter turns, and an angle with no box
turned the picture the opposite way from a boxed one. - Combine filters lined unequal sizes up by their corners, and gave its stars
the gains before matching them away. - Align channels moved each channel the opposite way from its numbers' names.
A positive red shift down now moves red down, and Lines saved before come out
the same as they did. The last column no longer stays behind on a shift down,
and a new toggle trims the edge a shift uncovers. - Glow thresholded each channel on its own and coloured its light.
- A Mask stopped applying below a Resample or a Crop without a word.
- Resample read four pixels in sixteen at a quarter.
- Star stretch's Auto left the hard default on stars already at one.
- Saturation's fade sat under a stretched sky.
- The masked Stretch landed the sky short while its note said it had arrived.
- Star cores met one channel's clip level with another channel's sky.
- Add stars refused mono stars on colour, said nothing when one half was still
linear, and replayed crops in full-size pixels on a proxy. - A proxy measured tiles, radii and star boxes at a different scale from the
export. - An outside tool that refused the float file ran again on sixteen bits, which
divided a picture peaking past one by its peak and never gave it back. The
picture is scaled back now, only a refusal is retried (a timeout that already
cost half an hour is not), and the step shows a warning on its chip. - The measured starter Line no longer includes Colour. A default cannot know
what a picture's first step should be, so the Stretch page says to put Colour
first when yours needs it.
Smaller things
- The Serve's earlier-nights card is gone. A session of several nights does
that job now. - HDR's "only part of the range" tick shows its three dials as soon as you
tick it. - Sharpen's warning names the step that did the stretching. On a star Line
that is Star stretch, and the old warning sent you looking for a Stretch. - Each picture keeps its place on the Line's strip when you visit a shorter
one and come back. - About thirty-five tooltips lost a paragraph justifying the control to
someone who never asked. Seventeen strings named a program this app is not,
and no longer do; the programs it drives keep their names. "Also export each
channel on its own" is now "Export channels separately".
Once, after updating
- Thirteen steps changed version, so each Line recomputes them the first time
it runs. - Every saved planetary measurement is made once more. A file written before
cannot say whether it covered the crop or the whole frame. - Settings, under AI clients, names an installed skill older than the app's
own; its button moves you to skill 2. - Restart any AI client that was connected to the app.
macOS: the app is not signed by Apple, so the first launch is
refused. One line clears it, and it is only ever needed once:
xattr -dr com.apple.quarantine /Applications/DeAstroStacker.app
Windows: SmartScreen will warn for the same reason - More info,
then Run anyway.
DeAstroStacker skill 3.1.0
The skill DeAstroStacker installs into an AI client, version
3.1.0.
Fetched by the app itself: Settings → AI clients and the command
line → Skill, on the row of the client you want taught. The zip is
also what Claude Desktop wants uploaded by hand, since it has no
folder to write to.
This tag always holds the newest skill of its major version; it is
replaced in place rather than released beside, so the address the
app reads never goes stale. Each major has its own tag - skill for
1.x, skill-N after - and an app only reads the one its own skill
belongs to.
DeAstroStacker skill 2.2.1
The skill DeAstroStacker installs into an AI client, version
2.2.1.
Fetched by the app itself: Settings → AI clients and the command
line → Skill, on the row of the client you want taught. The zip is
also what Claude Desktop wants uploaded by hand, since it has no
folder to write to.
This tag always holds the newest skill of its major version; it is
replaced in place rather than released beside, so the address the
app reads never goes stale. Each major has its own tag - skill for
1.x, skill-N after - and an app only reads the one its own skill
belongs to.
DeAstroStacker 0.11.2
DeAstroStacker 0.11.2.
macOS: the app is not signed by Apple, so the first launch is
refused. One line clears it, and it is only ever needed once:
xattr -dr com.apple.quarantine /Applications/DeAstroStacker.app
Windows: SmartScreen will warn for the same reason - More info,
then Run anyway.
DeAstroStacker skill 1.0.0
The skill DeAstroStacker installs into an AI client, version
1.0.0.
Fetched by the app itself: Settings → AI clients and the command
line → Skill, on the row of the client you want taught. The zip is
also what Claude Desktop wants uploaded by hand, since it has no
folder to write to.
This tag always holds the newest skill; it is replaced in place
rather than released beside, so the address the app reads never goes
stale.
DeAstroStacker 0.8.1
DeAstroStacker 0.8.1. Everything since 0.6.2 — mosaics, a whole night of
planetary recordings as one picture, one Season for both pipelines, live
stacking from N.I.N.A., and a gradient step that stops eating the nebula.
Mosaics
A mosaic is stacked straight into the mosaic. Not a master per panel merged
afterwards — that is two rounds of resampling, two sets of rejection statistics
that never saw each other, and a seam solved by a tool that has forgotten which
frames were involved. One output big enough for every pointing, one alignment
solve per frame, one integration, one sky solved across the whole thing, and
the picture filling in on screen as the frames arrive.
The words: the output is a slab, one pointing's worth of frames is a
patch. A walk — a Seestar or a Dwarf in framing mode — is a mosaic whose
patches nobody laid out.
- Pointings are worked out from the headers alone, and a pointing with no
WCS is plate-solved rather than dropped. - The sky is levelled per channel. It used to measure one luminance number
per block and move all three channels by it, so every colour difference
between pointings survived intact — nothing on a linear frame, and three
different colours after a stretch. Across a real 3×1 of Rho Ophiuchi, B/G ran
0.675 to 0.711 and R/G 0.876 to 0.846. - Patches cross-fade into each other. A changeover is a line however level
it is: on one side of a row the mean is over two pointings' frames and on the
other over one's, and the couple of ADU they still disagree about arrives all
at once along eleven thousand pixels. Over the last two hundred pixels of its
coverage a frame is worth progressively less and its neighbour more. Measured
on that same 3×1: the worst rim's biggest bin-to-bin jump went from 3.15 ADU
to 0.42, inside the 0.49–1.10 the slab shows along rows with no seam at all. - The levelling correction now carries its own geometry. It was grown to full
size with a plain resize, which is right for a single field and wrong on a
slab, where the blocks are laid on the slab and the window starts wherever
the placement put it — so the surface slid by up to half a block, in opposite
directions at the two ends.
A whole night of planetary recordings, as one picture
Forty clips of Jupiter are two different things depending on what was wanted,
and nothing in the files says which. Stacking each on its own has always been
one press; stacking them as one is new.
- The frame with nothing in it used to win the ranking. A frame was scored
as contrast over brightness squared, and when the cloud took a frame the
divisor goes to nearly zero: on a synthetic Jupiter, sky glow and read noise
scored 5159 against the best real frame's 243. Not merely kept — ranked
first, which is the frame the whole recording is stabilised onto. There is
a floor under the divisor now, and a discard: frames with nothing in them
and frames the stabilisation could not solve leave the ranking entirely, so
"keep the best 25%" is 25% of what is left. The Scale has a Discarded column
and draws them as a band along the bottom of the seeing curve. - The reference is capped at a hundred frames. It was the best ten per cent
averaged, so forty thousand frames meant four thousand reads — and The Cook
paid twice, because the preview built one and the stack built its own. Noise
in a mean falls as the square root of the count, so everything past the first
hundred bought nothing measurable and made the reference blunter, since
what a ten per cent share adds up there is the mediocre tail of the ranking. - A mono night is several reels, and one of them is colour.
One Season, for both pipelines
There were two Seasons. One composed three mono stacks into a colour picture
and stopped; the other, a rail click away, had twenty-six operations, palettes,
masks, PixelMath, two lanes and a crash-proof Icebox. Two screens, one of them
a decade behind the other, for the same job. There is one now.
Wavelets were six sliders over the same grain. Every slider maxed moved a
soft Venus by three per cent, and the stack was not the problem: the six bands
were spaced one pixel to two and a half, so all six were the same detail and
the sliders pushed it eight times over. The default spacing was linear with a
step of zero. It is the à trous transform now — B3-spline taps with the taps
moved twice as far apart at each scale — which is what every other program
computes, and the panel's labels of 1, 2, 3, 5, 7, 10 are now what it does.
The last screen stops stretching a planet. The Serve rendered through a
throwaway deep-sky autostretch, which on a planet saturates the disc and turns
the sky around it into a blizzard, with no control anywhere to turn it off. It
carries the same Show bar the Season and both planetary screens have.
The gradient step
Every model this app had would subtract the thing being photographed, and so
would GraXpert, which decides a planetary nebula's inner disk is background.
They fail in the same place: a tile is called an object when it stands above
the middle of the tile map, and when the target covers most of the field the
target is the middle of the tile map.
Automatic DBE is a fourth model on the Gradient step. Samples are clipped
against its own fitted surface rather than the global middle, refit, and
asked again; the model is a low-degree trend plus a thin-plate spline of
what the samples have left over from it, so it follows a lumpy sky like a local
model and cannot be talked into following the target. Measured on a synthetic
Helix — a disk covering most of the frame with sky only at the corners — the
nebula's height against the corners survives at:
| model | left standing |
|---|---|
| polynomial, degree 2 | 47% |
| polynomial, degree 4 | −7%, which is to say a hole |
| local | 43% |
| Automatic DBE | 99.8% |
Exclusion zones are for the nebula rejection cannot find — large, faint, no
further above the sky than the sky glow varies. Draw free-hand loops on the
picture and no sample is taken inside them. On a frame like that, 73% survives
on rejection alone and 97% with a loop round it, where a local model flattens
it to nothing. Draw generously: an object's outskirts reach past the part of it
you can see, and a sample taken in them is still a sample taken off the object.
Show BG draws the surface being removed instead of the picture, the way the
Mask tick draws the mask a step builds — for every method, GraXpert's included.
A model that curved up into a nebula looks exactly like a model that followed
the sky, until you look at it. Show samples draws where the sky is being
measured and what became of each one: kept, thrown out for sitting on
something, or inside a zone.
Calibration
- A dark flat was being treated as a dark. Anything whose type said "dark"
went to the darks, and a dark flat says both words — so a catch holding
thirty 300-second darks and twenty 0.04-second dark flats built one master
out of all fifty and subtracted the average from every light. It is its own
kind of frame now, and it is what calibrates the flats in preference to the
bias. - Keep masters writes the four out beside the stack, each saying what it is,
how many frames went into it, and the camera, gain, offset, temperature,
exposure, binning and filter it belongs to. There is no library and no
manager: a master is a frame you catch, so the way to reuse one is to point
The Catch at that folder. - A caught master is used as it is rather than being rebuilt — PixInsight's
and WBPP's too. The frame table saysDark · master of 30.
Watching a stack happen
- A frame now says where it came down. An align was a bar and a file name
for however long it took. It draws the frame's own outline where it landed,
the stars its fit agreed with the reference about, and behind it the faint
trail of everything already down — in the output's own pixels, so the
outlines sit exactly over the picture forming underneath. On a mosaic this is
the slab assembling itself in the first minute rather than the fourth hour. - The landing brings its own pixels with it, about a hundred kilobytes a
frame, so a mosaic with levelling on has something to show while its frames
are still being solved. - Matched stars are drawn as corner brackets rather than rings. A closed
circle covers the star it is pointing at, so a hundred of them read as a haze
over the picture rather than as a set of marks.
Live stacking from N.I.N.A.
The stack stays open while the night keeps adding to it, previews travel in the
message rather than through a folder, and a preview that will not write says
why and tries again first.
Fixes worth naming
- A cleared Catch left the whole session behind it. A mosaic of Rho was
cooked, Clear all pressed, a folder of M31 dropped in, and The Cook died in
three seconds on an alignment error that had nothing to do with the new
frames: the alignment reference is settled once per session, which is the
whole point when a second filter has to land on the first one's pixels, and
exactly wrong when the list has been swapped for a different object. - The Season's store threw away results to pay for their own files. On a
21-step Line over M31 at 8250×12400, clicking from step three to step six ran
all six from step one, every time. Spilling a result to disk to make room in
memory put the disk over budget, and the next line forgot the result that had
just been spilled. - Add stars put them back in the wrong place, twice over: a picture's own
stars already carry every crop above the fork, so replaying those cut them a
second time. And "it came out the same size" stood in for "it did nothing",
which a mirror or a half turn of a square frame is not. - Whole right angles are three buttons under the pi...
DeAstroStacker 0.6.2
DeAstroStacker 0.6.2.
New: Cosmic Clarity
Seti Astro's Cosmic Clarity now drives two steps of the Season, and it
is free — no licence to buy.
- Sharpen gains a Cosmic Clarity method. Stars and nebulosity are two
separate networks in it, run together or either on its own, with their
own amounts. It can measure the star profile per piece of the picture
and pick the models to match, or take a radius by hand. - Denoise gains one too: strength, and a say in what is quieted —
the brightness alone, the whole picture, or each channel separately.
Point Settings → Tools at setiastrocosmicclarity.exe once. Its denoiser
is a second program in the same folder and is found from that, so there is
nothing else to fill in. Both steps stay on the Line and say so on their
chip when the tool is not installed, exactly as the other outside tools do.
One thing worth knowing: Cosmic Clarity reads and writes the input and
output folders beside its own executable rather than taking file paths.
Leave that input folder empty — if there is already work queued in it, the
step will say so and do nothing rather than process the queue.
macOS: the app is not signed by Apple, so the first launch is
refused. One line clears it, and it is only ever needed once:
xattr -dr com.apple.quarantine /Applications/DeAstroStacker.app
Windows: SmartScreen will warn for the same reason - More info,
then Run anyway.
DeAstroStacker 0.6.1
DeAstroStacker 0.6.1.
macOS: the app is not signed by Apple, so the first launch is
refused. One line clears it, and it is only ever needed once:
xattr -dr com.apple.quarantine /Applications/DeAstroStacker.app
Windows: SmartScreen will warn for the same reason - More info,
then Run anyway.