AnsiLove/C 4.2.2 (2026-06-10)

- Update README to add a link to the Nix package
- Fix "Amiga Topaz 1" font selection from SAUCE metadata
- Fix font table entry count to make topaz500+ reachable



AnsiLove/C 4.2.1 (2025-03-24)

- Add a link to Durdraw in the "Projects using Ansilove" section
- Update README to add a link to the Guix package
- Add Textfiles.com to the list of projects using Ansilove
- Document support for the Spleen 8x16 font
- Bump cmake_minimum_required to 3.5, to allow building with CMake 4.0
- Bump cmake_minimum_required to 3.10 to be more future proof



AnsiLove/C 4.2.0 (2023-05-23)

- Add initial RPM spec file
- Add support for the Spleen 8x16 font (requires libansilove >= 1.4.0)



AnsiLove/C 4.1.7 (2023-03-30)

- Always print processing time on stderr
- Move manual page to the man directory



AnsiLove/C 4.1.6 (2022-02-10)

- Mention experimental seccomp support availability in README
- Bump CMake minimum required version to 3.1
- Add SPDX short license identifier in source files
- Add a test case for retina output
- Add a test case for SAUCE output
- Use CMAKE_C_STANDARD instead of hardcoding compiler flags
- Stop linking against libm, it's not necessary anymore



AnsiLove/C 4.1.5 (2021-02-14)

- Stop forcing FORTIFY_SOURCE=2, it should be package builders decision
- Remove dead increments for argc and argv
- Check strdup() return value when allocating output file name



AnsiLove/C 4.1.4 (2020-10-22)

- Set CMAKE_BUILD_TYPE to "Release" in CMakeLists.txt
- Enable FORTIFY_SOURCE level 2
- Move read_status variable declaration to the top of the function
- Check fread() return values in readComments() and add error handling
- Introduce the READ_RECORD function-like macro, for fread error handling
- Use READ_RECORD in readRecord() to add fread() error handling
- Only call memset() if the malloc call succeeds
- Check strdup() return value and error out on failed allocation



AnsiLove/C 4.1.3 (2020-09-18)

- Adjust SAUCE flag output to be binary
- Add -S flag to use SAUCE info for rendering hints. Users must now use -S
  to get iCE color info. This was previously automatically pulled without
  any extra options.
- Document the new -S flag, allowing to use SAUCE info for render options
- Add support for seccomp on arm
- Add missing test for __NR_mmap, the mmap syscall doesn't exist on arm



AnsiLove/C 4.1.2 (2020-07-04)

- Define _GNU_SOURCE in CMakeLists.txt to avoid cluttering source files
- No need to set HAVE_SECCOMP to 1, defining it is enough
- Remove some unneeded seccomp related includes
- Validate architectures for seccomp
- Add seccomp support on i386, tested on glibc and musl
- Remove extraneous underscore in #if defined check
- Use __NR_ instead of SYS_ prefix in #if defined checks



AnsiLove/C 4.1.1 (2020-05-25)

- Various documentation tweaks and improvements
- Define timespecsub macro in compat.h if it doesn't exists
- Use CLOCK_REALTIME if CLOCK_MONOTONIC is not available
- Display processing time on exit.
- Fix includes and add forward declarations in various source files



AnsiLove/C 4.1.0 (2020-02-17)

- Add a new '-t' flag (type), allowing to specify input file type and
  override file type detection
- Various documentation tweaks and improvements



AnsiLove/C 4.0.7 (2020-01-18)

- Use OpenBSD style(9) for function prototypes and declarations
- Replace EXIT_SUCCESS by zero in all SAUCE functions
- Do not use typedef for the sauce struct
- Set icecolors to true if defined in SAUCE record ANSiFlags
- Add test cases for most supported formats, missing an IDF file for now
- Sync the description of Retina output capabilities with reality



AnsiLove/C 4.0.6 (2019-12-10)

- Remove extraneous sauceReadFileName() call, read from existing SAUCE record
- Use strdup() when assigning fileName and fext fallback values
- Call memset() to set all record struct fields to zero
- Free SAUCE record and comments once and for all when exiting the program



AnsiLove/C 4.0.5 (2019-11-19)

- Add ENABLE_SECCOMP build option, to allow building seccomp support
  conditionally
- Disable seccomp by default, it needs more testing on non !amd64 platforms
- Use ${CMAKE_INSTALL_BINDIR} instead of hardcoding 'bin'



AnsiLove/C 4.0.4 (2019-10-28)

- Add initial seccomp support to Ansilove
- Move pledge and seccomp initialization before ansilove_init()
- Move conditional includes for 'pledge' and 'strtonum' in compat.h



AnsiLove/C 4.0.3 (2019-08-16)

- Use errx() for displaying error messages
- Print information messages on stdout
- Introduce a version() function to display version information
- Add a -q flag (quiet) to allow silencing output messages



AnsiLove/C 4.0.2 (2019-08-13)

- Remove most examples from the repository, they continue to live on the
  website
- Move the remaining examples in per author directories, and add LICENSE
  files for these artworks, courtesy of their authors



AnsiLove/C 4.0.1 (2019-06-25)

- Fix a few typos in README and ansilove.1
- Simplify display of default font when no font option is specified
- Drop the leading dot when saving input file extension
- Fix the check for readComments() return value



AnsiLove/C 4.0.0 (2019-01-16)

- Switch to using libansilove
- Add a new switch (-d) to toggle DOS aspect ratio
- Add initial support for PabloDraw 24-bit ANSI sequences
- Ansilove now generates only one output file when -r or -R options
  are used
- Display scale factor when -r or -R options are used
- Allow to specify the number of columns for ANSI and Tundra files
- Restrict maximum allowed number of columns to 4096
- Check asprintf() return value and error if allocation fails
- Bugfixes and improvements in the SAUCE parser
- Refactor font selection processing
- Refactor rendering mode processing
- Use OpenBSD style(9) for function prototypes and declaration
- Add missing headers and remove unnecessary ones
- Remove versionInfo(), simply print the header with version information
  when invoked with -v
- Remove showHelp(), show synopsis instead when invoked with -h
- Add a new example ANSi (Thanks Nail)
- Remove -e switch, examples are now listed in the man page instead
- Make synopsis() only display SYNOPSIS, as it should be.
- Add an EXAMPLES section in ansilove.1
- PC fonts for code pages other than cp437 are now named using the cpNNN
  scheme. Albeit not documented anymore, the previously used names will
  keep working



AnsiLove/C 3.0.9 (2018-06-19)

- Add a new example ANSi (Thanks Sylvao)
- Do not use -Werror by default
- Increment maximum ansi sequences length
- Add code to skip PabloDraw 24-bit ANSI sequences



AnsiLove/C 3.0.8 (2017-12-20)

- Adding new example ANSis (Thanks Burps)
- Use asprintf() to create output filenames
- Reflect OpenBSD's pledge() changes
- Add a -R flag allowing to specify a custom retina scale factor



AnsiLove/C 3.0.7 (2017-07-02)

- Print messages to to stderr instead of stdout
- Ensure binary files have an even size
- Better description of supported file formats
- Skip erase in line (EL) sequences (issue reported by Bart Dumon, thanks!)
- Define palettes in config.h
- Use defined palettes instead of hardcoding each color value in the loaders



AnsiLove/C 3.0.6 (2017-04-22)

- Create an output function to unify the way output files are created
- Prevent .png suffix to be appended when using -o flag (*NIX tool
  convention compatibility)



AnsiLove/C 3.0.5 (2017-04-16)

- Free memory allocated in the PCBoard loader
- Free font data where appropriate
- Add a trailing NUL character to inputFileBuffer
- Remove the custom substr function, call strndup directly
- Free seqGrab where necessary
- Use the ternary operator when shitfing cursor position
- Use perror when printing errors
- Remove SUBSTITUTE_BREAK and WRAP_COLUMN_80 options
- Use fstat to get the input file size
- Create a retina function instead of duplicating code in all loaders
- Fix OpenBSD's style(9) offenders in compat functions



AnsiLove/C 3.0.4 (2016-07-28)

- Relicensed under the BSD 2-Clause license
- Input file is now loaded in main, prior to calling format loaders
- Use stat to get input file size instead of custom file size function
- Remove now unused file size function
- Refactoring bits and columns argument value handling



AnsiLove/C 3.0.3 (2016-07-14)

- Adding some missing includes
- Define _XOPEN_SOURCE macro (for 'strdup' and 'strndup' functions)
- Switch back to compiling with -std=c99 instead of -std=gnu99
- Adding cast to fix compilation with GCC on NetBSD [-Werror=char-subscripts]
- Use strdup when lowercasing file extension, to avoid modifying input filename
- Define _NETBSD_SOURCE macro to make 'strndup' declaration visible on NetBSD



AnsiLove/C 3.0.2 (2016-01-21)

- Adding a new example XBin (Thanks Enzo)
- Adding install target for man page
- Removing hardcoded paths in 'CMakeLists.txt' for GD library detection
- Add additional include directories for compat functions to avoid
  using relative path in includes
- Refactoring of the ANSI loader, and removed support for drawing bold,
  italics and underline characters for Amiga fonts, allowing to plot
  characters directly to the canvas and drop a lot of code
- Move SAUCE functions into their own file
- Moving all format loaders to their own files + simplifying names
- Removed prototype for 'str_replace' which has been pruned
- Moving ANSI and PCBoard character structures to their respective
  loader headers
- AnsiLove is now pledged on OpenBSD
- Renaming a bunch of files and improving the project structure
- Removing all calls to 'atoi' and using OpenBSD's 'strtonum' instead
- Fixing regression in the CED mode rendering
- Removing 'workbench-transparent' rendering mode, it never made sense
- Fixing regression in the Workbench mode rendering
- Adding detailed font options in the manual page



AnsiLove/C 3.0.1 (2016-01-03)

- Initializing some uninitialized variables
- Removing some unused variables and assignments
- Removing optional filters for PCBoard sequences
- Pruning now unused 'str_replace' function
- Remove support for configurable diz extensions
- Remove support for configurable RGB values for CED + WorkBench modes
- Using strncmp instead of strcmp + strndup combo, as strndup is not
  part of C99
- Added a manual page



AnsiLove/C 3.0.0 (2015-12-13)

- Switching to getopt for parsing command line options
- Removing bits parameters for ADF, IDF, and XBIN loaders
- Adding a mode option to specify CED, Workbench and transparent rendering modes
- Using mode instead of bits to check for rendering modes to enable
- New 'alSelectFont' function returning a structure with font information
- Adding a compat directory and importing 'strtonum' function from OpenBSD
- Made CMakeList more modular, and linking strtonum conditionally
- Remove .diz pre-filtering as it was a remnant of the PHP version
- Using 'strtonum' to parse and validate bits and columns parameter value
  before calling the loaders
- Removing unused parameter 'font_size_x' in alDrawChar
- Enabling the '-Wextra' and '-Werror' flags in CMakeLists.txt
- Group checks for CR + LF in the ANSi and PCBoard loaders
- Documentation cleanups and updates



AnsiLove/C 2.2.1 (2015-06-28)

- Switching to CMake to build the project
- Moving source files to the 'src' directory
- Removing legacy Ubuntu compilation script
- Updated documentation (build requirements + instructions)
- Remove MIN macro and use math.h's 'fmin' instead
- Adding Ansilove artwork, both ASCII and ANSI as example files
- Adding 'AUTHORS', 'FILE_ID.DIZ', and 'THANKS' files
- Fixing file extension detection (Close #2)
- Fixing the PCB loader to use logical AND as it should
