Skip to content

Releases: js051/open-eos-control

Open EOS Control 0.12.0 Development Preview

Choose a tag to compare

@github-actions github-actions released this 07 Oct 02:38
95d6def

Open EOS Control v0.12.0 Development Preview

繁體中文 | English

繁體中文

0.12.0 讓 Android 使用者依日期、評分與已觀察資料夾挑選素材,離線查看最近下載紀錄,並改善連線恢復、停錄後查找影片及原檔保存。這組新使用者功能採 minor 版號,仍是供測試與回饋的 Development Preview,不建議用於正式拍攝流程。

使用者可見變更

  • 挑出要保存的素材:日期範圍包含起訖日,採畫面標示的裝置時區;可搭配評分、類型及資料夾篩選,評分亦可排序。未知資料維持明確區分,隱藏的已選項目保留並提示批次範圍。篩選只作用於已載入素材,不代表全卡已掃描;素材日期也不一律是原始拍攝時間。
  • 確認素材回覆:Bridge metadata 回覆必須屬於要求的素材;評分寫入另須確認要求的星等,才顯示成功。無效評分維持未知,不能變成 0 星,也不會因無法確認而自動重送相機寫入。
  • 看清來源資料夾:Android 與 Desktop Bridge 提供可觀察的資料夾來源。Android USB/PTP 只用本輪已取得的 StorageID 與 ObjectInfo 父鏈,不增加資料夾查詢、不推測 SD/CF 卡槽或提供拍攝目錄控制;未知資料夾的素材仍可瀏覽。
  • 連線與停錄後恢復:修改等待中的連線/Bridge 掃描設定會取消舊工作,提供明確取消、錯誤說明與手動重試。Stop 正常確認非錄影後,有界查找新可見影片;尚未找到時可只讀重查,再接續預覽與保存,不重播 Start/Stop。新可見影片不保證由本次錄影產生。
  • 保留下載結果及清理風險:離線查看最近 100 筆實際開始的原檔下載;清除只移除紀錄。SAF 取消/失敗改用文件刪除契約清理本次輸出;清理未確認時停止自動重試並保留警告。完成的原檔不因後續取消或紀錄寫入失敗而刪除,未開始的批次項目不冒充已下載。
  • 預覽導航:離線相簿可開啟既有示意預覽,支援 RAW/JPEG 篩選後的前後導航及返回;這不是離線 RAW 解碼。連線相簿遇到不支援的鄰項或過期導航清單時保留目前 viewer,不清空或跳錯素材。

升級注意

  • Android 版本 0.12.0/versionCode 28,沿用 Preview package 與固定開發簽章;更新需相同 package/簽章,與隔離 .debug 測試 App 分開。
  • 下載紀錄可讀 schema 1/2,後續寫入 schema 2。僅支援 schema 1 的較早開發建置遇到 schema 2 只會保留資料並提示無法讀取,不保證無損降版。紀錄不驗證目的檔仍存在或來源 checksum,也不會回補舊下載、跨程序續傳、去重或自動背景匯入。
  • iOS 同步為 0.12.0/build 26,仍提供原始碼與 Simulator 驗證,沒有已簽署 IPA;版號同步不表示新增 Android 流程已有 iOS/PC 等效介面。Camera Import artifact 1.1.0/wire 1.0 與 Serein 契約不變。

驗收與限制

  • 功能整合來源 PR #209 的 3bf3eaf 在 CI 37530855681 首輪通過:API34/36 原始 XML 各 291/291、各含六個 SAF 系統文件旅程;本地同來源 839 個 App JVM、14 個 contract 測試、AndroidTest 編譯與 Lint(0 fatal/error)均通過。整合樹已由 main acceptance 37535119913 接受為 def552c。這些是版本號更新前的功能整合證據。
  • 最終版本的 PR head、CI run、accepted main 與六個 payload 的大小/hash 由 BUILD-PROVENANCE.json 記錄。完成狀態須核對版本 PR 的 ci-complete、main acceptance 及 Release 的 release-published,不能由本文存在推定。版本檔按路徑選擇 Android、Bridge、Windows、Simulator、Camera Import 與 iOS App/UI gate;未選取的 standalone iOS Core 不當成重新執行。
  • 新增證據來自 synthetic HTTP/PTP、Android emulator 與系統 DocumentsUI/跨 UID test provider;不代表實體 EOS、手機、USB driver、第三方 provider、持續 URI grant 或程序被終止後的恢復已驗收。R6 Mark III 大卡、真實弱網、其他機型/韌體與光學對焦仍需對應真機證據。
  • 關閉仍在載入的 display 預覽,不會取消該 display HTTP 工作。 UI 關閉後 MEDIA 仍可能忙碌,較晚的失敗可能顯示為全域媒體錯誤;可等待結束或 Disconnect/重新連線。此限制未由本版導航修正解決;關閉 viewer 與取消原檔下載仍是不同操作。
  • USB 修正限已觀察資料夾與卡片媒體讀取/串流的 session 邊界;較廣的 storage snapshot/error 過期發布限制仍未修復。同 backend 的 close/initialize 測試不能宣稱重現一般 App reconnect 故障。相機命令確認、狀態、新可見素材與實際曝光/光學清晰也不等價。
  • 沒有新增完整 RAW 解碼/顯影、Camera Connect 藍牙配對或全平台相簿功能一致性。原檔長度一致不代表來源 checksum 已驗證,第三方相簿也不保證解碼所有 RAW。永久斷網或程序終止後仍須在有停止警告時確認機身狀態。

發行檔

發行檔由 accepted main 的 immutable candidate 推進,六個 payload 加兩個核對檔合計八個資產:

  • Android:open-eos-control-android-0.12.0-debug.apk
  • Windows:open-eos-control-bridge-windows-x64-0.12.0.exe
  • Python:open_eos_control_bridge-0.12.0-py3-none-any.whl、open_eos_control_bridge-0.12.0.tar.gz
  • Camera Import:open-eos-camera-import-contract-1.1.0.zip、open-eos-camera-import-contract-kotlin-1.1.0.jar
  • 來源及六個 payload 的大小/hash:BUILD-PROVENANCE.json;下載核對:SHA256SUMS.txt

English

0.12.0 adds an Android workflow for selecting media by date, rating and observed folder, checking recent downloads offline, and recovering through connection, post-recording review and original-file saving. These user-visible capabilities warrant a minor version. This remains a Development Preview for testing and feedback, unsuitable for production camera workflows.

What changes

  • Select media to save: inclusive date ranges use the displayed device time zone and combine with rating, type and folder filters; ratings can also be sorted. Unknown metadata stays distinct, while hidden selections remain selected with a batch-scope warning. Filters cover loaded items, not a verified whole-card scan, and media dates are not always original capture times.
  • Check media replies: Bridge metadata responses must match the requested item; rating writes must also confirm the requested value before showing success. Invalid ratings remain unknown rather than becoming zero stars, and an unconfirmed reply does not cause an automatic camera-write replay.
  • Identify observed folders: Android and Desktop Bridge expose available folder provenance. Android USB/PTP uses only StorageIDs and ObjectInfo parent associations already observed in the current listing, without extra folder queries, inferred physical card slots or recording-directory controls. Items with unknown folders remain browseable.
  • Recover connections and review recording: editing pending connection or Bridge-scan settings cancels the abandoned attempt. Accessible cancellation, localized errors and explicit retry support recovery. A successfully confirmed non-recording Stop starts bounded lookup for a newly visible video; read-only retry, preview and saving do not replay Start/Stop. A newly visible video does not prove that this recording created it.
  • Keep download outcomes and cleanup warnings: view the latest 100 started original-file attempts offline; clearing removes records only. Interrupted SAF outputs use the document-deletion contract. Unconfirmed cleanup stops automatic retry and remains visible in history; finalized originals survive later cancellation or history-write failure. Unstarted batch items are not reported as downloads.
  • Navigate previews: offline gallery items open the existing placeholder with RAW/JPEG filtered previous/next navigation and return; this adds no offline RAW decoding. Connected viewers retain the current item when a neighbor cannot be previewed or the navigation list is stale.

Upgrade notes

  • Android is 0.12.0 / versionCode 28, retaining the Preview package and persistent development signer. In-place updates require the same package/signer and remain separate from isolated .debug test builds.
  • Download history reads schemas 1 and 2 and writes schema 2. Earlier development builds that only support schema 1 preserve schema-2 data and warn that it cannot be read; lossless downgrade is not guaranteed. History does not verify continued file existence or source checksums and adds no old-download backfill, process-resumable transfers, deduplication or automatic background import.
  • iOS is 0.12.0 / build 26, supplied as source and Simulator evidence without a signed IPA. Matching versions do not establish Android/iOS/PC feature parity. Camera Import artifact 1.1.0 / wire 1.0 and the Serein contract are unchanged.

Evidence and limitations

  • The functional integration in PR #209, head 3bf3eaf, passed CI 37530855681 on its first attempt: raw API34/36 XML each recorded 291/291 passes, including six SAF system-document journeys per API. Matching-source local validation passed 839 App JVM tests, 14 contract tests, AndroidTest compilation and Lint with zero fatal/errors. Main acceptance 37535119913 accepted that tree as def552c. These results describe the functional integration before the version-number update.
  • BUILD-PROVENANCE.json records the final version-PR head, CI run, accepted main and six payload sizes/hashes. Completion requires the version PR's ci-complete, main acceptance and Release's release-published; this document alone establishes none of those states. Changed-path version gates include Android, Bridge, Windows, Simulator, Camera Import and iOS App/UI; a skipped standalone iOS Core job is not a rerun of that suite.
  • New evidence uses synthetic HTTP/PTP peers, Android emulators and system DocumentsUI with a separate-UID test provider. It does not validate physical EOS cameras, phones, USB drivers, third-party providers, persistent URI grants or process-death recovery. R6 Mark III large cards, real weak networks, other models/firmware and optical focus still need corresponding physical evidence.
  • Closing a still-loading display preview does not cancel its display HTTP work. MEDIA may remain busy after dismissal, and a late failure may appear globally. Wait for completion or Disconnect/reconnect. The navigation fixes do not resolve this limitation; closing the viewer and cancelling an original download remain separate actions.
  • USB changes cover observed folder provenance and card-media/stream session boundaries. Broader stale storage-snapshot/error publication remains unresolved. Same-backend close/initialize tests do not establish an ordinary App reconnect defect. Command acknowledgement, camera status, newly visible media and actual exposure/optical sharpness are separate evidence.
  • No complete RAW decoding/development, Camera Connect Bluetooth pairing or cross-platform gallery parity is added. Matching file lengths do not verify a source checksum; third-party galleries may not decode every RAW format. After permanent network loss or process death, check the camera when a stop warning remains.

Distribution

Distribution uses the exact accepted-main immutable candidate. The eight assets are:

  • Android: open-eos-control-android-0.12.0-debug.apk
  • Windows: open-eos-control-bridge-windows-x64-0.12.0.exe
  • Python: open_eos_control_bridge-0.12.0-py3-none-any.whl, open_eos_control_bridge-0.12.0.tar.gz
  • Camera Import: open-eos-camera-import-contract-1.1.0.zip, open-eos-camera-import-contract-kotlin-1.1.0.jar
  • BUILD-PROVENANCE.json records the source and six payload sizes/hashes; SHA256SUMS.txt verifies downloads.

Open EOS Control 0.11.0 Development Preview

Choose a tag to compare

@github-actions github-actions released this 05 Oct 03:01
3af7df4

Open EOS Control v0.11.0 Development Preview

繁體中文 | English

繁體中文

0.11.0 把 Android「拍攝確認 → 最近素材 → 全螢幕預覽 → 原檔保存」接成可恢復的操作旅程,新增預覽內的保存進度、取消、位置及明確重試,因此採 minor 版號。同時修正 Android、Desktop Bridge/PC 與 iOS 的部分命令及停止恢復流程。這仍是 Development Preview,用於測試與回饋,不建議用於正式拍攝流程;不代表整個 App、所有 transport 或 Camera Connect 全功能已完成。

Android

  • 拍照命令已確認後,獨立狀態讀回失敗不再抹去先前確認;仍可有限查找最近素材,並保留狀態警告。尚未出現新素材時提供只讀重查,不再拍一次,不把舊圖標成這次新照片。
  • 全螢幕預覽內直接顯示原檔保存進度、取消、保存位置、失敗與明確重試。忙碌時阻止重複傳輸;回饋綁定素材 ID、保存請求與相機連線,避免同名檔或舊回應冒用另一筆結果。
  • 已知素材的 display 預覽可與相簿列檔並行,不必等整張卡讀完。從拍後確認進入相簿時,缺少已知素材會補查;部分列檔尚未看到目標,不會直接關閉使用者已開啟的預覽。保存保留原先取消並等待列檔結束的策略。
  • 相機事件的狀態/能力讀取短暫失敗後,保留尚待同步的事件,以有上限的退避重讀,不重播相機寫入。媒體 picker 的結果綁定原 session;同 ViewModel 重建可保留請求,舊程序/舊相機結果不會觸發新的檔案傳輸。
  • direct CCAPI 避免模糊失敗後自動重播寫入;未確認的 full-press/Bulb release 保留停止責任及只停止的恢復入口。Live View 取消、multipart 清理、首影格及被阻塞的讀取改善,舊 session 回應不覆寫替代連線。
  • Desktop Bridge Bulb 保留同 session 的停止責任,未知結果時阻止不安全的新操作。Stop 失敗後額外 status 補讀有 5 秒 whole-call 上限,逾時仍保留風險並可再 Stop 或 Disconnect;原 Stop 請求本身的保護與期限沒有縮短。
  • CCAPI/Bridge 原檔下載依已知媒體及 HTTP 長度拒絕空白或截斷檔。沿用既有 MediaStore/SAF 原檔流程、暫存清理及不覆寫命名;不轉碼、不自動刪除相機原檔。
  • 修正 Android API 26–32 的 USB host 已接收影像預覽使用 API33 才有的 InputStream.readNBytes 問題,改用相容的有界讀取,保留大小上限、取消檢查及既有 JPEG 首尾/PNG 簽章及結尾標記檢查;這不等同解碼完整性。依據為 API 契約、Lint、bytecode 與 15 項 JVM 案例;沒有新增 API26 裝置或實體 USB 相機驗收。

Desktop Bridge/PC

  • CCAPI Bulb 在開始送出前保存精確停止責任。開始或停止回應不明時阻止不安全寫入,持續提供原 session 的 stop-only retry,不重新開始曝光。
  • 停止警告跨模式變更保留;Disconnect 報告尚未確認的 release,上一相機警告與新連線分開。窄螢幕警告與錯誤訊息不再遮住 Stop,Start 的可用狀態與 handler 一致。
  • 這些恢復保證限於已驗證的 CCAPI/Bridge 路徑,不能延伸成所有 gphoto2/EDSDK engine 都有相同保證。

iOS

  • direct CCAPI/Bridge 在模糊 Bulb 開始或停止失敗後保留 session-owned release 責任,提供不受模式/能力切換隱藏的 stop-only recovery。取消及晚回應不能把責任帶入替代連線;目前與上一連線警告分開。
  • 可比較的 identity Content-Length 回應增加截斷檢查,避免 URLSession 將不完整 PUT 回應當成成功;不新增自動重送。HEAD、bodyless、encoded 與 Transfer-Encoding 回應不套用錯誤的解碼長度比較。
  • 連線 sheet 的 Stop/Disconnect 各有可達空間,避免安全控制重疊。既有背景曝光政策與正常開始的 120 秒 resource 期限不變;本版不包含短 idle deadline 實驗。

驗證

  • Android 功能 PR #203 以 source head 42066cb69ea6f632eafd6829f7f4faf290dd0ec6 通過 CI 37236220311,並以相同 tree 進入 accepted main b61c8372414474fbbce934d1eb5a636717c9a737(Main acceptance 37238311008)。API 34/36 各 211/211,0 failure/error/skip,均包含本輪 13 個拍後確認、預覽 UI 與保存旅程案例。
  • 同一已核對來源的本地 App JVM 649/649;Lint 8.8.2、0 errors/58 warnings/2 information,四個 Compose/Lifecycle registry 另以 canary 驗證可執行。這些是本地證據:目前 CI 沒有 Android Lint step。原聚合 launcher 的終局 exit 未取得;Lint 在相同 frozen source 補跑的 exit 為 0,不宣稱原整體 aggregate exit 0。
  • iOS PR #201 head 419ed6372ae902080263025cd3d4e816a5c2950c 通過 CI 37238805887:Core 228/228、App 90/90、UI 15/15,全部 0 failure;UI 為 14 個流程方法及 1 個含 14 邊界案例的幾何方法。這些均為本次 exact-head 實跑。相同 tree 4ed4b969625cc7f6165e57a5133ca4d0e76feae9 已 squash 至 main d70de29115320570d5f8fef3fcfc8ffcc79d0e4b,並通過 Main acceptance 37240097659。
  • 最終發布來源的 main commit、版本 PR head/CI run 及六個 payload 的大小/hash 由 BUILD-PROVENANCE.json 記錄,SHA256SUMS.txt 提供下載核對。實際完成狀態以版本 PR、main acceptance 與 Release 的結果核對。版本 PR 若按路徑刻意 skip standalone ios-core,只引用已通過且逐 blob 相同 Core source 的先前 CI;iOS App/UI build 不等於重新執行 standalone Core suite。
  • 全部新增驗證為 synthetic HTTP/protocol fixture、Android emulator、macOS 或 iPhone Simulator;本輪沒有新增實體 EOS/手機/USB 或光學對焦驗證。歷史裝置紀錄保留原日期、build 與操作範圍。

已知限制

  • 關閉仍在載入的 display 預覽不會取消該 display HTTP 工作。 UI 會關閉,但 MEDIA 可持續忙碌直到請求結束;較晚的 503 可顯示為全域媒體錯誤。可等待請求結束或 Disconnect/重新連線恢復。這個既有缺口沒有在本版修復;沒有目前證據顯示它會隱式重播快門或毀損原檔。它與「取消原檔保存」是不同操作,關閉預覽也不隱式取消正在進行的原檔下載。
  • 命令 ACK、相機狀態、新可見素材 ID 與真正曝光/光學清晰是不同證據。不同 ID 不確證由這一次快門產生。最近查找的 8 個候選不是 HTTP 總請求上限。
  • R6 Mark III 大卡、實際弱網、One-Shot/Servo、相機端停止結果、持續幀率、其他韌體/機型、實體 iPhone/USB 及真正 SAF provider/跨 App grants 仍待對應驗證。永久斷網或程序終止後不能保證相機已停止曝光;有停止警告時應確認機身。
  • 未新增跨程序可恢復下載、完整 RAW 解碼/顯影、拍後自動傳圖、藍牙配對、日期區間/評分篩選或所有平台同等相簿體驗。長度一致不代表來源 checksum 已驗證;第三方相簿仍不保證解碼所有 RAW。
  • Camera Import artifact 1.1.0/wire 1.0 與 Serein 契約不變。

安裝與發行檔

  • Android:open-eos-control-android-0.11.0-debug.apk,versionCode=27。維持既有 Preview package 與固定開發簽章,更新條件是相同 package/簽章;與隔離 .debug 測試 App 分開。
  • PC:open-eos-control-bridge-windows-x64-0.11.0.exe、open_eos_control_bridge-0.11.0-py3-none-any.whl、open_eos_control_bridge-0.11.0.tar.gz。
  • 契約:open-eos-camera-import-contract-1.1.0.zip、open-eos-camera-import-contract-kotlin-1.1.0.jar。
  • 六個 payload 另附 BUILD-PROVENANCE.json 與 SHA256SUMS.txt,合計八個 Release 檔案。iOS 版本 0.11.0/build 25,提供原始碼及 Simulator 驗證,沒有可直接安裝的已簽署 IPA。
  • 專用 Actions workflow 由 accepted main 的 immutable candidate promotion 發布;最終來源及六個 payload 的 hash 見 BUILD-PROVENANCE.json,下載檔案以 SHA256SUMS.txt 核對,不手動重建替換資產。

English

0.11.0 connects the Android capture-review, recent-media, full-screen-preview and original-file-save flow, adding in-viewer progress, cancellation, destination and explicit retry. That coherent user-visible capability warrants a minor version. It also improves selected Android, Desktop Bridge/PC and iOS command/recovery paths. This remains a Development Preview for testing and feedback, unsuitable for production camera workflows; it does not establish whole-app, every-transport or full Camera Connect parity.

Android

  • Preserve an acknowledged shutter command when its separate status read fails, continue bounded recent-media lookup, and retain the status warning. A read-only retry can look again for a not-yet-visible item without another shutter command or relabeling an old image as this capture.
  • Show original-file progress, cancellation, destination, failure and explicit retry inside the full-screen viewer. Busy controls prevent duplicate transfers; feedback belongs to the exact media ID, request and camera session rather than a filename alone.
  • Display a known item while album listing continues, including a slow full-card listing. Refresh when the known capture is missing from the album, and do not close an explicitly opened preview merely because an intermediate page lacks it. Saving retains the existing cancel-and-join listing policy.
  • Retain consumed camera-event hints until authoritative status/capability refresh succeeds, retrying reads with capped backoff rather than replaying camera writes. Picker results belong to the original session; same-ViewModel recreation preserves requests, while stale process/session results cannot start transfer I/O.
  • Direct CCAPI mutations are not automatically replayed after ambiguous failures. Unconfirmed full-press/Bulb releases retain stop responsibility and stop-only recovery. Live View cancellation, multipart cleanup and blocked-read handling improve without allowing stale callbacks to replace a new session.
  • Desktop Bridge Bulb retains same-session stop responsibility and blocks unsafe new operations while the result is unknown. Only the additional status read after a failed Stop has a five-second whole-call budget; expiry preserves the warning and permits another Stop or Disconnect. The protected Stop request itself keeps its existing budget.
  • CCAPI/Bridge original downloads reject empty or truncated files against known media/header lengths. Existing MediaStore/SAF original-byte, partial-cleanup and non-overwriting behavior remains; no transcoding or automatic deletion of camera originals is added.
  • Replace the API33-only InputStream.readNBytes call in USB host-capture image preview with a compatible bounded reader for Android API 26–32, retaining size limits, cancellation checks and existing JPEG boundary and PNG signature/end-marker checks, which do not establish decoding integrity. Evidence is API-contract, Lint, bytecode and 15 JVM cases; no API26-device or physical USB-camera validation is added.

Desktop Bridge/PC

  • Record exact CCAPI Bulb release responsibility before sending Start. Ambiguous starts/stops block unsafe mutations and retain same-session stop-only retry without starting another exposure.
  • Keep recovery reachable across mode changes. Disconnect reports unconfirmed release and separates the previous-camera warning from a replacement session. Narrow-screen warning/error layout keeps Stop reachable, with consistent disabled Start presentation and handling.
  • These tested CCAPI/Bridge paths do not establish equivalent safety guarantees for every gphoto2/EDSDK engine.

iOS

  • Direct CCAPI/Bridge retain session-owned release responsibility after ambiguous Bulb starts or failed stops. Stop-only recovery remains available across mode/capability changes; cancellation and late responses cannot transfer old responsibility to a new connection. Current- and previous-session warnings remain distinct.
  • Validate comparable identity Content-Length responses so a truncated PUT body cannot be accepted solely because URLSession returned HTTP success, without adding mutation replay. HEAD, bodyless, encoded and Transfer-Encoding responses avoid invalid decoded-length comparisons.
  • Allocate reachable space to Stop and Disconnect in the connection sheet. Existing background-exposure behavior and the normal Start's 120-second resource deadline remain unchanged; the short idle-deadline experiment is excluded.

Evidence

  • Android PR #203, source 42066cb69ea6f632eafd6829f7f4faf290dd0ec6, passed CI 37236220311. Its identical tree was accepted as main b61c8372414474fbbce934d1eb5a636717c9a737 by Main acceptance 37238311008. API 34 and 36 each passed 211/211, with zero failures/errors/skips, including all 13 capture-review, viewer-UI and save-journey cases.
  • Local validation of t...
Read more

Open EOS Control 0.10.0 Development Preview

Choose a tag to compare

@github-actions github-actions released this 08 Sep 03:00
1164d36

Open EOS Control v0.10.0 Development Preview

繁體中文 | English

繁體中文

0.10.0 新增 Android 直接下載至系統相簿的操作,因此採 minor 版號。仍是 Development Preview,不是穩定版;本輪只推進 Android,不代表所有相機功能已完成。

Android 變更

  • Android 10 以上,系統認識的照片/影片原檔預設存到 Pictures/<相機型號>/。在 HTC 上查證 Camera Connect 的 JPEG/MP4 路徑為 Pictures/Canon EOS R6 Mark III/,本版依此對齊;不代表所有手機或 Camera Connect 版本皆相同。
  • 單張與多選使用循序、可取消的下載流程,完成後顯示位置。待完成檔案先隱藏,串流及長度驗證成功才公開;失敗/取消清除該次暫存,重名不覆蓋既有照片。保留原始位元組與內嵌 metadata,不轉碼或偽造拍攝時間。
  • 「另存至其他資料夾」仍可使用。系統不接受的格式(HTC API 34 包含 CR3)及 Android 8/9 使用系統檔案選擇器;混合選取包含未支援格式時,整批使用同一個自選資料夾。
  • 最近項目的日期每 8 筆漸進更新,全卡片模式保留已知日期。離開格子的縮圖請求取消;下載時暫停未完成的卡片遍歷與縮圖,減少競爭。大量同日/未知日期項目改用線性分組,排序預先解析日期。

驗證與限制

  • 功能 PR #192 通過 exact-head CI 與 main acceptance,包括 Android unit/lint/build 與 API 34/36 UI 測試。
  • 本地 513 項 Android 單元測試、lint(0 errors)與 App/測試 APK 建包通過。HTC API 34 通過 10 項新增儲存/相簿測試及 114 項既有畫面回歸,共 124 項,使用隔離 .debug App、合成媒體與本機 MockWebServer。原檔 JPEG 串流、含時區 EXIF 索引、重名、取消、截斷與重試均有測試。
  • 相機未連線,本輪未發送實體相機命令。 R6 Mark III 大卡片、弱網傳輸及實拍對焦仍待真機確認。合成 MP4/CR2 僅驗證原樣儲存,不代表解碼驗收。
  • 不保證第三方相簿可解碼所有 RAW;未知日期不假定為最近,缺少時區/metadata 的系統相簿日期由 Android 決定。長度一致不等於來源 checksum 已驗證。
  • 未新增跨程序可恢復下載佇列;程序強殺後未公開檔案由 Android pending 到期機制處理,不宣稱立即清理。不自動刪除相機原檔。
  • PC/iOS 只對齊版本,未同步此 Android 相簿行為。Camera Import artifact 1.1.0/wire 1.0 及 Serein 契約不變。

完整依據:Android 相簿與下載位置。

安裝與發行檔

  • Android:open-eos-control-android-0.10.0-debug.apk,versionCode=26。沿用固定開發簽章及 Preview package,可更新同簽章舊 Preview,不覆蓋隔離 .debug 測試 App。
  • PC:版本對齊的 Windows x64 Bridge executable、Python wheel 與 source distribution;沒有新增 Android 相簿行為。
  • iOS:原始碼與 iPhone Simulator CI,沒有可直接安裝的已簽署 IPA。
  • 另附 Camera Import ZIP/Kotlin JAR、BUILD-PROVENANCE.json 與 SHA256SUMS.txt。專用 Actions workflow 發布 exact-main immutable candidate,不手動重建替換資產。

English

0.10.0 adds a direct Android system-gallery download flow, warranting a minor version. It remains a Development Preview, not a stable release or a claim that all camera features are complete. Product changes are Android-only.

Android Changes

  • On Android 10+, system-recognized photo/video originals default to Pictures/<camera model>/. Camera Connect JPEG/MP4 entries on the tested HTC use Pictures/Canon EOS R6 Mark III/; this release matches that observed path, not a universal promise across phones or Camera Connect versions.
  • Single and multi-select downloads run sequentially, support cancellation, and show their destination. Pending items stay hidden until streaming and length checks succeed. Failure/cancellation removes this attempt's item; duplicate names never overwrite existing photos. Original bytes and embedded metadata are preserved without transcoding or fabricated capture dates.
  • Save to another folder remains available. Unsupported formats (including CR3 on the tested HTC API 34) and Android 8/9 use the system file picker. Mixed selections containing unsupported formats use one chosen folder for the entire batch.
  • Recent metadata appears in batches of eight, and full-card browsing retains known dates. Off-screen thumbnail requests are cancelled; downloads pause incomplete card traversal and thumbnail work. Large same-date/unknown-date groups use linear accumulation, and sorting parses dates once per item.

Evidence And Limitations

  • Feature PR #192 passed exact-head CI and main acceptance, including Android unit/lint/build and API 34/36 UI tests.
  • Local validation passed 513 Android unit tests, lint with zero errors, and App/test APK builds. HTC API 34 passed 10 new storage/gallery tests plus 114 existing screen tests: 124 unique tests using an isolated .debug App, synthetic media, and local MockWebServer. Coverage includes original JPEG streaming, timezone-aware EXIF indexing, duplicate names, cancellation, truncation, and retry.
  • No physical camera was connected or commanded. R6 Mark III large-card, weak-network transfer, and optical focus validation remain pending. Synthetic MP4/CR2 tests demonstrate unchanged storage bytes, not decoding support.
  • Third-party RAW decoding is not guaranteed. Unknown dates are not assumed recent; Android determines gallery dates for files lacking timezone/metadata. Matching lengths do not constitute a verified source checksum.
  • No process-resumable download queue is added. Android expires unpublished pending items after process death; immediate cleanup is not claimed. Camera originals are never automatically deleted.
  • PC/iOS versions are aligned without this Android gallery behavior. Camera Import artifact 1.1.0 / wire 1.0 and the Serein contract remain unchanged.

See Android gallery/download evidence.

Distribution

  • open-eos-control-android-0.10.0-debug.apk, versionCode=26, retains the persistent development signer and Preview package for matching older Preview upgrades, separate from the isolated .debug test App.
  • Version-aligned PC assets include the Windows x64 Bridge executable, wheel, and source distribution, without Android gallery parity. iOS remains source plus Simulator CI, without an installable signed IPA.
  • Camera Import ZIP/Kotlin JAR, provenance, and checksums accompany the release. The dedicated Actions workflow promotes the exact-main immutable candidate; assets are not manually rebuilt or substituted.

Open EOS Control 0.9.2 Development Preview

Choose a tag to compare

@github-actions github-actions released this 06 Sep 17:10
0a0f612

Open EOS Control v0.9.2 Development Preview

繁體中文 | English

繁體中文

0.9.2 修正 Android 既有拍攝資訊在旋轉與大字體下的顯示,因此採 patch 版號。仍是 Development Preview,不是穩定版,也不代表機身手動拍攝失焦已解決。

Android 變更

  • 修正 Photo/Video、FPS、AF、放大倍率及 REC/Bulb 標籤的裁切。繪製前依實際可用空間,以一致的字體與行高量測,不再逐幀縮字;保留固定觸控位置及模式的完整文字。
  • 白平衡與記憶卡就緒狀態使用英/繁中簡短標籤,完整名稱仍可透過無障礙描述、設定選擇器與詳細資訊讀取。曝光格明確分配標籤與值的空間。
  • ISO、Tv、Av、剩餘張數和時間不從數字中間斷行,例如 2:00:00 不再拆為兩行。放大倍率的圖示與數值上下排列,不互相覆蓋。
  • 相機命令、AF 釋放恢復、連線與系統旋轉政策不變;這不是變更相機 AF 模式或修復光學失焦。

驗證與限制

  • 功能 PR #190 通過 exact-head CI 與 main acceptance,包括 Android unit/build 與 API 34/36 UI 測試。
  • 本地 Android 507 項單元測試、lint、App/測試 APK 建包通過。HTC U24 Pro/API 34 的 114 項畫面與 21 項對焦流程回歸通過,共 135 項,不重複計數;使用隔離 .debug App、離線 fixtures/本機 MockWebServer,不是相機實拍。
  • 顯示矩陣涵蓋 360×800、800×360、800×1280,四方向、英文/繁中、1/1.5/2 倍字體與五種狀態,共 360 個組合;另驗證 168 個白平衡組合。檢查實際文字排版、可見邊界、數字不斷行,以及固定且至少 48 dp 的主要觸控區,並檢查截圖。
  • 沒有向實體 R6 Mark III 發送 AF、半按或拍攝命令作本輪驗證。 操作者暫時無法比較機身半按,失焦原因、實拍銳利度與弱網行為仍待確認。既有 AF-ON 必須先放開才能按 App 快門;程序強殺或斷網仍可能阻止停止送達。
  • 未知的超長相機名稱/設定值和超出矩陣的字體比例仍可能使用明確省略號,保留詳細資訊入口。這不是全 App 排版完成宣稱。
  • 本輪產品行為只修改 Android;PC/iOS 只對齊版本,未同步 Android UI。Camera Import 維持 artifact 1.1.0/wire 1.0,不修改 Serein 契約。

完整依據:Android 拍攝資訊旋轉與大字體顯示。

安裝與發行檔

  • Android:open-eos-control-android-0.9.2-debug.apk,versionCode=25。沿用固定開發簽章及 Preview package,可更新同簽章舊 Preview,不覆蓋獨立 .debug 測試 App。
  • PC:版本對齊的 Windows x64 Bridge executable、Python wheel 與 source distribution;沒有新增本版 Android UI 行為。
  • iOS:原始碼與 iPhone Simulator CI,沒有可直接安裝的已簽署 IPA。
  • 另附 Camera Import ZIP/Kotlin JAR、BUILD-PROVENANCE.json 與 SHA256SUMS.txt。專用 Actions workflow 發布 exact-main immutable candidate,不手動重建替換資產。

English

0.9.2 repairs existing rotated and large-font Android shooting information, warranting a patch version. It remains a Development Preview, not a stable release or proof that camera-body defocus is resolved.

Android Changes

  • Fixed clipping in Photo/Video, FPS, AF, magnification, and REC/Bulb labels. Text is measured before drawing against actual space with matching font and line-height rules, without shrinking over successive frames. Control positions and complete mode labels remain fixed.
  • Compact English/Traditional Chinese white-balance and card-ready labels retain full names in accessibility descriptions, pickers, and details. Exposure cells allocate explicit space to labels and values.
  • ISO, Tv, Av, remaining-shot counts, and time values do not split numeric tokens across lines: 2:00:00 stays intact. Magnification icons and values are vertically separated instead of overlapping.
  • Camera commands, AF release recovery, connection behavior, and system rotation policy are unchanged. This does not change camera AF modes or repair optical defocus.

Evidence And Limitations

  • Feature PR #190 passed exact-head CI and main acceptance, including Android unit/build and API 34/36 UI tests.
  • Local validation passed 507 Android unit tests, lint, and App/test APK builds. HTC U24 Pro/API 34 passed 114 screen and 21 focus-flow tests, 135 unique tests, in an isolated .debug App with offline fixtures/local MockWebServer rather than a physical camera.
  • The layout matrix covers 360x800, 800x360, and 800x1280, four rotations, English/Traditional Chinese, 1/1.5/2 font scale, and five states: 360 combinations, plus 168 white-balance cases. Actual text layout, visible bounds, unsplit numbers, fixed touch targets of at least 48 dp, and screenshots were checked.
  • No physical R6 Mark III AF, half-press, or capture commands were sent for this validation. Body half-press comparison, defocus cause, photograph sharpness, and weak-network behavior remain pending. AF-ON must still be released before the App shutter; process death or network loss can prevent stop delivery.
  • Unknown long camera names/settings and font scales outside the matrix may still use explicit ellipsis with details available. This is not whole-App layout acceptance.
  • Product behavior changes are Android-only. PC/iOS versions are aligned, without Android UI parity. Camera Import artifact 1.1.0 / wire 1.0 and the Serein contract are unchanged.

See rotated and large-font HUD evidence.

Distribution

  • open-eos-control-android-0.9.2-debug.apk, versionCode=25, retains the persistent development signer and Preview package for matching older Preview upgrades, separate from the isolated .debug test App.
  • Version-aligned PC assets include the Windows x64 Bridge executable, wheel, and source distribution, without this Android UI change. iOS remains source plus Simulator CI, without an installable signed IPA.
  • Camera Import ZIP/Kotlin JAR, provenance, and checksums accompany the release. The dedicated Actions workflow promotes the exact-main immutable candidate; assets are not manually rebuilt or substituted.

Open EOS Control 0.9.1 Development Preview

Choose a tag to compare

@github-actions github-actions released this 06 Sep 14:32
ec509c3

Open EOS Control v0.9.1 Development Preview

繁體中文 | English

繁體中文

0.9.1 修正 Android CCAPI 既有短按對焦與半按操作的釋放失敗恢復,因此採 patch 版號。仍是 Development Preview,不是穩定版,也不代表機身手動拍攝失焦已解決。

Android 變更

  • 短按 AF、manual half-press 與 AF 的 manual fallback,若停止或釋放失敗,會保存原始 method、路徑及內容,直到停止成功才解除恢復狀態。重試只送原始停止命令,不再次啟動 AF 或半按;manual release 維持 af=false。
  • 即使開始操作失敗或被取消,仍嘗試釋放;開始與釋放都失敗時優先保留未釋放狀態。對焦或釋放未完成時阻擋衝突拍攝、錄影、模式及設定寫入,反方向也禁止在衝突操作中開始對焦;唯讀狀態仍可使用。
  • 釋放恢復使用固定 56 dp 停止圖示與英文/繁中無障礙描述。即使相機沒有原生按住 AF 能力,也能重試失敗釋放;重試中保持可見但停用重複點擊,恢復成功後不留下不支援的 AF-ON 控制。
  • 序列化對焦與連線切換,忽略舊連線的遲到結果,避免斷線後重新連線被舊錯誤鎖住。保留既有快門 AF 開關及按住 AF-ON 流程,不改機身 AF 模式、AF method、tracking 或短按時間。

驗證與限制

  • 功能 PR #188 通過 exact-head CI 與 main acceptance,包括 Android unit/build 與 API 34/36 UI 測試。
  • 本地 Android 507 項單元測試、lint、App/測試 APK 建包通過;四項新增協定回歸先在 v0.9.0 重現失敗,再確認修正後通過。HTC U24 Pro/API 34 使用本機 MockWebServer,21 項對焦/UI-to-HTTP 與 111 項畫面測試通過,共 132 項,不重複計數。
  • 恢復控制檢查 360×800、800×360、800×1280、四方向、英文/繁中及 1.5 倍字體。既有 HUD 長字與 Photo/Video 標籤在旋轉及放大字體下仍可能截斷;本版不宣稱全 App 排版完成。
  • 沒有向實體 R6 Mark III 發送 AF、半按或拍攝命令作本輪驗證。 操作者暫時無法比較機身半按,失焦原因、實拍銳利度與弱網行為仍待確認。Mock 測試不是實體相機合焦證據。
  • 新增 backend 恢復能力限定 Android CCAPI(含對應 CCAPI Simulator 路徑)。Android 共用 UI 互斥與 repository 連線保護亦有更新,但不宣稱 USB/Bridge 已同步相同恢復能力;PC/iOS 只對齊版本。
  • 普通 manual full-press/Bulb 保留各自既有清理流程,未新增本版恢復控制。仍須先放開 AF-ON,再按 App 快門。 程序強殺、斷網仍可能阻止停止送達;斷線不是機身已停止的證據。
  • Camera Import 維持 artifact 1.1.0/wire 1.0,不修改 Serein 契約。

完整依據:Android 短按對焦釋放與恢復。

安裝與發行檔

  • Android:open-eos-control-android-0.9.1-debug.apk,versionCode=24。沿用固定開發簽章及 Preview package,可更新同簽章舊 Preview,不覆蓋獨立 .debug 測試 App。
  • PC:版本對齊的 Windows x64 Bridge executable、Python wheel 與 source distribution;沒有新增本版 Android CCAPI 恢復能力。
  • iOS:原始碼與 iPhone Simulator CI,沒有可直接安裝的已簽署 IPA。
  • 另附 Camera Import ZIP/Kotlin JAR、BUILD-PROVENANCE.json 與 SHA256SUMS.txt;專用 Actions workflow 發布 exact-main immutable candidate,不手動重建替換資產。

English

0.9.1 repairs failed-release recovery for existing Android CCAPI short autofocus and half-press operations, warranting a patch version. It remains a Development Preview, not a stable release or proof that camera-body defocus is resolved.

Android Changes

  • Short AF, manual half-press, and manual AF fallback retain the original release method, path, and body after a failed stop until acknowledgement. Recovery retries only that stop/release, never another AF start or half-press. Manual release retains af=false.
  • Failed or cancelled starts still attempt cleanup; simultaneous start/release failures prioritize the unreleased state. Pending focus/release blocks conflicting capture, recording, mode, and settings writes, and conflicting operations also prevent focus starts. Read-only status remains available.
  • A fixed 56 dp stop icon with English/Traditional Chinese accessibility descriptions supports recovery even without held AF capability. It stays visible but disabled during retry; successful recovery does not leave an unsupported AF-ON control behind.
  • Focus and connection changes are serialized, and late results from an old connection cannot lock a replacement session. Existing shutter AF selection and held AF-ON remain; camera AF modes, AF method, tracking, and short-press duration are unchanged.

Evidence And Limitations

  • Feature PR #188 passed exact-head CI and main acceptance, including Android unit/build and API 34/36 UI tests.
  • Local validation passed 507 Android unit tests, lint, and App/test APK builds. Four new protocol regressions first failed against v0.9.0 and then passed after the fix. HTC U24 Pro/API 34 passed 21 focus/UI-to-HTTP and 111 screen tests against a local MockWebServer: 132 unique tests.
  • Recovery controls were checked at 360x800, 800x360, and 800x1280, four rotations, English/Traditional Chinese, and 1.5 font scale. Existing rotated large-font HUD and Photo/Video labels can still clip; this is not blanket App layout acceptance.
  • No physical R6 Mark III AF, half-press, or capture commands were sent for this validation. The operator cannot currently compare body half-press behavior. Defocus cause, actual photograph sharpness, and weak-network behavior remain pending. Mock tests are not optical focus evidence.
  • New backend recovery is Android CCAPI only, including corresponding CCAPI Simulator paths. Shared Android UI interlocks and repository connection protection also changed, but USB/Bridge recovery parity is not claimed. PC/iOS are version-aligned only.
  • Ordinary manual full-press/Bulb retain their separate cleanup, without this new recovery control. Release AF-ON before using the App shutter. Process death or network loss can prevent stop delivery; disconnect is not proof that the camera stopped.
  • Camera Import remains artifact 1.1.0 / wire 1.0; the Serein contract is unchanged.

See short-focus release recovery evidence.

Distribution

  • open-eos-control-android-0.9.1-debug.apk, versionCode=24, retains the persistent development signer and Preview package for matching older Preview upgrades, separate from the isolated .debug test App.
  • Version-aligned PC assets include the Windows x64 Bridge executable, wheel, and source distribution, without this Android CCAPI recovery addition. iOS remains source plus Simulator CI, without an installable signed IPA.
  • Camera Import ZIP/Kotlin JAR, provenance, and checksums accompany the release. The dedicated Actions workflow promotes the exact-main immutable candidate; assets are not manually rebuilt or substituted.

Open EOS Control 0.9.0 Development Preview

Choose a tag to compare

@github-actions github-actions released this 06 Sep 13:08
361c8fb

Open EOS Control v0.9.0 Development Preview

繁體中文 | English

繁體中文

0.9.0 新增 Android 直連 CCAPI 的快門自動對焦選擇,讓 App 快門可以不再次要求啟動 AF。這是新的可操作能力,因此採 minor 版號;仍是 Development Preview,不是穩定版,也不代表機身手動拍攝失焦問題已解決。

Android 變更

  • Photo 的更多設定新增「快門自動對焦」,預設開啟。關閉時快門顯示 AF 關/AF OFF,並提供對應的繁中/英文無障礙描述。
  • 選擇只維持目前連線;斷線、建立新連線、切換 transport 或重新進入離線預覽都恢復開啟,不會在下次拍攝時悄悄沿用關閉狀態。
  • 僅當相機公告原生 POST /shooting/control/shutterbutton 或 PUT/POST /shooting/control/shutterbutton/manual 才提供選項,將選擇送入正式 UI、ViewModel、repository、backend 與 CCAPI JSON 的 af boolean。
  • manual full-press 的 release 一律使用 af=false;即使 press 失敗仍嘗試既有不可取消的釋放清理。快門前的溫度限制仍保留。
  • 忙碌、錄影或 AF-ON 尚未確認釋放時禁止改選。Video/Bulb 隱藏開關並保留既有行為;固定快門區內的提示只旋轉內容,不改動布局。
  • 診斷新增 shutterAutofocusSelectable 與 shutterAutofocusRequested,分別記錄可選能力與要求值,不將命令接受當成相機合焦回報。

驗證與限制

  • 功能 PR #186 的 exact-head CI 與 main acceptance 通過,包含 Android unit/build 與 API 34/36 UI 測試。
  • 本地 Android 501 項單元測試、lint 與 App/測試 APK 建包通過。HTC U24 Pro/API 34 使用本機 MockWebServer 完成 18 項對焦/完整 UI-to-HTTP 測試與 110 項畫面測試,共 128 項,不重複計數。
  • 新開關與快門提示已檢查 360×800、800×360、800×1280、四方向、英文/繁中及 1.5 倍字體;不是宣稱整個 App 的所有排版已全面驗收。
  • 本輪未向實體 R6 Mark III 送出 AF 或拍攝命令。 操作者目前無法比較機身半按;失焦原因、實拍銳利度、One-Shot/Servo 差異與弱網下機身行為仍待驗收。
  • 關閉只表示這次快門請求不要求啟動 AF;不修改 MF/One-Shot/Servo、AF method 或 tracking,也不保證焦點鎖定或其他機身 AF 行為停止。
  • 仍需先放開 AF-ON,再按 App 快門。 未實作按住 AF 同時拍攝;保留 v0.8.0 停止失敗後的 interlock 與 stop-only 重試。程序強殺或網路中斷仍可能阻止釋放命令送達。
  • 新功能僅在 Android 直連 CCAPI。PC/iOS 只對齊版本;Android USB/Bridge 與簡化 Simulator 不推定支援。離線預覽僅展示 UI,不作實拍證據。
  • Camera Import 維持 artifact 1.1.0/wire 1.0;Serein 契約與責任邊界未變。

完整依據與回歸記錄:Android 快門自動對焦選擇。

安裝與發行檔

  • Android:open-eos-control-android-0.9.0-debug.apk,versionCode=23,沿用固定開發簽章及 Preview package,可更新同簽章舊 Preview;不覆蓋獨立 .debug 測試 App。
  • PC:提供版本對齊的 Windows x64 Bridge executable、Python wheel 與 source distribution,未新增本輪快門 AF 選擇。
  • iOS:原始碼與 iPhone Simulator CI,沒有可直接安裝的已簽署 IPA。
  • 另附 Camera Import schema ZIP、Kotlin JAR、BUILD-PROVENANCE.json 與 SHA256SUMS.txt。專用 Actions workflow 發布 exact-main immutable candidate,不以手動建包替換發行檔。

English

0.9.0 adds a shutter autofocus choice for Android direct CCAPI, allowing an App shutter request without asking to start AF again. This user-visible capability warrants a minor version. It remains a Development Preview, not a stable release or a claim that camera-body defocus is resolved.

Android Changes

  • Photo More Settings gains a shutter autofocus switch, enabled by default. Disabling it shows AF OFF / AF 關 in the shutter with corresponding English/Traditional Chinese accessibility descriptions.
  • The choice is session-scoped, not persisted. Disconnect, a new connection, transport switching, and reentering offline preview reset it to enabled.
  • The switch requires an advertised native POST /shooting/control/shutterbutton or PUT/POST /shooting/control/shutterbutton/manual. The selected af boolean passes through the production UI, ViewModel, repository, backend, and CCAPI request.
  • Manual full-press cleanup always releases with af=false, including after a failed press, using the existing non-cancellable cleanup. Pre-capture temperature restrictions still apply.
  • Busy, recording, and unreleased AF-ON states prevent changes. Video/Bulb hide the switch and retain existing behavior. The indicator rotates inside the fixed shutter area without relayout.
  • Diagnostics expose shutterAutofocusSelectable and shutterAutofocusRequested, describing capability and intent rather than inventing camera-reported focus confirmation.

Evidence And Limitations

  • Feature PR #186 passed exact-head CI and main acceptance, including Android unit/build and API 34/36 UI tests.
  • Local validation passed 501 Android unit tests, lint, and App/test APK builds. HTC U24 Pro/API 34 passed 18 focus/full UI-to-HTTP tests and 110 screen tests against a local MockWebServer: 128 unique tests.
  • The new switch/indicator was checked at 360x800, 800x360, and 800x1280, four rotations, English/Traditional Chinese, and 1.5 font scale. This is not blanket validation of every App layout.
  • No physical R6 Mark III AF/capture commands were sent in this feature's validation. The operator could not compare body half-press behavior. Defocus cause, photograph sharpness, One-Shot/Servo differences, and weak-network camera behavior remain pending.
  • Disabling the switch only means this shutter request does not ask to start AF. Camera MF/One-Shot/Servo, AF method, and tracking are unchanged; focus lock or cessation of other camera-side AF behavior is not guaranteed.
  • Release AF-ON before using the App shutter. Simultaneous held AF/capture is not implemented. The v0.8.0 stop-failure interlock and stop-only retry remain; process death or network loss can still prevent release delivery.
  • New behavior is Android direct CCAPI only. PC/iOS are version-aligned; Android USB/Bridge and the simplified Simulator do not assume support. Offline preview demonstrates the UI only.
  • Camera Import stays at artifact 1.1.0 / wire 1.0; the Serein contract is unchanged.

See shutter autofocus protocol and regression evidence.

Distribution

  • open-eos-control-android-0.9.0-debug.apk, versionCode=23, retains the persistent development signer and Preview package for matching older Preview upgrades, separate from the isolated .debug test App.
  • Version-aligned PC assets include a Windows x64 Bridge executable, wheel, and source distribution, without the new shutter AF choice. iOS remains source plus Simulator CI, without an installable signed IPA.
  • Camera Import schema ZIP, Kotlin JAR, provenance, and checksums accompany the release. The dedicated Actions workflow promotes the exact-main immutable candidate; release assets are not manually rebuilt or substituted.

Open EOS Control 0.8.0 Development Preview

Choose a tag to compare

@github-actions github-actions released this 06 Sep 11:13
7cb6729

Open EOS Control v0.8.0 Development Preview

繁體中文 | English

繁體中文

0.8.0 新增 Android 直連 CCAPI 的按住 AF-ON。這是可下載測試的新操作能力,因此採 minor 版號;仍是 Development Preview,不是穩定版,也不代表先前回報的機身失焦問題已解決。

Android 變更

  • 相機明確公告原生 POST /shooting/control/af 時才顯示 AF-ON。手指按下送 start,放開或取消送 stop,使用相機公告的 API 版本;不以半按快門能力推定支援。
  • AF-ON 使用固定 56 dp 觸控區,與放大控制分開,只有內容隨方向旋轉。提供英文/繁中說明與狀態;無障礙與鍵盤的一般啟用仍使用既有有界短按操作。
  • 視窗失焦、隱藏 HUD、開設定、離開控制頁、關閉遠端取景、切到背景或斷線皆要求停止 AF。開始回應尚未返回時放開,也保留停止責任;回到前景不會自行重新開始。
  • 停止失敗顯示可重試警告,只重送 stop,不重送 start;未確認停止前阻擋新的對焦、拍攝、錄影切換與曝光設定等衝突命令。
  • 保留 v0.7.0 的相機回報 AF 框與遠端取景停止/恢復。命令被接受、相機回報合焦、成片真正銳利是不同證據,不以成功 HTTP 回應偽造綠色合焦。

驗證與限制

  • 功能 PR #184 的 exact-head CI 與 main acceptance 通過。包含 Android unit/build、API 34/36 UI;本地 494 項 unit tests、lint/build 通過。
  • HTC U24 Pro 使用本機 MockWebServer 完成 26 項對焦/生命週期/排版回歸;後續新增/修訂的失焦與手勢兩項測試連續五輪通過。排版涵蓋三種尺寸、四方向、繁中 1.5 倍字體及明確的安全區域,這不等於所有小視窗與長文字已全面驗收。
  • 本輪沒有向實體 R6 Mark III 發送 AF 或拍攝命令。操作者暫時無法比較機身半按與照片,原失焦原因、各 AF 模式效果、實際釋放與持續使用負載仍待確認。
  • 不自動更改 One-Shot/Servo、AF method 或 tracking。按住 start 不保證機身目前模式會持續追蹤,也不宣稱與 Camera Connect 功能等價。
  • 先放開 AF-ON,再按 App 快門。 本輪不支援按住 AF 同時按 App 快門。開始確認後最多持有 30 秒便要求停止;這是 App 內保護,不是相機端租約。程序強殺或網路中斷後,不能保證 stop 已送達,需要確認機身狀態。
  • 新功能僅在 Android 直連 CCAPI。PC/iOS 僅對齊產品版本;Android USB/Bridge、簡化 Simulator preset 與離線預覽不提供未實作的按住 AF。
  • Camera Import contract 維持 artifact 1.1.0/wire 1.0,Serein 契約與責任邊界未變。

詳細協定、失敗清理與測試記錄:Android 按住 AF-ON。

安裝與發行檔

  • Android:open-eos-control-android-0.8.0-debug.apk,versionCode=22,沿用固定開發簽章與 Preview package,可更新同簽章的舊 Preview;不覆蓋獨立 .debug 測試 App。
  • PC:提供版本對齊的 Windows x64 Bridge executable、Python wheel 與 source distribution,未加入本輪按住 AF 功能。
  • iOS:原始碼與 iPhone Simulator CI;沒有可直接安裝的已簽署 IPA。
  • 另附 Camera Import schema ZIP、Kotlin JAR、BUILD-PROVENANCE.json 與 SHA256SUMS.txt。專用 Actions workflow 發布 exact-main immutable candidate,不手動重建替換發行檔。

English

0.8.0 adds press-and-hold AF-ON for Android direct CCAPI. This new testable interaction warrants a minor version, but remains a Development Preview, not a stable release or a claim that the reported camera-body defocus is resolved.

Android Changes

  • AF-ON appears only for an advertised native POST /shooting/control/af operation. Press sends start; release/cancellation sends stop using the advertised API version. Half-press capability alone does not imply held AF support.
  • A fixed 56 dp target stays separate from magnification, rotating only its content. English/Traditional Chinese descriptions and states are included. Accessibility and keyboard activation retain the existing bounded AF operation.
  • Window focus loss, hidden HUD, settings/navigation changes, remote Live View off, backgrounding, and disconnect request stop. Release during an outstanding start response still retains cleanup responsibility; returning to the foreground never restarts AF automatically.
  • An unconfirmed stop retains a visible stop-only retry, without restarting AF, and blocks conflicting focus, capture, recording transitions, and exposure writes.
  • Camera-reported AF frames and Live View lifecycle behavior from v0.7.0 remain. HTTP acknowledgement, camera-reported focus, and verified image sharpness are separate; acknowledgement alone never produces a green focus confirmation.

Evidence And Limitations

  • Feature PR #184 passed exact-head CI and main acceptance, including Android unit/build and API 34/36 UI. Local validation passed 494 unit tests and lint/build.
  • HTC U24 Pro ran 26 focus/lifecycle/layout regressions against a local MockWebServer. Two subsequently added/revised window-focus and gesture tests passed five consecutive runs. Three viewport sizes, four angles, Traditional Chinese at 1.5 font scale, and explicit safe areas were checked, not every compact window or long label in the entire app.
  • No physical R6 Mark III AF/capture commands were sent during this feature's validation. The operator could not compare body half-press and photographs; the original defocus cause, AF-mode behavior, actual release, and sustained load remain pending.
  • Camera One-Shot/Servo, AF method, and tracking settings are unchanged. Holding start does not guarantee continuous tracking in the current camera mode or Camera Connect feature equivalence.
  • Release AF-ON before pressing the App shutter. Simultaneous held AF and App capture is not implemented. After start acknowledgement, the App requests stop after at most 30 seconds. This is not a camera-side lease: process death or network loss can prevent stop delivery and requires checking the camera.
  • New behavior is Android direct CCAPI only. PC/iOS versions are aligned without held-AF parity; Android USB/Bridge, the simplified Simulator preset, and offline preview do not offer an unimplemented held-AF control.
  • Camera Import stays at artifact 1.1.0 / wire 1.0; the Serein contract is unchanged.

See held-AF protocol and validation details.

Distribution

  • open-eos-control-android-0.8.0-debug.apk, versionCode=22, retains the persistent development signer and Preview package. It updates matching older previews without replacing the separate .debug test app.
  • Version-aligned PC assets include a Windows x64 Bridge executable, wheel, and source distribution, without this held-AF feature. iOS remains source plus Simulator CI; no installable signed IPA is provided.
  • Camera Import schema ZIP, Kotlin JAR, provenance, and checksums accompany the release. The dedicated Actions workflow promotes the exact-main immutable candidate, without manually rebuilding or substituting release files.

Open EOS Control 0.7.0 Development Preview

Choose a tag to compare

@github-actions github-actions released this 06 Sep 08:35
ed0c20e

Open EOS Control v0.7.0 Development Preview

繁體中文 | English

繁體中文

0.7.0 新增 Android 相機回報的對焦框與狀態,並修正遠端即時取景的停止/恢復。本版是 Development Preview,不是穩定版;minor 版號代表新增可操作能力,不代表機身失焦問題已解決。

Android 變更

  • 相機公告 Canon flipdetail?kind=info 時,讀取所選 AF 框的實際座標及合焦、未合焦、Servo 進行中等狀態。框線改為四角細線,中央不遮擋。
  • 綠色只代表相機回報合焦;App 的 AF、半按、焦點移動及 AF 點命令成功仍是中性的「已接受」,不能代替相機合焦結果或成片銳利度驗證。
  • AF 資料讀取有大小、數量與時間上限。過期超過一秒即隱藏;錯誤清除框線並保留 Debug 摘要,不中斷影像串流。離線、取景暫停或尚未取得影像時不疊框。
  • 關閉「遠端即時取景」或 App 進入背景,會真正停止相機端 Live View。回到前景只在使用者仍開啟取景時恢復,Refresh、尺寸調整不會偷偷打開已關閉的取景。
  • 取景切換保留拍攝、對焦、Bulb 的清理次序。停止失敗會顯示錯誤並可重試,不把失敗假裝成成功。

驗證與限制

  • 功能 PR #181、#182 的 exact-head CI 與 main acceptance 通過;Android unit、APK、API 34/36 UI 測試有對應證據。最新功能本地 487 項 unit tests、lint/build 與 HTC U24 Pro 的 15 項 instrumentation 通過。
  • HTC instrumentation 使用本機 MockWebServer;這不等於實體 R6 Mark III AF 驗收。AF 資料座標、各 AF 模式與持續讀取負載仍待實機確認。
  • 先前 HTC/R6 Mark III Wi-Fi 調查已觀察到新版本關閉取景後相機回覆 Live view not started,但操作者暫時無法比較機身半按與成片,因此「連 App 後容易失焦」的因果關係仍未確認。沒有寫入 AF operation、AF method 或 tracking 設定。
  • 本輪 AF 疊框只支援 1x 且 metadata/顯示影像比例相符;放大、anamorphic desqueeze、無效或未知幾何時不猜測框位置。按住 AF-ON/持續 Servo 操作仍未完成,不宣稱與 Camera Connect 功能等價。
  • 新行為只在 Android。PC/iOS 僅對齊產品版本並沿用現有功能與測試,不宣稱同步了 AF metadata 或這次取景生命週期變更。
  • Camera Import contract 維持 artifact 1.1.0/wire 1.0;Serein 整合契約未改。

協定與測試細節:取景停止調查、AF 框與狀態。

安裝與發行檔

  • Android:open-eos-control-android-0.7.0-debug.apk 沿用固定開發簽章與正式 Preview package,可覆蓋安裝同簽章的舊 Preview;不會覆蓋獨立的 .debug 測試 App。
  • PC:提供版本對齊的 Windows x64 Bridge executable、Python wheel 與 source distribution。
  • iOS:保留原始碼與 iPhone Simulator CI,本版不提供可直接安裝的已簽署 IPA。
  • 另附 Camera Import schema ZIP、Kotlin JAR、BUILD-PROVENANCE.json 與 SHA256SUMS.txt。發行檔由專用 Actions workflow 提升 exact-main immutable candidate,不手動重建替換 APK。

English

0.7.0 adds Android camera-reported AF frames and status, alongside corrected remote Live View stop/resume behavior. This is a Development Preview, not a stable release. The minor version denotes a new usable capability, not resolution of the reported camera-body defocus problem.

Android Changes

  • An advertised Canon flipdetail?kind=info endpoint supplies selected AF coordinates and focus-acquired, unsuccessful, Servo-in-progress, standby, or unknown state. Sparse corner strokes leave the subject center unobstructed.
  • Green means the camera reported focus acquired. AF, half-press, focus-drive, and AF-point command success remains neutral acknowledgement, distinct from camera focus state and verified photograph sharpness.
  • Metadata reads have bounded size, count, and duration. Frames expire after one second without fresh data; read failures clear them without stopping the image stream. Offline, paused, or image-unavailable views do not display camera AF overlays.
  • Turning remote Live View off or backgrounding Android now stops the camera-side stream. Foregrounding resumes only when the user still requests Live View; refresh and size changes cannot silently re-enable it.
  • Transitions preserve capture, focus, and Bulb cleanup ordering. Stop failures remain visible and retryable rather than being reported as success.

Evidence And Limitations

  • Feature PRs #181 and #182 passed exact-head CI and main acceptance, including Android unit/APK and API 34/36 UI evidence. The latest feature passed 487 local unit tests, lint/build, and 15 HTC U24 Pro instrumentation tests.
  • HTC instrumentation uses a local MockWebServer, not physical R6 Mark III AF validation. Actual AF geometry/modes and sustained metadata-read load remain pending.
  • Earlier HTC/R6 Mark III Wi-Fi observation confirmed that the corrected remote-off behavior produced Live view not started. The operator could not compare body half-press and resulting photographs, so the cause of reported body-side defocus remains unconfirmed. AF operation, method, and tracking settings were not changed.
  • Overlays require 1x magnification and matching metadata/image aspect ratio. Magnified, desqueezed, invalid, or unknown geometry is not guessed. Press-and-hold AF-ON/continuous Servo remains pending; Camera Connect feature equivalence is not claimed.
  • New behavior is Android-only. PC/iOS have aligned product versions and existing functionality/tests, without parity for this AF metadata or Live View lifecycle work.
  • Camera Import stays at artifact 1.1.0 / wire 1.0; the Serein integration contract is unchanged.

See the Live View investigation and AF metadata evidence.

Distribution

  • open-eos-control-android-0.7.0-debug.apk retains the persistent development signer and Preview package, updating matching older previews without replacing the separate .debug acceptance app.
  • Version-aligned PC assets include the Windows x64 Bridge executable, Python wheel, and source distribution. iOS remains source plus iPhone Simulator CI; no installable signed IPA is provided.
  • Camera Import schema ZIP, Kotlin JAR, BUILD-PROVENANCE.json, and SHA256SUMS.txt accompany the release. The dedicated Actions workflow promotes the exact-main immutable candidate without manually rebuilding or substituting release files.

Open EOS Control 0.6.3 Development Preview

Choose a tag to compare

@github-actions github-actions released this 24 Aug 02:57
f61bad2

Open EOS Control v0.6.3 Development Preview

繁體中文 | English

繁體中文

這個 0.6.3 開發預覽版修正 Android 近期相機媒體在照片與影片分屬不同 Canon 容器時的排序,並改善大量唯讀操作遇到暫時性連線逾時時的恢復與錯誤提示。這是 0.6.2 的向下相容修正版。

近期媒體

  • 「最近拍攝」會在有資料時,以 Canon 媒體資訊中的實際修改時間合併照片與影片,不再因容器輪詢讓數月前的影片混入最新照片之間。
  • 時間資訊讀取維持有界;相機未提供日期或暫時無法讀取時,介面保留可預測的相機容器順序,不臆測拍攝日期。

大量唯讀操作

  • 縮圖、預覽、原檔下載與傳送至 Serein 前的暫存,會對暫時性 I/O 中斷進行有限重試,且每次重試使用新的目的檔,避免沿用不完整內容。
  • metadata 寫入與刪除等狀態變更操作不會盲目重試,以免相機已套用操作但回應遺失時重複執行。
  • 一般模式改為顯示可理解的繁中/英文逾時與重新連線提示;原始例外仍保留於 Debug 診斷。

驗證與限制

  • PR #178 的 Android 單元測試、Lint、APK、簽章 smoke test,以及 Pixel API 34/36 UI 矩陣均通過。
  • HTC U24 Pro 已以獨立 debug package 通過本地化逾時提示的 Compose 真機測試,不覆蓋已安裝的 Development Preview。
  • 本輪驗證時 Canon EOS R6 Mark III 已關機,因此實際近期媒體跨容器排序與傳輸中斷恢復仍待相機再次開啟後驗收;本版不據此宣稱新的機型相容性。
  • 本版產品行為變更只在 Android;PC 與 iOS 維持版本對齊的發行產物,沒有相對應行為變更。
  • open-eos-control-android-0.6.3-debug.apk 沿用固定開發簽章,可覆蓋安裝 v0.1.5 之後的同簽章預覽版。本版仍是 Development Preview,不是穩定版。

English

This 0.6.3 development preview corrects Android recent-camera-media ordering when Canon exposes photos and videos through separate containers. It also improves recovery and user-facing errors for transient connection timeouts during bulk read-only operations. It is a backward-compatible patch for 0.6.2.

Recent Media

  • Recent capture now merges photo and video containers by Canon media-info modification time when that evidence is available, so months-old videos no longer appear between the newest photos because of container round-robin ordering.
  • Timestamp enrichment remains bounded. When the camera does not provide a date or the metadata request temporarily fails, the UI retains deterministic camera-container order instead of inventing a capture date.

Bulk Read-Only Operations

  • Thumbnail, preview, original download, and pre-Serein staging retry transient I/O interruptions a limited number of times, using a fresh destination on every attempt so partial content is never reused.
  • State-changing metadata writes and deletion are not blindly retried because the camera may have applied an operation before its response was lost.
  • Control mode now presents localized English or Traditional Chinese timeout and reconnection guidance, while Debug diagnostics retain the original exception.

Validation And Limitations

  • PR #178 passed Android unit tests, Lint, APK and signer smoke tests, plus the Pixel API 34 and API 36 UI matrices.
  • An HTC U24 Pro passed the localized timeout Compose test through a separate debug package without replacing the installed Development Preview.
  • The Canon EOS R6 Mark III was powered off during this validation, so physical cross-container recent ordering and interrupted-transfer recovery remain pending for the next camera session. This release makes no new model-compatibility claim from the automated evidence.
  • Product behavior changes only on Android in this release. PC and iOS retain version-aligned artifacts without corresponding behavior changes.
  • open-eos-control-android-0.6.3-debug.apk retains the stable development signer and can update matching previews from v0.1.5 onward. This remains a Development Preview, not a stable release.

Open EOS Control 0.6.2 Development Preview

Choose a tag to compare

@github-actions github-actions released this 23 Aug 19:28
9fc2f5f

Open EOS Control v0.6.2 Development Preview

繁體中文 | English

繁體中文

這個 0.6.2 開發預覽版改善 Android 在 Canon 相機暫時忙碌或剛喚醒時的曝光能力穩定性,並修正 Live View 在固定相機操作版面中的顯示位置與互動座標。這是 0.6.1 的向下相容修正版。

相機工作階段

  • shooting settings 暫時刷新失敗時保留該工作階段最後一次有效結果,不再因單次錯誤讓 ISO、Tv、Av、WB 從介面消失。
  • 只有相機實際公告同版本 GET 與 PUT 時,才會從個別 ISO、Tv、Av、WB 資源恢復主要曝光控制;不推測未公告能力,也不加入機型硬編碼。

Live View 版面

  • 解碼畫面現在置中於頂部相機狀態列與底部曝光/拍攝控制之間,不再以整個螢幕中心計算而顯得偏移。
  • Tap Focus、Click WB、對焦回饋、監看輔助與快門閃白共用同一 viewport,避免顯示位置與實際操作座標不一致。

驗證與限制

  • Canon EOS R6 Mark III 在實體 HTC U24 Pro 上經相機 Wi-Fi 直連,喚醒後成功讀取 ISO、Tv、Av、WB abilities,並解碼 multipart JPEG Live View。
  • PR #176 的 Android 單元測試、Lint、APK、簽章 smoke test,以及 Pixel API 34/36 UI 矩陣均通過。
  • 本次實機流程是在相機手動喚醒後重新連線;尚未宣稱既有 session 能自動跨越完整睡眠/喚醒週期。實機曝光寫入與拒絕後回復也未在本次非破壞性流程中操作。
  • 本版產品變更只在 Android;PC 與 iOS 維持同版發行產物,沒有新增相對應介面功能。
  • open-eos-control-android-0.6.2-debug.apk 沿用固定開發簽章,可覆蓋安裝 v0.1.5 之後的同簽章預覽版。本版仍是 Development Preview,不是穩定版。

English

This 0.6.2 development preview improves Android exposure-capability resilience while a Canon camera is temporarily busy or has just been woken, and corrects Live View placement and interaction coordinates within the fixed camera layout. It is a backward-compatible patch for 0.6.1.

Camera Session

  • A transient shooting-settings refresh failure now retains the last valid result for that session instead of removing ISO, Tv, Av, and WB from the UI.
  • Primary exposure controls recover from individual ISO, Tv, Av, and WB resources only when the camera advertises matching same-version GET and PUT operations. The client neither invents unadvertised capabilities nor hardcodes a camera model.

Live View Layout

  • The decoded frame is centered between the camera header and exposure/capture controls instead of against the entire screen.
  • Tap Focus, Click WB, focus feedback, monitoring assists, and capture flash share the same viewport so visible and interactive coordinates remain aligned.

Validation And Limitations

  • A physical HTC U24 Pro connected directly to a Canon EOS R6 Mark III over camera Wi-Fi after wake, read the ISO, Tv, Av, and WB abilities, and decoded multipart JPEG Live View.
  • PR #176 passed Android unit tests, Lint, APK and signer smoke tests, plus the Pixel API 34 and API 36 UI matrices.
  • The physical pass reconnected after manually waking the camera. It does not yet prove that an existing session automatically survives a complete sleep/wake cycle. Physical exposure writes and rejected-write recovery were not invoked during this non-destructive pass.
  • Product behavior changes only on Android in this release. PC and iOS retain version-aligned artifacts without a corresponding UI feature change.
  • open-eos-control-android-0.6.2-debug.apk retains the stable development signer and can update matching previews from v0.1.5 onward. This remains a Development Preview, not a stable release.