Skip to content

Version 0.9.0

Choose a tag to compare

@mribeirodantas mribeirodantas released this 21 Sep 04:19
· 5 commits to main since this release

[0.9.0] - 2026-09-21

Added

  • Central run archive for comparing runs after their project directories are
    gone.
    When a pipeline opts in with diff.archive.enabled = true, an
    end-of-run trace observer snapshots each finished run into a shared archive
    directory, and diff transparently falls back to that archive whenever a
    requested run is no longer in the local .nextflow/history. The observer is
    off by default and inert unless enabled, so existing users see no behaviour
    change. mode = 'lightweight' (default) stores run and per-task metadata;
    mode = 'complete' also copies each task's output and .command.* log files
    (staged input symlinks are skipped). The archive location resolves from
    diff.archive.dir / --archive-dir, then NXF_DIFF_ARCHIVE_DIR, then the
    default $NXF_HOME/nf-diff/archive. Archiving is best-effort and never fails
    the pipeline run.

Fixed

  • File-content comparison now decides identity on the full SHA-256 digest,
    not a truncated 12-character prefix.
    Two same-size files that differed only
    beyond the first 48 bits of their digest could previously collide and be
    misreported as UNCHANGED — and such a change would not count toward
    --fail-on-change. The equality decision now compares full digests; the
    12-character prefix is retained only for compact display in the report, so
    HTML/JSON output is unchanged. Affects --diff-outputs and the
    --published-a/--published-b comparison.

Documentation

  • Documented the central run archive (diff.archive.* config, the
    --archive-dir option, NXF_DIFF_ARCHIVE_DIR, and the lightweight/complete
    modes) in the usage guide and website docs.
  • Documented that archiving requires the plugin to be active for the run.
    The archive section now shows the plugins { id 'nf-diff@<version>' }
    declaration (or -plugins nf-diff@<version>) needed so the end-of-run
    observer is loaded — diff.archive.enabled = true alone has no effect unless
    the pipeline loads the plugin.

Full Changelog: v0.8.0...v0.9.0