diff --git a/.claude/settings.local.json b/.claude/settings.local.json deleted file mode 100644 index c24ee9d..0000000 --- a/.claude/settings.local.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "permissions": { - "allow": [ - "Bash(find /c/Users/noahe/Documents/ChimpStackr/src/algorithms -name \"*.py\" -exec wc -l {} +)", - "Bash(wc -l /c/Users/noahe/Documents/ChimpStackr/src/algorithms/stacking_algorithms/*.py)", - "Bash(find /c/Users/noahe/Documents/ChimpStackr/src -name \"*.py\" -exec wc -l {} +)", - "Bash(grep -r \"TODO\\\\|FIXME\\\\|XXX\\\\|HACK\" /c/Users/noahe/Documents/ChimpStackr/src --include=*.py)", - "Bash(python -m pytest tests/ -v)" - ] - } -} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6dce9a6..a7a78c0 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -15,8 +15,6 @@ jobs: steps: - uses: actions/checkout@v7 - with: - lfs: true - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v5 @@ -26,7 +24,7 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - pip install numpy opencv-python-headless numba rawpy imageio pyfftw scipy pytest + pip install -r requirements.txt pytest - name: Run tests (no Qt) run: | diff --git a/.gitignore b/.gitignore index 42d10fc..50af9d8 100644 --- a/.gitignore +++ b/.gitignore @@ -153,4 +153,10 @@ dmypy.json .pytype/ # Cython debug symbols -cython_debug/src/_version_static.py +cython_debug/ + +# Generated at build time by scripts/build_*.sh +src/_version_static.py + +# Claude Code per-machine settings +.claude/settings.local.json diff --git a/README.md b/README.md index aa84686..d0d75e7 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ Open-source focus stacking application for Windows, macOS, and Linux. ## Features - **4 stacking algorithms:** Laplacian Pyramid, Weighted Average, Depth Map, Exposure Fusion (HDR) -- **Automatic alignment:** Translation-only or Rotation + Scale correction (focus breathing) +- **Automatic alignment:** Translation, Euclidean (rotation), Similarity (rotation + scale, for focus breathing), or Affine correction - **16-bit pipeline:** Full bit-depth preservation from RAW to output - **Auto-crop:** Removes black edges from alignment shifts - **Auto-tuning:** Parameters auto-detected from image resolution @@ -29,7 +29,8 @@ Pre-built packages are available on the [Releases](https://github.com/noah-peete |---|---|---| | **Windows** | `ChimpStackr-Windows.zip` | Extract and run `chimpstackr.exe` | | **macOS** | `ChimpStackr-macOS.dmg` | Open DMG, drag to Applications | -| **Linux** | `ChimpStackr-Linux-x86_64.AppImage` | `chmod +x` and run | +| **Linux (AppImage)** | `ChimpStackr-Linux-x86_64.AppImage` | `chmod +x` and run | +| **Linux (Flatpak)** | `ChimpStackr-Linux.flatpak` | `flatpak install ChimpStackr-Linux.flatpak` | ## CLI Usage diff --git a/docs/index.md b/docs/index.md index e0d0012..3508805 100644 --- a/docs/index.md +++ b/docs/index.md @@ -11,7 +11,7 @@ description: Open-source focus stacking for Windows, macOS, and Linux ## Features - **4 stacking algorithms** — Laplacian Pyramid, Weighted Average, Depth Map, Exposure Fusion (HDR) -- **Automatic alignment** — translation-only or rotation + scale correction (focus breathing) +- **Automatic alignment** — translation, euclidean (rotation), similarity (rotation + scale, for focus breathing), or affine correction - **16-bit pipeline** — full bit-depth preservation from RAW to output - **Auto-crop** — removes black edges from alignment shifts - **Auto-tuning** — parameters auto-detected from image resolution @@ -31,7 +31,8 @@ Pre-built packages are on the [Releases](https://github.com/noah-peeters/ChimpSt |---|---|---| | **Windows** | `ChimpStackr-Windows.zip` | Extract and run `chimpstackr.exe` | | **macOS** | `ChimpStackr-macOS.dmg` | Open DMG, drag to Applications | -| **Linux** | `ChimpStackr-Linux-x86_64.AppImage` | `chmod +x` and run | +| **Linux (AppImage)** | `ChimpStackr-Linux-x86_64.AppImage` | `chmod +x` and run | +| **Linux (Flatpak)** | `ChimpStackr-Linux.flatpak` | `flatpak install ChimpStackr-Linux.flatpak` | ## CLI quickstart diff --git a/docs/packaging.md b/docs/packaging.md index 648f47c..64cf2b1 100644 --- a/docs/packaging.md +++ b/docs/packaging.md @@ -118,7 +118,7 @@ The build script wraps the PyInstaller output in an AppImage: ### Linux Flatpak -Flatpak packaging files are in `packaging/flatpak/`. The Flatpak build uses the KDE 6.9 runtime with the PySide BaseApp (provides PySide6 bindings linked against the runtime's Qt6). +Flatpak packaging files are in `packaging/flatpak/`. The Flatpak build uses the KDE 6.10 runtime with the PySide BaseApp (provides PySide6 bindings linked against the runtime's Qt6). **App ID:** `io.github.noah_peeters.ChimpStackr` @@ -135,7 +135,7 @@ Flatpak packaging files are in `packaging/flatpak/`. The Flatpak build uses the ```bash # Install prerequisites sudo apt install flatpak flatpak-builder -flatpak install flathub org.kde.Platform//6.9 org.kde.Sdk//6.9 io.qt.PySide.BaseApp//6.9 +flatpak install flathub org.kde.Platform//6.10 org.kde.Sdk//6.10 io.qt.PySide.BaseApp//6.10 # Build and install locally ./scripts/build_flatpak.sh @@ -151,7 +151,7 @@ flatpak run io.github.noah_peeters.ChimpStackr - FFTW3 (float + double precision) -- required by pyFFTW - LibRaw -- required by rawpy -The CI workflow uses `flatpak/flatpak-github-actions` with the `ghcr.io/flathub-infra/flatpak-github-actions:kde-6.9` container image to build and produce a `.flatpak` bundle attached to each release. +The CI workflow uses `flatpak/flatpak-github-actions` with the `ghcr.io/flathub-infra/flatpak-github-actions:kde-6.10` container image to build and produce a `.flatpak` bundle attached to each release. ### Heavy dependencies diff --git a/packaging/flatpak/io.github.noah_peeters.ChimpStackr.metainfo.xml b/packaging/flatpak/io.github.noah_peeters.ChimpStackr.metainfo.xml index 771eddd..10e71c2 100644 --- a/packaging/flatpak/io.github.noah_peeters.ChimpStackr.metainfo.xml +++ b/packaging/flatpak/io.github.noah_peeters.ChimpStackr.metainfo.xml @@ -60,7 +60,27 @@ - + + +

Four alignment modes: translation, euclidean, similarity and affine.

+
+
+ + +

Flatpak packaging fixes and metainfo screenshots.

+
+
+ + +

Flatpak packaging, EXIF auto-rotation, support for mixed image dimensions, 16-bit TIFF/PNG and EXR output.

+
+
+ + +

GPU-accelerated stacking pipeline with CuPy, large CPU pipeline optimisations, Windows fixes.

+
+
+

Major update with multiple stacking algorithms, CLI support, modern UI, and cross-platform packaging.