Skip to content

Conversation

@zeriyoshi
Copy link
Collaborator

@zeriyoshi zeriyoshi commented Dec 23, 2025

  • [Electron] Improved GUI responsiveness
  • [Electron] PNG: Added option to multithreading (palette256)
  • [Electron] Added auto-update check when resetting settings
  • [Electron] Fundamentally restructured the GUI again
  • [Electron] Improved overall performance with SIMD
  • [Electron / Chrome] Added display of conversion time in milliseconds
  • [Electron / Chrome] Added cancel conversion fucntion in progress
  • and more

@zeriyoshi zeriyoshi added this to the 12.1.0 milestone Dec 23, 2025
@zeriyoshi zeriyoshi self-assigned this Dec 23, 2025
Copilot AI review requested due to automatic review settings December 23, 2025 17:05
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This pull request introduces multi-threaded image processing support across the Colopresso library and applications (Electron/Chrome), fundamentally restructuring the GUI architecture for improved responsiveness and performance. The changes add pthreads support for C code, Rayon thread pools for Rust bridge code, and implement a web worker-based conversion architecture for the frontend.

Key changes:

  • Added cross-platform threading support (pthreads on Unix/macOS, Windows Thread API wrapper on Windows, Emscripten pthreads for WASM)
  • Implemented parallel processing for CPU-intensive PNG operations (bit-depth reduction, palette quantization)
  • Restructured GUI to use web workers for non-blocking conversions with cancellation support
  • Added WASM separation mode for stable Rust builds (Chrome Extension/Electron without native threads)

Reviewed changes

Copilot reviewed 68 out of 70 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
library/src/thread.c New file implementing parallel_for with pthread-based thread pool for C code
library/src/portable.c Added Windows thread API wrapper (pthread compatibility layer)
library/src/pngx_reduced.c Parallelized bitdepth reduction and color quantization operations
library/src/pngx_palette256.c Added prepare/finalize API for separated WASM quantization workflow
library/src/pngx_limited.c Parallelized limited4444 bitdepth reduction
library/src/pngx_common.c Parallelized snap_rgba_image_to_bits operation
library/pngx_bridge/src/lib.rs Implemented thread pool caching for Rayon, added WASM-bindgen support
library/pngx_bridge/src/wasm.rs New WASM module with separate quantization/optimization APIs
library/pngx_bridge/Cargo.toml Added optional rayon and wasm-bindgen features
cmake/threads.cmake New CMake module for cross-platform thread configuration
cmake/pngx_bridge_wasm.cmake Build system for separate WASM bridge module
app/shared/core/conversionWorker.ts New web worker for background image conversion
app/shared/core/conversionWorkerClient.ts Client interface for worker communication
app/shared/core/pngxBridge.ts TypeScript bindings for WASM-separated pngx_bridge
app/electron/main.ts Added cross-origin isolation for SharedArrayBuffer support

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@zeriyoshi zeriyoshi merged commit e9dbb8b into main Dec 26, 2025
10 checks passed
@zeriyoshi zeriyoshi deleted the prepare_12_1_0 branch December 26, 2025 10:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants