Release Notes

This project uses Semantic Versioning. The format of the release notes follows Keep a Changelog.

v0.7.0 - 2026-01-22

Added

  • Add LoggingExtras.jl as dependency (#35)
  • New logger PrettyFileLogger based on FileLogger from LoggingExtras.jl wrapping a ConsoleLogger instead of SimpleLogger (#35)
    • the new logger suppresses module, file, and line information and expands the display of arrays
  • Breaking: Previous log files are now saved to a .inventory.logs file and remembered for clean-up. This allows cleaning of log files outside the product folder (#28).
  • global_logger is now formatted during package init (#33)
  • New Changelog for the inventory in the documentation as separate Changelog from this one
  • Add kwarg save_migrations to load_inventory to save any inventory migrations when load_inventory is called by default (#38)
  • Add new automatic detection for conversion during download. Now, .hdf files are converted to .h5, otherwise conversion is switched off. The convert flag in sftp_download can still be used to enforce conversion to be switched on/off.
  • Add release automation for the update of the inventory changelog after version updates (#50)
  • Added GitHub Actions scripts and adjusted the pre-release script to completely automate the release process (#50)
  • Added changelog enforcer GitHub Action to ensure, a changelog entry was made unless the no change label is set (#50)

Changed

  • Breaking: Refine logging in load_inventory (#35). Rather than defining an additional logger with the second optional argument (for additional file logging), global_logger is now replaced by the logger in the second optional argument. If you want logging to console and file, use e.g. TeeLogger from LoggingExtras. This allows logging in wrapper functions like convert_inventory for convert_inventory!.
  • Breaking: Change function names of convert/convert! to convert_inventory[!] to avoid type piracy (#35)
  • All API functions now accept AbstractString instead of the stricter String
  • Improved Logging (#35)
  • Don't consider folder sizes for database size, this is too buggy and inaccurate
  • Use thin spaces between size and unit to log to console and file
  • Breaking: Save log files to a logs folder instead of the product folder by default. If the folder doesn't exist, it will be created (#34).
  • Don't log debug logs of successful attachment to console to be in line with the other sync functions. This should not have an impact as the default console log level is Info (#34).
  • Breaking: If the log file name includes a relative path, it is now relative to the product folder rather than the current directory (#46).
  • Internal refactoring:
    • Use Logger struct instead of named tuple to pass on different loggers (#28)
    • Separate implementation of attach! to an internal _attach! function that can be used by clean! (#28)
    • Operate extrascan and attach_path! on a Vector{String} rather then the extras section of the inventory (#28)
    • Filter files with !isdir rather than isfile to be sure to not miss any path objects like symlinks, which will now be listed under files (#28)
  • Change format of the inventory metadata, added a compression ratio, see inventory changelog in the documentation, added a migration routine that will convert old inventories to the new format (#38)
  • Update the output of list_inventory to consider the new possibilities with the compression ratio (#38)

Removed

  • Breaking: Remove functions convert/convert! in favour of convert_inventory[!] to avoid type piracy (#35)
  • Breaking: Remove kwarg keepext from clean!. The implementation was buggy working only for files in inventory folders not in subfolders and cleaning could be ambiguous with the new logs option (#28).

Fixed

  • Corrected calculation of inventory stats that was showing a wrong download intent (#44)
  • Corrected output of inventory_stats, when files on the remote server are symlinks. Now symlinks are followed and the correct stats are derived (#42).

v0.6.0 - 2025-12-27

Added

  • Improved error handling during download
  • Methods convert/convert! for batch conversions of inventory data files separated from download sessions (#16)
  • Method clean! to clean the product folder recursively from any files not belonging to the inventory (#16)
  • Functions ignore! and unignore! to exclude database files in the inventory and include them again (#17)
  • Functions attach! and detach! to mark extra data exempt from clean! procedures (#17)
  • Function list_inventory to show a simplified folder and file tree and statistics about the inventory and the downloaded portion (#17)
  • Public method load_inventory to load the inventory saved in the product folder (#32)

Changed

  • sftp_download now returns the inventory for further exploration (#20)
  • Refactored inventory internally to mostly use SortedDict instead of OrderedDict; change depencies from OrderedCollections to DataStructures (#18)
  • Updated inventory metadata (#20)
    • Breaking: Added size and converted size fields to metadata/database with the overall file sizes of the original format and the size of already converted files (#18)
    • Consider folders with a size of 4K instead of 0 to estimate the maximum database size
    • Breaking: add a version number to metadata to allow better tracking of changes in the inventory (#18)
    • Breaking: Rename converted field with the converted file size to size.<ext> in each date dict
    • Update dependencies in docs before using make docs (#18)
    • Breaking: Add "downloaded size" entry to inventory database metadata to monitor the actual downloaded part of the database (#26)
  • Simplify favicon
  • Improved documentation and logging
  • Rename previous method convert! to _convert! to avoid conflicts with the new method and leave the method internal and not part of the public API (#16)
  • Breaking: Rename "productpath" to "path" in inventory["metadata"]["remote"] to be more in line with the simpler "local" naming scheme (#24)
  • Make internal load_inventory! method return a reference to the modified inventory as well

Removed

  • Method hdfupgrade and all auxiliary code was removed and replaced by methods convert and convert!

v0.5.1 - 2025-09-07

Fixed

  • converted file sizes are only kept in the database after an update, if the original file size hasn't changed (#20)
  • Automatically update version number in the badge in the README and the link to the latest stable during pre-release
  • Fixed an issue with the setup of the target extension that lead to errors during download sessions with conversions

v0.5.0 - 2025-08-31

Added

  • Use a local .inventory.yaml to store stats of the server-side file structure in the root of the product folder and reduce communication with the server
  • Support of parallel downloads
  • Support of file format conversions with focus on HDF4 > HDF5
  • Add routines just for conversions of local downloads
  • Add Documenter documentation page and this CHANGELOG (release notes)
  • Add GitHub workflows for CI/CD
  • Add Makefile and release-scripts for automated release processes

Changed

  • Switched from FTP to SFTP protocol for downloads
  • Complete refactoring of the code, simplify download and restart routines
  • Improved logging
  • Reorganise downloads in a single loop
  • Conversion routines are now directly included in the code and not called as script with the run command; they may be overloaded with custom routines for other conversions

v0.4.0 - 2021-08-04

Changed

  • Use Int to define start/end dates or periods for downloads

v0.3.3 - 2021-05-17

Added

  • New option to restart a download session by kwarg
  • Set v1.0.0 as minimum requirement for Julia

Changed

  • Better error handling

v0.3.2 - 2021-04-22

Changed

  • Update package dependencies
  • Internal refactoring for changes in CSV.read

v0.3.1 - 2021-04-21

Added

  • Checks for product name and version number

v0.3.0 - 2020-04-14

Added

  • New option to append log files
  • Ability to restart interrupted download sessions

Changed

  • Update log file format

v0.2.2 - 2020-04-07

Added

  • New flag to suppress downloads in a run

Fixed

  • Fix corrupted Project.toml

v0.2.1 - 2020-04-06

Added

  • New option none to remove no displaced files

v0.2.0 - 2020-04-06

Added

  • Option to warn and clean data folders of alien files

Changed

  • Revised FTP connection and download of files

v0.1.2 - 2020-04-05

Added

  • Add Logging as dependency

v0.1.1 - 2020-03-30

Added

  • Improved error handling
  • Improved README

Changed

  • Add leading slash to caliopdir to generate absolute paths with joinpath

rather than relative paths

Fixed

  • Reconnect to ICARE and create a new FTP object for every subfolder to

prevent LibCurl error 9

v0.1.0 - 2020-03-30

Added