From Zero to Eclipse Script in Minutes: Introducing Solar Eclipse Workbench 1.4.0

I'm excited to announce Solar Eclipse Workbench 1.4.0, released on February 23, 2026! This is the biggest update yet, with a brand-new script wizard, a scientific exposure calculator, full partial-phase automation, free geocoding, smarter totality planning, and a long list of camera-compatibility fixes. Read on for all the details.

What's New

1. Location Search & Saved Locations in the GUI

The Location pop-up in the main window has been overhauled. You can now search for any address, city, or landmark directly inside the GUI — no API key required — and your saved locations are always just a drop-down away.

  • Saved-locations drop-down — populated from ~/.sew_wizard_config.json; the last-used location is automatically pre-selected every time you open the pop-up.
  • Address search bar — powered by Nominatim (OpenStreetMap) for geocoding and the Open-Elevation API for altitude. Everything runs in a background thread so the UI stays responsive.
  • "Save Location" button — give the current coordinates a name and they'll appear in the drop-down for every future session.
  • Auto-updating map — the map refreshes automatically (with a 300 ms debounce) whenever coordinates change. The old manual "Plot" button is gone.
Location pop-up showing the saved-locations drop-down and address search bar

2. Script Generation Wizard (sew_wizard)

Generating a complete eclipse photography script used to require hand-editing a text file. Not anymore. The new Script Generation Wizard is a five-page PyQt6 dialog that walks you through every decision:

  1. Eclipse configuration — pick the eclipse date, set your location (with the same free geocoding service described above).
  2. Camera equipment — camera name, ISO range, aperture, and sync intervals.
  3. Phenomena selection — toggle partial phases, diamond ring, Baily's beads, corona, prominences, chromosphere, earthshine, voice prompts, and solar filter support.
  4. Summary & script preview — review every generated command before saving.
Eclipse configuration with date and location fields

Phenomena selection checkboxes

Script preview

3. Scientific Exposure Calculator

Getting a well-exposed image of a solar eclipse is notoriously tricky — the correct settings vary wildly between the partial phases (full solar disk with a filter), Baily's beads, the corona, and everything in between. The new Exposure Calculator takes the guesswork out of it.

  • Based on Xavier Jubier's data — widely respected reference values used by astrophotographers all over the world.
  • 2D interpolation across sun altitude (0–60 °) and observer altitude (0–3 000 m).
  • 18 phenomenon tables covering every eclipse phase.
  • ND filter support — ND 4.0 and ND 5.0 solar filters accounted for automatically.
  • Automatic ISO adjustment when a calculated exposure would exceed 5 seconds.
  • Realistic shutter speeds — results are rounded to standard ⅓-stop increments, exactly as they appear on your camera's dial.

4. Comprehensive Partial Phase Coverage

The wizard can now generate 300+ shots automatically to cover the entire partial phase — from first contact (C1) through second contact (C2), then from third contact (C3) to fourth contact (C4).

  • User-configurable intervals: time-based (e.g., every 5 minutes) or magnitude-based (e.g., every 5 % of obscuration).
  • Sun altitude filtering — shots when the sun is below the horizon are silently skipped.
  • Contact moment shots at C1 and C4 included automatically.

5. Smart Totality Optimization

Totality is short — every second counts. The new optimizer makes sure your script gets the most out of it:

  • Adaptive corona intervals based on the duration of totality.
  • Automatic gap filling between major phenomena.
  • Earthshine feasibility check — earthshine shots are only scheduled during totality when there is sufficient time.
  • Prominence shots placed in early totality.
  • Chromosphere shots placed just before C3.
  • 10-second buffer zones around every major event to prevent command overlap.
Totality section of a generated script, showing phenomena ordering and gap filling

6. Camera-Specific Optimizations

Nikon and Canon handle burst mode differently, and 1.4.0 now accounts for that automatically:

  • Nikon burst — the burst parameter is the number of pictures (default: 30).
  • Canon burst — the burst parameter is the duration in seconds (default: 3 s).
  • The correct mode is detected automatically from the camera name.

7. Other Improvements

  • Consistent time format — all scripts now use h:mm:ss.0 throughout.
  • Robust CSV parsing — the script import/export now uses Python's csv module, so commas inside command descriptions no longer break parsing.
  • Settings file locationSolarEclipseWorkbench.ini is now stored as ~/.SolarEclipseWorkbench.ini (hidden file in your home directory), consistent with ~/.sew_wizard_config.json.

Bug Fixes

Nikon Z8 (and Z-series Mirrorless) Support

The Z-series mirrorless cameras use a different capture-mode model than older Nikon DSLRs and were causing crashes or silent failures. All of the following have been fixed:

  • Camera initialization no longer crashes when the drivemode gphoto2 widget is absent.
  • The software now automatically sets the camera to Manual (M) mode before applying ISO, aperture, and shutter speed — required on the Z8 because the Exposure Time property is read-only in any other mode.
  • The autoiso widget (also absent on Z-series) is now accessed in a try/except block so its absence is silently ignored.
  • Burst mode tries the capturemode widget first (older DSLRs) and falls back to stillcapturemode with a numeric value (Z-series).
  • gp_widget_set_value calls for exposure-program now correctly pass a str value instead of an int, fixing a TypeError.

macOS USB Device Contention

macOS users with the ptpcamerad daemon occasionally saw [-53] Could not claim the USB device errors cascading into tracebacks. These have been addressed:

  • get_free_space and get_space return the last successfully cached value when error -53 is received, instead of triggering a full (always-failing) camera reinitialisation.
  • get_battery_level downgrades the -53 log message from WARNING to DEBUG — the daemon reclaiming the USB connection after a capture is normal and expected behaviour.
  • CameraOverview._gather_camera_info reuses existing camera objects instead of opening fresh USB connections on every sync cycle, avoiding collisions with the connection held by take_picture.

Getting the Update

Install or upgrade via pip:

source solareclipseworkbench/bin/activate
pip install --upgrade solareclipseworkbench

Full release notes are available in the CHANGELOG on GitHub. Bug reports and feature requests are welcome in the issue tracker.  

More information can be found on the GitHub page.

Clear skies, and happy eclipse chasing! 🌑

Comments

Popular Posts