v4.6 (2025-07-27)

   - added resource option post-description-dot-exclude

v4.5 (2025-04-15)

   - enforce .glstex extension
     Fixes https://github.com/nlct/bib2gls/issues/34

v4.4 (2025-02-07)

   - use datatool sort markers for corresponding control codes when writing sort
     value to glstex file

   - bug fix: transferred locations with alias-loc=transfer not
     merging

v4.3 (2025-01-29)

 * bib2gls:

   - skip compound entries that don't have one or more
     elements selected

   - new command line switch:

     --aux-input-action 

   - bug fix: save-principle-locations=retain changes encap

 * texparserlib.jar: Corrected definition of \textdegree

v4.2 (2025-01-24)

 * bib2gls

   - bug fix: corrected fallback field concatenation check for options like
     abbreviation-sort-fallback

v4.1 (2025-01-03)

 * bib2gls

   - added resource options:

     omit-fields
     omit-fields-missing-field-action
     gather-parsed-dependencies

   - added \BibGlsNoCaseChange

v4.0a (2024-12-15)

Corrected distribution (missing files).

v4.0 (2024-12-14)

 * bib2gls

   - added \INTERPRETNOREPL and \REPLACESPCHARS quarks

   - added action=provide

   - added new resource options:

     wordify-math-greek
     wordify-math-symbol
     ignored-type

   - added support for \BibGlsOptions and \IfNotBibGls
     (provided by glossaries-extra v1.54+)

   - added switch --[no-]datatool-sort-markers

   - bug fix: indexplural not setting text field if missing, which
     results in the text field defaulting to the plural form.

   - bug fix issue #29 "Version 3.8 and 3.9 fail to find aux files in subdirectories of build directory"
     https://github.com/nlct/bib2gls/issues/29

   - bug fix: complex conditional relations <> <= and >=
     incorrectly parsing quoted rhs

   - bash script no longer sets java.locale.providers when running the jar file
     (not necessary for Java 9 onwards)

 * convertgls2bib

   - added support for \loadglsentries

 * Added datatool2bib command-line conversion tool.

v3.9 (2024-01-30)

  * bib2gls

   - new command line switch: --[no-]date-in-header

   - allow \u<hex> in assign-fields

   - bug fix: NullPointerException if entry referenced before
     bibData initialised

v3.8 (2023-10-13)

  * bib2gls

    - bug fix: #27 Version 3.7 does not work correctly with subdirectories for auxiliary files
      https://github.com/nlct/bib2gls/issues/27

v3.7 (2023-09-29)

  * bib2gls

    - \bibglshypergroup no-op only if glossaries version below 4.53
      and glossaries-extra version below 1.53 (update glossaries
      and glossaries-extra to enable)

v3.6 (2023-09-04)

  * bib2gls

    - added check for self-referencing alias

    - added check for encoding in aux file not matching requested or
      default TeX encoding

    - allow process to retry if encoding error occurs in aux file

    - bug fix: --default-encoding option not picked up in all
      instances where the default is required

v3.5 (2023-08-24)

  * bib2gls

    - new command line switches:

      --default-encoding
      --log-encoding
      --debug-mode

    - extra command supported by the interpreter (but not in the
      document):

      \bibglspaddigits

v3.4 (2023-06-29)

  * bib2gls

    - bug fix: NullPointerException occurs if @compoundset found in
      bib file but no \@glsxtr@mglsrefs found in aux file.
      https://github.com/nlct/bib2gls/issues/23

v3.3 (2023-04-24):

  * bib2gls

    - New resource options:

      assign-fields
      assign-override
      assign-missing-field-action
      flatten-lonely-condition
      flatten-lonely-missing-field-action
      copy-to-glossary
      copy-to-glossary-missing-field-action
      abbreviation-text-fallback
      locale

    - default value of sort option is now sort=resource rather than 
      sort=doc. If the locale option isn't set then sort=resource
      is equivalent to sort=doc.

    - Added support for bib2gls-extra-<lang>.xml files.

    - Bug fix: Removed already defined in other glstex file warning if 
      action != define

    - Bug fix: if parent entry is a dependent of another entry not
      marked for removal don't flatten lonely child

  * convertgls2bib

    - Fixed infinite loop:

	at com.dickimawbooks.gls2bib.Gls2Bib.newcommand(Gls2Bib.java:419)
	at com.dickimawbooks.texparserlib.latex.LaTeXParserListener.newcommand(LaTeXParserListener.java:978)

v3.2 (2022-11-24):

  * Added --[no-]obey-aux-catcode

    The default is --no-obey-aux-catcode, which ignores catcode
    changing commands found in the aux file.
    (Issue #22 https://github.com/nlct/bib2gls/issues/22)

v3.1 (2022-11-05):

  * If new versions of glossaries.sty, mfirstuc.sty and glossaries-extra.sty
    are detected, \bibglsuppercase and \bibglslowercase will now
    have \glsuppercase and \glslowercase in their definition,
    instead of \MakeTextUppercase and \MakeTextLowercase

  * skip empty elements in src

  * added resource option merge-ranges

  * added support for \ifglsfieldvoid

  * bug fix: secondary sort type not included in group label

  * TeX parser library (texparserlib.jar) now has limited support
    for \NewDocumentCommand, \RenewDocumentCommand, 
    \ProvideDocumentCommand and \DeclareDocumentCommand.

v3.0 (2022-10-14):

  * support for \glsxtr@select@entry and \glsxtr@select@entry@nameref
    (new to glossaries-extra-bib2gls v1.49)

  * support for bibglsaux and \glsxtrsetbibglsaux
    (new to glossaries-extra.sty v1.49)

  * if mfirstuc v2.08+, glossaries v4.50+ and glossaries-extra
    v1.49+ detected, default mfirstuc protection settings will
    switch to --no-mfirstuc-protection --no-mfirstuc-math-protection

  * bug fix: case changing options aren't recognising commands
    identified with \glsxtrnewgls

  * added support for \glsxtridentifyglsfamily (glossaries-extra
    v1.49+)

  * new switch --record-count-rule (or -r) which may be used to
    determine whether or not certain types of records (such as
    ignored records) should be included in the record count.

  * new switch --replace-quotes

  * issue #15: loc-prefix and type leads to undefined \bibglslocprefix with multiple glossaries
    https://github.com/nlct/bib2gls/issues/15

    This has led to new resource options:

    - loc-prefix-def
    - loc-suffix-def

  * added support for sub-groups (requires glossaries-extra v1.49+):

    - group-level

  * new merge small groups option:

    - merge-small-groups

  * new option to save root label:

    - save-root-ancestor

  * new option to split primary locations into counter groups:

    - primary-loc-counters (synonym: principal-loc-counters)

  * new options to skip break-at via pattern matching:

    - break-at-match
    - break-at-not-match
    - break-at-match-op
    - dual-break-at-match
    - dual-break-at-not-match
    - dual-break-at-match-op
    - secondary-break-at-match
    - secondary-break-at-not-match
    - secondary-break-at-match-op

  * new options to prune "see" and "seealso" fields:

    - prune-xr
    - prune-see-op
    - prune-see-match
    - prune-seealso-op
    - prune-seealso-match
    - prune-iterations

  * new save-locations values:

    - save-locations=see
    - save-locations=see not also
    - save-locations=alias only

  * bug fix: nameref records not merging for wrglossary counter

v2.9 (2021-11-22):

  * Support for \multiglossaryentry (new to glossaries-extra v1.48)
    This has led to new resource options:

    - compound-dependent
    - compound-add-hierarchy
    - compound-has-records
    - compound-adjust-name
    - compound-write-defs
    - compound-options-global
    - compound-main-type
    - compound-other-type
    - compound-type-override

  * added -q and --quiet as synonyms for --silent

  * issue #14: bib2gls breaks hypergroup styles
    https://github.com/nlct/bib2gls/issues/14

v2.8 (2021-11-05):

  * Support for new features of mfirstuc v2.07:

    - sentence case (firstuc) and title case now recognise \MFUskippunc. 
      (This should be used to skip leading punctuation.)

    - title case now recognises \MFUwordbreak. 

  * new dual field 'dualdescription'

  * new selection option 'selected before'

  * new resource options:

    - save-from-alias
    - save-from-see
    - save-from-seealso
    - save-crossref-tail
    - save-definition-index
    - save-use-index
    - format-integer-fields
    - format-decimal-fields
    - secondary-match-action
    - secondary-match-op
    - secondary-match
    - secondary-not-match
    - encapsulate-sort
    - prefix-only-existing
    - save-principal-locations (synonym for save-primary-locations)
    - principal-location-formats (synonym for primary-location-formats)

  * issue #10: explicit ranges with identical start and end should
    collapse to a normal location
    https://github.com/nlct/bib2gls/issues/10

    This has led to new switches:

      --collapse-same-location-range (default)
      --no-collapse-same-location-range

  * issue #12 Primary locations need to be retained not merged (save-primary-locations=remove)
    https://github.com/nlct/bib2gls/issues/12

    This has led to new switches:

      --retain-formats
      --no-retain-formats

  * bug fix: @entry missing required name/description results in "null"
    saved in the field value. This has been changed to an empty
    string (but the warning about the missing field remains).

  * bug fix: selection=all doesn't show see and seealso lists in
    locations https://github.com/nlct/bib2gls/issues/9

  * bug fix: integer sort method should cast to int
    https://github.com/nlct/bib2gls/issues/11

  * bug fix: indexplural default name incorrect when parent field set
    https://github.com/nlct/bib2gls/issues/13

v2.7 (2020-07-11):

  * save-original-entrytype option now allows the name of a field
    as the value (making it consistent with the save-original-id
    option).

  * save-original-id option now has a check to disallow special
    internal fields (instead of silently ignoring the setting).

  * replicate-fields option will now allow unknown fields (but not
    special internal fields) in the targets and will save them using 
    \GlsXtrSetField.

  * new options:

     save-original-id-action
     save-original-entrytype-action
     hex-unicode-fields

  * Bug fix: Added check for null in getSortFallbackContents
    (to avoid NullPointerException)

v2.6 (2020-07-09):

  * Fixed bug where getSortFallbackValue returns string "null"
    instead of actual null.

v2.5 (2020-05-30):

  * --version switch now also shows version details for bundled
    texparserlib.jar

  * Bug fix (texparserlib.jar): corrected \else part of conditionals

v2.4 (2020-05-27):

  * Bug fix (issue in TeX parser library used by bib2gls)
    https://github.com/nlct/texparser/issues/3

v2.3 (2020-03-23):

  * New sort methods: recordcount and recordcount-reverse
    (both require --record-count).

  * Resource option 'selection' now also allows the values
    'deps but not recorded' and 'ancestors but not recorded'

  * New resource options:
 
     custom-sort-fallbacks
     field-concat-sep

  * The sort fallback resource options custom-sort-fallbacks,
    entry-sort-fallback, symbol-sort-fallback,
    abbreviation-sort-fallback and bibtexentry-sort-fallback 
    now allow 'id' or 'original id' as values or values that are 
    field concatenations.

  * New command line switches:

    --provide-glossaries
    --no-provide-glossaries

v2.2 (2020-03-16):

  * Bug fix (texparserlib.jar):

    - "Files located in local texmf path are not determined
      correctly" issue #3
      https://github.com/nlct/bib2gls/issues/3

v2.1 (2020-02-28):

  * Only trigger error exit code for bib parser exceptions
    (just warn for interpreter and aux parser exceptions).

  * Bug fix (texparserlib.jar):

    - "Fails to parse \@writefile{lot}{\egroup }" issue #2
      https://github.com/nlct/texparser/issues/2

v2.0 (2020-02-12):

  * New command line options:

     --trim-only-fields
     --trim-except-fields

  * New resource option:

     interpret-fields-action
     prefix-fields
     append-prefix-field
     append-prefix-field-cs
     append-prefix-field-exceptions
     append-prefix-field-cs-exceptions
     append-prefix-field-nbsp-match
     save-sibling-count

  * New values for 'identical-sort-action' option: 'def' and 'use'

  * New value for 'selection' option: 'recorded and deps and see not also'

  * New internal fields: dualprefix, dualprefixplural,
    dualprefixfirst, dualprefixfirstplural, siblingcount,
    siblinglist

  * Dual prefix mappings now added if the prefix field is defined
    (provided by glosssaries-prefix.sty).

  * Interpreter now supports \nobreakspace and it obeys
    --break-space and --no-break-space in the same way as ~

  * Added support for nonumberlist

  * Bug fixes:

    - corrected interpret-fields
    - corrected selection={recorded and deps and see}
    - corrected plural for entries where the name is inherited from
      the parent


  * convertgls2bib:

    - new command line options:

      --ignore-type
      --no-ignore-type
      --split-on-type (-p)
      --no-split-on-type
      --ignore-category
      --no-ignore-category
      --split-on-category (-c)
      --no-split-on-category
      --ignore-fields (-f)
      --overwrite
      --no-overwrite
      --preamble-only (-p)
      --no-preamble-only
      --index-conversion (-i)
      --no-index-conversion 
      --absorb-see
      --no-absorb-see

    - added check for see=[\alsoname] in addition to
      see=[\seealsoname]

v1.9 (2019-04-09):

  * manual:

    - added section "Logical Divisions: type vs group vs parent"

  * new resource option:

     compact-ranges
     progenitor-type
     adopted-parent-field
     unknown-entry-alias
     save-original-entrytype
     field-case-change
     no-case-change-cs
     encapsulate-fields
     encapsulate-fields*
     interpret-fields
     replicate-missing-field-action
     entry-sort-fallback

  * new entry types:

     @progenitor
     @spawnindex
     @spawnindexplural
     @spawnentry
     @spawnsymbol
     @spawnnumber
     @spawnabbreviation
     @spawnacronym

  * New command line options:

     --warn-non-bib-fields
     --no-warn-non-bib-fields
     --warn-unknown-entry-types
     --no-warn-unknown-entry-types

  * The `type` option (and similar options that assign the `type`
    field) now accepts the special setting "same as parent".

  * The `group` option no longer requires the --group switch.
    
  * The `match` and `not-match` options now accept `original entrytype`.

v1.8 (2018-11-30):

  * new resource options:

     save-primary-locations
     primary-location-formats
     long-case-change
     dual-long-case-change
     word-boundaries
     sort-label-list
     dependency-fields

  * added support for the new glossaries-extra package option
    record=nameref (introduced to glossaries-extra v1.37).

  * normal locations are now written to the location field as
    \glsnoidxdisplayloc{<prefix>}{<counter>}{<format>}{<location>}
    instead of explicitly using
    \setentrycounter[<prefix>]{<counter>}\<format>{<location>}
    This matches the way the record is added to the loclist field
    and makes it easier to adjust the record formatting.

  * bib2gls now always parses the .log file even if the interpreter
    setting is off. (It still needs to know version details and
    whether hyperlinks and Unicode are supported by the document.)

  * Underscores now allowed in bib labels.

  * Hooks added to pick up label prefixes if needed:

     \bibglsprimaryprefixlabel
     \bibglsdualprefixlabel
     \bibglstertiaryprefixlabel
     \bibglsexternalprefixlabel

  * bug fix: corrected default sort=doc

  * bug fix: corrected letternumber-upperlower and
    letternumber-lowerupper sort methods.

  * bug fix: corrected invalid datetime pattern that threw
    InvalidArgumentException

  * bug fix: https://github.com/nlct/bib2gls/issues/3
    Files located in local texmf path are not determined correctly
    on Windows.
    (actual bug was in texparserlib.jar rather than bib2gls.jar)

  * \@glsnavhypertarget will now fallback on original definition
    (which requires an extra LaTeX call) if the type is unknown.

  * Renamed example file sample-languages.tex to
    sample-markuplanguages.tex

v1.7 (2018-08-18):

  * added support for multiple supplementary sources
    (requires at least glossaries-extra v1.36)

v1.6 (2018-07-07):

  * corrected some of the latin<n> to Java encoding names

  * added check for \@input in .aux file

v1.5 (2018-05-09):

  * added introductory guide (bib2gls-begin.pdf)

  * rearranged some of the resource option sections in 
    the main user manual (bib2gls.pdf)

  * new .glstex helper command:

    \bibglssetlastgrouptitle

  * added @indexplural and associated .glstex helper command
    \bibglsnewindexplural

  * added resource options:

   - sort-replace
   - dual-sort-replace
   - secondary-sort-replace

  * save-child-count now also creates the childlist internal field.

  * bug fixes:

   - corrected encoding setting (bib2gls and convertgls2bib)
   - corrected \ (backslash space) eol causing unwanted extra eol
   - corrected sort fallback
   - labelify-replace now recognises \$ in the replacement part as a
     reference to a captured group
   - improved error handling for invalid entry IDs
   - save-child-count was partially switching on flatten-lonely
   - corrected name-case-change for @index

v1.4 (2018-04-09):

   * added switches:

     --list-known-packages
     --custom-packages
     --cite-as-record
     --no-cite-as-record
     --merge-wrglossary-records
     --no-merge-wrglossary-records

   * added resource options:

     - missing-parents
     - missing-parent-category
     - bibtexentry-sort-fallback
     - save-index-counter

   * added extra keyword "same as original entry" 
     to category and type assignments.

   * added new entry types:

     - @bibtexentry
     - @contributor

v1.3 (2018-03-05):

   * bug fix: check for quoted path elements (spaces in file names)

   * bug fix: corrected category={same as base}

   * bug fix: corrected dual selection

   * New switch --ignore-packages (-k)

v1.2 (2018-02-25):

   * New resource options:

     - group-formation
     - secondary-group-formation
     - dual-group-formation
     - labelify
     - labelify-list
     - labelify-replace

   * New command line switches:

     - --force-cross-resource-refs (-x)
     - --no-force-cross-resource-refs
     - --support-unicode-script
     - --no-support-unicode-script

   * Bug fix: replicate-fields now parsed correctly

   * Bug fix: corrected hierarchical sorting

   * Bug fix: fixed sort=none

v1.1 (2017-11-25):

   * New resource options: 

     - counter
     - dual-counter
     - name-case-change
     - description-case-change
     - not-match
     - identical-sort-action
     - dual-identical-sort-action
     - secondary-identical-sort-action
     - sort-suffix
     - sort-suffix-marker
     - date-sort-format
     - date-sort-locale
     - dual-date-sort-format
     - dual-date-sort-locale
     - secondary-date-sort-format
     - secondary-date-sort-locale
     - entry-type-aliases
     - tertiary-prefix
     - tertiary-type
     - tertiary-category
     - combine-dual-locations
     - abbreviation-sort-fallback
     - abbreviation-name-fallback
     - symbol-sort-fallback
     - match-action
     - save-loclist
     - action
     - copy-action-group-field
     - field-aliases
     - replicate-fields
     - post-description-dot
     - strip-trailing-nopost
     - write-preamble
     - bibtex-contributor-fields
     - contributor-order
     - check-end-punctuation
     - sort-number-pad
     - dual-sort-number-pad
     - secondary-sort-number-pad
     - sort-pad-plus
     - dual-sort-pad-plus
     - secondary-sort-pad-plus
     - sort-pad-minus
     - dual-sort-pad-minus
     - secondary-sort-pad-minus
     - cs-label-prefix
     - record-label-prefix
     - save-original-id
     - interpret-label-fields
     - strip-missing-parents
     - limit
     - copy-alias-to-see
     - replicate-override
     - date-time-fields
     - date-fields
     - time-fields
     - date-time-field-format
     - date-field-format
     - time-field-format
     - dual-date-time-field-format
     - dual-date-field-format
     - dual-time-field-format
     - date-time-field-locale
     - date-field-locale
     - time-field-locale
     - dual-date-time-field-locale
     - dual-date-field-locale
     - dual-time-field-locale
     - alias
     - primary-dual-dependency
     - duplicate-label-suffix
     - missing-sort-fallback
     - dual-missing-sort-fallback
     - secondary-missing-sort-fallback

   * Added 'same as base' as a keyword value of 'category',
     'type', 'dual-category', 'dual-type', and
     'supplemental-category' resource options.

   * New entry types: @dualindexentry, @dualindexsymbol,
     @dualindexnumber, @dualindexabbreviation,
     @tertiaryindexabbreviationentry

   * Case-changing options now also accept the values
     firstuc and firstuc-cs

   * New sort options: letter-upperlower, letter-upperlower-reverse,
     letter-lowerupper, letter-lowerupper-reverse, 
     letternumber-case, letternumber-case-reverse,
     letternumber-nocase, letternumber-nocase-reverse, 
     letternumber-lowerupper, letternumber-lowerupper-reverse, 
     letternumber-upperlower, letternumber-upperlower-reverse, 
     numeric, numeric-reverse, currency, currency-reverse, 
     percent, percent-reverse, numberformat, numberformat-reverse,
     date, date-reverse, time, time-reverse,
     datetime, datetime-reverse (and associated resource options).

   * fixed bug in hierarchical entries with label prefixes.

   * fixed bugs in secondary sorting.

   * new switches: --packages (-p), --expand-fields, 
     --no-expand-fields, --record-count (-c), --no-record-count,
     --record-count-unit (-n), --no-record-count-unit,
     --no-break-space, --break-space

   * fixed fallback if kpsewhich fails.

   * texparserlib: added extra core maths commands.

   * convertgls2bib: new switches --ignore-sort and --no-ignore-sort.

v1.0 (2017-09-09):

   * initial release
