Skip to content

Stretch RGB stars independently before narrowband restoration - #996

Merged
theatrus merged 6 commits into
mainfrom
codex/rgb-star-stretch
Oct 25, 2026
Merged

theatrus merged 6 commits into
mainfrom
codex/rgb-star-stretch

Conversation

@theatrus

@theatrus theatrus commented Oct 25, 2026 •

Copy link
Copy Markdown
Owner

New automatic narrowband recipes stretch the extracted linear RGB stars independently before restoring them over the nebula. Lower RGB star stretch → Amount in Combine and restore stars to make stars less prominent; the starting amount is 5. Existing setups keep Auto MTF (legacy) until changed. BXT sharpening/halos and linked star reduction remain independent controls.

StarXTerminator runs on linear RGB after optional BXT/NXT and Gaia calibration. Seiza extracts the linear residual, applies the SetiAstro-style rational tone, then screens that display layer over the separately stretched nebula. The nebula and broadband-structure stretches keep their existing settings. Changing the amount changes the final composition identity while retaining linear/BXT/Gaia/SXT cache identities.

The star-policy dropdown now has a visible ✨ Stars label, including on phone. New settings survive saved-setup round trips; inactive star controls retain their values.

Uses the published Seiza 0.44.0 / seiza-stacking 0.51.0 / seiza-satellites 0.22.2 release. The lockfile contains registry sources and checksums only. The new stacking output version invalidates older generated artifacts once; later display-only edits continue to reuse the new linear SXT outputs. Core API: theatrus/seiza#373 .

Local checks:

  • cargo fmt; registry-only workspace/all-targets/all-features clippy (--locked)
  • registry-only cargo test --workspace --locked after rebasing onto remote-worker support (Run RC-Astro tools on remote workers #998): 3,412 passed, 13 ignored (3,376 passed / 12 ignored before that rebase); cargo build --locked passed after that rebase
  • frontend lint/build after the rebase; Vitest 1,875 passed
  • local Playwright wrapper with the registry-only build: Chromium and WebKit, desktop/phone, saved stretch/reduction/BXT/halo/SXT overlap/Gaia settings, visible star label, no overflow; 2 passed
  • git diff --check
  • Real local RC-Astro 2.6.10 BXT ML5 → NXT ML3 → linear SXT ML11 on a registered 512×512 SNR G132 crop, then the paired Seiza stretch at 0/3/4/5. No display transfer before SXT. Full-field comparisons completed on RC-Astro 2.6.10 with the same prepared linear/BXT/SXT identities for every stretch amount.

Star selector

Visible star selector

Independent star stretch

Star stretch and reduction

Phone controls Star stretch and reduction on phone Visible star selector on phone

SNR G132 examples

Identical 4757 × 3156 grid and nebula processing: BXT ML5, solar Gaia calibration, linear SXT ML11, green reduction 0.2, continuum off, broadband structure 0. Native 800 × 800 crops are not resized. Star Stretch 5 subdues the stars compared with legacy Auto MTF; amount 3 is more restrained. Changing 3 → 4 → 5 brightens monotonically on every finite pixel. Amount 3 + reduction 0.4 was also checked. See validation settings, timings and cache identities.

Legacy Auto MTF Star Stretch 5
Legacy Star Stretch 5
More restrained: Star Stretch 3

Star Stretch 3

Configure and reuse linear StarXTerminator runs

Process linear color now exposes separate SXT controls for the nebula and RGB branches, using the installed CLI schema (including Tile Overlap). The Stars choice controls whether each run is needed. Managed separation keeps the stars output and leaves Unscreen Stars off; all separation happens before stretching. The RGB branch also exposes its Gaia calibration choice and preserves it through saved-setup reloads.

Cache fixes and provenance:

  • Default-valued SXT parameters canonicalize to the existing default cache key. Non-default SXT settings change only that branch's identity; BXT/NXT prefixes and the other branch are reusable.
  • Mapped linear input identities exclude broadband structure blend amount, line display amounts, positive display contribution and flux-export calibration. Continuum/clipping revisions, subtraction parameters, calibration inputs and tool/model versions remain dependencies.
  • Each final composition records its exact per-branch cache ID, resolved SXT settings, tool/model result, and links to the cached linear starless and stars FITS. Referenced identities survive cache pruning. Missing output files invalidate those references and rebuilding repairs the affected run.
  • Regression tests count external-tool invocations across stretch/reduction edits and per-branch retunes, reload the final manifest, retain 30-day-old referenced entries, and repair a missing stars sidecar.

The real SNR G132 validation reused the same three RC-Astro IDs with an explicitly selected default overlap and after changing broadband structure from 0 to 0.3. Recomposition took 10 and 8 seconds. Both linear FITS downloads remained valid for each branch. Exact cache/linear-output evidence.

Per-branch linear SXT settings

Phone SXT controls Linear SXT settings in the processing steps on phone

Rebased onto #998 before merging. Both linear SXT branches and RGB preparation use the remote-worker runner; the per-branch settings and cached-output provenance are preserved. The sign-in browser helper now waits for the document reload, fixing the navigation race seen on #997 (six local browser checks passed across three fresh runs).

Final validation on rebased #997 (including all merged #996/#998 behavior): all-features Clippy, workspace tests (3,414 passed, 13 ignored), build, frontend lint/build and 1,877 tests passed. The combined Chromium/WebKit browser run passed all six cases, including desktop/phone star controls, memory settings, and delayed preferences after sign-in.

@theatrus
theatrus force-pushed the codex/rgb-star-stretch branch from 7ce2e9f to f07b66d Compare October 25, 2026 06:21
@theatrus
theatrus changed the base branch from codex/color-processing-flow to main October 25, 2026 06:21
@theatrus
theatrus marked this pull request as ready for review October 25, 2026 16:15
@theatrus
theatrus enabled auto-merge (squash) October 25, 2026 16:15
@theatrus
theatrus force-pushed the codex/rgb-star-stretch branch from 301312d to 2bd9eaf Compare October 25, 2026 16:29
@theatrus
theatrus disabled auto-merge October 25, 2026 16:29
@theatrus
theatrus merged commit 184da88 into main Oct 25, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant