Skip to content

Releases: jhangyu/halcyon

v1.0.10

Choose a tag to compare

@jhangyu jhangyu released this 13 Sep 12:46

Highlights

Linux is now a first-class desktop target: the system-trash, "Open With" and memory-pressure bridges are registered natively, and deleting a photo falls back to an in-folder recycle bin wherever a system trash bridge is unavailable. Build and release integrity gained several checks, and the native decoder package moved to ceyx v0.1.24.

✨ Added

  • Linux: registered the halcyon/trash, halcyon/open_with and memory-pressure method channels, plus desktop MIME type associations
  • Per-PR CI build matrix grown from two macOS legs to four

🛠 Fixed & Improved

  • Deleting a photo now falls back to the in-folder recycle bin (.trash/) when the system trash bridge is absent, instead of failing
  • Windows: the decoder's OpenMP runtime (libomp140.x86_64.dll) is now fetched, checksum-verified and placed alongside the decoder. The decoder has always imported it; until now it silently relied on the DLL already being present from a machine-wide Visual Studio or Visual C++ redistributable install
  • The native-library pin now records why an artifact was or was not placed, and classifies shared-path artifacts belonging to another architecture correctly
  • Build-time pin preflight: member-set equality is asserted, and the FFI export gate no longer accepts a stale result
  • The fetch-native gate now also runs on the Linux CI leg

⚙️ Internal / Build

  • ceyx native decoder bumped v0.1.23 → v0.1.24 (both halves of the pin — the checksum pin file and the workflow checkout ref — moved together)
  • ceyx v0.1.24 removes the public RAW diagnostics API. Verified to be a no-op for Halcyon: there are zero references to it anywhere in the app or its tests
  • ceyx v0.1.24 also removes the lcms2 dependency, so the macOS library set is one file smaller
  • Completed the photo_selector_flutterhalcyon rename on Linux, deduplicated the export isolate closures, and cleaned up stale comments and README wording

⚠️ Known limitations

  • The Windows library set is not self-contained. This release closes one of the two missing runtime dependencies (the OpenMP runtime, above); the remaining one is the Microsoft Visual C++ runtime (VCRUNTIME140.dll / VCRUNTIME140_1.dll), which libomp140.x86_64.dll itself imports and which is still not shipped. A Windows machine without a Visual C++ redistributable installed can therefore still fail to load the decoder. This gap is pre-existing, not new in this release
  • ceyx v0.1.24 makes the decode pool's buffer-pool field non-nullable with a default. The app absorbs this correctly at runtime, but it silently invalidated the premise of one regression test (pool_wiring_test's R6-AC2), whose assertions can no longer fail. That guard against a silent pooled-route regression is currently disarmed and is scheduled for repair; the sibling assertion in the same file (R6-AC3, the shrink-to-trim hook) is unaffected and still binds

版本重點

Linux 成為正式支援的桌面平台:系統垃圾桶、「開啟方式」與記憶體壓力三組原生橋接皆已註冊,且在缺少系統垃圾桶橋接的環境中,刪除照片會改用資料夾內的回收區。建置與發佈流程新增多項完整性檢查,原生解碼套件同時升級至 ceyx v0.1.24。

✨ 新增

  • Linux:註冊 halcyon/trashhalcyon/open_with 與記憶體壓力三組方法通道,並加上桌面 MIME 類型關聯
  • 每次 PR 的 CI 建置矩陣由兩個 macOS 項目擴充為四個

🛠 修正與改善

  • 系統垃圾桶橋接不存在時,刪除照片改為退回資料夾內回收區(.trash/),不再直接失敗
  • Windows:解碼器所需的 OpenMP 執行環境(libomp140.x86_64.dll)現在會一併抓取、驗證校驗和並放置到解碼器旁。解碼器一直都會載入它,先前只是默默依賴目標機器上已安裝的 Visual Studio 或 Visual C++ 可轉散發套件提供
  • 原生函式庫的版本鎖定檔新增「是否已放置及其原因」欄位,並正確分類屬於其他架構的共用路徑產物
  • 建置前的版本鎖定預檢:新增成員清單一致性斷言,FFI 匯出檢查不再採信過期結果
  • 原生函式庫抓取檢查現在也會在 Linux 的 CI 項目上執行

⚙️ 內部/建置

  • ceyx 原生解碼套件由 v0.1.23 升級至 v0.1.24(版本鎖定的兩個部分——校驗和鎖定檔與工作流程的 checkout 參考點——同步更新)
  • ceyx v0.1.24 移除了公開的 RAW 診斷 API。經查證對 Halcyon 沒有任何影響:程式碼與測試中皆無任何引用
  • ceyx v0.1.24 同時移除 lcms2 相依套件,因此 macOS 的函式庫組合少了一個檔案
  • 完成 Linux 上 photo_selector_flutterhalcyon 的更名、合併重複的匯出隔離區程式碼,並清理過期註解與 README 用字

⚠️ 已知限制

  • Windows 的函式庫組合並非自足。本次釋出補齊了兩個缺漏執行環境中的一個(即上述的 OpenMP 執行環境);另一個仍缺的是 Microsoft Visual C++ 執行環境(VCRUNTIME140.dll / VCRUNTIME140_1.dll),它正是 libomp140.x86_64.dll 自身所需載入的對象,目前仍未一併發佈。因此未安裝 Visual C++ 可轉散發套件的 Windows 機器仍可能無法載入解碼器。此缺口既有存在,並非本次新增
  • ceyx v0.1.24 將解碼池的緩衝區池欄位改為不可為空並帶有預設值。應用程式在執行期正確吸收了這項變更,但它悄悄使某個回歸測試(pool_wiring_test 的 R6-AC2)的前提失效,該測試的斷言已不可能失敗。這道防止解碼池路徑靜默退化的防線目前形同失效,已排入修復;同檔案中的另一項斷言(R6-AC3,收縮後釋放記憶體的掛鉤)不受影響,仍然有效

v1.0.9

Choose a tag to compare

@github-actions github-actions released this 12 Sep 04:39

Highlights

Updated the native decoder package with stronger download-integrity checks, and fixed a memory-release timing coupling issue.

🛠 Fixed & Improved

  • Memory release (working-set trim) now waits until the decode pool has actually finished shrinking before firing, avoiding a timing mismatch
  • Added a build-time checksum comparison: a mismatched or corrupted native decoder download now triggers an automatic re-fetch

⚙️ Internal / Build

  • ceyx native decoder bumped to v0.1.22 (pool idle-shrink), then to v0.1.23
  • Added exception handling and tests for pin-mismatch cases

版本重點

更新原生解碼套件並強化下載完整性檢查,同時修正記憶體釋放時機的耦合問題。

🛠 修正與改善

  • 記憶體釋放(working-set trim)改為等到解碼池真正收縮完成後才觸發,避免時機錯位
  • 新增建置時的校驗和比對機制,原生解碼庫版本不符或下載毀損時會自動重新抓取

⚙️ 內部/建置

  • ceyx 原生解碼套件升級至 v0.1.22(記憶體池閒置自動收縮),再升級至 v0.1.23
  • 新增版本不符時的例外處理與對應測試

v1.0.8

Choose a tag to compare

@github-actions github-actions released this 11 Sep 18:53

Highlights

Image cache strategy now retains only the resolution actually needed, cutting memory footprint significantly, and a system memory-pressure auto-downgrade mechanism was added.

✨ Added

  • System memory-pressure detection: under pressure, the cache budget and far-band retention automatically shrink
  • A per-kind payload capture instrument to help diagnose memory usage

🛠 Fixed & Improved

  • Image cache now retains only decoded pixels, no longer double-retaining a window-resolution copy — lowers memory footprint
  • Fixed a case where an evicted full-size image could fail to republish for display
  • Sidebar thumbnails now evict the duplicate low-res tile once the full-size image is ready

⚙️ Internal / Build

  • ceyx native decoder bumped to v0.1.21
  • Refreshed README project intro and screenshots
  • CI log-upload steps now continue-on-error instead of failing the whole run

版本重點

圖片快取策略調整為只保留必要解析度,大幅降低記憶體占用,並加入系統記憶體壓力自動降載機制。

✨ 新增

  • 新增系統記憶體壓力偵測,壓力大時自動縮減快取預算與遠端縮圖保留範圍
  • 新增依相片種類分類的資料量統計工具,方便診斷記憶體使用狀況

🛠 修正與改善

  • 圖片快取只保留已解碼像素,不再重複保留視窗解析度版本,降低記憶體占用
  • 修正部分情況下已被清除的全尺寸圖片無法重新顯示的問題
  • 側欄縮圖在全尺寸圖片就緒後,自動淘汰重複的低解析度縮圖

⚙️ 內部/建置

  • ceyx 原生解碼套件升級至 v0.1.21
  • 更新 README 專案介紹與截圖
  • CI 上傳紀錄步驟改為失敗不中斷整個流程

v1.0.7

Choose a tag to compare

@github-actions github-actions released this 08 Sep 14:17

Highlights

Updated the native decoder package and cleaned up legacy decode-pool toggle code; no user-visible new features.

⚙️ Internal / Build

  • ceyx native decoder bumped to v0.1.19, then to v0.1.20
  • Removed dead decode-pool kill-switch code
  • CI's decode-capability symbol check now points at the renamed function

版本重點

更新原生解碼套件並清理過時的解碼池切換程式碼,不含使用者可見的新功能。

⚙️ 內部/建置

  • ceyx 原生解碼套件升級至 v0.1.19,隨後再升級至 v0.1.20
  • 移除已停用的解碼池開關(kill-switch)舊程式碼
  • CI 針對解碼能力的符號檢查對應到新的函式名稱

v1.0.6

Choose a tag to compare

@github-actions github-actions released this 06 Sep 23:43

Highlights

Native orientation-correcting decode is now live in production, and performance-measurement tooling accuracy was improved.

✨ Added

  • The orientation-correcting decoder is now wired into the production path (replacing the earlier experimental wiring)

🛠 Fixed & Improved

  • Fixed a measurement gap in the performance-analysis tool for full-frame redraws and zero-submit cases

⚙️ Internal / Build

  • ceyx native decoder bumped to v0.1.17

版本重點

原生方向校正解碼功能正式上線,並補強效能量測工具的準確度。

✨ 新增

  • 原生方向校正解碼器正式接入正式版本(取代先前的實驗性接線)

🛠 修正與改善

  • 修正效能分析工具在全畫面重繪與零提交情境下的量測缺口

⚙️ 內部/建置

  • ceyx 原生解碼套件升級至 v0.1.17

v1.0.5

Choose a tag to compare

@github-actions github-actions released this 06 Sep 16:15

Highlights

Added native orientation-correcting decode support, and fixed build/memory-release issues on Intel Macs.

✨ Added

  • DNG decoding now applies orientation correction natively: photos come out of decode already correctly rotated per their EXIF orientation, no extra rotation step needed

🛠 Fixed & Improved

  • Fixed a dangling-reference issue in the macOS memory-release suppression logic

⚙️ Internal / Build

  • Added a macOS Intel (x64) CI leg with decoder architecture and symbol assertions
  • Hardened the staged-decoder architecture check to avoid using a library built for the wrong architecture

版本重點

新增原生方向校正解碼支援,並修正部分 Intel Mac 的建置與記憶體釋放問題。

✨ 新增

  • DNG 解碼支援原生方向校正:相片會依 EXIF 方向直接解出正確朝向,不需額外旋轉步驟

🛠 修正與改善

  • 修正 macOS 記憶體釋放抑制邏輯遺漏的參照問題

⚙️ 內部/建置

  • 新增 macOS Intel(x64)CI 建置,含解碼庫架構與符號驗證
  • 強化 staged 解碼庫的架構檢查,避免誤用錯誤架構的函式庫

v1.0.4

Choose a tag to compare

@github-actions github-actions released this 06 Sep 15:20

Highlights

Core image-pipeline refactor to cut memory usage and duplicate decoding, plus CI switched to a "compile-only" mode.

🛠 Fixed & Improved

  • Image pipeline moved to unified payload ownership management, reducing races and potential memory leaks
  • Worker-thread counts for each stage (encode, thumbnail derivation) are now derived from a single source tied to the user's decode-width setting
  • Added a per-frame publish byte-quota to prevent bursts of data from causing jank
  • Fixed a possible crash from an EXIF notification firing after a photo selection was disposed
  • Sidebar thumbnail encoding now reuses a persistent worker thread, speeding up sidebar thumbnail generation

⚙️ Internal / Build

  • CI switched to compile-and-package only; the full test suite no longer runs in CI (user decision)
  • ceyx native decoder bumped to v0.1.16
  • Image-pipeline test files consolidated (60 files merged down to 15)

版本重點

圖片處理管線核心重構,降低記憶體用量與重複解碼,並將 CI 改為「僅編譯」模式。

🛠 修正與改善

  • 圖片處理管線改為統一的資料所有權管理,減少競態與潛在記憶體洩漏
  • 依使用者設定的解碼路數,統一推導各階段(編碼、縮圖產生)的工作執行緒數量
  • 新增每畫面發佈資料量配額,避免瞬間大量資料湧入造成卡頓
  • 修正切換相片後、視窗即將關閉前可能發生的 EXIF 通知崩潰問題
  • 縮圖編碼改用常駐工作執行緒,加快側欄縮圖產生速度

⚙️ 內部/建置

  • CI 改為僅編譯與封裝,不再於 CI 中執行完整測試套件(使用者裁定)
  • ceyx 原生解碼套件升級至 v0.1.16
  • 圖片管線測試檔案大量整併(60 個檔案整併為 15 個)

v1.0.3.5

Choose a tag to compare

@github-actions github-actions released this 05 Sep 13:46

Highlights

Added three switchable interface themes (Gallery, Darkroom, Paper), significantly tuned image-publish scheduling and memory-release timing during browsing, and turned on automated release publishing.

✨ Added

  • Three new desktop/mobile interface themes: Gallery, Darkroom, and Paper, each with its own filmstrip, EXIF caption corner, and action-menu layout
  • New Appearance settings tab to switch layout theme and light/dark/system mode
  • CI now auto-creates a GitHub release from the version number after a green run (no more manual releases)

🛠 Fixed & Improved

  • Image-publish scheduling is now idle-priority and frame-budget-paced, keeping fast browsing smooth instead of janky
  • Fixed occasional duplicate decodes and a race condition when rapidly switching photos
  • Fixed keyboard navigation in Darkroom/Paper themes not auto-scrolling the filmstrip to the currently selected photo
  • Fixed the memory-release (working-set trim) mechanism not firing in some cases

⚙️ Internal / Build

  • Windows CI test repairs and stabilization
  • ceyx native decoder bumped to v0.1.14
  • Substantial performance-diagnostics tooling and test hardening

版本重點

新增三種可切換的介面主題(藝廊、暗房、相紙),大幅優化瀏覽時的圖片發佈排程與記憶體釋放時機,並開始自動化版本發佈流程。

✨ 新增

  • 新增三種桌面/行動版介面主題:藝廊(Gallery)、暗房(Darkroom)、相紙(Paper),各自有專屬的縮圖列、EXIF 角標與操作選單佈局
  • 新增外觀設定分頁,可切換版面主題與淺色/深色/跟隨系統
  • CI 測試綠燈後自動依版本號建立發佈(不再需要手動發版)

🛠 修正與改善

  • 圖片發佈排程改為閒置優先、依畫面預算節流,快速瀏覽時更順暢不卡頓
  • 修正快速切換相片時偶發的重複解碼與競態問題
  • 修正鍵盤導覽在暗房/相紙主題下未自動捲動至目前選取相片的問題
  • 修正記憶體釋放機制在部分情況下未生效的問題

⚙️ 內部/建置

  • Windows CI 測試修復與穩定化
  • ceyx 原生解碼套件升級至 v0.1.14
  • 大量效能診斷工具與測試補強

v1.0.3

Choose a tag to compare

@github-actions github-actions released this 01 Sep 10:15

Highlights

Hardened integrity verification for the macOS native decoder library, and simplified parallel-decode configuration.

🛠 Fixed & Improved

  • Added a three-stage check that verifies the re-signed macOS decoder library is still intact and usable
  • Removed automatic parallel-decode capability probing; the user now sets 1–8 lanes directly

⚙️ Internal / Build

  • Build now asserts that a locally-compiled decoder library exports the required FFI symbols
  • Pinned ceyx v0.1.10

版本重點

強化 macOS 原生解碼函式庫的完整性驗證,並簡化平行解碼設定。

🛠 修正與改善

  • 新增三段式驗證,確保重新簽章後的 macOS 解碼庫仍完好可用
  • 移除平行解碼能力自動偵測,改由使用者自行設定 1–8 路

⚙️ 內部/建置

  • 建置時檢查本機編譯的解碼庫是否正確輸出必要的介面函式
  • 釘選 ceyx v0.1.10

v1.0.2

Choose a tag to compare

@github-actions github-actions released this 31 Aug 14:01

Highlights

A large feature and cleanup release: a brand-new tabbed Settings window (Performance/Memory, Export, Appearance), multi-format export, customizable keyboard shortcuts, across-the-board image pipeline performance work, and the CI build system rewritten in Python.

✨ Added

  • Brand-new tabbed Settings window: Performance & Memory, Export format/quality, Appearance theme
  • Export photos in six formats (with EXIF preserved), with adjustable export quality and size
  • Import support for AVIF (via libheif) and JXL
  • Customizable keyboard shortcut bindings
  • Adjustable parallel decode width (1–8), auto-estimated from available memory and CPU core count

🛠 Fixed & Improved

  • Fixed Sony ARW embedded thumbnails failing to extract
  • Fixed the app icon on Windows/Linux/iOS (previously only macOS was correct)
  • Raised the image cache budget ceiling (512/384/256 MiB) for smoother browsing of large sets
  • Fixed cross-platform physical memory reads (removed the macOS-only channel that left other platforms blind)
  • Eliminated a race that caused duplicate decodes of the same full-size image across threads
  • Sidebar thumbnails now derive from the shared quality-normalized cache, speeding up display

⚙️ Internal / Build

  • CI build system rewritten in Python, replacing the previous scattered shell/PowerShell scripts
  • ceyx native decoder bumped repeatedly (v0.1.3 → v0.1.7), now fetched as a full tarball with a lockfile cross-check
  • Substantial test coverage additions and cleanup

版本重點

大型功能與整理版本:全新分頁式設定視窗(效能/記憶體、匯出、外觀)、多格式匯出、可自訂鍵盤快捷鍵、圖片處理管線效能全面優化,並將 CI 建置系統重寫為 Python。

✨ 新增

  • 全新分頁式設定視窗:效能與記憶體、匯出格式與品質、外觀主題
  • 支援六種相片匯出格式(含 EXIF 保留),可調整匯出品質與尺寸
  • 匯入支援 AVIF(透過 libheif)與 JXL
  • 可自訂鍵盤快捷鍵綁定
  • 可調整平行解碼路數(1–8),依可用記憶體與 CPU 核心數自動估算合理上限

🛠 修正與改善

  • 修正 Sony ARW 內嵌縮圖無法擷取的問題
  • 修正 Windows/Linux/iOS 應用程式圖示錯誤(先前僅 macOS 正確)
  • 提升圖片快取容量上限(512/384/256 MiB),大量瀏覽更流暢
  • 修正跨平台讀取實體記憶體大小的方式(移除僅限 macOS 的作法,其他平台先前讀不到)
  • 消除多執行緒同時處理同一張全尺寸圖片時的重複解碼問題
  • 側欄縮圖改由共用畫質快取衍生,加快顯示速度

⚙️ 內部/建置

  • CI 建置系統重寫為 Python,取代原本分散的 shell/PowerShell 腳本
  • ceyx 原生解碼套件多次升級(v0.1.3 → v0.1.7),改為完整下載並用鎖定檔交叉驗證完整性
  • 大量測試案例補強與整理