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) eti(ignorer & suivant), en plus de←/→pour naviguer etÉchappour 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_keysetget_folder_groups_pagefiltrent 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) andi(ignore & next), in addition to←/→to navigate andEscto 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_keysandget_folder_groups_pagenow 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
/Applicationsdepuis le.dmg, puis lancer une fois en terminal :
The app is not signed. Drag it into/Applicationsfrom the.dmg, then run once in Terminal:xattr -cr /Applications/Deduplicateur.app
Linux :
ffmpegetfpcalcdoivent être dans lePATHpour la variante light (sudo apt-get install ffmpeg libchromaprint-tools). Pour le lecteur natif vidéo (variante full), installer aussilibmpv2:sudo apt-get install libmpv2.
ffmpegandfpcalcmust be on thePATHfor the light build. The native video player (full build) requireslibmpv2: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
useComparatorNavshared workflow (keep & next / ignore & next / keyboard 1/2/i) covering the three media comparators. NewSideDrawer+KeepActions+DualScrollableTabs<T>factored components. HelpersuseThemeanduseIgnoreListextracted fromApp.tsx. - Backend-driven text filter in by-folder mode: unified
group_matches_filterpredicate (folder_key OR file name OR file path) used bylist_folder_keys,get_folder_groups_page,select_all_duplicatesandsmart_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_pairsupstream ofbuild_similar_groups. New regression tests + AGENTS.md rule to lock the contract. - Sessions:
list_sessionsappliesfiltered_viewto each session summary so "Mes analyses" counters honour the ignore list; frontend re-fetcheslist_sessionsonresetResultsto 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 insrc/test-setup.ts.
Full changelog
See CHANGELOG.md for the complete list.