
Changelog
=========

Attention: Since version 1.0.0 the CHANGELOG file uses UTF-8 encoding!
Line length limit is now 72 (user-perceived) characters for better
E-Mail compatibility.


1.2.0  2023-06-08  Release
--------------------------

Important notes:
- The experimental option USE_CUSTOM_FONTSIZE has been removed
  Since FLTK 1.4 there is a resize feature via keyboard (Ctrl-+/-).
- Doxygen 1.9.4 is now required to build the documentation.

Bug fixes:
- GUI: Callback for "Mark all groups read" fixed to not block any
  further operation if confirmation was "No" (reported by Marcel Logen).
- GUI: Callback for "Next unread group" fixed to not always select the
  first group with unread articles (reported by Dennis Preiser).
- CONF: Update of configuration data fixed (formerly truncated if
  filesystem was full). Return values of flush operations are now
  checked before rename() is executed.
- GUI: Group list is now updated to previous group after group selection
  error (reported by Michael Uplawski).
- GUI: No longer show busy mouse cursor after group selection if article
  tree/list has no drawing area (reported by Michael Uplawski).
- ENC: Memory leak fixed in MIME Content-Disposition decoder.
- TLS: Memory leaks fixed.
- TLS: OpenSSL 3 version number is now printed correctly on terminal.
- GUI: Soft hyphens are now handled consistently with all FLTK backends
  (formerly X11 rendered all SHY characters visible, as defined by
  ISO 8859-1, while Pango and Cocoa rendered SHY characters invisible).
- FILTER: Documentation of scorefile syntax fixed (type "extended" is no
  longer supported).
- CORE: Doxygen documentation of function core_get_msgid() fixed.

New features and improvements:
- GUI: French translation added for NLS support (provided by yamo').
  NLS documentation updated for hexadecimal-escape-sequence (not
  allowed in translated strings).
- GUI: Option to skip to next group while searching for next unread
  article added (can be enabled with a nonzero value for the new
  "unread_in_next_group" entry in configfile) (proposed by Thomas
  Barghahn).
- GUI: No longer uses Fl_Pack widget because behaviour has changed in
  recent FLTK 1.4.0 snapshots (reported by Dennis Preiser).
- CONF: Support for custom colors in displayed article added
  (based on patch from Martin Schnitkemper).
- INET: Support for user defined TCP connection timeout (suggested by
  yamo'). Option CFG_TCP_CONNECT_TIMEOUT in CONFIG added.
- GUI: With FLTK 1.4 (or FLTK 1.3.3 ABI) the horizontal scrollbar of the
  article tree or list respectively is moved to a sensible position.
- CORE: Header field "Newsgroups" can now be extracted from overview, if
  present. Scoring rules of type "group" are applied to all groups of an
  Xpost in this case.
- NNTP: Support for LIST OVERVIEW.FMT command (RFC 3977) added.
- NNTP: Experimental support for MAXARTNUM extension added.
  Intended to be compliant with the RFC draft provided by Julien Élie
  in Message-ID <tnqm14$35bas$1@news.trigofacile.com>.
- ENC: Zero-width space (ZWSP) is now used too as line breaking hint for
  the format "flowed" decoder.
- GUI: URI delegation: Separate error message for invalid encoding.
- EXT: External URI handler returns a flag to indicate invalid encoding.
- EXT: Examples for postprocessor added in subdirectory "postproc"
  (suggested by yamo').
- EXT: Example for external editor added in subdirectory "editor".
- CONF: Documentation of configfile entry "cancelkey" modified (added
  note that "fqdn" entry must also be set to create Cancel-Lock/Key
  header fields).
- FILTER: Documentation of scorefile modified (added notes that scoring
  rules can be shared).
- Build system: The mkconfig script now checks for POSIX.1c-1995
  Thread-Safe Functions (TSF) option too. Usage is forced by default via
  CFG_FORCE_TSF option in CONFIG.
- Build system: The C++ object files are moved to the beginning of the
  list. This can reduce build time with make utilities that support
  parallel build.
- Build system: BSD install utility now deletes existing target files
  before copying new ones. This solves problems with macOS on machines
  with Apple Silicon and signed binaries (patch from Dennis Preiser).
- Unicode database updated to version 15.0.0


1.1.0  2022-05-21  Release
--------------------------

Bug fixes:
- CORE: Authentication without password is now rejected (reported by
  Marcel Logen).
- MAIN: Potential deadlocks in thread-safe replacement functions fixed.
- GUI: State machine modified to avoid race condition when articles are
  marked read while group is not completely loaded yet.

New features and improvements:
- GUI: Option to automatically check for new articles added (an interval
  in minutes can be configured with the new "refresh_interval" entry in
  configfile).
- GUI: Checkbox "Tools->Debug mode" removed. Debug mode must be enabled
  with command line option "-debug".
- NNTP: Protocol logfile is only created if debug mode was enabled (and
  unlinked otherwise, if present). "Tools->Protocol console" window now
  requires debug mode.
- GUI: Support for estimated article count in subscription window added.
- GUI: Support for group descriptions in subscription window added.
- NNTP: Support for LIST NEWSGROUPS command (RFC 3977) added.
- GUI: Support for subscription proposals from server added
  (offered to user after server was changed and group list is empty).
- CORE: Support for subscription proposals from server added.
- NNTP: Support for LIST SUBSCRIPTIONS command (RFC 6048) added.
- TLS: Support for LibreSSL 3.5 API added.
- GUI: File save operations now suggest a pathname in the file selection
  window.
- GUI: File save operations now ask the user before an existing file is
  overwritten.
- CORE: Function added to suggest a pathname (created from home
  directory, program name and timestamp).
- CORE: Message-IDs are now generated with algorithm A3 (uses a modified
  Base64 alphabet with "/" replaced by "-"). This allows to generate
  RFC 5538 conformant "news"-URIs without percent-encoding.


1.0.1  2022-01-03  Release
--------------------------

Bug fixes:
- ENC: Off-by-one read from uninitialized data in MIME encoded-word
  decoder fixed.
- GUI: Clickable references are now restored after ROT13 was applied
  twice.
- GUI: Click on "Cancel" button in server configuration window no
  longer creates an error message in the status bar.
- GUI: "Group->Mark subthread read" now redraws the widget and closes
  the processed subthread (reported by Christian Schumacher).
- GUI: Server configuration: Automatically modify service name when TLS
  is enabled/disabled (suggested by Julien Élie).
- References to legacy configuration path "~/.flnews" fixed in man page.

New features and improvements:
- Unicode database updated to version 14.0.0


1.0.0  2021-05-09  Release
--------------------------

Important notes:
- The new configuration data format is not compatible with versions 0.x
  (indicated by the major number bump)!
  A script is provided to automatically convert existing configuration
  data to the new format. Read "migration/README" for details.
- Because the location of the configuration has changed (see new XDG
  module below), the configuration for versions 0.x is preserved.
- It is still possible to downgrade flnews to 0.x, the preserved old
  configuration data is used again in this case.
- Now the release version contains 3 numbers "x.y.z":
  Major (x) indicates compatibility with configuration data
  Minor (y) is incremented for new features
  Patch (z) is incremented for bug fixes

Bug fixes:
- CORE: Request for group information is no longer rejected with error
  if the group list is empty.
- GUI: After unsubscribing the last group, the article tree/list was not
  cleared and the user can click on articles for which the associated
  data no longer exists. Such operations will crash the program
  (reported by Martin Schnitkemper).
- CORE: Line length limit (998 octets) is now checked before injection.
- GUI: On macOS with system menu bar the status updates to menu entry
  "Group->Sort by article number" work now (patch from Dennis Preiser).
  The required method update() is not available with old FLTK 1.3
  libraries, the option CFG_COCOA_SYS_MENUBAR now requires FLTK 1.4.
- ENC: URI percent encoder for scheme <news> fixed: The characters
  defined as <gen-delims> (RFC 3986 Section 2.2) are now encoded
  (reported by Marcel Logen).
- GUI: The URI parser now accepts empty <host> for scheme <news>.
- GUI: The current group selection is now restored after a click into
  the empty space below the group list (reported by Christian
  Schumacher).
- GUI: The article list/tree is now cleared after selecting an empty
  group (formerly articles of an unrelated group may still be visible).
- GUI: Some FLTK versions accept selection of deactivated items. There
  is now a workaround implemented to make such selections nonfatal.
- GUI: Horizontal scrolling to highlighted result of search fixed.
- GUI: Use FLTK default forground color for group subscription window
  too. This should make the content readable with dark background
  (reported by Christian Schumacher).
- NLS: German translation "Artikel herunterladen fehlgeschlagen" fixed
  (reported by Marcel Logen).
- GUI: If there are multiple signature separators ("-- ") present, now
  the last one is used according to "Usenet Best Practice" draft 01
  (reported by Marcel Logen).

New features and improvements:
- XDG: Moved default configuration directory to location defined by XDG
  Base Directory Specification 0.7 ("$XDG_CONFIG_HOME/$CFG_NAME").
  Other modules now ask the XDG module for the configuration path.
- MAIN: The new command line option "-confprefix" can be used to
  override the configuration directory (proposed by Helmut Waitzmann).
- GUI: It is now possible to mark all articles in all groups as read
  (menu entry "Group->Mark all groups as read").
- MAIN: New command line option "-debug" to enable debug mode early.
- CONF: configfile entry "domain" replaced with "fqdn". Some users
  saw the hostname field in Message-ID algorithm A1 as privacy problem.
  A <dot-atom> can be configured for the new entry "fqdn" (should be a
  fully qualified domain name, but without root domain). It is used as
  <id-right> element when a Message-ID is created with algorithm A2.
- Support for SOURCE_DATE_EPOCH Specification 1.1 added to build system.
  Reproducible build option CFG_REPRODUCIBLE removed from CONFIG.
  The SOURCE_DATE_EPOCH variable from the environment now overrides the
  dates in the GUI, the output of the "-v" command line option and the
  man pages (original patch from Bernhard M. Wiedemann).
- Support for target "install-strip" added to build system. The target
  "install" no longer strips unnecessary symbols from binaries
  (proposed by Martin Schnitkemper).
- EXT: Support for external inews added.
  Pathname can be specified with the new "inews" entry in configfile.
- TLS: Protocol versions 1.0 and 1.1 are now disabled as required by
  RFC 8996. Both versions are still available in "weak" encryption mode.
- GUI: New menu entry "Group->Mark subthread as read".
- GUI: If there is only one entity to display for a MIME multipart
  message (e.g. the selected one with multipart/alternative), the
  entity header is now displayed too.
- GUI: An initial greeting phrase can now be specified with the new
  "initial_greeting" entry in configfile. It is inserted into articles
  that start a new thread (proposed by Wolfgang Bauer).
- FUTIL: Function added to create (multiple) missing directories of a
  path.
- FILTER: New scorefile syntax to eliminate the workaround with type
  "extended". All score rules now have a wildmat in the first field.
- FILTER: Simplified default regex for test group detection to
  "\.test$|^test$", removing the ".*" part at the beginning (proposed by
  Urs Janßen).
- POSIX: Support for POSIX.1-2008 and SUSv4 added.
  No local replacement functions are used anymore on modern operating
  systems. snprintf() replacement function now uses SUSv4 semantics.
- ENC: MIME encoded-words are now generated with "US-ASCII" charset
  declaration if there is no 8-bit data to encode in the header field
  (e.g. to represent words like " =?-?= " in a RFC 2049 conformant way).
  This follows the "lowest common denominator" principle decribed in
  RFC 2046 Section 4.1.2.
- TLS: Deprecated functions from OpenSSL 3 API are no longer used.
- GUI: Modified question popup windows to handle pressing ESC key as
  "No" or "Reject" respectively.
- GUI: Some entries moved from menu "Article" to "Group".


EOF
