# Changelog

- the x.y.z is the version of the source code which follows semantic versioning
- the combination of version and version date designates the version of the package as it is uploaded to CTAN


# Changes


## 2024-06-11 (3.2.0)
### Added
   - add generation of completion support for nushell
   - add a new warning message W0011 if a file in the package tree
     has a future modification time
   - add Thumbs.db as temporary file
   - (Experimental) for l3backend-dev and l3kernel-dev use the real directory name 
     latex-dev/l3backend resp. latex-dev/l3kernel when checking path names in the
     TDS archive
   - new E0042 error when there are filenames with different letter cases in a TDS archive
   - new E0043 error when a symlink is found in the TDS archive
### Changed
   - small improvement in src/recode.rs due to clippy suggestions
   - small code reorganization in check_tds_archive()
   - crates update

## 2022-12-26 (3.1.0)
### Added
   - now checking for hard links which generate a warning message
   - new message w0010: now hardlinks are detected and reported
   - add armtex to exception list when checking path names in the TDS zip archive
   - add latex-cyrillic to exception list when checking path names in the TDS zip archive
### Changed
   - typo in F010 message

## 2022-05-26 (3.0.0)
### Added
   - fatal messages Fnnnn go to stderr instead of stdout
   - add generation of shell completion support for various shells,
     which are bash, elvish, fish, powershell, zsh
   - now a config file can be specified
     - currently only exceptions can be specified when checking 
       the paths of files in the TDS archive
   - new messages F0008, F0009 and F0010 regarding reading config file
   - new message I0008 to tell which config file is used
   - new messages I0009, W0009 giving more information about config file
     usage (only if --verbose is given)
   - enhance documentation
### Changed
   - (devel) reformatting source code
   - (devel) using clap with derive feature instead of structopt-derive
   - reorganized this changelog
   - in w0002 output remove empty line at end
   - don't complain if filename contains `@` , `=`, or `:` characters. These
     characters are not recommended to be used but there could be a necessity.

## 2022-01-15 (2.4.0)
### Changed
   - for latex-lab and latex-lab-dev use the real directory name 'latex' resp.
     'latex-dev' when checking path names in the TDS zip archive

## 2022-01-02
### Added
   - add .xray to temporary file endings
   - (experimental) when URL checking decode some html entities if they appear in URLs
### Changed
   - switch to Rust edition 2021
   - switch from blake2 to blake3 library for checksumming
   - unzipping now done internally.  /usr/bin/unzip no longer required

## 2021-10-03 (2.3.0)
### Added
   - add temporary file endings .hd and tpt (pointed to by Karl Berry)
   - add option `--ignore-same-named` to ignore same named files
   - add `.lua` to file endings recognized as scripts
   - add latex-firstaid-dev to exceptions when checking paths in the TDS archive
### Changed
   - if a URL ends with '。', which is an ideographic full stop (U+3002), remove that character
   - ignore if generated files with ending .html or .css exist (merge request from Vít Novotný).
       Reason is that documentation could also exist as html.
   - some code simplifications most of them by clippy recommendations

## 2020-11-20 (2.2.0)
### Added
   - (Experimental) instead of latex-firstaid use latex/firstaid when checking path names
     in TDS zip archive
   - new error message e0039: no doc/ top level directory in tds zip archive
   - new error message e0040: too few top level directories in tds zip archive
   - new error message e0041: map file found in path not starting with `fonts/map/dvips`
   - add more test cases
### Changed
   - small code changes due to new release of blake2 library
   - replace deprecated tempdir crate by tempfile crate
   - revive e0020 which checks for unwanted directories in the top level directory of a TDS zip
       archive.
### Fixed
   - unpack TDS zip without -a flag which was introduced in 2.0.1. According to Petra this creates
       more problems than it solves

## 2020-04-12 (2.1.0)
### Added
   - add new test case e0033
### Changed
   - improvements regarding detection of generated files (error message e0019)
     - generated REAME files caused e0019 error message when they were specified with
       a relative path name in the `\generate` statement in the .dtx resp. .ins file
     - don't issue error message when a pdf file, generated by .dtx/.ins, exists
     - don't issue error message when an existing .ins file is generated by a .dtx file
     - improved text in error message e0019
### Fixed
   - don't issue error messages when a .bat file has 0755 permission
   - call pdfinfo and unzip without specifying an absolute path so that it gets found
     when it is outside of /usr/bin (reported by Arthur Reutenauer)

## 2020-02-07 (2.0.1)
### Changed
   - use the `-a` (convert text files) flag when temporarily unzipping the TDS archive
   - crates update

## 2020-01-17 (2.0.0)
### Added
   - more error checking in TDS zip archives
     - detecting if a .dtx or .ins file is not in a subdirectory of source/ or doc/ toplevel directories (E0036)
     - detecting empty directories (W0007)
     - detecting hidden directories (E0006)
     - detecting temporary files (E0008)
       - as a special case tex/latex/tools/.tex is allowed for package latex-tools. The
         same applies for latex-tools-dev package
### Changed
   - revamped handling of line ending checks
     - reporting if a file has CR line endings only (E0037)
     - reporting if a file has inconsistent line endings (E0038)
     - reporting if a Windows file does not have Windows (CRLF) line endings (W0008)
       - a file is regarded a Windows file if its name ends with one of .bat, .cmd, .nsh or .reg
     - files with CR, or CRLF line endings will be corrected to LF
     - but windows files will be corrected to CRLF line endings
     - when correcting line endings a line ending at the end of a file will be added if required
     - renamed command line switch
       - old: -L, --correct-crlf         Correct CRLF line endings
       - new: -L, --correct-le           Correct line endings
   - other changes
     - new message F0007 when tmp directory is not writable or the tmp directory is full
     - some code simplifications
     - crates update
     - when detecting an empty file also permissions will be checked and (if requested) corrected
     - (Experimental) for latex-base-dev, latex-tools-dev, latex-graphics-dev and latex-amsmath-dev
       check for latex-dev in the path names in the TDS zip archive
     - if a file in a generated file statement contains a directory part it was correctly
       recognized but not compared correctly to the contents of the TDS zip archive

## 2019-11-28 (1.10.0)
### Added
   - more checks for a TDS zip archive
     - check for temporary files or directories
### Changed
   - remove message E0020 to report unwanted top level directory in a TDS zip archive


## 2019-11-27 (1.9.1)
### Added
   - recognize .bat files as script type
   - add test case for .bat file recognition

### 2019-11-04 (1.9.0)
### Added
   - (Experimental) for latex-base, latex-tools, latex-graphics and latex-amsmath use the real
     directory name 'latex' when checking path names in the TDS zip archive
   - New error message e0035 if a TDS zip archive is found in the unpacked directory tree
   - add testcases for w0005, w0006 and e0035

## 2019-10-01 (1.8.3)
### Added
   - (Experimental) issue warning if a file in the package tree (W0005) or in the TDS zip archive (W0006) is
     larger than 40MiB
   - (Experimental) for babel-base.tds.zip use the real package name 'babel' (instead of 'babel-base') in order
     to check if the path name contains the package name

     Both features are regarded as experimental because both contain a hard coded check. If required
     things will be changed in the future.

## 2019-08-07 (1.8.2)
### Changed
   - updating crates, requiring slight code changes in integration.rs
   - ignore windows files .nsh and .reg when checking for LF line endings

### Added
   - new error message e0034 for unwanted files in top level directory of a TDS zip archive
   - e0020 now reporting only unwanted directory in top level directory of a TDS zip archive

## 2019-07-21 (1.8.1)
### Fixed
   - correct typo in e0008 message text

## 2019-07-20 (1.8.0)
### Added
   - add a check to detect temporary files in the TDS zip archive

## 2019-06-30 (1.7.0)
### Changed
   - compiled with rust edition 2018
   - if a found http(s) link ends with "`" then the trailing "`" will be discarded

### Fixed
   - improved error message e0025 now displaying the paths of the affected
       files/directories/symlinks
   - when symlinks occur in e0025 they are reported as files

## 2019-03-29 (1.6.0)
### Changed
   - new error message e0031 when a filename contains invalid UTF-8 characters

## 2019-03-14 (1.5.0)
### Changed
   - if a symlink points to a file object outside of the package directory tree error message
     e0030 will be issued

### Fixed
   - a README can be a symlink which will now be detected properly

## 2019-03-11 (1.4.0)
### Added
   - recognizing generated files in a .dtx file when they are included using a
     filecontents resp. filecontents* environment.

## 2019-03-09 (1.3.0)
### Changed
   - checking URLs
     - when checking URLs we try to get the headers first. If this fails we try to get the web page.
     - when checking URLs and a redirect has an invalid location containing 127.0.0.1
       then we regard the url as ok
   - ignoring .tfm files when checking for duplicates
   - now checking for UTF BOMs. If a README file contains a BOM we issue an error message,
     if other files contain BOMs we issue a warning message
   - recompile with newest http library

## 2019-01-02 (1.2.0)
### Added
   - add test cases for messages e0026, e0028
   - **New feature**: checks that path names in the TDS zip archive contain the package name
     (only exception is a man page path)

### Changed
   - some code simplification

## 2018-12-26 (1.1.0)
### Added
   - enhance check for generated files which now could reside in any
     subdirectory in the package tree. This changes the format of the
     e0019 message slightly where now the path of a generated file will be
     displayed in the e0019 message
   - add a short info to the PDF documention about how to install pkgcheck

### Changed
   - change ordering of the sections in the pkgcheck.pdf document. First come the
     informational messages, then warnings and error messages and finally fatal messages.

## 2018-12-16 (1.0.0)
### Added
   - quick_intro.txt: improve wording
   - build_ctan_zip.p6: add source files to be included into CTAN zip archive
   - devnotes.md: add documentation how to build your own binary

## 2018-12-09 (1.0.0)

   - 1.0.0   First stable release
