Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
1793349
add guard for cancel
shurkanTwo Dec 6, 2025
44f5e4e
Serialize capture cancel handling
shurkanTwo Dec 7, 2025
161eff2
disable native cancel
shurkanTwo Dec 7, 2025
dacaeee
add option to toggle native cancel
shurkanTwo Dec 7, 2025
66e83ae
add text to checkobox
shurkanTwo Dec 7, 2025
b8bd052
Add native cancel option and improve soft cancel handling
shurkanTwo Dec 7, 2025
ce95fbd
Guard start when camera reports busy to avoid native crashes
shurkanTwo Dec 7, 2025
96980bb
Do not start new exposure while camera is busy
shurkanTwo Dec 7, 2025
e8e4dbd
move to constants
shurkanTwo Dec 8, 2025
daafce9
replace SonyException with TaskCanceledException
shurkanTwo Dec 8, 2025
29dcfb0
Add native cancel hint and start/abort safeguards
shurkanTwo Dec 8, 2025
1d7cdab
undo csharpening
shurkanTwo Dec 8, 2025
886f2c2
Handle start/reset and soft cancel
shurkanTwo Dec 8, 2025
d035092
Simplify cancel constants and setting lookup
shurkanTwo Dec 8, 2025
e0e8601
Simplify StartExposure cancel path
shurkanTwo Dec 8, 2025
be44616
move to static var
shurkanTwo Dec 8, 2025
fca3e40
move native cancel capture hint
shurkanTwo Dec 8, 2025
d6db836
Fix EnableNativeCancel nameof reference
shurkanTwo Dec 8, 2025
d178046
Inject plugin GUID instead of reflecting
shurkanTwo Dec 8, 2025
77cd0c5
Warn when native cancel fails and clarify option text
shurkanTwo Dec 8, 2025
1788191
Warn on soft cancel when native cancel disabled
shurkanTwo Dec 8, 2025
7cb640a
Rename TryCancelCapture and remove redundant guards
shurkanTwo Dec 8, 2025
96fbb68
Recheck status after cancel attempt regardless of success
shurkanTwo Dec 8, 2025
340b7d4
Reuse cancel helper for pre-start reset
shurkanTwo Dec 8, 2025
5aefd72
undo formatter changes
shurkanTwo Dec 8, 2025
6df3c41
Handle unknown capture status responses
shurkanTwo Dec 8, 2025
f5e93df
refactor cancelation logic
shurkanTwo Dec 8, 2025
d0b12ac
use live value of cancelcapture option
shurkanTwo Dec 8, 2025
19a0b2a
Prevent deadlock during rapid start and cancel
shurkanTwo Dec 8, 2025
8d4a65f
Show abort warning only once per exposure
shurkanTwo Dec 8, 2025
b5f1288
Revert "Show abort warning only once per exposure"
shurkanTwo Dec 8, 2025
90bd2be
return false instead of throwing for HasSetupDialog
christian-photo Mar 6, 2026
f3a8780
Free the driver's image buffers instead of leaking one per frame
totoantibes Sep 18, 2026
b441b73
fix: serialize capture starts and aborts
shurkanTwo Oct 3, 2026
e1e8854
docs: remove camera testing checklist
shurkanTwo Oct 3, 2026
f6c9688
feat: add Sony camera simulator
shurkanTwo Oct 3, 2026
e03c38e
test: return concrete RAW exposure from mock
shurkanTwo Oct 3, 2026
7f7ddee
fix: preserve connections and completed captures
shurkanTwo Oct 3, 2026
d2a2d37
docs: explain how to launch lens learning
shurkanTwo Oct 3, 2026
84e6047
docs: explain how to keep captures on SD card
shurkanTwo Oct 3, 2026
a795857
test: isolate capture test source files
shurkanTwo Oct 3, 2026
3f29cd9
test: carry capture suite isolation into simulator
shurkanTwo Oct 3, 2026
7bbbf1a
fix: report Sony camera temperature from ARW
shurkanTwo Oct 3, 2026
09b867f
Integrate capture safeguards and Sony simulator from upstream PRs #10…
shurkanTwo Oct 17, 2026
7f1faa2
Integrate Christian Palm’s focuser capability fix from upstream PR #11
shurkanTwo Oct 17, 2026
a85228b
Integrate Robert Hasson’s native image buffer cleanup from upstream P…
shurkanTwo Oct 17, 2026
1a2148b
Integrate lens learning documentation from upstream PR #16
shurkanTwo Oct 17, 2026
1d51463
Integrate SD card documentation from upstream PR #17
shurkanTwo Oct 17, 2026
0140edc
Integrate camera temperature reporting from upstream PR #18
shurkanTwo Oct 17, 2026
f6a9ac5
Adapt reviewed native stability fixes without unsafe recovery
shurkanTwo Oct 17, 2026
fdd3bb7
Prepare community preview release and manual installation guide
shurkanTwo Oct 17, 2026
b0be2f1
Verify learned Bulb selection and publish completed images atomically
shurkanTwo Oct 17, 2026
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
94 changes: 57 additions & 37 deletions .github/workflows/dotnet.yml
Original file line number Diff line number Diff line change
@@ -1,46 +1,66 @@
# This workflow will build a .NET project
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-net

name: Build Driver DLL
name: Build and test Sony Camera Plugin

on:
push:
branches: [ "master" ]
branches: [master]
pull_request:
branches: [ "master" ]
branches: [master]
workflow_dispatch:

permissions:
contents: read

jobs:
build:
runs-on: windows-latest

timeout-minutes: 20
steps:
- uses: actions/checkout@v3
# - name: Setup .NET
# uses: actions/setup-dotnet@v3
# with:
# dotnet-version: 4.8.1

- name: Setup MSBuild
uses: microsoft/setup-msbuild@v1.1

- name: Setup NuGet
uses: nuget/setup-nuget@v1.2.0

- name: Navigate to Workspace
run: cd $GITHUB_WORKSPACE

- name: Create Build Directory
run: mkdir _build

- name: Restore Packages
run: nuget restore NINASonyCameraPlugin.sln

- name: Build
run: msbuild.exe NINASonyCameraPlugin.sln /nologo /nr:false /p:DeployOnBuild=true /p:DeployDefaultTarget=WebPublish /p:WebPublishMethod=FileSystem /p:DeleteExistingFiles=True /p:platform="Any CPU" /p:configuration="Release" /p:PublishUrl="../_build"

- name: Upload SonyCamera DLL
uses: actions/upload-artifact@v4
with:
name: SonyCamera-DLL
path: |
**/bin/Release/**/NINA.RetroKiwi.Plugin.SonyCamera.dll
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- uses: actions/setup-dotnet@a98b56852c35b8e3190ac28c8c2271da59106c68 # v6.0.0
with:
dotnet-version: 8.0.x

- name: Test capture, simulator and native call policies
run: dotnet test Tests/CaptureController.Tests.csproj --configuration Release --logger "trx;LogFileName=capture.trx"

- name: Test Sony camera temperature metadata
run: dotnet test Tests/Temperature/Temperature.Tests.csproj --configuration Release --logger "trx;LogFileName=temperature.trx"

- name: Test plugin integration on Windows
run: dotnet test Tests/PluginIntegration/PluginIntegration.Tests.csproj --configuration Release --logger "trx;LogFileName=integration.trx"

- name: Build release plugin
run: dotnet build NINASonyCameraPlugin.sln --configuration Release -p:InstallPluginOnBuild=false

- name: Package manual installation release
shell: pwsh
run: |
$dll = Get-Item 'bin/Release/net8.0-windows10.0.17763.0/NINA.RetroKiwi.Plugin.SonyCamera.dll'
$version = $dll.VersionInfo.FileVersion
$package = New-Item -ItemType Directory -Path 'release-package'
$assets = New-Item -ItemType Directory -Path 'release-assets'
Copy-Item $dll.FullName $package.FullName
Copy-Item 'LICENSE.txt', 'INSTALLATION.md' $package.FullName
"Original author: Doug Henderson`nMaintained by: Lucas Lepski and contributors`nLicense: MPL-2.0`nSource: https://github.com/$env:GITHUB_REPOSITORY/tree/$env:GITHUB_SHA`nBuild: https://github.com/$env:GITHUB_REPOSITORY/actions/runs/$env:GITHUB_RUN_ID`n" | Set-Content "$package/SOURCE.txt" -Encoding utf8
Compress-Archive -Path "$package/*" -DestinationPath "$assets/SonyCameraPlugin-$version.zip"
Copy-Item $dll.FullName $assets.FullName
$hashes = Get-ChildItem $assets.FullName -File | Sort-Object Name | ForEach-Object {
$hash = (Get-FileHash $_.FullName -Algorithm SHA256).Hash.ToLowerInvariant()
"$hash $($_.Name)"
}
$hashes | Set-Content "$assets/SHA256SUMS.txt" -Encoding ascii

- name: Upload verified release files
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
with:
name: SonyCamera-Release
path: release-assets/*
if-no-files-found: error

- name: Upload test results
if: always()
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
with:
name: SonyCamera-TestResults
path: Tests/**/TestResults/*.trx
if-no-files-found: warn
19 changes: 18 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,21 @@
# Sony Camera Plugin
# Sony Camera Plugin

## 1.0.0.5 — community preview

First maintained release from [Lucas Lepski’s fork](https://github.com/shurkanTwo/NINASonyCameraPlugin), preserving Doug Henderson’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 (Lucas Lepski, upstream #10/#15).
- Report the latest downloaded ARW’s Sony camera temperature in NINA and that image’s metadata; missing readings remain unavailable (Lucas Lepski, #18 / issue #1).
- Release native image and metadata allocations after copying, including error paths, avoiding a per-frame unmanaged memory leak (Robert Hasson, #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 Robert Hasson’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 Palm, #11), improve focuser state cleanup and notifications (Robert Hasson, #13).
- Document lens-learning tools and camera SD-card saving (Lucas Lepski, #16/#17 / issues #9/#3).
- Add Windows-tested manual-install ZIP/DLL packaging, checksums, source/build provenance, and installation/rollback instructions.

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).

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.

## 1.0.0.4
* Added the `UpdateSubSampleArea` implementation and bumped the minimum NINA version so the plugin loads in 3.2.
Expand Down
Loading