Skip to content

Déduplicateur 1.3.0

Latest

Choose a tag to compare

@github-actions github-actions released this 28 May 09:37

Déduplicateur 1.3.0 - Triage rapide et recherche étendue

Cette release minor fait évoluer le comparateur en outil de triage rapide : sous chaque image, vidéo ou audio, deux boutons Garder & suivant et Garder & fermer ; dans le header, 🚫 Ignorer & suivant ; au clavier, 1 / 2 / i pour enchaîner sans la souris. Le filtre texte en mode par dossier regarde désormais tout - le nom du dossier ET les noms/chemins des fichiers qu'il contient. Les panneaux Groupes ignorés et Mes profils passent en drawers latéraux partagés avec recherche, et les bandeaux dossier/groupe restent collés en haut du scroll.

This minor release turns the comparator into a fast triage workflow: below each image, video or audio panel, two buttons Keep & next and Keep & close; in the header, 🚫 Ignore & next; on the keyboard, 1 / 2 / i to chain decisions without the mouse. The by-folder text filter now searches everything - the folder name AND any file name or path inside it. The Ignored Groups and Profiles panels move to shared side drawers with search, and folder/group banners stick to the top of the scroll.


🇫🇷 Au programme

  • Triage rapide dans les comparateurs (image / vidéo / audio) : boutons Garder & suivant (principal) et Garder & fermer (secondaire) sous chaque panneau ; 🚫 Ignorer & suivant dans le header ; raccourcis clavier 1 / 2 (garder gauche / droite & suivant) et i (ignorer & suivant), en plus de / pour naviguer et Échap pour fermer.
  • Filtre par dossier élargi : taper un nom de fichier fait apparaître le dossier qui le contient, et seuls les groupes correspondants s'affichent une fois le dossier déplié. Côté moteur, list_folder_keys et get_folder_groups_page filtrent désormais en amont.
  • Groupes ignorés en drawer : nouveau panneau latéral avec champ de recherche par nom ou chemin, tri "plus récent" / "alphabétique", miniatures, boutons "ouvrir le fichier" / "ouvrir le dossier". Plus de dropdown qui déborde sur les petites fenêtres.
  • Mes profils en drawer : même pattern que Groupes ignorés, avec recherche par nom de profil ou par dossier.
  • Bandeaux dossier + groupe sticky : en mode par dossier, les en-têtes restent visibles pendant le scroll, le bandeau groupe parfaitement aligné sous le bandeau dossier (hauteur mesurée à la volée).
  • Flèches de scroll pour les onglets en débordement : quand un groupe contient beaucoup de fichiers, des / apparaissent aux bords de la barre d'onglets et la rendent scrollable de façon découvrable - dans les comparateurs image/vidéo/audio et archives.
  • Cohérence visuelle des icônes : 🚫 partout pour l'action ignorer (liste + drawer + comparateur), 👤 pour le drawer profils.

🇬🇧 What's new

  • Fast triage in the image / video / audio comparators: Keep & next (primary) and Keep & close (secondary) below each panel; 🚫 Ignore & next in the header; keyboard shortcuts 1 / 2 (keep left / right & next) and i (ignore & next), in addition to / to navigate and Esc to close.
  • Broader by-folder filter: typing a file name surfaces the folder that contains it, and only matching groups are shown when that folder is expanded. Under the hood, list_folder_keys and get_folder_groups_page now filter upstream.
  • Ignored Groups as a side drawer: new full-height panel with a name/path search field, "most recent" / "alphabetical" sort, thumbnails, "open file" / "reveal in folder" buttons. No more dropdown overflowing on small windows.
  • Profiles as a side drawer: same pattern as Ignored Groups, with a search field filtering by profile name or folder.
  • Sticky folder + group banners: in by-folder mode, section headers remain visible while scrolling, the group banner exactly anchored under the folder banner (height measured at runtime).
  • Scroll arrows for overflowing tabs: when a group has many files, discoverable / arrows appear at the tab strip edges - in the image/video/audio and archive comparators.
  • Visual consistency for icons: 🚫 everywhere for the ignore action (list + drawer + comparator), 👤 for the profiles drawer.

Downloads

Two flavours per OS. light = standard build (uses ffmpeg / fpcalc from your PATH for video and audio detection ; native video player disabled). full = ffmpeg + fpcalc bundled and the native video player enabled (libmpv embedded for codecs the HTML5 <video> cannot read).

OS light full
Windows Deduplicateur_1.3.0_x64-setup.exe / .msi Deduplicateur-full_1.3.0_x64-setup.exe / .msi
Linux Deduplicateur_1.3.0_amd64.AppImage / .deb Deduplicateur-full_1.3.0_amd64.AppImage / .deb
macOS (arm64) Deduplicateur_1.3.0_aarch64.dmg -

Install notes

Windows : SmartScreen peut afficher un avertissement au premier lancement. Cliquer sur « Plus d'informations » puis « Exécuter quand même ».
SmartScreen may warn at first launch. Click "More info" then "Run anyway".

macOS : l'app n'est pas signée. Glisser dans /Applications depuis le .dmg, puis lancer une fois en terminal :
The app is not signed. Drag it into /Applications from the .dmg, then run once in Terminal:

xattr -cr /Applications/Deduplicateur.app

Linux : ffmpeg et fpcalc doivent être dans le PATH pour la variante light (sudo apt-get install ffmpeg libchromaprint-tools). Pour le lecteur natif vidéo (variante full), installer aussi libmpv2 : sudo apt-get install libmpv2.
ffmpeg and fpcalc must be on the PATH for the light build. The native video player (full build) requires libmpv2: sudo apt-get install libmpv2.

Under the hood

Rust + Tauri 2 (332 unit tests, +11 since 1.2.2), React 18 + TypeScript (518 unit tests, +31 since 1.2.2). Highlights of this release:

  • New useComparatorNav shared workflow (keep & next / ignore & next / keyboard 1/2/i) covering the three media comparators. New SideDrawer + KeepActions + DualScrollableTabs<T> factored components. Helpers useTheme and useIgnoreList extracted from App.tsx.
  • Backend-driven text filter in by-folder mode: unified group_matches_filter predicate (folder_key OR file name OR file path) used by list_folder_keys, get_folder_groups_page, select_all_duplicates and smart_select ; frontend debounced reload on filter changes.
  • Scanner: similarity phases (pHash images, video, audio) now respect subfolder isolation in by-folder mode by filtering similar_pairs upstream of build_similar_groups. New regression tests + AGENTS.md rule to lock the contract.
  • Sessions: list_sessions applies filtered_view to each session summary so "Mes analyses" counters honour the ignore list; frontend re-fetches list_sessions on resetResults to stay in sync after deletion or ignore.
  • Quality sweep: 13 dead i18n keys removed, clippy --fix run on the Rust side (0 warning on lib + lib test), media extension lists centralised in media_types.rs, Tauri test mocks centralised in src/test-setup.ts.

Full changelog

See CHANGELOG.md for the complete list.