Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 13 additions & 31 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,42 +1,24 @@
# Sony Camera Plugin

## 1.0.0.7 — exposure error classification and release maintenance
## 1.0.0.5 — combined community maintenance release

- Use GitHub handles in plugin descriptions, author/contributor display metadata and the packaged source notice. Preserve the original copyright notice and commit authorship.
- Correct README version, release status and installation links; retain the explicit limits of automated testing and manual distribution.
- Report a rejected busy capture-start through NINA's CameraExposureFailedException path, preserving the original message and cause. This avoids the duplicate generic-error notification path in NINA 3.2 while retaining capture rejection, prior cancellation and the existing soft-abort warning. Actual UI confirmation is still needed for the full popup report in this fork's issue #5.
- Publish a fresh versioned build; older release assets and checksums remain intact.
First consolidated maintained release from [@shurkanTwo's fork](https://github.com/shurkanTwo/NINASonyCameraPlugin), combining the reviewed work since upstream 1.0.0.4. @dougforpres's original authorship, MPL-2.0 and the original contributor commits are preserved. Install manually using [INSTALLATION.md](INSTALLATION.md); NINA's plugin manager still uses the upstream release source.

See [the session review](docs/SESSION-REVIEW-1.0.0.7.md) and [manual installation/rollback](INSTALLATION.md). Physical camera/USB/MTP, LiveView, lens operation and complete Sky Flat behavior remain unverified. NINA's plugin manager still uses the upstream release source.

## 1.0.0.6 — corrective community release

Follow-up to the 1.0.0.5 audit, retaining all previously integrated contributions and @dougforpres's original authorship. Install manually using [INSTALLATION.md](INSTALLATION.md).

- Preserve aborts received during capture-start preflight. An aborted pending start cannot launch an exposure after its status check returns; a rejected busy start preserves cancellation of the preceding capture.
- Verify the specific nearest learnt shutter step using the native driver's float rounding and absolute-distance selection, replacing the broad ratio that accepted a stalled adjacent speed.
- Retry a valid previous Bulb readback when switching to a short numeric exposure. Malformed readbacks still fail, and a persistent mismatch cannot start capture.
- Restore the repeated-failure camera-loss protection adapted from @totoantibes's upstream #13: three consecutive qualifying native errors mark the camera disconnected and block all further native access until NINA restarts. Never-working properties, explicit unsupported results, lock contention and shutter-verification mismatches do not count. A successful camera operation resets the count. No native close, retry or automatic reconnection is attempted after the guard trips.
- Add regression coverage using the production capture controller and managed native wrappers, replacing only native delegates and NINA logging/notifications for portable tests.

See [the corrective review](docs/RELEASE-REVIEW-1.0.0.6.md). Physical camera/USB operation remains unverified. This was published first as a preview and subsequently marked regular/Latest without changing the binaries; updates are installed manually.

## 1.0.0.5 — community preview

First maintained release from [@shurkanTwo’s fork](https://github.com/shurkanTwo/NINASonyCameraPlugin), preserving @dougforpres’s original authorship and MPL-2.0. Install manually using [INSTALLATION.md](INSTALLATION.md). This preview is not distributed through NINA’s plugin manager.

- Integrate current capture start/abort coordination and an opt-in managed Sony camera simulator with full-plugin integration tests (@shurkanTwo, upstream #10/#15).
- Report the latest downloaded ARW’s Sony camera temperature in NINA and that image’s metadata; missing readings remain unavailable (@shurkanTwo, #18 / issue #1).
- Integrate current capture start/abort coordination and the opt-in managed Sony camera simulator with full-plugin integration tests (@shurkanTwo, upstream #10/#15). Preserve aborts received during capture-start preflight and cancellation of a preceding capture when a busy start is rejected.
- Report the latest downloaded ARW's Sony camera temperature in NINA and that image's metadata; missing readings remain unavailable (@shurkanTwo, #18 / issue #1).
- Release native image and metadata allocations after copying, including error paths, avoiding a per-frame unmanaged memory leak (@totoantibes, #14).
- Retry and verify shutter changes for back-to-back exposures. A readable shutter mismatch now fails before capture rather than silently using the previous exposure. Exclude AUTO/Multi Frame NR from gain choices and fix native driver version comparisons (adapted from @totoantibes’s #13 / issue #5).
- Serialize native camera/lens calls with bounded waits. Execution timeout blocks further native access until NINA restarts. Keep native cancellation off by default and always soft-cancel during image readout/processing (adapted #13, preserving current #10 safeguards / issue #4).
- Return focuser capability information without throwing (@christian-photo, #11), improve focuser state cleanup and notifications (@totoantibes, #13).
- Retry and verify the specific nearest learned shutter step using the native driver's rounding and absolute-distance selection. Handle numeric/Bulb transitions and fail persistent mismatches before capture. Exclude AUTO/Multi Frame NR from gain choices and correct native driver version comparisons (adapted from @totoantibes's #13 / issue #5).
- Serialize native camera/lens calls with bounded waits. A native execution timeout or three consecutive qualifying native errors blocks further native access until NINA restarts. Unsupported/never-working properties, lock waits and managed verification failures are excluded from the error count. A successful camera operation resets the count. Keep native cancellation off by default and always soft-cancel during readout/processing (adapted #13, preserving current #10 safeguards / issue #4).
- Return focuser capability information without throwing (@christian-photo, #11), and improve focuser state cleanup and notifications (@totoantibes, #13).
- Report rejected busy capture starts through NINA's CameraExposureFailedException path, preserving the original message and cause. This avoids the duplicate generic-error notification path identified in NINA 3.2 while retaining capture rejection, prior cancellation and the existing soft-abort warning. The complete UI popup report in this fork's issue #5 still needs confirmation.
- Document lens-learning tools and camera SD-card saving (@shurkanTwo, #16/#17 / issues #9/#3).
- Add Windows-tested manual-install ZIP/DLL packaging, checksums, source/build provenance, and installation/rollback instructions.
- Provide Windows-tested manual-install ZIP/DLL packaging, checksums, exact source/build provenance, and installation/rollback instructions. Authored display metadata and documentation use GitHub handles; original legal notices remain unchanged.

Existing NINA 3.2/empty-ISO fixes from 1.0.0.4, including @naixx's contribution, remain included. Experimental USB auto-reconnection, retries of still-running timed-out native calls, forced cancellation after repeated busy starts, and closed WIP #12 video intervals remain deferred.

Reviewed but deferred: experimental USB auto-reconnection, retrying a still-running timed-out native call, forced cancellation after repeated busy starts, and closed WIP #12 video intervals. Existing NINA 3.2/empty-ISO fixes from 1.0.0.4 (including @naixx’s contribution) remain included. See the [full review and issue coverage](docs/UPSTREAM-REVIEW-1.0.0.5.md).
This combined package replaces the earlier maintenance builds labelled 1.0.0.5, 1.0.0.6 and 1.0.0.7. Their release entries and tags are retired; the original commits remain in history. If you installed an earlier build, download this package again and replace the DLL manually. The lower consolidated version includes all reviewed fixes.

Validation uses automated tests and Windows CI. Physical camera/USB operation for this combined release has not been verified. Native access violations, newer camera support, and complete NINA Sky Flat behavior are not claimed fixed. Existing legacy-package NU1701 restore warnings remain.
See the [session review](docs/SESSION-REVIEW.md), [corrective review](docs/CORRECTIVE-REVIEW.md) and [upstream review and issue coverage](docs/UPSTREAM-REVIEW.md). Validation uses automated tests and Windows CI. Physical Sony camera/USB/MTP, LiveView, lens operation and complete Sky Flat behavior remain unverified. Native access violations and newer camera support are not claimed fixed. Existing legacy-package NU1701 restore warnings remain.

## 1.0.0.4
* Added the `UpdateSubSampleArea` implementation and bumped the minimum NINA version so the plugin loads in 3.2.
Expand Down
13 changes: 9 additions & 4 deletions INSTALLATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,15 @@ These instructions install the community-maintained build from
The original plugin was developed by **@dougforpres**. This fork is maintained
by **@shurkanTwo and contributors** while shared upstream maintenance is being discussed.

The current community release, **1.0.0.7**, is a regular GitHub release marked Latest.
The current community release, **1.0.0.5**, is a regular GitHub release marked Latest.
Windows builds and automated tests are checked; physical Sony camera/USB operation
remains unverified for this combined release. See the release notes for scope.

The consolidated **1.0.0.5** package supersedes the earlier maintenance builds,
including those labelled 1.0.0.5, 1.0.0.6 and 1.0.0.7. If you installed any of
those builds, download this package again and replace the DLL manually using the
steps below. All reviewed fixes are included despite the lower version number.

## Requirements

- Windows 10 1809 or newer and N.I.N.A. 3.2 or newer (minimum 3.2.0.3001).
Expand All @@ -17,7 +22,7 @@ remains unverified for this combined release. See the release notes for scope.

## Install or replace an existing version

1. Download **`SonyCameraPlugin-1.0.0.7.zip`** from the [1.0.0.7 release](https://github.com/shurkanTwo/NINASonyCameraPlugin/releases/tag/1.0.0.7). Choose the release asset, rather than GitHub's automatic “Source code” archives. Extract it to a temporary folder. The plugin is `NINA.RetroKiwi.Plugin.SonyCamera.dll`.
1. Download **`SonyCameraPlugin-1.0.0.5.zip`** from the [1.0.0.5 release](https://github.com/shurkanTwo/NINASonyCameraPlugin/releases/tag/1.0.0.5). Choose the release asset, rather than GitHub's automatic “Source code” archives. Extract it to a temporary folder. The plugin is `NINA.RetroKiwi.Plugin.SonyCamera.dll`.
2. Disconnect the camera and focuser in NINA, then **close every NINA window** before changing plugin files.
3. Press **Win+R**, enter `%LOCALAPPDATA%\NINA\Plugins`, and open the plugin-version folder used by your NINA installation. NINA 3.x installations commonly use **`3.0.0`**: this folder tracks plugin compatibility, so it need not match the NINA version in About. If several version folders exist, use the one in NINA's startup log (`%LOCALAPPDATA%\NINA\Logs`); look for the path from which the Sony plugin was loaded.
4. If Sony Camera Plugin is already installed, locate its existing `NINA.RetroKiwi.Plugin.SonyCamera.dll` and copy the entire containing plugin folder **outside `%LOCALAPPDATA%\NINA\Plugins`** as a backup. Replace the DLL **in that existing folder**, even if the folder name differs from the example. Do not create another plugin folder containing a second copy. Keep the rest of the existing folder's files.
Expand All @@ -29,7 +34,7 @@ remains unverified for this combined release. See the release notes for scope.

6. Copy the extracted DLL into the existing or newly created folder. The ZIP also contains the license, source reference, and these instructions; you can keep those files alongside it. It contains no replacement NINA runtime libraries or native Sony driver.
7. If Windows shows an **Unblock** checkbox in the downloaded ZIP or DLL's Properties, unblock the file. Alternatively run `Unblock-File` in PowerShell on that downloaded ZIP/DLL before copying/extracting it.
8. Restart NINA. In its plugin manager, confirm **Sony Camera Plugin 1.0.0.7** is loaded; the description identifies the community-maintained build. Select the Sony camera in Equipment and connect it.
8. Restart NINA. In its plugin manager, confirm **Sony Camera Plugin 1.0.0.5** is loaded; the description identifies the community-maintained build. Select the Sony camera in Equipment and connect it.
9. Leave **Enable native cancel** disabled initially. Try one short exposure and check the downloaded image, ISO and exposure before using the build for a sequence. Temperature appears only after downloading an ARW that contains a supported Sony temperature reading.

This is a replacement for the upstream plugin, with the same identifier so existing
Expand All @@ -45,7 +50,7 @@ The release includes **`SHA256SUMS.txt`** for its ZIP and standalone DLL. In
PowerShell, calculate a downloaded file's hash and compare it to the matching entry:

```powershell
Get-FileHash "$env:USERPROFILE\Downloads\SonyCameraPlugin-1.0.0.7.zip" -Algorithm SHA256
Get-FileHash "$env:USERPROFILE\Downloads\SonyCameraPlugin-1.0.0.5.zip" -Algorithm SHA256
```

## Roll back
Expand Down
4 changes: 2 additions & 2 deletions Properties/AssemblyInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@

// [MANDATORY] The assembly versioning
//Should be incremented for each new release build of a plugin
[assembly: AssemblyVersion("1.0.0.7")]
[assembly: AssemblyFileVersion("1.0.0.7")]
[assembly: AssemblyVersion("1.0.0.5")]
[assembly: AssemblyFileVersion("1.0.0.5")]

// [MANDATORY] The name of your plugin
[assembly: AssemblyTitle("Sony Camera Plugin")]
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ Native NINA plugin for Sony mirrorless/DSLR bodies over the Sony MTP interface,

## Installation

Download a maintained build from [this fork’s releases](https://github.com/shurkanTwo/NINASonyCameraPlugin/releases) and follow the **[manual installation instructions](INSTALLATION.md)**. The current release, **1.0.0.7**, is a regular GitHub release marked Latest; physical-camera validation remains outstanding. It replaces the upstream plugin; install one copy only.
Download a maintained build from [this fork’s releases](https://github.com/shurkanTwo/NINASonyCameraPlugin/releases) and follow the **[manual installation instructions](INSTALLATION.md)**. The current release, **1.0.0.5**, is a regular GitHub release marked Latest; physical-camera validation remains outstanding. It replaces the upstream plugin; install one copy only.

The N.I.N.A. plugin manager currently distributes the upstream release. This fork has not been submitted as its update source.

Expand Down Expand Up @@ -124,11 +124,11 @@ Menu locations and labels vary by Sony model; consult your camera's manual if th

## Metadata

- Version: 1.0.0.7
- Version: 1.0.0.5
- Author: @dougforpres
- Maintainer of this fork: [@shurkanTwo](https://github.com/shurkanTwo)
- Contributors include [@totoantibes](https://github.com/totoantibes), [@christian-photo](https://github.com/christian-photo), and [@naixx](https://github.com/naixx); original commit authorship is preserved.
- Review and release scope: [session review and 1.0.0.7](docs/SESSION-REVIEW-1.0.0.7.md), [1.0.0.6 corrections](docs/RELEASE-REVIEW-1.0.0.6.md), and [upstream integration history](docs/UPSTREAM-REVIEW-1.0.0.5.md)
- Review and release scope: [session review](docs/SESSION-REVIEW.md), [corrective review](docs/CORRECTIVE-REVIEW.md), and [upstream integration history](docs/UPSTREAM-REVIEW.md)
- Minimum NINA version: 3.2.0.3001
- License: MPL-2.0 (https://www.mozilla.org/en-US/MPL/2.0/)
- Original author’s homepage: https://retro.kiwi
Expand Down
8 changes: 4 additions & 4 deletions docs/RELEASE-REVIEW-1.0.0.6.md → docs/CORRECTIVE-REVIEW.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Corrective review: 1.0.0.6 community release
# Corrective review of the upstream integration

This release addresses all four findings from the follow-up audit of 1.0.0.5. It retains that release's original contributor history and adapted work. @dougforpres remains the original author; @totoantibes's PR #13 remains credited as the source of the native stability and shutter retry work. The original MPL-2.0 license is unchanged.
The corrections at [`0341e8f`](https://github.com/shurkanTwo/NINASonyCameraPlugin/tree/0341e8f9cf6e5e1c5b13352d485285e00300df0e) address all four findings from the follow-up audit of the initial integration at `413290f`. They are included in the consolidated 1.0.0.5 release, retaining the original contributor history and adapted work. @dougforpres remains the original author; @totoantibes's PR #13 remains credited as the source of the native stability and shutter retry work. The original MPL-2.0 license is unchanged.

## Corrections

Expand All @@ -17,8 +17,8 @@ Regression cases cover blocked preflight with native cancel both enabled and dis

The Windows workflow runs the portable capture/native-policy suite, ARW temperature suite, full-plugin simulator integration suite and release build before packaging the manual-install DLL/ZIP and SHA256 checksums. SOURCE.txt records the exact source commit and build run.

These checks do not establish physical Sony camera, USB/MTP, lens, LiveView or complete Sky Flat compatibility. The release was initially published as a preview and later marked regular/Latest with unchanged binaries. Version 1.0.0.7 subsequently corrects metadata and documentation; physical-camera validation is still required. Experimental USB reconnection, retries of still-running timed-out calls, forced cancellation of busy captures and closed WIP #12 video intervals remain deferred.
These checks do not establish physical Sony camera, USB/MTP, lens, LiveView or complete Sky Flat compatibility. The [session review](SESSION-REVIEW.md) subsequently corrected the exposure-failure classification, metadata and documentation. All of these fixes are included in the consolidated release; physical-camera validation is still required. Experimental USB reconnection, retries of still-running timed-out calls, forced cancellation of busy captures and closed WIP #12 video intervals remain deferred.

## Installation and history

Use [INSTALLATION.md](../INSTALLATION.md) and install one copy of the maintained plugin. This fork is not an automatic update source in NINA's plugin manager. Version 1.0.0.5 remains available as historical release evidence; its follow-up findings and these corrections are recorded explicitly rather than replacing its assets or tag.
Use [INSTALLATION.md](../INSTALLATION.md) and install one copy of the maintained plugin. This fork is not an automatic update source in NINA's plugin manager. Earlier build sources remain available through the immutable commit links above. Intermediate release entries and tags are retired in favor of one combined package; users of any earlier maintenance build should download the consolidated package again and replace the DLL manually.
Loading