Skip to content

Image compare in Krokiet, RMB context menu, changed AV1 codec#1888

Merged
qarmin merged 10 commits intomasterfrom
tstst
Apr 3, 2026
Merged

Image compare in Krokiet, RMB context menu, changed AV1 codec#1888
qarmin merged 10 commits intomasterfrom
tstst

Conversation

@qarmin
Copy link
Copy Markdown
Owner

@qarmin qarmin commented Mar 27, 2026

Fixes #1805
Fixes #1114
Fixes #684
Fixes #92

  • Using for now unstable slint 1.16, which fixes some issues with very slow scrolling in Cedinia(still is slow, but now it)
  • Added image comparator for Krokiet
  • Added context menu at right click
  • Changed Av1 codec to libsvtav1
  • Updated translations and added Hindi, Indonesian and Vietnamese languages
  • FFmpeg custom command + noise reduction
  • Adding Krokiet.exe into windows zip folder
Screencast.From.2026-03-27.20-37-09.mp4

Copy link
Copy Markdown

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 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, tighten image crate features, and introduce uv-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.

Comment thread krokiet/src/connect_compare.rs
Comment thread misc/ai_translate/translate.py
Comment thread misc/pyproject.toml
Comment thread justfile
Comment thread Cargo.toml
Comment thread krokiet/src/connect_row_selection.rs Outdated
Comment thread krokiet/src/connect_row_selection.rs Outdated
Comment thread krokiet/src/connect_compare.rs
Comment thread krokiet/src/connect_row_selection.rs Outdated
Comment thread krokiet/src/connect_row_selection.rs
@qarmin qarmin changed the title Cross Image compare in Krokiet, RMB context menu, changed AV1 codec Mar 27, 2026
Copy link
Copy Markdown

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

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.

Comment thread krokiet/ui/translations.slint
Comment thread krokiet/ui/translations.slint
Comment thread README.md Outdated
Comment thread misc/find_unused_callbacks.py
Copy link
Copy Markdown

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

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 -vf filter 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_command treats 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 execute ffmpeg and 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 the image crate versions typically used with DynamicImage (which usually provides new_rgba8, new_rgb8, etc.). This is likely a compile error. Construct the destination image using the appropriate DynamicImage::new_* variant (based on img.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.

@qarmin qarmin merged commit 8aa765f into master Apr 3, 2026
37 checks passed
@qarmin qarmin deleted the tstst branch April 3, 2026 05:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants