These release notes apply to The Photographer’s Ephemeris Web beta site only (see also the production version release notes.) Please send feedback and observations via the Help button at the bottom right of the page.
3.19.3 – 17 March 2026
- Locations/Lists: Fixed secondary (grey) pin button missing in list detail view when geodetics is enabled
3.19.2 – 17 March 2026
New
- Locations: the locations page has been overhauled and now includes support for custom lists
- Lists: create one or more lists of locations. A location can be associated with any number of lists (e.g. “ Sunrise Spots ” and “ Colorado ”). Lists can have a name, description, icon and colour. They are synced with your account data automatically
- Favourites are broken out on their own page via the link in the new sidebar
3.19.1 – 15 March 2026
Fixed
- Help Panel: various fixes and refinements
3.19.0 – 15 March 2026
Added
- Help Widget: new button at the top right of the page instead of the bottom right
- Support Ticket Form: New form accessible via the Help button
Changed
- React 19: mammoth internal upgrade of the app (library versions, state management, styling, and more); you name it, we updated it
- Typography: Replaced Cabin font with Source Sans 3; no more quirky ‘@’ symbol
- Bundle Splitting: Much smaller initial loading chunk size
Fixed
- Various UI and app state bugs
3.18.2 – 6 March 2026
- Build process refinements to reduce bundle size
3.18.1 – 6 March 2026
Fixed
- Dialogs: fixed dialog components (Geodetics, Horizon, Edit Location, Import/Export Locations) that could only be opened once
3.18.0 – 26 February 2026
Fixed
- Performance: fixed a progressive UI hang on repeated route navigation caused by Sentry Session Replay (rrweb) serializing every DOM mutation during route changes – removed
replayIntegration()entirely (#581) - Various: multiple minor performance- and UI-related issues
Improved
- Performance: Various performance improvements throughout, particularly related to changing the selected page
- Icons: Redesigned custom SVGs (terrain, lightbulb, meteor, sunrise, sunset, visual search, wireframe); added separate terrain-off icon for clearer toggle state
- UI Components: Migrated buttons, dialogs, switches, tabs, tooltips, selects, and form inputs – consistent styling, full keyboard navigation, and proper ARIA roles throughout (#564, #565, #566, #567, #568, #569)
- Tooltips: All interactive tooltips now use a styled popover instead of browser-native
titleattributes – consistent appearance, accessible, and keyboard-focusable (#569, #576) - Accessibility: Added
aria-labelto icon-only buttons,htmlFor/idassociation on all form labels,role="alert"on validation errors, and focus trapping in dialogs (#564, #565, #566, #576) - Icons: Migrated to a new icon library, with improved consistency throughout the site (#560, #562, #563)
- WebGL: Added automatic recovery from WebGL context loss on the 3D compass canvas (#571)
- Network Resilience: Non-network errors (e.g. 4xx responses) are no longer retried in the retry helper (#574)
Removed
- Sentry: Disabled Session Replay integration – rrweb’s MutationObserver is incompatible with Three.js/Leaflet mount-unmount cycles; upstream fix tracked at getsentry/sentry-javascript#16816 (#581)
3.17.9 – 14 February 2026
Improved
- Network Resilience: Added exponential backoff retry logic (up to 3 retries) to elevation, timezone, secondary elevation, geo IP, and combined tz+elevation queries (#548, TPE-WEB-APP-1BE, TPE-WEB-APP-35G, TPE-WEB-APP-61, TPE-WEB-APP-3GQ)
- Error Reporting: Transient network failures (no server response) are now logged as console warnings only, no longer sent to Sentry – reduces noise by filtering client connectivity issues outside our control (#548)
- Error Reporting: Fixed double-reporting every error to Sentry (both
captureMessageandcaptureException) - Connectivity: Added reachable/unreachable host tracking to the elevation saga, matching the pattern already in the timezone saga (#548)
3.17.8 – 13 February 2026
Changed
- Moon Simulator: Brightened blood moon tint colour during total lunar eclipse for improved visibility (#C62A19, was #881D11)
3.17.7 – 13 February 2026
- Lunar eclipse events on the timeline are now available to all users, irrespective of subscription status.
3.17.6 – 11 February 2026
Fixed
- 3D Terrain: Fixed intermittent flat terrain on 3D view reload (~5% failure rate) caused by R3F’s
useLoadercache returning sharedTHREE.Textureinstances across components – each base texture now uses a unique cache-busting query parameter to ensure isolated GPU texture data (#515)
3.17.5 – 10 February 2026
Fixed
- Map: Fixed crash when navigating away from Landing Map, Solar Eclipse Map, or Moon Simulator Map during a zoom animation
- Localisation: Fixed
RangeErrorfrom invalid locale tagen-US@posixinIntl.DateTimeFormat/Intl.NumberFormatby stripping POSIX extensions from i18n locale strings (#542, TPE-WEB-APP-5B3)
3.17.4 – 10 February 2026
Fixed
- Solar Eclipse: Fixed crash when viewing solar eclipse at a location outside the eclipse path where contact c1 doesn’t exist (
TypeError: undefined is not an object evaluating contacts.c1.date) (TPE-WEB-APP-5AK) - WebGL: Fixed false-positive Sentry warnings for WebGL context loss triggered by normal route navigation away from 3D canvases (TPE-WEB-APP-5AE)
- WebGL: Fixed crash on iOS/Safari caused by race condition between WebGL context loss and R3F render loop –
gl.render()is now guarded with a try-catch that detects context loss before the DOM event fires (TPE-WEB-APP-5AT) - Map: Fixed the Leaflet “ Map container is already initialized ” crash on route navigation caused by all 4 map container components sharing
id="map"(#540, TPE-WEB-APP-5AV)
3.17.3 – 9 February 2026
Fixed
- Localisation: Fixed Firefox crash (“ too much recursion ”) when hovering astro_set events on the timeline, caused by i18next
$t()nesting in en, pl, it, and ko locale files (#535) - Moon Simulator: Fixed silent failure in lunar calculations – errors were silently swallowed, showing a blank canvas instead of an error message
- Moon Simulator: Fixed per-frame Vector3 allocation in render loop causing unnecessary GC pressure
- UI: Fixed modal overlays hidden behind control row by raising overlay z-index above the control row
- UI: Fixed dropdown menus (Body Controls, Display Options) rendering behind moon/eclipse simulator popups by raising control row z-index above simulator overlays
- 3D Compass: Fixed DirectionalLight target leak in SunLight component on unmount
- Moon Simulator: Fixed transient sky colour glitch caused by Jotai cache invalidation race producing wrong Sun altitude for single render frames (#537)
Improved
- WebGL: Added context loss handling to all React Three Fiber canvases with shared hook, fallback UI, and Sentry reporting (previously only Moon canvas handled this)
- Three.js: Added shader patch validation with Sentry warnings so silent failures after a Three.js upgrade are surfaced
- Moon Simulator: Smooth bump scale transition across the civil twilight zone – replaces hard cutoff at sun altitude -6° with smoothstep interpolation and reduces overly aggressive daylight bump reduction
- Moon Simulator: Smooth light intensity transition at nautical twilight – replaces hard cutoff at -6° sun altitude with smoothstep blend over -8° to -6° (#537)
3.17.2 – 5 February 2026
Fixed
- 3D page: Added an error boundary to prevent a blank screen crash when WebGL context creation fails on iOS devices (#529)
- Visual Search: Fixed crash when interacting with filter form caused by react-hook-form mutating frozen Redux state (#531)
- Performance: Fixed N+1 API calls to
/services/detailsduring page load by preventing concurrent requests (#532) - Map: Fixed TypeError on Mobile Safari when navigating away during map zoom animation (#533)
- Solar Eclipse: Fixed “ Error: undefined ” logging bug and added timeout/failure handling to prevent hangs when eclipse data fails to load (#534)
- Service Credentials: Added retry with exponential backoff for 429 rate-limit responses (#535)
3.17.1 – 4 February 2026
Fixed
- Solar Eclipse Simulator: Fixed crash when viewing eclipse from non-visible location where contact times (c1/c4) don’t exist (#525)
- Lunar Eclipse Contacts: Fixed entitlement check to correctly include Pro users for eclipse contact time features
- URL Query String: Fixed crash when building URL with invalid date value (#522)
Improved
- DuckDuckGo browser internal errors (#521)
- Broken browser environments missing standard APIs (#523, #524)
- WebGL context failures in headless/bot environments (#526)
- Request aborted errors from user navigation (#527)
3.17.0 – 3 February 2026
Added
- Moon Simulator: New interactive 3D Moon visualisation feature
- Real-time rendering of the Moon with accurate phase, libration, and position
- Lunar feature labels (mare, craters) with level-of-detail filtering based on zoom
- Camera controls with azimuth/altitude gauges and double-click reset
- Playback controls for time animation with multiple speed options
- Display options toolbar (sky gradient, labels, shadow rings, horizon)
- Lunar eclipse Earth shadow visualisation with umbra/penumbra cones
- Lunar eclipse contact time buttons (P1, U1, U2, Max, U3, U4, P4)
- Below horizon indicator when Moon is not visible
- Camera direction overlay showing azimuth and altitude
- Day navigation controls for quick date changes
- Lunar distance and libration data display
- Mini 3D Moon preview in simulator popup on map
- Date-based access restrictions for subscription tiers (Free: 1 day lookahead, Supporter: 5 days, Pro: unrestricted)
- Solar eclipse redirect message when viewing during a solar eclipse
- Error boundaries for graceful error handling
- Help links to support documentation
- Hide Simulators setting: New option to hide Moon and Solar Eclipse Simulators from the UI
Changed
- Solar Eclipse Simulator mini view: Simplified layout for cleaner appearance
- 3D engine upgrade: updated to modern colour management
- Migrated to physically-correct lighting units\
- Fixed shadow corruption with persistent Canvas architecture
- Improved terrain loading
- Fixed LOD oscillation in AzimuthIndicator
3.16.1 – 19 January 2026
- Improved eclipse maps: fixes anti-meridian crossings and occasional path end artifacts
- Eclipse path styling: Fixed rendering for MultiLineString geometry types
3.16.0 – 14 January 2026
- Multiple improvements to the solar eclipse simulator – read on for details
- Solar Filter Selector: New UI control to choose between different solar filter colour simulations (Default, Nisi Pro Nano, Baader AstroSolar, Thousand Oaks Optical)
- Obscuration Threshold Selector: New UI control to configure when the simulated solar filter is removed, with options from 99.99% to 99.5% obscuration
- Warning indicator: Yellow warning icon appears when obscuration threshold is set below 99.9% to remind users about camera sensor protection
- Localised tooltips: Added tooltips for solar filter and obscuration threshold controls in all 7 supported languages
- Computed greatest eclipse coordinates: When viewing solar eclipse events, selecting an eclipse now computes more accurate coordinates, time, and duration using Besselian elements instead of the NASA 5MCSE lookup table data
- Improved Baily’s Beads timing: filter removal is now synchronised with Baily’s beads visibility for more realistic eclipse simulation
- Unified beads visibility: Both total eclipse and near-path observer scenarios now use obscuration-based beads visibility
- Exposure slider label: renamed from “ Baily’s Beads ” to “ ±EV ” for clarity because this now controls simulated exposure during totality, not just beads “ flare ”
- Eclipse simulation enhancements: better chromosphere rendering, corona visibility control
- Snappier filter transitions: Filter removal transition is now much quicker (0.00025 obscuration width) for more realistic simulation
Older release notes can be found here.