Skip to content

FITS Blaster 1.23-beta.2

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 12 Apr 15:03
· 32 commits to main since this release

2026-04-12 — QuickLook previews and thumbnails for all FITS formats

Added

  • QuickLook preview and thumbnail support for floating-point FITS files (BITPIX -32 and -64). Previously these showed blank icons in Finder.
  • QuickLook preview and thumbnail support for 3-channel RGB colour FITS files (NAXIS3=3), such as stacked integrations from Astro Pixel Processor.
  • Asinh stretch (beta=50) for float FITS previews — compresses bright cores while revealing faint nebulosity in linear astrophotography data.
  • Large-file subsampling: files over 2048px are stride-sampled during preview to stay within QuickLook's memory limit (~120 MB), enabling previews of 1+ GB stacked integrations.
  • FITSReader.readForPreview(from:) — dedicated read path that accepts float BITPIX and multi-channel files without affecting the main app's integer-only pipeline.

Improved

  • Zero-pixel exclusion in percentile estimation prevents stacking artifacts (unfilled corners) from skewing the preview stretch.

2026-04-12 — SwiftUI review fixes, accessibility, tests, and rejected-view cursor fix

Added

  • 111 unit and integration tests covering FITSReader, quality scoring, filter group normalisation, frame metrics, Bayer pattern parsing, histogram computation, and star detection with synthetic images (single star FWHM accuracy, multi-star count, gradient background robustness, noise rejection, elongated star eccentricity, FITS round-trip pipeline, CPU image stretch).

Fixed

  • Undo-reject and reject actions now advance the cursor to the next visible entry, matching the flagged-view behaviour.
  • VoiceOver: inspector toggle and chart style buttons now have accessible labels instead of empty strings.
  • VoiceOver: session chart tap overlay now declares .isButton trait.
  • VoiceOver: filter strip chips are individually focusable (replaced ScrollView with HStack) and announce selected state.
  • VoiceOver: inspector panel exposes children to VoiceOver navigation.

Improved

  • Settings tabs migrated from deprecated .tabItem() to the Tab API.
  • Filter group header uses cached GroupStats instead of recomputing O(n log n) median on every render.
  • .filter { }.count replaced with .count(where:) in ExportPanel and BatchProgressBar.
  • Drag handle uses semantic .quinary/.quaternary colours instead of manual opacity.
  • AppDelegate annotated @MainActor for strict concurrency.
  • Unnecessary explicit return removed from single-expression switch cases.
  • Menu command views extracted from FitsBlasterApp.swift into MenuCommands.swift.

2026-04-09 — Session chart bars, filter fix, play mode, flip, and beta channel

Added

  • Session chart: optional bar chart mode as alternative to dots. Toggle via the chart header button. Preference is persisted.
  • Play mode: press P to auto-advance through images at a configurable speed (0.2–5.0 seconds per frame). A speed slider appears in the toolbar during playback. Manual navigation stops playback automatically.
  • Flip 180°: press V to rotate the current image (or batch selection) 180 degrees for display. A rotation indicator appears on the thumbnail. Does not modify FITS files.
  • Cursor memory per filter group: switching between filter buttons (R, G, B, etc.) remembers and restores the selected image for each group.
  • Beta release channel: tag a version as v1.23-beta.1 to publish a test build without updating the homepage. Beta builds get their own page (beta.html), appcast feed (appcast-beta.xml), and are marked as pre-releases on GitHub.
  • Beta page on the website with download link and release notes for the latest beta build.
  • Release & issue workflow guide (guide-releases.html) documenting the tag-based release process and GitHub Issues workflow.

Fixed

  • Filter buttons above the thumbnail sidebar now work correctly in multi-folder sessions.
  • Switching filter group or rejection visibility now auto-selects the first visible entry when the cursor is hidden.
  • Unflagging an image in the Flagged view now advances the cursor to the next flagged image instead of losing the selection.
  • Playback stops automatically when switching filter group or rejection visibility.
  • Playback timer moved out of SwiftUI view modifier to prevent task cancellation during view rebuilds.

Improved

  • O(n²) search in image removal replaced with O(n) scan for selecting the next entry.
  • GitHub Actions pipeline detects beta tags and adjusts behaviour: marks releases as pre-release, writes to separate appcast and site files.
  • Site navigation now includes a Beta link on all pages.

Full changelog