Conversation
There was a problem hiding this comment.
Pull request overview
This PR updates the UI/UX of Krokiet with a new image-compare overlay and right-click context menu actions, while also adjusting media/tooling dependencies (Slint via git patch, AV1 codec choice, image crate features, and Python tooling setup).
Changes:
- Add Image Compare mode for Similar Images (overlay UI + Rust backend for loading thumbnails/full images and computing pixel diffs).
- Add right-click context menu in the results table with actions (open/remove/select/exclude/copy).
- Update dependencies/tooling: patch Slint to a git rev, switch AV1 codec to
libsvtav1, tightenimagecrate features, and introduceuv-based Python tooling flow.
Reviewed changes
Copilot reviewed 27 out of 35 changed files in this pull request and generated 15 comments.
Show a summary per file
| File | Description |
|---|---|
| misc/pyproject.toml | New Python tooling project definition used by uv in just fix. |
| misc/ai_translate/translate.py | Simplifies ollama import behavior in translation helper. |
| misc/ai_translate/pyproject.toml | Removes per-subdir pyproject in favor of misc-level one. |
| krokiet/ui/translations.slint | Adds translation properties for context menu and compare UI. |
| krokiet/ui/selectable_tree_view.slint | Hooks right-click to show a new context menu and wires callbacks. |
| krokiet/ui/popup_context_menu.slint | New popup component implementing the context menu UI. |
| krokiet/ui/main_window.slint | Mounts the Image Compare overlay when enabled via GuiState. |
| krokiet/ui/image_compare.slint | New overlay UI for comparing images and viewing diff/info/loading state. |
| krokiet/ui/gui_state.slint | Adds compare-mode state (visibility, indices, images, loading/diff state). |
| krokiet/ui/common.slint | Adds CompareImageData struct for compare-mode model items. |
| krokiet/ui/color_palette.slint | Adds compare-mode color tokens. |
| krokiet/ui/callabler.slint | Adds callbacks for context menu actions and compare-mode operations. |
| krokiet/ui/action_buttons.slint | Adds a Compare button for Similar Images tab. |
| krokiet/src/main.rs | Registers new compare connector module. |
| krokiet/src/connect_translation.rs | Wires new translation keys into Slint Translations global. |
| krokiet/src/connect_row_selection.rs | Adds context-menu action handlers and adjusts counter panic message. |
| krokiet/src/connect_directories_changes.rs | Exposes add_excluded_paths for context menu exclusion actions. |
| krokiet/src/connect_compare.rs | New compare backend: open group, load images, toggle checks, compute diffs. |
| krokiet/icons/krokiet_compare*.svg | Adds icons for compare UI controls. |
| krokiet/i18n/en/krokiet.ftl | Adds English strings for compare/context-menu UI. |
| krokiet/Cargo.toml | Adds copypasta; narrows image crate features. |
| justfile | Updates fix workflow to use uv and adds heaptrack recipes. |
| czkawka_gui/Cargo.toml | Narrows image crate features; removes unused deps. |
| czkawka_core/src/tools/video_optimizer/mod.rs | Switches AV1 encoder name to libsvtav1 and expands parsing aliases. |
| czkawka_core/src/common/image.rs | Adds resize_image_exact helper used by diff computation. |
| cedinia/src/thumbnail_loader.rs | Switches thumbnail resizing filter type to core’s FIR filter type. |
| cedinia/Cargo.toml | Removes fast_image_resize direct dep; narrows image features. |
| Cargo.toml | Adds workspace-wide git patch for Slint/slint-build; excludes test crate. |
| Cargo.lock | Locks updated dependency graph including Slint git rev and other bumps. |
| .gitignore | Ignores generated root pyproject.toml and uv.lock. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 106 out of 281 changed files in this pull request and generated 4 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 119 out of 184 changed files in this pull request and generated no new comments.
Comments suppressed due to low confidence (4)
czkawka_core/src/tools/video_optimizer/core/video_converter.rs:1
split_whitespace()breaks valid ffmpeg invocations that rely on quoting or arguments containing spaces (common for-vffilter graphs, metadata, or file paths). It also makes it hard/impossible to pass complex filter expressions reliably. Use a shell-like argument parser (e.g., shlex-style) or change the API to accept a structured list of args instead of a single string.
czkawka_cli/src/commands.rs:1- The help text says this flag is “arguments to pass to ffmpeg”, but
run_custom_commandtreats the first token as the executable (Command::new(first_arg)). This mismatch will lead to user confusion (e.g., providing-i {PATH} ...will fail). Make the behavior consistent by either (a) changing the code to always executeffmpegand treat the flag as args only, or (b) updating docs/UI hints to explicitly require the full command including the executable name.
czkawka_core/src/common/image.rs:1 DynamicImage::new(width, height, img.color())is not a supported constructor in theimagecrate versions typically used withDynamicImage(which usually providesnew_rgba8,new_rgb8, etc.). This is likely a compile error. Construct the destination image using the appropriateDynamicImage::new_*variant (based onimg.color()) or allocate a concrete image buffer type and wrap it.
cedinia/src/settings/gui_settings_values.rs:1- Correct the typo in the comment ('slowefor' → 'slow for').
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Fixes #1805
Fixes #1114
Fixes #684
Fixes #92
Screencast.From.2026-03-27.20-37-09.mp4