darkcast Changelog

Web App

  • Exposure integration plans Exposure tab now shows imaging plans — "100 × 10s = 17 min" instead of just a minimum exposure time. Three quality tiers (Preview, Good, Deep) let you choose how long to shoot based on your goals
  • Per-camera tier selection Each camera card has its own tier selector — pick Deep for your cooled CMOS while keeping Good for the SeeStar
  • Forecast camera picker Sub-exposure column in the forecast table now has a dropdown to view any of 15 cameras' optimal exposure across forecast hours
  • Firmware step badges SeeStar S30/S50 cards show their locked exposure steps (10/20/30s)

Scoring Model

  • Refined exposure floor Minimum viable exposure redefined (k=3 read-noise swamp) separately from the recommended optimal (k=10), giving users a clearer usable range

Bug Fixes

  • Fixed pipeline memory leak Interpolator cache, raster eviction, and temp directory cleanup prevent worker OOM crashes
  • Fixed heatmap scoring Shared scoring library eliminates boundary artifacts; grid reduced to 1° for memory stability

Web App

  • MapLibre GL JS migration Dashboard map upgraded from Leaflet to MapLibre GL JS for GPU-accelerated vector tile rendering
  • Dark sky heatmap color scale Inverted colors — dark sites fade to black, light-polluted areas glow warm orange/white, matching how the sky actually looks
  • Night-centered map Map opens centered on the dark hemisphere so the nighttime observing region is always in view
  • Heatmap loading indicator Spinner overlay while sky quality data loads
  • Dark-themed map popups Site tooltips match the app's dark theme

Scoring Model

  • Heatmap scoring fix Removed longitude-dependent boundary artifact that created a visible vertical line across the map

Bug Fixes

  • Fixed overnight window dates Windows spanning midnight now show the correct day
  • Fixed best window selection Best observing window now correctly identifies the highest-scoring period
  • Fixed observing window scores Peak scores display as integers

Web App

  • Per-profile heatmap Heatmap updates when switching scoring profiles — see how conditions differ for deep sky vs planetary vs visual
  • Global sky quality heatmap Color overlay showing real-time sky quality across the globe, computed from GFS weather data at 0.25° resolution
  • Day/night terminator Solar terminator line on the map showing the current day/night boundary
  • Map view improvements Scored integer displays, globe color refinements, pre-warmed globe cache

Web App

  • Map view Interactive world map on the dashboard — sites plotted with tier-colored markers, click to open site detail
  • Dashboard grid views Three view modes — List, Large Grid (with globe backgrounds), and Small Grid (compact)
  • Globe backgrounds Large grid cards show a faint orthographic globe centered on the site's location
  • View preference persists across sessions via localStorage

Bug Fixes

  • Fixed globe rendering for southern/western hemisphere Sites in South America, Africa, etc. now render correctly instead of showing a blank globe
  • Fixed profile scores showing as integers Profile tab scores on site detail now show one decimal place

Scoring Model

  • Observing profiles Six scoring modes — General, Deep Sky, Planetary, Lunar, Wide Field, and Visual — each reweighting domains and factors for different imaging goals
  • HRRR fix Removed pressure-level downloads that were failing on NOMADS

Web App

  • Profile selector on site detail Switch profiles to see score, domain breakdown, observing windows, and forecast chart update instantly
  • Profile dropdown on dashboard All site scores and sorting reflect the active profile
  • Profile-aware observing windows Best window and forecast highlights shift per profile (e.g. planetary windows favor seeing over transparency)
  • Profile selection persists across pages via localStorage

Scoring Model

  • Ground-layer Cn² improvements Dewpoint depression moisture curve, stronger wind modulation, low-elevation amplification for better suburban/sea-level seeing estimates
  • Twilight transition model Solar depression penalty during dusk/dawn — setup time now reflected in forecast graphs
  • Coherence time (τ₀) Added 300/200 hPa wind levels and stratospheric wind decay for more accurate coherence time
  • HRRR regional model overlay 3km hourly CONUS data overlays GFS for short-range forecasts, significantly improving boundary layer and seeing predictions for US sites

Web App

  • Observing window stability Bridge single-hour gaps and filter sub-2-hour windows to prevent chaotic recommendations on forecast graphs
  • Changelog page at /changelog with recent changes banner on dashboard
  • Site detail layout improvements

Bug Fixes

  • Fixed 30 sites with wrong elevation Sites created when DEM data was unavailable now automatically retry instead of defaulting to 100m

Web App

  • Orthographic globe on site detail page showing site location
  • Site detail full-bleed layout redesign

Web App

  • Dashboard redesign Search, sort, grid view, inline score form in toolbar
  • Header redesign with score form in dashboard toolbar

Scoring Model

  • Widened volcanic aerosol curve for better sensitivity
  • Fixed complex number artifact from NetCDF/scipy interpolation

Web App

  • Automatic reconnection after brief outages
  • Longitude sign warning for Americas users entering positive longitudes

Bug Fixes

  • Improved scoring reliability from user feedback
  • Fixed complex number leak at interpolator creation

Web App

  • Starred sites with dashboard toggle
  • URL-friendly slugs for shareable site pages
  • Tabbed site detail Forecast, domains, and exposures as tabs
  • Observing window time summaries above forecast chart
  • Day labels on observing windows
  • Sub-exposure section redesigned with card layout and f-ratio selector
  • Fixed timezone lookup errors

Web App

  • Sign in with GitHub or Google Claim sites, set public/private visibility
  • My Sites page Manage your observing locations
  • Per-site presence See who else is viewing a site
  • Observing window bands on forecast chart for all nights
  • Times shown in 12-hour AM/PM format with local timezone
  • Best Window shows start of stable observing period, not peak hour
  • Full GPS precision preserved for coordinates

Web App

  • Unified site detail into single tabbed card layout
  • Advanced view with tabbed domain navigation
  • Chart and timestamps in site local timezone
  • Sub-exposure recommendations with tabbed camera groups

Scoring Model

  • Effective sky brightness model Weather-aware sub-exposures combining light pollution, clouds, aerosols, humidity, moon, airglow, zodiacal light, galactic background, twilight, and elevation
  • SeeStar S30 added to camera catalogue

Web App

  • Practical exposure caps for interchangeable cameras

Bug Fixes

  • Fixed memory leak in raster store

Web App

  • Server-rendered 14-camera sub-exposure table

Scoring Model

  • Hufnagel-Valley Cn² profile for scintillation (replaced constant model)
  • Calibrated against ESO Paranal DIMM data (RMSE 0.347", was 0.568")
  • Altitude-aware humidity correction for seeing estimates
  • Expanded GFS to 32 weather variables for better atmospheric profiling

Web App

  • Sub-exposure calculator with three-regime model
  • SeeStar S50 per-hour sub-exposure recommendation
  • Live viewer counts on sites

Web App

  • GPS coordinate quantization to 2 decimal places (~1.1km)

Web App

  • Global score form in header
  • Updated logos and favicon (telescope theme)

Bug Fixes

  • Fixed score ceiling (~83) caused by two broken normalization curves

Scoring Model

  • Spec version reporting and incomplete score flagging
  • Fixed confidence as weight modifier in weighted geometric mean
  • Exclude missing factors from aggregation

Web App

  • Unique site name enforcement

Scoring Model

  • Continuous scoring pipeline with independent data fetch and score loops
  • In-memory raster sampling for faster, more reliable data extraction