Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
30 changes: 30 additions & 0 deletions faststack/ChangeLog.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,35 @@
# ChangeLog

## [1.0.0] - 2025-11-21

### Major Features
- **Batch Selection System:** New batch selection mode for drag-and-drop operations
- `{` to begin batch, `}` to end batch, `\` to clear all batches
- `X` or `S` keys remove individual images from batches/stacks (shrinks or splits ranges)
- Batches automatically cleared after successful drag operation
- Multiple files can now be dragged to browsers and external applications simultaneously
- **Manual Flag Toggles:** Added keyboard shortcuts to manually control metadata flags
- `U` toggles uploaded flag
- `Ctrl+E` toggles edited flag
- `Ctrl+S` toggles stacked flag
- **Edited Flag Tracking:** New metadata flag for images edited in Photoshop
- Displays "Edited on [date]" in status bar (green)
- Can be manually toggled with `Ctrl+E`
- **Jump to Image Dialog:** Press `G` to jump directly to any image by number
- Dynamic input field sizing based on image count
- Proper keyboard event capture while dialog is open

### UI/UX Improvements
- **Auto Zoom Reset:** Image view automatically resets to fit-window after drag operations
- **Smooth Window Dragging:** Fixed flickering when dragging title bar by using global coordinates
- **Status Bar Enhancements:**
- Added batch info display (green badge showing position/count)
- Added uploaded status display
- Added edited status display

### Bug Fixes
- **Multi-file Drag:** Simplified drag implementation to work correctly with Chrome and other browsers

## [0.9.0] - 2025-11-20

### Performance Improvements
Expand Down
32 changes: 18 additions & 14 deletions faststack/README.md
Original file line number Diff line number Diff line change
@@ -1,28 +1,28 @@
# FastStack

# Version 0.9 - November 20, 2025
# Version 1.0 - November 21, 2025
# By Alan Rockefeller

Ultra-fast, caching JPG viewer designed for culling and selecting RAW files for focus stacking.
Ultra-fast, caching JPG viewer designed for culling and selecting RAW or JPG files for focus stacking and website upload.

This tool is optimized for speed, using `libjpeg-turbo` for decoding, aggressive prefetching, and byte-aware LRU caches to provide a fluid experience when reviewing thousands of images.

## Features

- **Instant Navigation:** Sub-10ms next/previous image switching on cache hits.
- **High-Performance Decoding:** Uses `PyTurboJPEG` for fast JPEG decoding, with a fallback to `Pillow`.
- **Zoom & Pan:** Smooth, mipmapped zooming and panning.
- **RAW Pairing:** Automatically maps JPGs to their corresponding RAW files (`.CR3`, `.ARW`, `.NEF`, etc.).
- **Instant Navigation:** Sub-10ms next/previous image switching, high peformance decoding via `PyTurboJPEG`.
- **Zoom & Pan:** Smooth zooming and panning.
- **Stack Selection:** Group images into stacks (`[`, `]`) and select them for processing (`S`).
- **Helicon Focus Integration:** Launch Helicon Focus with your selected RAW files with a single keypress (`Enter`).
- **Sidecar Metadata:** Saves flags, rejections, and stack groupings to a non-destructive `faststack.json` file.
- **Configurable:** Adjust cache sizes, prefetch behavior, and Helicon Focus path via a settings dialog and a persistent `.ini` file.
- **Photoshop Integration:** Edit current image in Photoshop (E key) - automatically uses RAW files when available
- **Photoshop Integration:** Edit current image in Photoshop (E key) - uses RAW files when available
- **Clipboard Support:** Copy image path to clipboard (Ctrl+C)
- **Image Filtering:** Filter images by filename
- **Drag & Drop:** Drag images to external applications
- **Drag & Drop:** Drag images to external applications. Press { and } to batch files to drag & drop multiple images.
- **Theme Support:** Toggle between light and dark themes
- **Delete & Undo:** Move images to recycle bin (Delete/Backspace) with undo support (Ctrl+Z)
- **Has Memory**:** Starts where you left off, tells you which images have been edited, stacked and uploaded
- **RAW Pairing:** Automatically maps JPGs to their corresponding RAW files (`.CR3`, `.ARW`, `.NEF`, etc.).
- **Configurable:** Adjust cache sizes, prefetch behavior, and Helicon Focus / Photoshop paths via a settings dialog and a persistent `.ini` file.
- **Accurate Colors:** Uses monitor ICC profile to display colors correctly.

Comment on lines +3 to 26
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Fix small typos and align shortcut docs with actual behavior

A few README issues to address so docs match the app:

  • Line 12: high peformancehigh performance.
  • Line 22: **Has Memory**:** has an extra **; should just be **Has Memory:**.

More importantly, the keyboard shortcut descriptions are out of sync with the implementation and the in‑app Key Bindings dialog:

  • G now opens the Jump to Image dialog (show_jump_to_image_dialog and JumpToImageDialog), not a grid view.
  • S / X are wired to remove_from_batch_or_stack, per the changelog and QML help (“Remove current image from batch/stack”), not a generic “toggle selection” anymore.

Suggested diff:

-# Version 1.0 - November 21, 2025
+# Version 1.0 - November 21, 2025

- Ultra-fast, caching JPG viewer designed for culling and selecting RAW or JPG files for focus stacking and website upload.
+ Ultra-fast, caching JPG viewer designed for culling and selecting RAW or JPG files for focus stacking and website upload.

-- **Instant Navigation:** Sub-10ms next/previous image switching, high peformance decoding via `PyTurboJPEG`.
+- **Instant Navigation:** Sub-10ms next/previous image switching, high performance decoding via `PyTurboJPEG`.
 ...
-- **Has Memory**:** Starts where you left off, tells you which images have been edited, stacked and uploaded
+- **Has Memory:** Starts where you left off, tells you which images have been edited, stacked and uploaded
 ...
-- `G`: Toggle Grid View (not implemented yet)
-- `S` or 'X': Toggle selection of current image for stacking / drag & drop
+- `G`: Jump to image number dialog
+- `S` or 'X': Remove current image from current batch/stack

Adjust the wording on the last line to whatever matches your precise UX, but keeping it consistent with remove_from_batch_or_stack and the Key Bindings dialog will avoid confusion.

Also applies to: 43-52

🧰 Tools
🪛 LanguageTool

[style] ~3-~3: Some style guides suggest that commas should set off the year in a month-day-year date.
Context: ...FastStack # Version 1.0 - November 21, 2025 # By Alan Rockefeller Ultra-fast, cach...

(MISSING_COMMA_AFTER_YEAR)


[grammar] ~12-~12: Ensure spelling is correct
Context: ...0ms next/previous image switching, high peformance decoding via PyTurboJPEG. - **Zoom & ...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

🤖 Prompt for AI Agents
In faststack/README.md around lines 3-26 (also apply same changes to lines
43-52), fix the typos and align shortcut docs with the app: change "high
peformance" to "high performance", collapse the extra bold markers so "**Has
Memory**:**" becomes "**Has Memory:**", update the keyboard shortcut
descriptions so G is described as "Open Jump to Image dialog" (matching
show_jump_to_image_dialog / JumpToImageDialog) instead of "grid view", and
change the S / X description to "Remove current image from batch/stack" (or
wording that matches remove_from_batch_or_stack and the Key Bindings dialog).

## Installation & Usage

Expand All @@ -40,12 +40,16 @@ This tool is optimized for speed, using `libjpeg-turbo` for decoding, aggressive

- `J` / `Right Arrow`: Next Image
- `K` / `Left Arrow`: Previous Image
- `G`: Toggle Grid View
- `S`: Toggle selection of current image for stacking
- `G`: Toggle Grid View (not implemented yet)
- `S` or 'X': Toggle selection of current image for stacking / drag & drop
- `[`: Begin new stack group
- `]`: End current stack group
- `Space`: Toggle Flag
- `X`: Toggle Reject
- `{`: Begin new drag & drop batch
- `}`: End current drag & drop batch
- '\': Clear drag & drop batch
- 'U': Toggle uploaded flag
- 'Ctrl+E': Toggle edited flag
- 'Ctrl+S': Toggle stacked flag
- `Enter`: Launch Helicon Focus with selected RAWs
- `E`: Edit in Photoshop (uses RAW file if available)
- `Delete` / `Backspace`: Move image to recycle bin
Expand Down
8 changes: 4 additions & 4 deletions faststack/faststack.egg-info/PKG-INFO
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Metadata-Version: 2.4
Name: faststack
Version: 0.8
Summary: Ultra-fast JPG Viewer for Focus Stacking Selection
Version: 1.0
Summary: Ultra-fast JPG Viewer for Focus Stacking Selection and website upload
Author-email: Alan Rockefeller <alanrockefeller@gmail.com>
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Expand All @@ -21,10 +21,10 @@ Dynamic: license-file

# FastStack

# Version 0.8 - November 20, 2025
# Version 1.0 - November 21, 2025
# By Alan Rockefeller

Ultra-fast, caching JPG viewer designed for culling and selecting RAW files for focus stacking.
Ultra-fast, caching JPG viewer designed for culling and selecting RAW or JPG files for focus stacking.

This tool is optimized for speed, using `libjpeg-turbo` for decoding, aggressive prefetching, and byte-aware LRU caches to provide a fluid experience when reviewing thousands of images.

Expand Down
Loading