Skip to content

v0.4.0

Choose a tag to compare

@giulioroggero giulioroggero released this 15 Aug 15:40
· 76 commits to master since this release

Added

  • Astronomy Knowledge (Settings) — a user-editable folder of plain .md
    reference files (Messier/bright-object seasons, planet/Moon visibility
    mechanics) folded into every AI panel request, grounding a small local
    model (qwen3:8b and similar) in real astronomy facts instead of guessed
    ones. Add/edit/delete files directly in Finder; Restore Default
    Content
    resets just the shipped defaults, leaving anything else added
    untouched.
  • The AI panel now includes the current date/time and observer location
    (session's, else project's, else the last GPS fix) in every request, and
    the Caldwell catalog (109 objects, Patrick Moore's "beyond Messier"
    complement) alongside Messier in the bundled sky catalog — used by the
    Atlas view, SkyAtlasLookup, and the Filters popover's object list.
  • A Stop button next to the AI panel's "Thinking…" indicator cancels an
    in-flight request; replies now render as Markdown instead of literal
    **asterisks**; AI planning/chat failures are logged to the Application
    Log, not just shown inline.
  • Multi-session AI chat history — create a new conversation, browse/
    rename/delete past ones, and resume exactly where one left off; each is
    persisted as its own file (same "one file per item" shape as Equipment).
  • Streaming AI responses — replies (including "Ask AI to Describe…")
    now stream in live instead of a bare "Asking Ollama…" spinner for the
    whole wait, and a configurable Max Response Length (Settings) bounds
    how long a single reply may generate.
  • Camera Settings on the Capture detail page — every field of that
    specific capture's own settings snapshot (mode, gain, exposure, ROI,
    drift reduction, Smart Live Stack, Lucky Imaging burst count, SER
    duration), previously recorded but never shown anywhere.
  • Previous/Next Capture buttons directly overlaid on the capture image
    itself, and Open Previous Session (only "Open Next Session" existed
    before) in the Project menu.
  • Open/Open in Viewer buttons on the Capture detail page for SER/
    recording/other non-image captures — FITS reuses the app's own real
    viewer, everything else opens in whatever the system already handles it
    with.
  • Zoom (like the Histogram) and manual entry on the Gain and Exposure
    sliders, for dialing in an exact value directly instead of only dragging.
  • Move a session to a different project, and Next/Previous
    navigation on the Project, Session, and Capture pages.
  • A zoomable, project-wide Activity Timeline chart, and real session
    times (not just a bare date) on session cards.
  • The camera view's toolbar now shows the running session's planned
    objects, so "what am I supposed to be pointing at" doesn't require a
    trip back to the session page.
  • Captures now auto-save directly into the active session's own folder
    — no folder-choice dialog — named <object>-<date>-<time> (e.g.
    M13-2026-08-15-213045.fits); the app already organizes captures by
    project/session, so asking again was a redundant step. Falls back to the
    old save panel only when no session is active to organize into.
  • Developer ID + notarization distribution set up (make release,
    docs/distribution.md, a Homebrew Cask template) — Skyformac ships as a
    signed .dmg via GitHub Releases, not through the Mac App Store; see
    docs/app-store-readiness.md for why that path isn't being pursued.
  • README: a development-status notice, a Screenshots gallery of the
    app itself, and links to the project's website
    and docs/distribution.md.
  • Credited Stellarium for the bundled Messier/
    Caldwell/bright-star catalog data (GPLv2) in THIRD_PARTY_NOTICES.md.

Changed

  • Removed "Ideas for Next Time" (the bare-object-name suggestion list) from
    the Dashboard and Insights pages — the AI panel chat is the intended
    place to ask what to look at next, and the Dashboard's own "Suggested
    Session" card already covers the same ground with a fuller answer.
  • Reduced the Projects browser/Dashboard's minimum width so the whole
    window (browser + AI sidebar) can no longer be forced wider than a
    1024pt-wide screen — on a smaller display this previously pushed the
    Settings toolbar button and the rightmost "Common Tasks" tile out of
    reach entirely, not just visually cramped (caught via two CI-only UI
    test failures that never reproduced locally, tracked down by downloading
    and inspecting the actual .xcresult from a failed run).
  • The AI panel's Minimize/Detach/Close/Dock header buttons are icon-only now
    (a tooltip on hover), instead of showing text labels alongside the icons.
  • Reduced Focus Assist/Planetary Tracking/Streak Detection's per-frame
    analysis cadence and the diagnostics poll interval as a modest, easily
    reverted energy tweak.
  • Internal refactoring, from a full-codebase audit for dead code,
    duplication, and performance: the Gain/Exposure zoom+manual-entry
    scaffolding collapsed into one shared generic component; a cached
    thumbnail loader replacing four separate uncached NSImage(contentsOf:)
    call sites; a shared root-directory-resolution helper across the
    Projects/Equipment/AI-Chat/Knowledge-Base file stores; several
    CameraManager helpers deduped (blocking-capture preamble, control-cap
    lookup); StatsGridView switched from a Table (whose manually-guessed
    height could clip a section with enough rows) to a self-sizing Grid.

Fixed

  • The AI panel failing to reopen as a detached window if closed while still
    in camera mode.
  • Live GPU/CPU image enhancement (denoise, wavelet sharpening, Live GPU
    Controls) applying to the next captured frame instead of the one
    currently on screen when a setting changed.
  • Live Stack's display stretch never re-adapting as the accumulated stack's
    own signal-to-noise improved, so it didn't visibly brighten.
  • AcquisitionMode mislabeling a plain single exposure (neither Live Stack
    nor a Lucky Imaging burst) as "Lucky Imaging" in history/Insights.
  • A GPU scratch-texture allocation failure could silently skip the final
    render stage, freezing the live preview with no error shown.
  • The Camera Error alert's dismiss button was a no-op — a dismissed error
    could silently reappear on the next unrelated re-render.
  • "Move to Project…" swallowing a failed move and navigating away as if it
    had succeeded; ProjectStore's delete/move helpers could otherwise leave
    a session's on-disk files orphaned or a CaptureRecord pointing at a
    file that no longer existed.
  • Unplugging a camera or losing a webcam mid-recording didn't stop/finalize
    an in-progress SER/FITS recording, risking a corrupted file on reconnect.
  • Any camera streaming error other than "removed" silently froze live view
    with no error shown and no way to resume without a full reconnect.
  • AI-created projects/sessions (and Quick Start) reported success even when
    the underlying disk write actually failed.
  • A previously-latent bug in the shared Xcode scheme (buildForArchiving
    left on for the test targets) that made every xcodebuild archive
    attempt fail outright — found while setting up the release process.