CloneCollect - Changelog (user summary)
=======================================

The essentials only, newest first.


Maintenance releases (2026, Markus Lunk)
----------------------------------------

1.21
  - Ctrl-C now stops a run started from the Shell with SCAN (build 41). Until now it was
    ignored for as long as the run lasted - on a big drawer that was minutes, and the only
    way out was the window's Cancel button. Ctrl-C (or Break from another Shell) now
    cancels the run, quits CloneCollect and returns 5 with "***Break", like every Shell
    command. The EXPORT file is not written for a run that was stopped, so an exported list
    is always complete; a list interrupted while being written is removed instead of being
    left half there.
  - Picture (Analog) detection recognises rescaled copies again. 1.20 reduced every
    picture to its 16x16 comparison grid in a single step, and for a large photo that
    step sampled the picture instead of averaging it - so the same wallpaper at 1920x1200
    and at 320x200 produced different grids, and Analog missed exactly the case it is
    meant for. It was worst on dark, high-contrast pictures. Measured on a set of 141
    generated variants: the tolerance (Delta) needed to group a picture with its own
    copies dropped from 194 to 77 - and since everything starts matching everything at
    around 192, there had been no usable Delta at all. The reduction is now done in two
    steps and averages every pixel again, at under 2% more work per picture.
    If you kept a high Delta to work around this, go back to the default, or lower.
  - The default Analog tolerance (Delta) is now 80 instead of 127, and the guide explains
    how to choose it. 80 was measured, not guessed: on labelled sets of picture variants
    every group was found completely from 77 upwards, while unrelated pictures only began
    to be merged at 102 - so 127 was past the point where CloneCollect starts joining
    pictures that have nothing to do with each other, and because grouping is contagious
    (transitive: A similar to B and B similar to C makes them all land in the same group
    although A and C would not match in direct comparison), one wrong pair merges two whole
    groups. The right value depends on your own pictures:
    start at 80 and step in tens - down (70, 60, 50) if unrelated pictures are grouped, up
    (90, 100) if copies you know about are missed. Measured twice on different pictures, the
    range that reliably worked on my dataset was 75 to 100, and any value inside it found
    every duplicate - turning Delta up within that range gains nothing and only brings you
    closer to the point where unrelated pictures merge, which is why the default sits at the
    low end. Below about 35 you are looking for near-identical files, which Content mode finds
    faster and exactly. Reports of what works best on _your_ collections are welcome because
    it might be completely different from mine.
  - An existing settings file keeps its stored Delta - only a fresh installation starts at 80.
  - A picture that cannot be decoded is no longer silently ignored. Such a file takes part
    in no comparison at all, which looked exactly like "it matched nothing"; the status line
    now reports how many pictures could not be fingerprinted and names each one in
    T:CloneCollect-skipped.txt. Files that are not pictures are ignored as before, quietly.
  - Double-clicking a match now opens files whose name contains brackets, a question mark,
    or any other character with a special meaning to the system. The typical case is the
    "(1)" a NAS or a download adds to a duplicate: "movie (1).mp4" simply did nothing on
    double-click - no message anywhere - while its identically-named twin opened fine.
    Two separate causes, both fixed: the name used to be handed to the system's Open
    command, which reads its argument as a search pattern rather than as a plain file name,
    so brackets and wildcards were never found; and a question mark additionally cut the
    name short, because the desktop reads everything after it as parameters - such a file
    opened its drawer instead of itself. CloneCollect now asks the desktop to open the file
    directly and protects the special characters on the way, so the name is always taken
    literally. Affected are ( ) | # ? * ~ [ ] % and the apostrophe, in file names and in
    drawer names, for opening with the default tool as well as for opening an archive or a
    drawer. Very long paths no longer risk being cut off on opening either.
  - CloneCollect can now be scripted. From ARexx (port CLONECOLLECT) a script can start
    a complete run (SCAN), re-compare what is loaded (RECHECK), change the detection
    settings (SET), read a summary of the result (STATUS) and stop a running job
    (CANCEL). SET can also set the drawer without scanning it (SET PATH), which lets a
    script ask STATUS what the drawer is really called - a device or an assign comes back
    the way the system spells it, not the way it was typed. From the Shell, adding SCAN
    to the arguments makes CloneCollect open, scan the given drawer and compare it right
    away, leaving the results on screen.
    An example script, Rexx/CloneCollect-Scan.rexx, is included.
  - In the Settings window, "Use" now really means "for this session only". A change applied
    with Use was still there after quitting and relaunching, because the settings are written
    on exit - so Use behaved like Save. Now only Save (or a Shell argument, or an ARexx SET)
    makes a Settings change permanent; what you leave in the main window - the path, the
    detection modes and the Delta - is still saved on quit as before.
  - Quitting with no detection mode ticked no longer puts an error requester in the way -
    and, more importantly, no longer discards your settings. The requester was tied to
    saving, so if you quit with nothing selected, the path, the Delta and everything else
    you had changed was silently lost. An empty selection is now saved as it is, and the
    reminder appears when you next press Load, where it belongs.
  - The list export is available from the Shell as well: add EXPORT <file> to a run started
    with SCAN, and the CSV is written when the run has finished (ALL writes every scanned
    file instead of only the duplicates). It was previously only available from the menu and
    from ARexx.
  - New Shell option VERBOSE writes a timestamped log of the run to the Shell: when
    CloneCollect started, when the run started and finished (or did not complete), the
    file/drawer/duplicate/group counts, and how long it took. Meant for scripts and
    unattended runs - redirect it with ">RAM:run.log" to keep it.
  - Empty files (zero bytes) are now recognised as duplicates of each other. They never
    were: an empty file got no checksum, and content matching needs one on both files, so
    a folder full of empty files produced no group at all - without any message. Depending
    on your data set, that allowed a lot of files to slip through the comparison. Found by
    comparing a 110301-file scan against another duplicate finder, which reported exactly
    one group more: 52 files of size 0.
  - New menu item Project/Export list... writes the result table to a CSV file: one line
    per duplicate file, with the size as an exact byte count and the rows sorted by size.
    It is meant for comparing CloneCollect with another duplicate finder - export both
    lists and the sizes that appear in only one of them show where they disagree. A script
    can do the same with the ARexx command EXPORT; adding ALL writes every scanned file
    instead of only the duplicates, which tells you whether a missing file was even seen.
  - New menu item Project/Help... opens the guide; pressing Help over a gadget still
    jumps to that gadget's topic (the guide lists which gadget opens which page).
  - The Settings window now opens at the size its content needs, with the page list always
    fully visible and no scrollbars; the Task priority explanation wraps to the window
    width.
  - The version string and About copyright now name the current maintainer (2026);
    the original author is credited in the About window and in these documents.
  - A right-click on a list entry opens its menu straight away - the entry no longer has to
    be selected with a left-click first. Right-clicking somewhere with no entry under the
    pointer behaves as before. If you have marked several files, right-clicking one of them
    keeps the whole marked set, so Copy, Move and Delete still act on all of it; a
    right-click on a file outside the set targets just that one file.
  - Device, assign and volume names are shown the way the system spells them, whatever you
    type: enter sys: or clIPs: and the path reads SYS: or CLIPS: - in the path field, in the
    result lists and in the status line. Volume names keep their own spelling (a volume is
    named however it was formatted, so Work: stays Work:).
  - Note: one case remains that CloneCollect cannot fix. An ARCHIVE whose name contains
    a question mark still cannot be opened by double-click: MorphOS' desktop cuts such a
    name short when it opens an archive as a drawer, and a window for the wrong location
    appears instead. This was measured from every angle and no program can prevent it -
    the problem has been reported. Ordinary files with a question mark in the name, and
    drawers, are opened correctly.
  - Note: MUI's stored window positions/sizes reset once on the first start of 1.21
    (the ARexx port required renaming the application's base name). Your own settings
    are not affected.

1.20
  - Picture (Analog) detection now uses MorphOS' Reggae image pipeline instead of
    datatypes: far less memory (large photos are no longer loaded at full size), more
    formats (JPEG, PNG, WebP, ...), and it reliably finds the same picture saved at
    different resolutions (e.g. the same wallpaper at 1024x768, 1680x1050 and 1920x1080).
  - Analog now needs MorphOS with latest Reggae (3.20 is a free upgrade); if it is
    missing, only Analog is disabled and everything else is unchanged.
  - Added an in-app Help guide: press Help over a gadget and it opens at that topic.
    It also documents the keyboard shortcuts, the requirements and the skipped-files log.
  - CloneCollect can now be started from the Shell with arguments (drawer, detection
    modes, Analog delta, checksum, low priority) to pre-set a prepared search; "?" shows
    the template. Without arguments, and from Ambient, nothing changes.

1.19
  - Faster content (checksum) comparison on every supported PowerPC (603e and upwards)
  - Files reported as content-duplicates are now verified byte-for-byte, so a rare
    checksum coincidence can never mark two different files as identical.
  - The About window shows the version and date again, and the copyright now reflects
    the original author's period (2007-2012).

1.18
  - From now on MorphOS only: the old, unused 68k/AmigaOS build path was removed.
  - The progress window can be resized wider to read long entries (such as a file's
    full path).

1.17
  - Clearer progress window; Cancel works reliably even while paused.
  - Right-click a match to open its file in Ambient, or a Shell at its drawer;
    double-clicking an archive opens it in Ambient.
  - Standard MorphOS About box.
  - Multi-directory assigns (Assign ADD) are fully searched, and files with very long
    or special-character (Unicode) names are no longer skipped.
  - New "Task priority" setting to keep the rest of the system responsive during long
    jobs.

1.16
  - Much faster duplicate comparison, scanning (especially over network / SMB) and
    picture matching. Picture matching now uses far less memory.

1.15
  - Stability release: many rare crashes, memory faults and edge cases fixed.
    Duplicates are now shown grouped (one entry per set of identical files).
    Lifted the limit for duplicates.

1.14
  - Cancel and Pause take effect almost immediately, even inside very large files.
  - New "exact byte count" size display.

1.13
  - Restored the features from the lost 1.8 version: support for files larger than
    4 GB, background Copy/Move/Delete with a pausable and cancellable progress window,
    and a choice of SI or IEC (KiB/MiB/...) size units.

1.9 - 1.12
  - Modernised for MorphOS: builds with today's GCC (9 to 15), migrated from the
    external NList/NListtree gadgets to the MUI-internal List/Listtree classes,
    general source clean-up. No change to how the program is used.


Original releases (2007-2012, Rupert Hausberger)
------------------------------------------------

1.7 (01.03.2012)
----------------
  - Now a optimized way for comparing of files is used, makes the program
	 much faster. (N^(N+1) instead of N^M)
  - Removed 'SmartReadArgs'.
  - Fixed illegal data access in the settings window.
  - Code cleanup.
  - Ported to m68k-amigaos.
  - Released as GPL.

1.6
---
  - Reduced memory usage from 598 to 342 bytes per entry. (Reduced
    maximum clones from 128 to 64 per entry)
  - Some small fixes.

1.5
---
  - Switched from "MultiView" to "Do"

1.4
---
 - Added experimental support for analog data.
 - Atm, only pictures are supported.
 - They are loaded via datatypes.

1.3
---
  - Added CRC64 checksum algorithm.

1.2
---
  - Added context-menus to both lists.
  - Added 'Checksum' in the context-menu to calculate
    checksums for single matches. (thanks antibike)

1.1
---
  - The scrollbars in the settings window does now apear if needed and
    they are not shown as default. (thanks Grzegorz Kraszewski)


