doi2bib: drop dependency on astring (we can do everything with ocaml 4.14+ standard library).
doi2bib: add some escaping of html entities that may appear in field values returned by the DOI API (e.g., & becomes \&).
0.9.1 (2026-02-26)
bibfmt: added -l/--single-line flag to collapse newlines within field values into a single space.
bibfmt: field values are now trimmed of leading and trailing whitespace when pretty-printing.
bibfmt: empty fields (values that are empty or whitespace-only after trimming) are now dropped when pretty-printing.
bibfmt: column alignment is now computed from the fields that remain after filtering, so dropped fields no longer affect padding.
0.9.0 (2025-12-10)
bibfmt: reduced default verbosity, introduced --verbose flag to show detailed processing information.
(breaking) bibfmt and bibdedup: updated CLI flags. Now bibfmt directly accepts a list of files. To make it read from stdin, useful for autoformatting, use - as filename.
doi2bib: now supports processing multiple IDs at once from the command line (e.g., doi2bib ID1 ID2 ID3).
bibfmt: allow . and / in the citekey.
0.7.9 (2025-10-12)
bibfmt: added --quiet flag to suppress all output except errors.
bibfmt: added --force flag to ignore parsing errors and output only successfully parsed entries.
bibfmt: refactored deduplication functions - moved all deduplication logic (deduplicate_entries, resolve_conflicts, merge_entries_non_interactive) from library to bibdedup CLI tool. The library now provides only the core find_duplicate_groups function for programmatic use.
0.7.8 (2025-10-09)
bibfmt: introduced new bibdedup CLI tool for deduplicating BibTeX entries across multiple files.
bibfmt: added deduplication library functions (deduplicate_entries, find_duplicate_groups, merge_entries_non_interactive) with support for configurable keys.
bibfmt: in strict mode, print a warning if there are multiple repeated citekeys (case-insensitive).
0.7.7 (2025-08-07)
bibfmt and doi2bib drop the month field in bibtex. It is useless and the way DOI API reports it is also incompatible with many bibtex configurations.
doi2bib: fix for changes in PubMed API
bibfmt: add support for field entries capitalization and stricter parsing. Now, by default, field names are always upper cased.
doi2bib: make the parser fails if there are duplicate fields in a bibtex entry.
0.7.6 (2025-06-24)
Introduced new bibfmt tool and library (as a new package) for pretty printing and formatting BibTeX files.
doi2bib: always uses the improved BibTeX pretty-printer from bibfmt for output.
doi2bib: removed custom url-unescaping logic; this is now handled by bibfmt in a more systematic way.
Improved error reporting if parsing a BibTeX entry fails.
0.6.2 (2022-10-17)
Workaround for %-escapes in crossref's doi url field
0.6.1 (2022-02-03)
Fix batch processing: don't quit if some IDs are invalid
Fix static compilation of artifacts
0.6.0 (2022-02-03)
Support batch processing of files of IDs
Support append result to file
0.5.2 (2021-12-17)
Move from cuz to the published clz
Move from dx.doi.org to crossref rest api service, the latter gives better and more consistent results and does not seem to require a fallback service any longer
Update arxiv generated bibtex accordingly
Update ocamlformat
0.5.1 (2021-07-01)
Fix for transitive dependency in cuz
Improved lower bounds on the opam file
0.5.0 (2021-07-01)
Use cuz for the get calls with compression
Use arxiv.org/bibtex to obtain the bibtex entry for unpublished arxiv manuscripts and rely on the manual generation only if that fails reachable.
Handcrafted pretty printing of the output from crossref