NOTE: This change log section represents git commits in range 'v2.8.4..HEAD' (commits '541c2ecf0..9275ebede').

2026-02-02  Jim Klimov <jimklimov+nut@gmail.com>

	* NEWS.adoc: fix the entry for tripplitesu [#3273]
	* drivers/apcsmart-old.c: fix git merging typo
	* tools/nut-scanner/nut-scan.h, tools/nut-scanner/nutscan-init.c,
	  tools/nut-scanner/scan_avahi.c, tools/nut-scanner/scan_ipmi.c,
	  tools/nut-scanner/scan_snmp.c, tools/nut-scanner/scan_usb.c,
	  tools/nut-scanner/scan_xml_http.c: tools/nut-scanner/*.c: be
	  stricter about "ifdef WITH_SOME_NUT_FEATURE" (we may have some
	  defined but zeroed, so not active for a build) [#3293]
	* tools/nut-scanner/nutscan-device.h: comment the added meaning of
	  TYPE_END in nutscan_device_type_t as the array size definition
	* scripts/obs/_config: Debian Next builders can not choose between
	  libselinux1-dev (which provides libselinux-dev) and requested
	  libselinux-dev (as dependency of libgio/libmount) so need a nudge
	  [#3293]
	* .github/pull_request_template.md: update notes about ci_build.sh,
	  add NEWS/UPGRADING adoc bumps
	* .github/pull_request_template.md: add a note to disclose AI and
	  other coding aid usage, and that a human is ultimately responsible
	  for the contributions
	* drivers/apcsmart.c: neuter upsdrv_help(): it brings no new value
	  now that all NUT programs print references to on-line and man page
	  docs
	* clients/upsclient.c, clients/upslog.c, common/common.c,
	  common/strptime.c, drivers/al175.c, drivers/apcsmart.c,
	  drivers/dstate.c, drivers/generic_modbus.c,
	  drivers/huawei-ups2000.c, drivers/liebert-esp2.c,
	  drivers/nutdrv_hashx.c, drivers/pijuice.c, drivers/powercom.c,
	  drivers/powerp-bin.c, drivers/snmp-ups.c, drivers/tripplite_usb.c,
	  drivers/tripplitesu.c, drivers/usb-common.c, server/upsd.c:
	  *.{c,h}: rectify indentations and line-wrapping in if/for/while
	  constructs
	* drivers/huawei-ups2000.c: use sizeof not fixed number for
	  snprintf()
	* clients/upscmd.c, clients/upsimage.c, clients/upsmon.c,
	  clients/upssched.c, clients/upsset.c, common/common-nut_version.c,
	  common/common.c, common/wincompat.c, drivers/al175.c,
	  drivers/apc-hid.c, drivers/apcsmart-old.c, drivers/apcsmart_tabs.c,
	  drivers/arduino-hid.c, drivers/asem.c, drivers/bcmxcp.c,
	  drivers/belkinunv.c, drivers/bestfcom.c, drivers/bestfortress.c,
	  drivers/bestuferrups.c, drivers/clone-outlet.c, drivers/etapro.c,
	  drivers/genericups.c, drivers/hidparser.c, drivers/libusb0.c,
	  drivers/libusb1.c, drivers/macosx-ups.c, drivers/metasys.c,
	  drivers/mge-xml.c, drivers/microdowell.c, drivers/netxml-ups.c,
	  drivers/nutdrv_atcl_usb.c, drivers/optiups.c,
	  drivers/richcomm_usb.c, drivers/riello_usb.c, drivers/skel.c,
	  drivers/snmp-ups-helpers.c, drivers/tripplite-hid.c,
	  drivers/tripplitesu.c, drivers/upscode2.c, drivers/usbhid-ups.c,
	  tools/nut-scanner/nut-scanner.c, tools/nut-scanner/nutscan-ip.c,
	  tools/nut-scanner/scan_avahi.c: *.{c,h}: rectify indentations and
	  line-wrapping in block comments

2026-02-01  Jim Klimov <jimklimov+nut@gmail.com>

	* configure.ac: when testing PYTHON* capabilities, check not only for
	  a known PYTHON*_VERSION_INFO_REPORT but also for non-trivial
	  PYTHON* itself - we could forget that due to auto-prio [#1792]

2026-01-31  Jim Klimov <jimklimov+nut@gmail.com>

	* tools/nut-scanner/nutscan-init.c: comment on do_upsconf_args()
	  placeholder vs. ENABLE_SHARED_PRIVATE_LIBS [#2800]
	* drivers/upsdrvctl.c: register callback_upsconf_args if we
	  ENABLE_SHARED_PRIVATE_LIBS [#2800]

2026-01-30  Jim Klimov <jimklimov+nut@gmail.com>

	* docs/packager-guide.txt, scripts/obs/Makefile.am,
	  scripts/obs/debian.control, scripts/obs/debian.nut-gpio.install,
	  scripts/obs/debian.nut-gpio.manpages,
	  scripts/obs/debian.nut-upower.install,
	  scripts/obs/debian.nut-upower.manpages, scripts/obs/nut.dsc:
	  scripts/obs/*, docs/packager-guide.txt: introduce new sub-packages
	  for GPIO and UPower drivers [#1209]

2026-01-29  TomZanna <git@tomzanna.com>

	* NEWS.adoc, docs/man/tripplitesu.txt, drivers/tripplitesu.c:
	  drivers/tripplitesu.c: add configurable command delay to prevent
	  read timeouts
	* data/driver.list.in, drivers/tripplitesu.c: drivers/tripplitesu.c:
	  add 1s delay in command_send  Intermittent communication timeouts
	  were observed when multiple commands were sent in rapid succession.
	  Adding a 1-second delay at the beginning of command_send() ensures
	  the hardware buffer is ready and prevents the "read timeout"
	  errors.

2026-01-29  Jim Klimov <jimklimov+nut@gmail.com>

	* docs/maintainer-guide.txt: update a comment

2026-01-28  Vladdrako <vladdrako007@gmail.com>

	* drivers/powercom-hid.c: drivers: powercom-hid: use offdelay/ondelay
	  config options for  shutdown commands  The powercom_shutdown_nuf(),
	  powercom_stayoff_nuf(), and powercom_startup_nuf() functions were
	  reading delay values from dstate_getinfo("ups.delay.shutdown") and
	  dstate_getinfo("ups.delay.start"), which return the UPS's CURRENT
	  delay values read via HID.  However, users configure their desired
	  delays via the "offdelay" and "ondelay" driver options in ups.conf.
	  These were being ignored.  This patch changes the functions to: 1.
	  First try the value passed directly to the instant command 2. Then
	  try getval("offdelay")/getval("ondelay") from driver config 3. Then
	  try dstate_getinfo() for current UPS values 4. Finally fall back to
	  sensible defaults (60s shutdown, 120s startup)  This ensures that
	  user configuration is respected.  Tested on Powercom RPT-800AP
	  (VendorID: 0x0d9f, ProductID: 0x0004).

2026-01-28  Jim Klimov <jimklimov+nut@gmail.com>

	* tests/nut-driver-enumerator-test.sh: quiesce shell-check concerns
	  about "==" comparator [#3055]  Co-authored-by: Greg Troxel
	  <gdt@lexort.com>
	* tools/semver-compare.sh, docs/nut-versioning.adoc: revise help for
	  "Shellish syntax to compare two semvers" [#3055]
	* drivers/powercom-hid.c: bump POWERCOM_HID_VERSION and revise
	  comments [#3288]
	* NEWS.adoc: update about powercom-hid fix for
	  shutdown/stayoff/startup INSTCMDs [#3288]
	* clients/Makefile.am, tests/Makefile.am: revise libnutclient*
	  dependencies to honour ENABLE_SHARED_PRIVATE_LIBS [#2800]
	* scripts/obs/_service: stash recent template project changes from
	  OBS setup [#1209]
	* .obs/workflows.yml: separate project builds with what looks like RC
	  tags to use a separate OBS template (tweaked to change the dash
	  into tilde for packaging versions) [#1209]
	* docs/developers.txt: update recommendation about hiding IDE dirs
	  from a careless `git clean -fdX`
	* NEWS.adoc, docs/nut.dict, drivers/nutdrv_qx.c,
	  drivers/nutdrv_qx_voltronic.c: drivers/nutdrv_qx.c,
	  nutdrv_qx_voltronic.c, NEWS.adoc, docs/nut.dict:
	  qx_process_answer(): set errno=ETIMEDOUT (not EINVAL) if raised by
	  caller or we had a zero-length read; use this in voltronic_claim()
	  [#3276, #3283]
	* common/Makefile.am, tests/Makefile.am: revise libnutconf dependency
	  to honour ENABLE_SHARED_PRIVATE_LIBS and match
	  tools/nutconf/Makefile.am [#2800]
	* clients/Makefile.am, common/Makefile.am, tests/Makefile.am:
	  tests/Makefile.am: revise dependency for libdummy_mockdrv.la to
	  honour ENABLE_SHARED_PRIVATE_LIBS setting [#2800]

2026-01-27  Jim Klimov <jimklimov+nut@gmail.com>

	* drivers/nutdrv_qx_voltronic.c: voltronic_claim(): do not limit
	  second query retry to errno==EINVAL for now [#3276]
	* drivers/nutdrv_qx_voltronic.c: voltronic_claim(): log failed query
	  codes and their errnos [#3276]
	* drivers/usb-common.c: add debug tracing [#2270]
	* NEWS.adoc, UPGRADING.adoc: update nut-upower entry with link to the
	  PR [#3279]
	* configure.ac: move nut-upower up to be near macosx equivalent, and
	  hotfix GLIB_CFLAGS with -isystem options to reduce CLANG (mostly)
	  compiler warnings [#3279]
	* drivers/Makefile.am: cosmetic fixes [#3279]
	* drivers/nutdrv_qx_voltronic.c: voltronic_claim(): retry if the
	  first query was OK and second was invalid [#3282]
	* drivers/nutdrv_qx.c: upsdrv_initups(): log that we got as far as
	  matching the device claimer (and which media type while at it)
	  [#3282]
	* drivers/nutdrv_qx.c: subdriver_matcher(): more debug-tracing
	  [#3282]
	* data/driver.list.in: clean up the markup a bit [#3285]

2026-01-26  air5551 <Air@example.org>

	* data/driver.list.in: Trying to make CI happy :3
	* data/driver.list.in: Added Liebert PSI5-800RT120

2026-01-26  Jim Klimov <jimklimov+nut@gmail.com>

	* drivers/nutdrv_qx.c: try a longer sleep after serial dtr/rts
	  setting [#3282]  Some devices are slow to respond to a first query
	  and fail detection. Maybe delaying by a bit over 1 second would
	  help?
	* drivers/nutdrv_qx.c: improve debug tracing for main loop skeleton
	  [#3282]
	* drivers/arduino-hid.c, NEWS.adoc, docs/nut.dict: add `ups.load`,
	  `input.voltage`, `output.voltage` for e.g. Ugreen US3000 [#3281]

2026-01-24  Tim Niemueller <tim@niemueller.de>

	* docs/nut.dict: Update doc/nut.dict from make spellcheck-interactive
	  Add missing terms.
	* NEWS.adoc, UPGRADING.adoc, docs/configure.txt,
	  docs/man/Makefile.am, docs/man/{upower_dbus.txt => nut-upower.txt},
	  drivers/Makefile.am, drivers/{upower_dbus.c => nut-upower.c}:
	  Rename upower_dbus driver to nut-upower
	* NEWS.adoc, UPGRADING.adoc, docs/config-prereqs.txt,
	  docs/configure.txt, drivers/upower_dbus.c: Address upower driver
	  immediate review comments
	* .github/workflows/01-make-dist.yml: Add libglib2.0-dev to github
	  action builder  Required to also test upower_dbus driver.

2026-01-24  Jim Klimov <jimklimov+nut@gmail.com>

	* docs/nut.dict: add gio [#3279]
	* drivers/upsdrvctl.c: stop_driver(): try shorter PING first, so a
	  closed socket is detected earlier [#3277]
	* drivers/upsdrvctl.c: stop_driver(): if
	  upsdrvquery_connect_drvname_upsname() failed, try another in case
	  the driver is still starting and we were called too soon [#3277]
	* drivers/upsdrvctl.c, drivers/upsdrvquery.c: drivers/upsdrvquery.c:
	  upsdrvquery_ping(): revise intense reading loop and timeout
	  accounting when the read size remains 0 [#3277]
	* drivers/upsdrvctl.c: stop_driver(): handle not-hearing from the
	  last PONG a bit cleaner [#3277]
	* NEWS.adoc, UPGRADING.adoc, docs/nut.dict, drivers/upsdrvquery.c,
	  drivers/upsdrvquery.h: drivers/upsdrvquery.{c,h}, UPGRADING.adoc,
	  NEWS.adoc: introduced upsdrvquery_NOSIGPIPE toggle for consumers
	  who might want to handle SIGPIPE themselves [#3277]
	* drivers/upsdrvquery.c: upsdrvquery_close(): refactor work with
	  setsockopt(), prefer it over the blanket signal change for the
	  process; handle EPIPE specially [#3277]
	* drivers/upsdrvquery.c: upsdrvquery_write() use MSG_NOSIGNAL where
	  available [#3277]  Proper NUT daemons intercept SIGPIPE and survive
	  closed connections, but consumers of upsdrvquery might not, and
	  would crash. If we can, just return the error (and errno=EPIPE) for
	  the specific call.
	* scripts/obs/_service: survive git tags with a dash [#1209]  Avoid
	  RPM build error like: line 121: Illegal char '-' (0x2d) in:
	  Version:        2.8.5-rc1.12+g3501cd37
	* .github/workflows/01-make-dist.yml,
	  .github/workflows/05-codeql.yml: add libglib2.0-dev [#3279]
	* NEWS.adoc, docs/man/nut-ipmipsu.txt, drivers/nut-ipmipsu.c,
	  drivers/nut-libfreeipmi.c, tools/nut-scanner/scan_ipmi.c:
	  tools/nut-scanner/scan_ipmi.c, drivers/nut-ipmipsu.c: fixed an
	  issue where multiple calls to clean-up crashed the program [#3193]
	  Special thanks to maintainer of libfreeipmi for helping catch it!
	  Co-authored-by: Albert Chu <chu11@llnl.gov>

2026-01-23  Tim Niemueller <tim@niemueller.de>

	* configure.ac, docs/man/Makefile.am, docs/man/upower_dbus.txt,
	  docs/nut.dict, drivers/Makefile.am, drivers/upower_dbus.c: Add
	  UPower driver  Enables to read UPS data from UPower. This is useful
	  if a UPS connected to a desktop system should be exposed over the
	  network. It can also be used to expose laptop batteries.

2026-01-23  Jim Klimov <jimklimov+nut@gmail.com>

	* drivers/upsdrvctl.c: upsdrvquery_ping() after telling the driver to
	  stop, so upsdrvctl exits when the driver is gone [#3277]
	* drivers/upsdrvquery.c, drivers/upsdrvquery.h:
	  drivers/upsdrvquery.{c,h}: separate upsdrvquery_ping() from
	  upsdrvquery_prepare() [#3277]
	* drivers/upsdrvquery.c: protect upsdrvquery_close() from SIGPIPE
	  crash if the other side exited [#3277]
	* NEWS.adoc, drivers/upsdrvctl.c: drivers/upsdrvctl.c: if we fail to
	  stop a driver by signal, retry to "exit" it by protocol [#3277]
	* NEWS.adoc, conf/ups.conf.sample, docs/man/ups.conf.txt,
	  docs/man/upsdrvctl.txt, drivers/upsdrvctl.c: drivers/upsdrvctl.c,
	  NEWS.adoc, conf/ups.conf.sample, docs: apply global debug_min from
	  ups.conf also to upsdrvctl tool itself [#3276]
	* docs/man/nut-ipmipsu.txt: add errata note about possible troubles
	  when changing OS user accounts [#3193]
	* tools/nut-scanner/README.adoc: fix typo
	* .circleci/config.yml: line-break elements added for DMF code base,
	  so master-branch text lines match exactly

2026-01-20  Jim Klimov <jimklimov+nut@gmail.com>

	* tools/nut-scanner/Makefile.am: restore wording of
	  -export-symbols-regex for libnutscan [#2800]

2026-01-18  sginestrini <s.ginestrini@gmail.com>

	* data/driver.list.in: Fix formatting for Tecnoware UPS ERA PLUS 2000
	  entry in driver list

2026-01-18  Jim Klimov <jimklimov+nut@gmail.com>

	* drivers/Makefile.am, drivers/libusb0.c, drivers/libusb1.c: fix
	  linking of suggest_NDE_conflict() when we
	  ENABLE_SHARED_PRIVATE_LIBS [#2800]
	* drivers/Makefile.am: drivers/Makefile.am, NEWS.adoc: optimise
	  driver build/link with libdummy_usb.la [#2800]
	* drivers/Makefile.am, NEWS.adoc: optimise driver build/link with
	  libdummy_usb.la [#2800]
	* configure.ac, docs/configure.txt: stress that --without-serial does
	  not currently mean disabling modbus drivers nor libnutscan ability
	  to talk serial
	* drivers/Makefile.am, NEWS.adoc: avoid building libdummy_serial.la
	  when we configure --without-serial
	* NEWS.adoc: wrap recently indented lines
	* docs/nut.dict: fix sort order

2026-01-17  sginestrini <s.ginestrini@gmail.com>

	* data/driver.list.in: Add UPS model 'UPS ERA PLUS 2000' to driver
	  list

2026-01-17  Jim Klimov <jimklimov+nut@gmail.com>

	* drivers/Makefile.am: fix linking of libdummy_serial.la with
	  ENABLE_SHARED_PRIVATE_LIBS more conservatively [#2800]
	* drivers/Makefile.am: fix linking of libdummy_serial.la with
	  ENABLE_SHARED_PRIVATE_LIBS [#2800]
	* tools/nutconf/Makefile.am: revise dependency trail involving
	  libcommonclient.la [#2800]
	* NEWS.adoc, docs/nut.dict, drivers/powercom-hid.c:
	  drivers/powercom-hid.c, NEWS.adoc: introduce
	  powercom_hack_voltage_lkp to report battery.voltage [#2766]
	  Authored-By: Vladyslav Andreichykov <vladdrako007@gmail.com>
	* drivers/cps-hid.c, NEWS.adoc: added Replace Battery information
	  [#3268]  Contributed via mailing list at
	  https://alioth-lists.debian.net/pipermail/nut-upsdev/2026-January/008184.html
	  Authored-by: John.Chang <John.Chang@cyberpower.com>
	* scripts/upower/95-upower-hid.hwdb: update comment for iDowell (and
	  newly Goldenmate) devices on USB ID v075Dp0300 [#3265]

2026-01-16  Jim Klimov <jimklimov@gmail.com>

	* ci_build.sh: Revert "ci_build.sh: do not auto-test both
	  NUT_LIBNUTPRIVATE_VARIANTS on MacOS for now, stick with default
	  (no) [#2800]"  This reverts commit
	  520539ecaf11a4a7cc2f6feef5030ae579bad10b : issue was fixed by
	  passing version data/methods into drivers using the callback
	  mechanism made for upsdrv_*() implementations.

2026-01-16  Jim Klimov <jimklimov+nut@gmail.com>

	* ci_build.sh, scripts/Windows/build-mingw-nut.sh: revise
	  passing/defaulting of WITH_LIBNUTPRIVATE envvar toggle for WIN32
	  (cross-)builds [#2800]
	* common/common-nut_version.c, drivers/main.c, drivers/main.h:
	  drivers/main.{c,h}, common/common-nut_version.c: pass nut_version
	  stuff via upsdrv_callback_t too [#2800]
	* clients/Makefile.am: link libcommonversion.la BEFORE the dynamic
	  libnutprivate-*common*.la [#2800]
	* tools/nut-scanner/Makefile.am: with ENABLE_SHARED_PRIVATE_LIBS and
	  binaries keeping their version info inside, libnutscan is also such
	  a binary as far as third-party consumers are concerned [#2800]
	* drivers/Makefile.am, tests/Makefile.am: fix libnutprivate linking
	  with libdummy_mockdrv and libcommonversion [#2800]
	* configure.ac: fix use of cygpath (WIN32) where available, to
	  determine ABS_TOP_{BUILD,SRC}DIR values
	* tools/nutconf/Makefile.am: fix dependency between libnutconf.la and
	  libcommonclient.la for ENABLE_SHARED_PRIVATE_LIBS mode [#2800]
	* .obs/workflows.yml: "event" is a value, not list [#1209]
	* scripts/obs/debian.rules: no SED for dropped
	  nut-common-tmpfiles.conf
	* scripts/obs/Makefile.am, scripts/obs/debian.nut-common.tmpfiles.in,
	  scripts/obs/debian.rules: scripts/obs/*: drop misleading
	  debian.nut-common.tmpfiles.in, deliver built one
	* scripts/obs/debian.rules: modernize naming of
	  nut-common-tmpfiles.conf
	* scripts/obs/nut.spec, scripts/obs/debian.rules: honour new
	  nut-common-sysusers.conf [#3262]
	* drivers/snmp-ups.c: avoid strncat() altogether by using snprintf()
	  [#3253]
	* drivers/snmp-ups.c: fix remaining strcat=>strncat [#3255]
	* tools/driver-list-format.sh: update the error message to stress
	  expected format [#3265]
	* data/driver.list.in: TAB-separate all the fields of GoldenMate
	  entry [#3265]

2026-01-15  Jim Klimov <jimklimov@gmail.com>

	* ci_build.sh: do not auto-test both NUT_LIBNUTPRIVATE_VARIANTS on
	  MacOS for now, stick with default (no) [#2800]
	* appveyor.yml: build CI tarballs WITH_LIBNUTPRIVATE=true [#2800]

2026-01-15  Jim Klimov <jimklimov+nut@gmail.com>

	* Makefile.am, clients/Makefile.am, common/Makefile.am,
	  common/common-nut_version.c, drivers/Makefile.am,
	  scripts/Windows/Makefile.am, server/Makefile.am, tests/Makefile.am,
	  tools/nut-scanner/Makefile.am, tools/nutconf/Makefile.am:
	  common/common-nut_version.c, */Makefile.am: Introduce
	  libcommonversion-private.la for builds where we
	  ENABLE_SHARED_PRIVATE_LIBS so programs have their versions built in
	  and can consult what the library thinks about itself [#2800]  Costs
	  about 30Kb (Linux with debug) per binary (upsc) for the now
	  re-embedded version data and a few methods to show it. But still
	  saves 200K compared to a build without libnutprivate.
	* docs/nut.dict: add LiFePO [#3265]
	* docs/nut.dict: update spelling of GoldenMate [#3265]
	* data/driver.list.in: fix spelling of GoldenMate [#3265]
	* NEWS.adoc: update about GoldenMate LiFePo4 support in usbhid-ups
	  [#3265]
	* drivers/idowell-hid.c: switch to double-digit version [#3265]
	  Instead of bumping 0.2 to 0.3, bump to 0.20 - better future-proof

2026-01-15  DeadEnd <45110141+DeadEnded@users.noreply.github.com>

	* data/driver.list.in, docs/nut.dict, drivers/idowell-hid.c: Add
	  missing values for Goldenmate to iDowell subdriver  This PR will
	  add additional values to the iDowell subdriver for support of
	  Goldenmate brand UPS using LiFePO4.

2026-01-14  Luca Boccassi <luca.boccassi@gmail.com>

	* Makefile.am, autogen.sh, configure.ac, docs/configure.txt,
	  docs/nut.dict, scripts/systemd/.gitignore,
	  scripts/systemd/Makefile.am: Install sysusers.d config for
	  user/group  Ubuntu, debian and other distro create the nut
	  user/group pair by default in their packages.  Add a sysusers.d
	  config file and install it. This configuration file will create the
	  configured user/group pair on first boot/factory reset/package
	  installation, without requiring manual scripts or actions. This is
	  very important for image-based OSes, but it is useful in other
	  cases too, to allow using declarative configuration instead of
	  scripts.
	  https://www.freedesktop.org/software/systemd/man/latest/sysusers.d.html
	  This is especially useful in combination with the existing
	  tmpfiles.d config that is already installed, and makes use of the
	  configured user/group. With the sysusers.d addition, it works out
	  of the box without manual scripting.

2026-01-14  Jordan Rodgers <com6056@gmail.com>

	* drivers/usbhid-ups.c: fix format specifier warning

2026-01-14  Jim Klimov <jimklimov+nut@gmail.com>

	* tests/Makefile.am: revise dependencies with libcommonversion.la
	  [#2800]
	* appveyor.yml: after_test: separate installation from follow-up
	  commands into a separate shell call
	* NEWS.adoc: document --with-systemdsysusersdir=PATH addition [#3262]

2026-01-13  Jim Klimov <jimklimov+nut@gmail.com>

	* drivers/main.h: debug-print "cbsz" as an unambiguously sized
	  uintmax_t [#2800]
	* drivers/main.h, drivers/main.c, drivers/main-stub.c,
	  tests/generic_gpio_utest.c, tests/driver_methods_utest.c: wrap
	  calls to register/validate callbacks with ignorance of "address"
	  and "unreachable code" warnings [#2800]  Some compilers detect that
	  a persistent structure's address would never be NULL so some
	  conditions are always FALSE and some code never runs. The downside
	  of using macros vs. methods...
	* m4/ax_c_pragmas.m4, drivers/main.c, drivers/apc_modbus.c: introduce
	  HAVE_PRAGMA_GCC_DIAGNOSTIC_IGNORED_MISSING_FIELD_INITIALIZERS{,_BESIDEFUNC}
	  to quiesce stuff={0} initializations (warnings with ancient
	  compilers) [#2800]
	* docs/man/Makefile.am: update LINKMAN_EXCLUDE_NONDRIVER preemptively
	  based on source inspection [#3255]
	* docs/man/Makefile.am: do not list index.txt twice in SRC_ALL_PAGES
	* docs/man/Makefile.am: linkman-driver-names.txt: do not refer to
	  blazer-common and nut_usb_addvars as if they were standalone driver
	  man pages [#3255]

2026-01-12  Paul Donald <newtwen+github@gmail.com>

	* drivers/blazer_usb.c, drivers/nutdrv_qx.c, drivers/usbhid-ups.c:
	  drivers/*: align subdriver output  instead of  Acceptable
	  values...: blah, blah  print:  Acceptable values...: blah1 blah2
	  ...
	* drivers/main.c: drivers/main: clean up help output  print the self
	  describing parameter name first, then the descriptive text.
	  Otherwise it's a wall of text where one has to search for the
	  parameter, because it's unaligned.

2026-01-12  Jordan Rodgers <com6056@gmail.com>

	* NEWS.adoc, drivers/usbhid-ups.c: usbhid-ups: improve handling of
	  transient LIBUSB_ERROR_IO failures  Some devices (e.g., CyberPower
	  CP1500PFCLCD) have firmware bugs that cause random I/O errors on
	  specific HID reports during normal polling. Rather than triggering
	  expensive reconnection attempts that can fail in daemon mode, skip
	  the failing report and continue with remaining polls.  Add safety
	  check to detect true device disconnection: if all polls fail during
	  an update cycle (items_succeeded == 0), trigger reconnect as
	  before.  This improves stability especially in daemon mode while
	  still detecting real disconnections via other error codes or
	  complete poll failure.  Fixes #3116

2026-01-12  Jim Klimov <jimklimov+nut@gmail.com>

	* tools/nut-scanner/Makefile.am: revise nut_scanner_LDADD to use
	  bigger common lib just in case so far [#2800]
	* Makefile.am, clients/Makefile.am, drivers/Makefile.am,
	  scripts/Windows/Makefile.am, server/Makefile.am, tests/Makefile.am,
	  tools/nut-scanner/Makefile.am: */Makefile.am: for parallel builds
	  not in souce root, refine libnutprivate* dependency definitions
	  (also wants libcommonversion) [#2800]
	* ci_build.sh: add NUT_LIBNUTPRIVATE_VARIANTS to (randomized) build
	  matrix with BUILD_TYPE=default-all-errors and explicit requests via
	  WITH_LIBNUTPRIVATE envvar [#2800]
	* drivers/main.h: validate_upsdrv_callbacks(): do not fail when
	  validating a newly made structure (with expected NULL references)
	  [#2800]
	* tests/driver_methods_utest.c, tests/generic_gpio_utest.c: take note
	  of NUT_DEBUG_LEVEL envvar [#2800]
	* drivers/main.h: validate_upsdrv_callbacks(): debug-log the values
	  seen in upsdrv_callback_t structure as we go through it [#2800]
	* tests/generic_gpio_utest.c: do not segfault if aborting early
	  [#2800]
	* drivers/main.h: fix init_upsdrv_callbacks() naming, assert correct
	  inputs [#2800]
	* drivers/main.h: upsdrv_callback_t: separate sentinel from padding
	  [#2800]
	* drivers/main.c, drivers/main.h: drivers/main.{c,h}:
	  register_upsdrv_callbacks(): validate also struct size overall
	  [#2800]
	* clients/Makefile.am, common/Makefile.am, configure.ac,
	  drivers/Makefile.am, scripts/Windows/Makefile.am,
	  server/Makefile.am, tests/Makefile.am,
	  tools/nut-scanner/Makefile.am: Revise libnutprivate* file naming
	  and libtool versioning [#2800]  Once again, libtool versions are
	  not plain SEMVERs!
	* ci_build.sh, scripts/Windows/build-mingw-nut.sh: default to
	  --enable-shared-private-libs for Windows builds [#2800]
	* drivers/main.c, drivers/main.h: drivers/main.{c,h}:
	  register_upsdrv_callbacks(): pass the callbacks as struct ptr, not
	  raw big struct [#2800]
	* UPGRADING.adoc, common/Makefile.am, configure.ac,
	  drivers/Makefile.am: configure.ac, common/Makefile.am,
	  drivers/Makefile.am: version the libnutprivate* libraries, if made
	  (avoid deployment surprises later on) [#2800]
	* drivers/main.c, drivers/main.h: drivers/main.{c,h}: add some
	  portability checks that we load an expected structure with
	  upsdrv_callbacks [#2800]
	* drivers/main.c, drivers/main.h: drivers/main.{c,h}: treat
	  upsdrv_callback_t::upsdrv_info also as a pointer, not directly a
	  structure [#2800]

2026-01-11  rtm516 <ryantmilner@hotmail.co.uk>

	* test-ups.conf: Remove testing config
	* NEWS.adoc, test-ups.conf: Update news.adoc
	* drivers/nutdrv_qx.c, drivers/nutdrv_qx_hunnox.c: Add battery.charge
	  to hunnox driver

2026-01-11  Jim Klimov <jimklimov+nut@gmail.com>

	* drivers/Makefile.am, drivers/main-stub.c, drivers/main.c,
	  drivers/main.h, tests/driver_methods_utest.c,
	  tests/generic_gpio_utest.c: drivers/main-stub.c: separate from
	  main.c and register_upsdrv_callbacks() to allow dynamic linking
	  [#2800]
	* drivers/Makefile.am: libnutprivate-drivers-serial.la uses symbols
	  from libnutprivate-drivers-common.la so link with it [#2800]
	* clients/Makefile.am, drivers/Makefile.am,
	  scripts/Windows/Makefile.am, server/Makefile.am, tests/Makefile.am:
	  */Makefile.am: wherever we define our own AM_C{,XX}FLAGS, be sure
	  to refer to $(top_builddir)/include so partial builds also know
	  about config.h [#2825 etc]

2026-01-10  Jim Klimov <jimklimov+nut@gmail.com>

	* tools/nut-scanner/Makefile.am: fix to use actual
	  libnutprivate-common-client.la if building with
	  ENABLE_SHARED_PRIVATE_LIBS [#2800]
	* common/Makefile.am, drivers/Makefile.am: fixup LDFLAGS for WIN32
	  builds of libnutprivate*.dll [#2800]  ...just in case -
	  semi-natively under, MSYS2 the DLL files were built already
	* drivers/Makefile.am: fix nutdrv_qx_LDADD to use
	  libnutprivate-drivers-serial.la when suitable [#2800]
	* clients/Makefile.am: fix upssched recipe to honour
	  ENABLE_SHARED_PRIVATE_LIBS toggle [#2800]
	* clients/Makefile.am, scripts/Windows/Makefile.am,
	  server/Makefile.am, tests/Makefile.am: */Makefile.am: fix other
	  consumers of libcommon*.la to honour ENABLE_SHARED_PRIVATE_LIBS
	  toggle [#2800]
	* drivers/adelsystem_cbi.c, drivers/bcmxcp_usb.c, drivers/libshut.c,
	  drivers/libusb0.c, drivers/libusb1.c, drivers/nutdrv_atcl_usb.c,
	  drivers/nutdrv_qx_voltronic.c, drivers/powervar_cx.c,
	  drivers/richcomm_usb.c, drivers/sms_ser.c, drivers/snmp-ups.c,
	  drivers/tripplite_usb.c: drivers/*.c: refactor to not use unbounded
	  sprintf()
	* drivers/mge-utalk.c: setvar(): refactor to not use unbounded
	  sprintf(), and also not print into potentially NULL strchr()
	* tools/nut-scanner/scan_ipmi.c, tools/nut-scanner/scan_usb.c,
	  tools/nut-scanner/scan_xml_http.c: tools/nut-scanner/scan_*.c:
	  refactor to not use unbounded sprintf()
	* NEWS.adoc, clients/upsmon.c, docs/nut.dict: clients/upsmon.c:
	  wall(): refactor WIN32 case to not use unbounded sprintf()
	* NEWS.adoc: further removal of unbounded `strcpy()` usage [#3253]
	* tests/generic_gpio_liblocal.c: use snprintf() rather than strncpy()
	  to avoid both truncation warnings and unterminated string practice
	* drivers/solis.c: use snprintf() rather than strncpy() to avoid both
	  truncation warnings and unterminated string practice
	* drivers/nutdrv_qx_voltronic-axpert.c,
	  drivers/nutdrv_qx_voltronic.c: drivers/nutdrv_qx_voltronic*.c: bump
	  bitwarns[] to be same size as warns[] to avoid truncation
	* clients/upsstats.c: avoid unbounded strcpy(), especially for data
	  coming from callers
	* tests/generic_gpio_liblocal.c: avoid unbounded strcpy()
	* drivers/adelsystem_cbi.c, drivers/belkinunv.c,
	  drivers/generic_gpio_libgpiod.c, drivers/generic_modbus.c,
	  drivers/masterguard.c, drivers/nutdrv_qx_masterguard.c,
	  drivers/nutdrv_qx_voltronic-axpert.c,
	  drivers/nutdrv_qx_voltronic.c, drivers/solis.c, drivers/upscode2.c:
	  drivers/*: avoid unbounded strcpy()
	* common/setenv.c: avoid unbounded strcpy() just in case
	* docs/man/upsset.conf.txt: revise recommendations for CGI engine
	  timeouts [#3219]
	* NEWS.adoc, UPGRADING.adoc, clients/upsstats.c,
	  conf/upsstats-single.html.sample.in, conf/upsstats.html.sample.in,
	  docs/man/upsstats.html.txt: clients/upsstats.c,
	  docs/man/upsstats.html.txt, conf/upsstats*.html.sample.in,
	  NEWS.adoc, UPGRADING.adoc: introduced `@NUT_UPSSTATS_TEMPLATE@`
	  magic token that HTML templates must start with [#3249, #3252]
	* clients/upsstats.c: display_template(): open HTML template in
	  binary mode, so ftell()/fseek() work predictably [#3219]  Fix
	  rewinding FOREACHUPS command to the correct byte location on WIN32
	  (or other platforms with CR vs CRLF issues).
	* clients/upsstats.c: add call-stack tracing [#3249]

2026-01-09  Jim Klimov <jimklimov+nut@gmail.com>

	* Makefile.am, clients/Makefile.am, common/Makefile.am,
	  drivers/Makefile.am, scripts/Windows/Makefile.am,
	  server/Makefile.am, tests/Makefile.am,
	  tools/nut-scanner/Makefile.am: Refactor and tune back the
	  ENABLE_SHARED_PRIVATE_LIBS implementation, so third-party code
	  (clients, drivers) can build with minimal/no changes if using the
	  NUT public shared libraries [#2800]
	* UPGRADING.adoc, clients/Makefile.am, clients/upsc.c,
	  clients/upscmd.c, clients/upslog.c, clients/upsrw.c,
	  common/upsconf.c, drivers/main.c, include/upsconf.h, server/upsd.c,
	  tools/nut-scanner/Makefile.am: Implement callbacks for upsconf and
	  parseconf methods that can be used with static and dynamic linked
	  NUT programs [#2800]
	* NEWS.adoc, clients/upslog.c: clients/upslog.c: update help() text
	  with a "*@host" example [#3083, #2756]

2026-01-08  Jim Klimov <jimklimov+nut@gmail.com>

	* NEWS.adoc, UPGRADING.adoc, common/Makefile.am, configure.ac,
	  docs/configure.txt: configure.ac, common/Makefile.am,
	  docs/configure.txt: introduce an option to
	  --enable-shared-private-libs [#2800]
	* NEWS.adoc, clients/upsstats.c, conf/upsstats-single.html.sample.in,
	  conf/upsstats.html.sample.in, docs/man/upsstats.html.txt,
	  docs/nut.dict: NUT CGI upsstats (prog, doc, template): add links to
	  expose device/all data as JSON docs [#3171]
	* docs/man/upsset.conf.txt, docs/nut.dict: docs/man/upsset.conf.txt:
	  document recommendations about CGI timeout [#3219]
	* clients/cgilib.c: extractpostargs(): simplify the loop to avoid
	  potential final parsearg() of leftovers [#3219]
	* clients/upsset.c, clients/cgilib.c: in cgilib, see if server tells
	  us CONTENT_LENGTH, and on IIS truncate it by a byte; in upsset add
	  a sacrificial sentinel into each HTML FORM [#3219]
	* clients/cgilib.c: extractpostargs(): revise debug logging [#3249]
	* drivers/openups-hid.c, drivers/usbhid-ups.c, NEWS.adoc,
	  docs/nut.dict: fix "nobattery" alarm on OpenUPS devices [#3246]

2026-01-07  Jim Klimov <jimklimov+nut@gmail.com>

	* clients/cgilib.c: extractpostargs(): on WIN32, select() is a SOCKET
	  concept and does not apply to STDIN [#3219]
	* clients/upsimage.c, clients/upsset.c, clients/upsstats.c:
	  clients/ups{set,stats,image}.c: on WIN32 initialize socket layer
	  for select() to work [#3219]
	* clients/cgilib.c: extractpostargs(): troubleshoot incoming bytes
	  [#3219]
	* clients/upsset.c, clients/cgilib.c: move the time-constrained read
	  of POST data from STDIN from client code into common code [#3219]
	* clients/upsimage.c, clients/upsset.c, clients/upsstats.c:
	  clients/ups{set,stats,image}.c: setmode() actually seems to not be
	  wide-spread; is available in WIN32 builds though, so constrain it
	  to them [#3249]
	* clients/upsset.c: on WIN32 always extractpostargs() [#3207]  ...not
	  sure if select() works as expected here, but NUT CGI under IIS
	  keeps asking for login...
	* clients/upsimage.c, clients/upsset.c, clients/upsstats.c:
	  clients/ups{set,stats,image}.c: treat stdout as a binary stream for
	  CGI on all platforms [#3207]
	* data/htmlcgi/index.html, data/htmlcgi/Makefile.am, NEWS.adoc: use a
	  NUT favicon with CGI HTML pages
	* data/htmlcgi/bottom.html: populate with a bit of text so browser
	  users know loading is completed and not stalled
	* docs/man/upsstats.html.txt: mention sibling upsstats-single.html
	  early in the doc too
	* docs/man/upsset.conf.txt: suggest more ways of hiding/securing NUT
	  CGI on a web server
	* docs/man/upsimage.cgi.txt, docs/man/upsset.cgi.txt,
	  docs/man/upsset.conf.txt, docs/man/upsstats.cgi.txt,
	  docs/man/upsstats.html.txt: docs/man/ups*.{cgi,html}.txt: refer to
	  upsset.conf page about web server preparation for NUT CGI [#3207]
	* conf/.gitignore, conf/Makefile.am, ....html.sample =>
	  upsstats-single.html.sample.in}, ...psstats.html.sample =>
	  upsstats.html.sample.in}, configure.ac: Convert
	  conf/upsstats*.html.sample files into .in templates to consider
	  EXEEXT where applicable (e.g. WIN32) [#3207]
	* NEWS.adoc, docs/nut.dict: update and restructure news for 2.8.5
	  cycle
	* common/common.c, scripts/Windows/wininit.c:
	  scripts/Windows/wininit.c: err on the safe side and allocate
	  buffers sized NUT_PATH_MAX + 1 (for the NUL byte)
	* common/common.c, common/parseconf.c: generalize the WIN32 UNC
	  localhost prefix chop-off [#3207]
	* clients/upsset.c, clients/upsstats.c: debug-trace which config file
	  we try to use [#3207]
	* common/parseconf.c: pconf_file_begin(): extend limited UNC path
	  support on WIN32 builds [#3207]  Let CGI work under IIS with
	  `\\?\c:\...` paths to config files. TOTHINK: Maybe move this closer
	  to GetModuleName() calls?

2026-01-06  Yifeng Li <tomli@tomli.me>

	* drivers/huawei-ups2000.c: call ser_close() before modbus_connect(),
	  fix #3244.  In drivers/huawei-ups2000.c, the serial port is opened
	  twice. Once by ser_open() to manually perform device
	  identification, once by modbus_connect() for communicating with the
	  UPS after identification succeeds.  However, holding two file
	  descriptors of the same serial port is problematic on Windows, even
	  if they're not actually used at the same time. A serial port is
	  usually opened on Windows via CreateFileA() with dwShareMode = 0,
	  which is done by libmodbus. According to the Win32 API
	  documentation:  > If this parameter is zero and CreateFile
	  succeeds, the file or device > cannot be shared and cannot be
	  opened again until the handle to the > file or device is closed.
	  This is responsible for the following error on Windows:
	  modbus_connect: unable to connect: No error Driver failed to start
	  (exit status=1)  This commit leaves only the raw ser_open() call in
	  upsdrv_initups(), the modbus_connect() call is deleted to avoid
	  opening the same serial port again. After device identification
	  succeeds later in ups2000_device_identification() - called by
	  upsdrv_initinfo(), the raw serial port is closed. Once at this
	  point, modbus_connect() is called, just before upsdrv_initinfo()
	  returns.

2026-01-06  Jim Klimov <jimklimov+nut@gmail.com>

	* configure.ac, data/htmlcgi/header.html.in, docs/configure.txt,
	  docs/man/upsset.conf.txt, NEWS.adoc, docs/nut.dict: introduce
	  --with-cgi-uri [#3207]
	* clients/upsimage.c, clients/upsset.c, clients/upsstats.c:
	  clients/ups{set,stats,image}.c: support NUT_DEBUG_LEVEL envvar in
	  CGI clients [#3207]
	* docs/man/upsset.conf.txt: note also the "html" directory for pretty
	  UI [#3207]
	* tools/nut-scanner/scan_nut_simulation.c, NEWS.adoc: use the more
	  dynamic confpath() rather than built-in CONFPATH
	* drivers/snmp-ups.c, docs/man/snmp-ups.txt: use the more dynamic
	  confpath() rather than built-in CONFPATH, and document the
	  (incomplete) *mib.conf support
	* clients/upsstats.c: use the more dynamic confpath() rather than
	  built-in CONFPATH [#3207]  Already done for other files, only
	  hosts.conf was seeked wrongly.
	* docs/man/upsset.conf.txt: revise MS IIS setup for NUT CGI
	  experimentally [#3207]
	* appveyor.yml: comment about "mingwXX" in archived N4W builds
	  [#3207]
	* docs/man/upsset.conf.txt, docs/nut.dict, NEWS.adoc: documented
	  setup of Microsoft IIS to host the NUT CGI programs [#3207]
	* clients/upsset.c, clients/upsstats.c, conf/upsset.conf.sample,
	  conf/upsstats.html.sample, configure.ac,
	  data/htmlcgi/header.html.in, docs/man/upsstats.cgi.txt,
	  docs/man/upsstats.html.txt: Consider EXEEXT in CGI programs,
	  templates and docs [#3207]

2026-01-04  Jim Klimov <jimklimov+nut@gmail.com>

	* Makefile.am: fix typos in "make distcheck-completeness" goal
	  [#2829]
	* docs/Makefile.am: fix typo with paths [#1209]

2026-01-03  Jim Klimov <jimklimov+nut@gmail.com>

	* docs/Makefile.am: EXTRA_DIST the OBS logos [#1209]
	* docs/images/ci/obs-logo.png: actually attach the logo file [#1209]

2026-01-02  Jim Klimov <jimklimov+nut@gmail.com>

	* README.adoc: updated entry about Gandi.Net
	* README.adoc: downsize obs-logo.png to match others [#1209]
	* README.adoc: README.adoc, docs/images/ci/obs-logo.png: use another
	  better visible OBS logo [#1209]  Fetched from
	  https://upload.wikimedia.org/wikipedia/commons/3/35/Obs-logo.png
	* README.adoc, docs/images/ci/obs-logo.svg: use a better visible OBS
	  logo [#1209]  Copied from
	  https://github.com/openSUSE/open-build-service/blob/master/docs/obs-logo.svg
	  as of their commit 43c17f6
	* README.adoc, docs/nut.dict,
	  docs/images/ci/openSUSEBuildService.png: reference openSUSE Build
	  Service as a part of NUT CI farm [#1209]  Use logo copied from
	  https://build.opensuse.org/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBCZz09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--043a458c5587aea3e3a61e9727a75569eab11948/openSUSEBuildService.png
	* README.adoc: reshuffle acknowledgements, so DigitalOcean is more
	  prominently the NUT CI farm hosting provider (and Fosshost, like
	  Travis CI, is history) [#2192]
	* scripts/systemd/nut-driver-enumerator-daemon-activator.service.in,
	  scripts/systemd/nut-driver-enumerator-daemon.service.in,
	  scripts/systemd/nut-driver-enumerator.service.in,
	  scripts/systemd/nut-driver@.service.in,
	  scripts/systemd/nut-monitor.service.in,
	  scripts/systemd/nut-server.service.in,
	  scripts/systemd/nut-udev-settle.service.in:
	  scripts/systemd/nut-*.service.in: fix use of MODE in ExecCondition
	  to also consider "none" [#3233]  Also fix nut-monitor.service
	  (upsmon) to still start for a "netserver": it is a full setup like
	  "standalone", just with not only `localhost` clients expected.
	* configure.ac, scripts/systemd/.gitignore,
	  scripts/systemd/Makefile.am, .../systemd/{nut-udev-settle.service
	  => nut-udev-settle.service.in}: configure.ac,
	  scripts/systemd/.gitignore, scripts/systemd/Makefile.am: rename
	  nut-udev-settle.service into a .in template, handle ExecCondition
	  here too [#3233]
	* NEWS.adoc, configure.ac,
	  .../nut-driver-enumerator-daemon-activator.path.in,
	  ...t-driver-enumerator-daemon-activator.service.in,
	  .../nut-driver-enumerator-daemon.service.in,
	  scripts/systemd/nut-driver-enumerator.path.in,
	  scripts/systemd/nut-driver-enumerator.service.in,
	  scripts/systemd/nut-driver.target.in,
	  scripts/systemd/nut-driver@.service.in,
	  scripts/systemd/nut-logger.service.in,
	  scripts/systemd/nut-monitor.service.in,
	  scripts/systemd/nut-server.service.in,
	  scripts/systemd/nut-sleep.service,
	  scripts/systemd/nut-systemd.preset,
	  scripts/systemd/nut-udev-settle.service,
	  scripts/systemd/nut.target.in: scripts/systemd/*, configure.ac,
	  NEWS.adoc: introduce @SYSTEMD_AVAILABLE_EXEC_CONDITION@ and put
	  ExecCondition for MODE values into more units; depend from NDE path
	  units also on nut.conf changes; bump systemd integration copyrights
	  [#3233]

2025-12-30  Jim Klimov <jimklimov+nut@gmail.com>

	* server/upsd.c: fix WIN32 logging of server->Event and ups->sock_fd
	  as HANDLE (pointer) [#3207]
	* server/upsd.c: fix botched indentations [#3237]
	* tests/NIT/Makefile.am, tests/NIT/nit.sh: consider EXEEXT (e.g. with
	  NUT for Windows builds)  ...and refactor part of runcmd() into
	  dual-use execcmd()
	* tests/NIT/Makefile.am, tests/NIT/nit.sh: pass/guess
	  {,TOP_}{BUILD,SRC}DIR values more reliably

2025-12-29  Jim Klimov <jimklimov+nut@gmail.com>

	* tests/NIT/nit.sh: add tests for `upsc -j` JSON outputs [#3178]
	* scripts/Windows/wininit.c, docs/man/nut.exe.txt, NEWS.adoc: try to
	  stop the service before unregistering it [#3207]
	* NEWS.adoc, scripts/Windows/wininit.c: scripts/Windows/wininit.c:
	  SvcInstall(): try to set a nice service description [#3207]
	* scripts/Windows/wininit.c: track also upsdrvctl_pid and all daemon
	  handles; restart dead/killed daemons [#3207]
	* scripts/Windows/wininit.c: debug fault of WaitForMultipleObjects()
	  and do not overflow maxhandle [#3207]
	* server/upsd.c: mainloop(): log DRIVER entries as such (not UPS) for
	  consistency with later processing messages [#3207]
	* server/upsd.c: mainloop(): poll newly connected UPS right away, not
	  in next cycle [#3207]
	* include/common.h: fix fallback WIN32 definition of INVALID_SOCKET
	  to be certain [#3207]
	* server/upsd.c: mainloop(): track also nfds_considered (e.g.
	  discarded as invalid), and check that WIN32 event loop handle is
	  valid [#3207]
	* NEWS.adoc, clients/nutclient.cpp, clients/upsclient.c,
	  docs/nut.dict, drivers/apcupsd-ups.c, server/upsd.c,
	  tools/nut-scanner/nutscan-init.c: upsd, nut-scanner, libs,
	  NEWS.adoc: only process WSAStartup() once [#3237]
	* server/upsd.c, NEWS.adoc: setuptcp(): copy over server->Event
	  (WIN32) when handling "LISTEN *" [#3237]
	* server/upsd.c: setuptcp(): debug-log the FD occupied by new
	  listener [#3207]  ...and WIN32 event, if applicable
	* server/upsd.c: setuptcp(): error-check WIN32 event creation and
	  select subscription [#3207]
	* server/upsd.c: main(), poll_reload(): revise WIN32
	  MAXIMUM_WAIT_OBJECTS vs. maxconn (array size) and maxalloc (check)
	  [#3207]
	* server/upsd.c: server_load(): log ANY address binding like we do
	  for localhost [#3207]
	* server/upsd.c: server_load(): revise tried/succeeded logging
	  [#3207]
	* server/upsd.c: mainloop(): revise honouring maxconn (and log about
	  it) [#3207]
	* server/upsd.c, include/common.h: mainloop(): fix WIN32 debug
	  printouts for SOCKET type [#3207]

2025-12-28  Jim Klimov <jimklimov+nut@gmail.com>

	* UPGRADING.adoc, clients/nutclient.cpp, clients/nutclient.h,
	  clients/upsclient.c, configure.ac, scripts/obs/nut.spec,
	  server/conf.c, server/upsd.c, tests/cpputest-client.cpp,
	  tools/nut-scanner/scan_avahi.c, tools/nut-scanner/scan_nut.c:
	  Rename autoconf variable PORT to NUT_PORT [#3238]  ...and test
	  variables from NUT_* to env_NUT_*
	* clients/nutclient.cpp, clients/nutclient.h:
	  clients/nutclient.{h,cpp}: use NUT-defined default PORT value if
	  possible [#3238]
	* server/upsd.c: mainloop(): log also FDs we are polling [#3207]
	* server/upsd.c: listen_add(): be sure a new (invalid) server->Event
	  is properly initialized [#3207]
	* include/common.h: use safer definitions of TYPE_FD* related macros
	  for various platforms [#3207]

2025-12-26  Jim Klimov <jimklimov+nut@gmail.com>

	* server/upsd.c: setuptcp() WIN32: associate with event loop only if
	  sock_fd is valid [#3207]
	* server/upsd.c: mainloop(): throttle-sleep if failed a cycle in
	  WIN32 and POSIX builds [#3207]
	* server/upsd.c: mainloop(): log FDs watched in WIN32 and POSIX
	  builds [#3207]
	* docs/man/nut.exe.txt: add hints about NUT daemon startup
	  troubleshooting [#3207]
	* scripts/Windows/wininit.c, NEWS.adoc, docs/man/nut.exe.txt: add
	  "nut.exe restart" action [#3207]
	* scripts/Windows/wininit.c, NEWS.adoc: pepper with debug messages,
	  especially for errors and status changes [#3207]
	* common/common.c: refactor getfullpath() and getprocname() WIN32
	  error reporting [#3207]
	* Makefile.am: install-win-bundle-thirdparty: do not install
	  already-present and same DLLs into bindir (re-runs without clean)

2025-12-25  David Marzal <2069735+Marzal@users.noreply.github.com>

	* scripts/systemd/nut-server.service.in: Don't assume sh to be on
	  SBINDIR  Not sure if there is a better way to call `sh` without
	  assuming a static dir.  Something like `command -v sh`

2025-12-24  Jim Klimov <jimklimov+nut@gmail.com>

	* NEWS.adoc, docs/man/nut.exe.txt, docs/nut.dict,
	  scripts/Windows/wininit.c: scripts/Windows/wininit.c: add "nut.exe
	  status" and debug-ability of the start/stop/status actions [#3207]
	* NEWS.adoc, clients/upsclient.c, common/common.c,
	  drivers/apcupsd-ups.c, include/common.h, server/upsd.c:
	  clients/upsclient.c, common/common.c, etc: fix inet_ntopAI() and
	  inet_ntopSS() helper thread unsafety [#3234]
	* common/common.c: getfullpath(): fix infinite loop [#3207]
	* common/common.c: getfullpath(): rephrase debug log entries [#3207]

2025-12-24  David Marzal <2069735+Marzal@users.noreply.github.com>

	* scripts/systemd/nut-server.service.in: Just launch nut-server
	  systemd servide if we are not on netclient mode  Tested with
	  ExecCondition=/bin/sh -c '[ "$MODE" != "netclient" ]' an

2025-12-23  Jim Klimov <jimklimov+nut@gmail.com>

	* Makefile.am: install-win-bundle-thirdparty: typo fix (broken DLL
	  delivery) [fallout of PR #3222, issue #3219]
	* docs/man/must_ep2000pro.txt: carry over a comment from PR
	  description [#3228]

2025-12-22  Jim Klimov <jimklimov@gmail.com>

	* docs/man/must_ep2000pro.txt: rephrase for better English [#3228]

2025-12-22  Jim Klimov <jimklimov+nut@gmail.com>

	* NEWS.adoc: update for must_ep2000pro driver [#3228]
	* scripts/obs/Makefile.am: refactor DEB part of _preinstallimage
	  recipe [#1209]
	* scripts/obs/Makefile.am, scripts/obs/.gitignore,
	  scripts/obs/README.adoc, docs/nut.dict: add helper goal to generate
	  a _preinstallimage file [#1209]
	* configure.ac, docs/configure.txt, NEWS.adoc: do not automatically
	  --enable-extapi-enphase wherever possible just because we can;
	  document the option [#2813]  This is a niche feature for users who
	  have Enphase solar devices and portal subscription.

2025-12-21  Mikhail Mironov <mike@darkmike.ru>

	* docs/man/must_ep2000pro.txt: Correct documentation formating
	* drivers/must_ep2000pro.c: Correct format for signed datatypes

2025-12-20  Mikhail Mironov <mike@darkmike.ru>

	* drivers/must_ep2000pro.c: Fixed error handling when calling
	  shutdown.return
	* docs/nut.dict: Add words to nut.dict for pass spellcheck
	* data/driver.list.in, docs/man/Makefile.am,
	  docs/man/must_ep2000pro.txt, drivers/Makefile.am,
	  drivers/must_ep2000pro.c: Driver for UPS MUST EP2000Pro

2025-12-18  Jim Klimov <jimklimov+nut@gmail.com>

	* scripts/upsdrvsvcctl/nut-driver-enumerator.sh.in: avoid using
	  alternation in SED [#3099]

2025-12-17  Jim Klimov <jimklimov+nut@gmail.com>

	* common/common.c, include/common.h, scripts/Windows/wininit.c,
	  server/upsd.c, drivers/upsdrvctl.c: refactor with a getfullpath2()
	  to mix configure script options and hard-coded fallbacks [#3207]
	* NEWS.adoc: document fixes for WIN32 path resolution [#3207, #3063,
	  #3065, #3219]
	* common/common.c: confpath(): first try getfullpath(CONFPATH), only
	  then fall back to getfullpath(PATH_ETC) [#3207]
	* common/common.c: WIN32 getfullpath(): fix some off-by-one errors
	  and add debug tracing [#3207]
	* drivers/upsdrvquery.c: fix logging of failed WaitNamedPipe
	* tests/NIT/nit.sh: report if GID/UID was not found to offset "if
	  test..." not-a-number errors [#1209]
	* scripts/Windows/build-mingw-nut.sh: fix back the location for NUT
	  config files in reference WIN32 builds [broken by #3049]
	* scripts/Windows/wininit.c: also use PATH_SBIN to upsdrvctl stop
	  [#3207, #3065]
	* drivers/upsdrvctl.c: look for drivers in DRVPATH in WIN32 too
	  [#3207, #3065]
	* common/common.c: getfullpath(): allow passing "relative_path" with
	  absolute-ish values from NUT build and convert them to be relative
	  to the installed binary [#3207]
	* common/common.c: getfullpath(): avoid "DIRNAME../etc" kind of bugs
	  - should be "DIRNAME/../etc" [#3219]
	* common/common.c: refactor getfullpath() style and comments [#3207]
	* Makefile.am: all-fanout-maybe: report when optimized build is
	  finished and we hand off to "make all" default implementation (may
	  regenerate headers again) [#3039]
	* Makefile.am: do not default NUT_VERSION_H_GENERATED=true (at the
	  cost that we would retry it once in "make all" default
	  implementation) [#3039]
	* common/Makefile.am, include/Makefile.am,
	  tools/nut-scanner/Makefile.am: do not skip rebuilding of
	  nut_version.h if it is currently missing [#3039]  May have been
	  removed since, e.g. in `make check-parallel-builds`.
	* tools/nut-scanner/Makefile.am, include/Makefile.am,
	  common/Makefile.am: streamline debugging of
	  MAINTAINER_GENERATE_HEADER_DEBUG [#3039]
	* common/Makefile.am, tools/nut-scanner/Makefile.am: consider
	  NUT_VERSION_H_GENERATED in transitive dependency definition [#3039]
	* docs/nut-versioning.adoc: do not group non-C usages under "Use in C
	  code" title
	* tools/semver-compare.sh: for "test" action, quietly ignore trailing
	  "]" or "]]" and warn if any other trailing args exists and would be
	  ignored [#3055]
	* tools/semver-compare.sh: wrap help text so it fits in 80 cols
	  (mostly) [#3055]
	* docs/nut-versioning.adoc, docs/nut.dict: document semver-compare.sh
	  [#3055]
	* scripts/Solaris/reset-ups-usb-solaris.sh.sample: use
	  configure-script or otherwise detected functional GREP/EGREP if
	  possible [#3099]
	* scripts/Windows/dllldd.sh, scripts/Windows/build-mingw-prereqs.sh,
	  Makefile.am: use configure-detected GREP and EGREP if possible
	  [#3099]
	* scripts/installer/common/ipp-status,
	  scripts/installer/common/shutdown, scripts/installer/install.sh:
	  scripts/installer/*: recognize primary/secondary upsmon roles
	  [#2288, #840]
	* scripts/installer/common/ipp-os-shutdown,
	  scripts/installer/common/ipp-status, scripts/installer/install.sh,
	  scripts/installer/make_package.sh: scripts/installer/*: use
	  configure-script or otherwise detected functional GREP/EGREP if
	  possible [#3099]
	* scripts/installer/aix/aix_init, scripts/installer/common/aix_init,
	  scripts/installer/common/init,
	  scripts/installer/common/ipp-event.sh,
	  scripts/installer/common/ipp-host-shutdown.sample,
	  scripts/installer/common/ipp-notifier.sh,
	  scripts/installer/common/ipp-os-shutdown,
	  scripts/installer/common/ipp-shutdown-daemon.sh,
	  scripts/installer/common/ipp-status,
	  scripts/installer/common/ipp-wrapper,
	  scripts/installer/common/shutdown,
	  scripts/installer/common/solaris_init,
	  scripts/installer/install.sh, scripts/installer/make_package.sh,
	  scripts/installer/solcmn/solaris_init,
	  scripts/installer/uninstall-ipp: scripts/installer/*: bump
	  copyrights for NUT community maintained version [#2288, #2621]

2025-12-16  Jim Klimov <jimklimov+nut@gmail.com>

	* tools/semver-compare.sh: with fixed-width strings instead of
	  numbers, we can forgo the "sort -n", it is confusing on some
	  systems [#3055]  NetBSD, looking at you: ( echo '0001 0030' ; echo
	  '0001 0003' ) | sort inverses order with sort -n
	* tools/semver-compare.sh: rectify printf vs octal numbers (if there
	  are leading zeroes) [#3055]
	* tools/gitlog2version.sh, tools/semver-compare.sh: fix numeric
	  envvar/CLI arg evaluation for ksh [#3055]  ...where `[ '' -ge 0 ] ;
	  echo $?` does not report a non-numeric error, but succeeds instead.
	* tools/gitlog2version.sh: make SCRIPT_DIR always known (so we can
	  find semver-compare.sh helper) [#3055]
	* tests/nut-driver-enumerator-test.sh: add testcase_semver_compare()
	  [#3055]
	* tools/semver-compare.sh: add "[[" alias to test action, and
	  non-equality checks [#3055]
	* tools/semver-compare.sh: add dashless aliases to expand and strip
	  actions [#3055]
	* tests/nut-driver-enumerator-test.sh: update comments for
	  testcase_gitlog2version() [#3055]
	* tests/nut-driver-enumerator-test.sh: update head comment [#3055]
	* tools/semver-compare.sh: add an option to reverse-sort the versions
	  [#3055]
	* NEWS.adoc, tools/Makefile.am, tools/gitlog2version.sh,
	  tools/semver-compare.sh: tools/semver-compare.sh,
	  tools/gitlog2version.sh: refactor expand/strip logic out of
	  gitlog2version.sh; add more abilities to it [#3055]

2025-12-15  Jim Klimov <jimklimov+nut@gmail.com>

	* docs/FAQ.txt, docs/nut.dict: write down ideas from discussions
	  about power race avoidance and killing UPS power when handling an
	  outage [#1950, #2836]  Mentored-by: Joshua M. Clulow
	  <josh@sysmgr.org> Mentored-by: Lennart Poettering
	  <lennart@poettering.net>
	* NEWS.adoc, docs/nut-versioning.adoc,
	  tests/nut-driver-enumerator-test.sh, tools/gitlog2version.sh:
	  tools/gitlog2version.sh, tests/nut-driver-enumerator-test.sh,
	  docs/nut-versioning.adoc: introduce
	  NUT_VERSION_STRIP_LEADING_ZEROES [#3055]
	* docs/nut-versioning.adoc: document more about the
	  NUT_VERSION_QUERY=VER5X etc modes [#3055]
	* tools/gitlog2version.sh: move filter_extra_width() up and rename to
	  filter_add_extra_width() [#3055]
	* docs/nut-versioning.adoc: rebalance examples for VER5X and DESC5X
	  to consume about the same column width [#3055]

2025-12-11  Jim Klimov <jimklimov+nut@gmail.com>

	* tools/gitlog2version.sh: simplify use of printf (variable width
	  support is not ubiquitous) [#3055]
	* docs/nut-versioning.adoc: more fix to asciidoc markup
	* tools/gitlog2version.sh: filter_extra_width(): fix formatting
	  string for printf() [#3055]  busybox sh printf is strict enough to
	  care about the dot
	* tests/nut-driver-enumerator-test.sh: fix running the test suite
	  itself by ksh [#3055]  By default, `VAR=VAL cmd` sets `VAR=VAL` in
	  the current shell and does not inherit it into `cmd` (nor reset it
	  after the call).
	* tools/gitlog2version.sh: avoid substituting backslash-N via SED
	  [#3055, #3099]
	* tools/gitlog2version.sh: avoid using alternation in SED [#3055,
	  #3099]
	* scripts/upsdrvsvcctl/nut-driver-enumerator.sh.in: substitute @SED@
	  to hopefully have the version with alternation support [#3099]
	* docs/nut-versioning.adoc: list example values in tables always as
	  bullet-points so monospace is honoured by asciidoc
	* docs/nut-versioning.adoc: revise asciidoc markup (broken in the
	  table context)
	* docs/nut-versioning.adoc: note that we MAY sometime return to the
	  more idiomatic adherence to SEMVER standard and/or even/odd
	  numbering to maintain release and development branches
	* NEWS.adoc: document changes of gitlog2version.sh and tests for it
	  [#3055]
	* tools/gitlog2version.sh, tests/nut-driver-enumerator-test.sh: add a
	  fallback mode for NUT_VERSION_DEFAULT=X.Y.Z(.W)+gHASH (missing the
	  commit count) [#3055]
	* tools/gitlog2version.sh: fix escaping of doublequote missed earlier
	  [#3196]
	* docs/nut-versioning.adoc, docs/nut.dict, tools/gitlog2version.sh:
	  tools/gitlog2version.sh: getver_default(): parse non-RC
	  NUT_VERSION_FORCED values in legacy mode [#3055]
	* tests/nut-driver-enumerator-test.sh: extend with some tests for
	  tools/gitlog2version.sh [#3055]  Overall, we want to make sure the
	  script works across different shell interpreters and toolkits, and
	  that a NUT_VERSION_FORCED saved for a dist tarball would be
	  consistently treated by the non-git mode as well.
	* tests/nut-driver-enumerator-test.sh: add a FAILFAST=true mode
	  support [#3055]
	* tools/gitlog2version.sh: fix RC version comparison in legacy mode
	* tools/gitlog2version.sh, docs/nut-versioning.adoc: introduce
	  NUT_VERSION_QUERY=VER5x etc. to simplify alphanumeric comparisons
	  of different NUT releases [#3055]
	* tools/gitlog2version.sh: only read VERSION_FORCED(_SEMVER) file(s)
	  if respective envvars were not passed in env [#3055]
	* tools/gitlog2version.sh: update comments

2025-12-09  Tormod Volden <debian.tormod@gmail.com>

	* drivers/usb-common.c: usb-common.c: Fix truncation in
	  nut_usb_get_string()  References #3201

2025-12-09  Jim Klimov <jimklimov+nut@gmail.com>

	* drivers/usb-common.c: nut_usb_get_string(): combine the fix for
	  "buflen vs ret/2" with log warning from issue discussion [#3201,
	  #3211]  Proposed-by: Tormod Volden <debian.tormod@gmail.com>
	* NEWS.adoc: document the fix for nut_usb_get_string() [#3211]

2025-12-07  Jim Klimov <jimklimov+nut@gmail.com>

	* Makefile.am, include/Makefile.am: introduce NUT_VERSION_H_GENERATED
	  to pass run-time skip of active include/nut_version.h regeneration
	  [#3039]
	* NEWS.adoc, drivers/libhid.c, drivers/usb-common.c: NEWS.adoc,
	  drivers/libhid.c::HIDGetIndexString(),
	  drivers/usb-common.c::nut_usb_get_string(): trace the bytes going
	  around [#3201, #2604]
	* drivers/libhid.c: improve debugability of HIDDumpTree()  Make it
	  easier to see in debug log where processing of an entry starts

2025-12-02  Jim Klimov <jimklimov+nut@gmail.com>

	* .github/workflows/01-make-dist.yml: fix dist/doc tarballs of PRs
	  being made for target branch in fact
	* docs/man/meanwell_ntu.txt: minor style and phrasing changes [#3206]
	* drivers/meanwell_ntu.c: adjust indentations etc. with NUT style
	  guide [#3206]
	* docs/man/meanwell_ntu.txt: link to vendor doc file, it is very good
	  [#3206]
	* docs/man/meanwell_ntu.txt, drivers/meanwell_ntu.c: suggest and
	  disregard similarity with Megatec Qx protocol [#3206]
	* docs/man/meanwell_ntu.txt: fix dangling white-space chars [#3206]
	* docs/man/meanwell_ntu.txt: fix UTF char in ASCII text [#3206]

2025-11-30  jhite1234 <jhite@bebuggin.com>

	* docs/man/meanwell_ntu.txt: spelling
	* docs/man/meanwell_ntu.txt: NUT style formatting and linkman useage
	* drivers/meanwell_ntu.c: more CI fixes for OmniOS and OpenIndiana
	* drivers/meanwell_ntu.c: small updates for CI fixes

2025-11-30  Jim Klimov <jimklimov+nut@gmail.com>

	* drivers/meanwell_ntu.c: make DRIVER_VERSION double-digit [#3206]
	* NEWS.adoc: introduced meanwell_ntu driver [#3206]

2025-11-29  jhite1234 <jhite@bebuggin.com>

	* docs/nut.dict: dictionary update
	* drivers/meanwell_ntu.c: fixes for CI build checks
	* drivers/meanwell_ntu.c: meanwell_ntu: drop termios.h include
	* data/driver.list.in: Add Mean Well NTU Series entry to
	  driver.list.in
	* drivers/meanwell_ntu.c: meanwell_ntu: use experimental.* vars and
	  standard ups.mode
	* docs/man/Makefile.am, drivers/Makefile.am: Add Mean Well NTU
	  inverter/UPS driver
	* docs/man/meanwell_ntu.txt, drivers/meanwell_ntu.c: Add Mean Well
	  NTU inverter/UPS driver

2025-11-29  Jim Klimov <jimklimov+nut@gmail.com>

	* docs/config-prereqs.txt: refer also to "Building NUT for in-place
	  upgrades or non-disruptive tests" from "Prerequisites for building
	  NUT on different OSes" as the two chapters are closely coupled
	* docs/config-prereqs.txt: revise instructions for (now older) Debian
	  12

2025-11-24  Jim Klimov <jimklimov+nut@gmail.com>

	* NEWS.adoc: update about fixed back/double quoted shell scripting
	  nuances [#3196]
	* Makefile.am, docs/Makefile.am, docs/man/Makefile.am,
	  scripts/python/Makefile.am, scripts/python/module/Makefile.am,
	  tests/Makefile.am, tools/Makefile.am: */Makefile.am: revise shell
	  script syntax with backticks and double-quotes; single-quote Make
	  variable expansions into shell [#3196]
	* docs/docinfo.xml.sh.in: revise shell script syntax with backticks
	  and double-quotes [#3196]
	* docs/ci-farm-lxc-setup.txt: revise shell script syntax with
	  backticks and double-quotes [#3196]
	* tools/nut-ddl-dump.sh: revise shell script syntax with backticks
	  and double-quotes [#3196]
	* tools/nut-dumpdiff.sh: revise shell script syntax with backticks
	  and double-quotes [#3196]
	* tools/gitlog2version.sh: revise shell script syntax with backticks
	  and double-quotes [#3196]
	* tools/driver-list-format.sh: revise shell script syntax with
	  backticks and double-quotes [#3196]
	* scripts/valgrind/valgrind.sh.in: revise shell script syntax with
	  backticks and double-quotes [#3196]
	* scripts/upsdrvsvcctl/upsdrvsvcctl.in: revise shell script syntax
	  with backticks and double-quotes [#3196]
	* scripts/upsdrvsvcctl/nut-driver-enumerator.sh.in: revise shell
	  script syntax with backticks and double-quotes [#3196]
	* scripts/subdriver/gen-usbhid-subdriver.sh: revise shell script
	  syntax with backticks and double-quotes [#3196]
	* scripts/subdriver/gen-snmp-subdriver.sh: revise shell script syntax
	  with backticks and double-quotes [#3196]
	* scripts/python/app/NUT-Monitor: revise shell script syntax with
	  backticks and double-quotes [#3196]
	* scripts/obs/nut.spec: revise packaging and init shell script syntax
	  with backticks and double-quotes [#3196]
	* scripts/installer/aix/aix_init, scripts/installer/common/init,
	  scripts/installer/common/ipp-event.sh,
	  scripts/installer/common/ipp-host-shutdown.sample,
	  scripts/installer/common/ipp-os-shutdown,
	  scripts/installer/common/ipp-shutdown-daemon.sh,
	  scripts/installer/common/ipp-status,
	  scripts/installer/common/ipp-wrapper,
	  scripts/installer/common/shutdown, scripts/installer/install.sh,
	  scripts/installer/uninstall-ipp: scripts/installer/*: revise
	  packaging and init shell script syntax with backticks and
	  double-quotes [#3196]
	* scripts/Aix/nut.init.in, scripts/Solaris/postinstall.in,
	  scripts/Solaris/preinstall.in, scripts/Solaris/preremove.in,
	  scripts/Solaris/reset-ups-usb-solaris.sh.sample:
	  scripts/{Aix,Solaris}: revise packaging and init shell script
	  syntax with backticks and double-quotes [#3196]
	* scripts/fuse/execfuse-nut/getattr,
	  scripts/fuse/execfuse-nut/read_file,
	  scripts/fuse/execfuse-nut/readdir: scripts/fuse/*: revise shell
	  script syntax with backticks and double-quotes [#3196]
	* scripts/Windows/build-mingw-nut.sh,
	  scripts/Windows/build-mingw-prereqs.sh, scripts/Windows/dllldd.sh:
	  scripts/Windows/*.sh: revise shell script syntax with backticks and
	  double-quotes [#3196]
	* configure.ac, m4/ax_realpath.m4, m4/ax_realpath_lib.m4,
	  m4/nut_check_aspell.m4, m4/nut_check_libavahi.m4,
	  m4/nut_check_libfreeipmi.m4, m4/nut_check_libgd.m4,
	  m4/nut_check_libltdl.m4, m4/nut_check_libmodbus.m4,
	  m4/nut_check_libneon.m4, m4/nut_check_libnetsnmp.m4,
	  m4/nut_check_libnss.m4, m4/nut_check_libopenssl.m4,
	  m4/nut_check_libregex.m4, m4/nut_check_libusb.m4,
	  m4/nut_check_libwrap.m4, m4/nut_check_python.m4,
	  m4/nut_compiler_family.m4: configure.ac, m4/*.m4: revise shell
	  script syntax with backticks and double-quotes [#3196]
	* ci_build.sh: revise shell script syntax with backticks and
	  double-quotes [#3196]
	* autogen.sh: revise shell script syntax with backticks and
	  double-quotes [#3196]
	* tests/NIT/nit.sh: revise shell script syntax with backticks and
	  double-quotes [#3196]
	* tests/nut-driver-enumerator-test.sh: revise shell script syntax
	  with backticks and double-quotes [#3196]
	* tests/nut-driver-enumerator-test.sh: double-quote $0 name
	  inspection, safely for shell script syntax with backticks and
	  double-quotes [#3196]
	* tests/nut-driver-enumerator-test.sh: support passing-or-failing
	  tests (for syntax not supported by all of ksh implementations)
	  [#3196]
	* tests/nut-driver-enumerator-test.sh: report if the failure could be
	  due to unsupported or not-found shell interpreter [#3196]

2025-11-23  Jim Klimov <jimklimov+nut@gmail.com>

	* tests/nut-driver-enumerator-test.sh: see now backticks and
	  doublequotes play together in different shells [#3196]

2025-11-23  Atanas Vladimirov <vladimirov.atanas@gmail.com>

	* NEWS.adoc: Update the PR number.
	* NEWS.adoc, drivers/nutdrv_qx.c: nutdrv_qx: Hides QX_FLAG_NONUT
	  variables from syslog.  One can see them by raising the debug
	  level.  Tested on A1000

2025-11-22  Jim Klimov <jimklimov+nut@gmail.com>

	* Makefile.am: shellcheck-nde: be sure to test freshly generated
	  script text
	* scripts/upsdrvsvcctl/nut-driver-enumerator.sh.in, NEWS.adoc: revise
	  message logging in the script [#3194]

2025-11-21  Jim Klimov <jimklimov+nut@gmail.com>

	* docs/man/nut.txt: update sentence markup; expand on built-in vs
	  configurable use of user/group accounts at run-time
	* docs/common.xsl, docs/man/asciidoc.conf.in: inherit style of
	  anchorjs permalinks from the (heading) element they are in [#3185]
	* drivers/tripplite_usb.c, NEWS.adoc: bump the version and add news
	  entry for PR #3192

2025-11-20  rewsssiestedbo <48805403+rewsssiestedbo@users.noreply.github.com>

	* drivers/tripplite_usb.c: Update tripplite_usb.c to fix issue 3191
	  Use correct value (DEFAULT_UPSID) for the actual unit_id default
	  value instead of a 32-bit -1 value.   DEFAULT_UPSID is 65535, or a
	  16-bit -1 value.

2025-11-20  Jim Klimov <jimklimov+nut@gmail.com>

	* drivers/nutdrv_qx_masterguard.c: driver/nutdrv_qx_masterguard.c:
	  bump version [#3181]

2025-11-19  Jim Klimov <jimklimov+nut@gmail.com>

	* docs/Makefile.am, Makefile.am, NEWS.adoc: introduce
	  SPELLCHECK_QUICK=true toggle for interactive mode to not re-check
	  documents that passed with older nut.dict  Follow-up to #2871
	* docs/common.xsl, docs/man/asciidoc.conf.in, COPYING, NEWS.adoc,
	  docs/nut.dict: stash a copy of "AnchorJS - v5.0.0 - 2023-01-18" to
	  add permalinks to HTML sections [#3185]  One for docbook => large
	  HTML (single and chunked docs, technically also PDF but it will
	  likely ignore the JavaScript or not see the tags where it goes),
	  another for manpages via xhtml.  Closes: #3185

2025-11-17  Jim Klimov <jimklimov+nut@gmail.com>

	* docs/nut.dict: add British "ageing" for the keyword on the progress
	  in getting old [#3181]
	* docs/new-drivers.txt, docs/nut.dict: docs/new-drivers.txt: document
	  addvar, getval and testvar, and nut_usb_addvars (and planned
	  ser/modbus siblings) [#2419, #2748]  Documentation addition
	  triggered by discussion in #3181

2025-11-12  atanas-vladimirov <34871743+atanas-vladimirov@users.noreply.github.com>

	* NEWS.adoc: Update the PR number.

2025-11-12  Jim Klimov <jimklimov+nut@gmail.com>

	* NEWS.adoc: formatting and typo fixes for masterguard QX updates
	  [#3181]
	* UPGRADING.adoc: new *.html.sample templates to consider [#3180]
	* clients/upsclient.c: upscli_splitaddr(): highlight that currently a
	  "port" must be numeric
	* clients/upsc.c: return valid JSON documents also in case of error
	  [#3178]
	* clients/Makefile.am, common/Makefile.am, include/Makefile.am,
	  {common => include}/strjson.h: includes/strjson.h: keep common
	  headers in one place [#3178]
	* clients/Makefile.am: limit use of libcommonstrjson.la to upsc and
	  upsstats.cgi [#3178]
	* .github/workflows/01-make-dist.yml: shorten workflow name, move
	  details into job name [#1400]  The workflow name is a shared prefix
	  now for the job itself and for final "URL" entry that poses as a
	  GHA check result. A prefix too long hides valuable data, especially
	  in the latter case.

2025-11-12  Atanas Vladimirov <vladimirov.atanas@gmail.com>

	* NEWS.adoc, data/cmdvartab, docs/man/nutdrv_qx.txt,
	  docs/nut-names.txt, docs/nut.dict, drivers/nutdrv_qx_masterguard.c:
	  nutdrv_qx_masterguard: Adds a clear.fault.record instant command
	  Also adds two experimental variables:  - battery.ageing.factor
	  ("Battery ageing factor in promille) and -
	  battery.calibration.factor (Battery calibration factor in percent).
	  Tested on A1000 and A2000 units
	* NEWS.adoc: Update the PR number.
	* NEWS.adoc, conf/upsstats-single.html.sample,
	  conf/upsstats.html.sample: upsstats*.html.sample: Enhance model
	  detection in upsstats HTML templates.  Some devices lack
	  `ups.model`, causing the CGI to incorrectly report "Not supported".
	* clients/Makefile.am: Make sure libcommonstrjson.la dependencies
	  exist

2025-11-11  Jim Klimov <jimklimov+nut@gmail.com>

	* .github/workflows/01-make-dist.yml: Create new GH Check report via
	  shell/cURL [#1400]
	* .github/workflows/01-make-dist.yml, NEWS.adoc, docs/download.txt:
	  drop experiments with updates of GH Check reports, and noise with
	  PR/commit comments - leave just a new GH Check entry with text of
	  the URL (and link to details page with clickable URL) [#1400]
	* clients/upsmon.c, scripts/systemd/nutshutdown.in: comments to
	  clarify that POWERDOWNFLAG can happen on both NUT servers and pure
	  client machines
	* configure.ac, NEWS.adoc: align British vs Americanish English
	  spelling [#1400]
	* clients/upsstats.c: json_escape(): reduce the char value
	  range-check [#3171]  Avoid `comparison is always true due to
	  limited range of data type` warning.

2025-11-11  Atanas Vladimirov <vladimirov.atanas@gmail.com>

	* common/strjson.c, common/strjson.h: strjson.c, strjson.h: Add
	  newline at end of files
	* NEWS.adoc: Update the PR number.
	* Makefile.am, NEWS.adoc, clients/Makefile.am, clients/upsc.c,
	  clients/upsstats.c, common/Makefile.am, common/strjson.c,
	  common/strjson.h, docs/man/upsc.txt: upsc: Add -j option for JSON
	  output  This commit introduces a new `-j` command-line flag to
	  `upsc` to provide machine-readable JSON output for all operating
	  modes.  To support this and share logic with `upsstats`, the JSON
	  string escaping logic has been refactored into a new, reusable
	  module:  - A new helper function `json_print_esc()` now lives in
	  `common/strjson.c` - `common/Makefile.am` builds this as a new
	  `libcommonstrjson.la` library. - `clients/Makefile.am` links both
	  `upsc` and `upsstats` against this new library and adds the
	  `common/` include path. - `upsstats.c` is updated to use the shared
	  `json_print_esc()` function.

2025-11-11  Andrew J. Kroll <xxxajk@gmail.com>

	* scripts/python/app/NUT-Monitor-py2gtk2.in,
	  scripts/python/app/NUT-Monitor-py3qt5.in: fix notification spamming

2025-11-10  Jim Klimov <jimklimov+nut@gmail.com>

	* .github/workflows/01-make-dist.yml: PoC with
	  LouisBrunner/checks-action to change the action/check entry itself
	  (as alternative to PR/commit comments) [#1400]
	* clients/upsstats.c: printf("%x") requires an UNSIGNED int argument
	  [#3171]
	* UPGRADING.adoc: `configure` script would now probe the OS for more
	  user and group account names [#3173]
	* configure.ac, NEWS.adoc: warn if `nobody` or `nogroup` end up being
	  used for a build [#3173]
	* configure.ac, NEWS.adoc, docs/configure.txt: support more default
	  user/group account names that may be defined in the OS [#3173]
	* NEWS.adoc: rephrase the upsstats+JSON entry [#3171]

2025-11-10  Atanas Vladimirov <vladimirov.atanas@gmail.com>

	* docs/man/upsstats.cgi.txt: Use `devices` instead of upses.

2025-11-09  Jim Klimov <jimklimov+nut@gmail.com>

	* server/sstate.c, NEWS.adoc: wait a second before declaring UPS data
	  stale [#661]
	* docs/download.txt: align British vs Americanish English spelling
	  [#1400]
	* .github/workflows/01-make-dist.yml: drop MAKE_DIST_TOKEN [#1400]
	* .github/workflows/01-make-dist.yml: drop commented-away permissions
	  [#1400]
	* docs/download.txt: revise notes on snapshots (not only GitHub now)
	  and build types (git/dist) [#1400]

2025-11-09  Atanas Vladimirov <vladimirov.atanas@gmail.com>

	* NEWS.adoc, clients/upsstats.c, docs/man/upsstats.cgi.txt: upsstats:
	  Add JSON output mode via ?json parameter  When the ?json (or &json)
	  parameter is added to the URL, upsstats.cgi will now bypass all
	  HTML template processing.  Instead, it returns a "Content-Type:
	  application/json" response containing the full data for the
	  requested UPS(es), including all variables, raw status, and parsed
	  status.  This provides a modern API for external monitoring tools
	  without affecting the existing HTML template functionality.

2025-11-08  Jim Klimov <jimklimov+nut@gmail.com>

	* docs/download.txt: move notes about building from source upwards
	  [#1400]
	* docs/download.txt: add intro for development sources chapter
	  [#1400]
	* NEWS.adoc: update about links to automatic dist tarballs [#1400]
	* .github/workflows/01-make-dist.yml: drop superfluous
	  comment-posting action [#1400]
	* .github/workflows/01-make-dist.yml: update comments [#1400]
	* .github/workflows/01-make-dist.yml: extend to contents:write
	  permission for commit comments [#1400]
	* .github/workflows/01-make-dist.yml: add links for running a custom
	  container inside GHA worker [#1400]
	* .github/workflows/01-make-dist.yml: expand criteria for comment
	  posting [#1400]
	* .github/workflows/01-make-dist.yml: debug-print inputs for
	  substitution [#1400]
	* .github/workflows/01-make-dist.yml: try to blend in the
	  github.event.pull_request.number to subst-github-ref-name [#1400]
	* .github/workflows/01-make-dist.yml: do not fail if we can not post
	  the commit comment [#1400]
	* .github/workflows/01-make-dist.yml: rephrase initial sticky note
	  for the PR [#1400]
	* .github/workflows/01-make-dist.yml: attempt to post a comment for
	  commit itself [#1400]
	* .github/workflows/01-make-dist.yml: uncomment attempts to post
	  comments with PR context only [#1400]
	* .github/workflows/01-make-dist.yml: drop the list of wider
	  permissions we experimented with [#1400]
	* .github/workflows/01-make-dist.yml: comment away one of the ways to
	  post a sticky comment; both seem to work well [#1400]
	* .github/workflows/01-make-dist.yml: try to report the more correct
	  Git SHA with the tarball link [#1400]
	* NEWS.adoc: fix asciidoc markup for upsset improvement [#3164]
	* .github/workflows/01-make-dist.yml: subst-github-ref-name prefer
	  github.head_ref (if set) since github.ref_name for
	  pull_request_target reports the target branch [#1400]
	* drivers/nhs_ser.c, NEWS.adoc: limit the use of baud rates by what
	  the OS does declare [#3163]

2025-11-08  Atanas Vladimirov <vladimirov.atanas@gmail.com>

	* NEWS.adoc, clients/upsset.c: upsset.c: Recognize RANGE NUMBER and
	  NUMBER types.  Tested on Masterguard A1000 and A2000 units.

2025-11-07  Jim Klimov <jimklimov+nut@gmail.com>

	* docs/qa-guide.adoc: expand chapter on OBS [#1209]
	* .github/workflows/01-make-dist.yml: fix message [#1400]
	* .github/workflows/01-make-dist.yml: introduce "make
	  distcheck-completeness" to verify that our dist archives exactly
	  reproduce themselves [#2829]
	* Makefile.am, NEWS.adoc: introduce "make distcheck-completeness" to
	  verify that our dist archives exactly reproduce themselves [#2829]
	* .github/workflows/01-make-dist.yml: refer to links from GH checks
	  entry title [#1400]  We have hit some snags about changing the
	  artifact history or adding PR comments, at least before initially
	  merging the first PR that adds this workflow (so
	  `pull_request_target` has something to run from the master branch
	  at all). Even if this turns out to be the end of the road, at least
	  this way we can let people know where to find those generated
	  tarballs :)
	* .github/workflows/01-make-dist.yml: try pull_request_target again,
	  to use context of the main repo for actions [#1400]
	* .github/workflows/01-make-dist.yml: Revert
	  ".github/workflows/01-make-dist.yml: add permissions for delete
	  artifact [#1400]"  This reverts commit
	  621e0e71aed71da21521ecf7784ece4b892720d0.
	* .github/workflows/01-make-dist.yml: try using a custom
	  MAKE_DIST_TOKEN [#1400]
	* .github/workflows/01-make-dist.yml: add permissions for delete
	  artifact [#1400]
	* scripts/obs/debian.control: Revert "scripts/obs/debian.control:
	  dumb down the libmodbus requirement [#1209]"  This reverts commit
	  21e5d7a79d8e3432c6382252c667eae3fb9e6223. Dropped NUT CI OBS
	  support for platforms it still refuses to build instead.
	* scripts/obs/debian.control: Revert "scripts/obs/debian.control:
	  dumb down the libi2c requirement [#1209]"  This reverts commit
	  313e13e8fcae4f59d74ed20da7709d286dee14b7. Dropped NUT CI OBS
	  support for platforms it still refuses to build instead.
	* scripts/obs/nut.spec: Revert "scripts/obs/nut.spec: try to
	  constrain udev to non-RHEL [#1209]"  This reverts commit
	  2b1a596f364ab172d80bacdba17616c942503077. Dropped NUT CI OBS
	  support for platforms it still refuses to build instead.
	* scripts/obs/nut.spec: try to constrain udev to non-RHEL [#1209]
	* scripts/obs/debian.control: dumb down the libi2c requirement
	  [#1209]
	* scripts/obs/debian.control: dumb down the libmodbus requirement
	  [#1209]  Do not constrain the versions so it can build on Debian 9
	  and 10; Note that for USB support we would need our fork anyway
	  (until it gets merged to upstream, which may take years at their
	  pace).
	* scripts/obs/nut.spec: more constraints about what is available in
	  what distro versions [#1209]
	* scripts/obs/nut.spec: libltdl-devel (nut-scanner and consumers) and
	  libgd-devel (cgi) are not ubiquitous [#1209]
	* scripts/obs/nut.spec: fix "distro_version" numbers (some have extra
	  digits for sub-releases) [#1209]
	* scripts/obs/_config: no ccache in RHEL_7 it seems [#1209]
	* scripts/obs/_config: CentOS 10 depends on "either of"
	  util-linux(-core), so we must pick one [#1209]
	* scripts/obs/nut.spec: define NUTPKG_WITH_<DEPNAME> when we requre
	  the deps or not, based on distro/release [#1209]
	* scripts/obs/nut.spec: turn package availability/requirement for
	  NUTPKG_WITH_* upside down [#1209]
	* .github/workflows/01-make-dist.yml: comment about
	  substitute-string-action [#1400]
	* .github/workflows/01-make-dist.yml: try "issues: write" into
	  permissions [#1400]
	* .github/workflows/01-make-dist.yml: try more ways to post a PR
	  comment [#1400]

2025-11-06  Jim Klimov <jimklimov+nut@gmail.com>

	* .github/workflows/01-make-dist.yml: try to use GITHUB_TOKEN when
	  posting a PR comment - v2 [#1400]
	* .github/workflows/01-make-dist.yml: define permissions for
	  auto-generated GITHUB_TOKEN differently [#1400]
	* .github/workflows/01-make-dist.yml: no fatal problem if we can not
	  delete an older tarball [#1400]
	* .github/workflows/01-make-dist.yml: try to use GITHUB_TOKEN when
	  posting a PR comment [#1400]
	* .github/workflows/01-make-dist.yml: do not immediately fail the CI
	  job if we can not post actions-comment-pull-request (e.g. in a NUT
	  fork build) [#1400]
	* .github/workflows/01-make-dist.yml: after all use pull_request not
	  pull_request_target so there is an attached PR to comment into
	  [#1400]
	* .github/workflows/01-make-dist.yml: allow to fire on more branches
	  [#1400]
	* .github/workflows/01-make-dist.yml: try to fix permissions for PR
	  commenter [#1400]
	* .github/workflows/01-make-dist.yml: fix step IDs [#1400]
	* .github/workflows/01-make-dist.yml: "Try to get more Git metadata"
	  only if "git describe" is initially useless [#1400]
	* .github/workflows/01-make-dist.yml: tell actions/checkout to fetch
	  more git history right away [#1400]
	* .github/workflows/01-make-dist.yml: "Try to get more Git metadata"
	  earlier so we can debug it better [#1400]
	* .github/workflows/01-make-dist.yml: typo fix (renamed
	  subst-github-ref-name step) [#1400]
	* .github/workflows/01-make-dist.yml: flip TEST_REF for branches and
	  commits (prNNNN/merge) alike [#1400]
	* .github/workflows/01-make-dist.yml: different var for built SHA
	  [#1400]
	* .github/workflows/01-make-dist.yml: more trickery to make
	  git-describe work [#1400]
	* .github/workflows/01-make-dist.yml: debug subst-github-ref-name
	  [#1400]
	* .github/workflows/01-make-dist.yml: try to post a link to tarballs
	  on build page - v2 (message/comment in PRs) [#1400]
	* .github/workflows/01-make-dist.yml: there is no env.GITHUB_HEAD_REF
	  [#1400]
	* .github/workflows/01-make-dist.yml: act on tags too [#1400]
	* .github/workflows/01-make-dist.yml: pull whole repo if `git
	  describe` fails [#1400]
	* .github/workflows/01-make-dist.yml: try to post a link to tarballs
	  on build page [#1400]
	* .github/workflows/01-make-dist.yml: fix GHA scripting syntax;
	  update comments [#1400]
	* .github/workflows/01-make-dist.yml: more debugging of git workspace
	  [#1400]
	* .github/workflows/01-make-dist.yml: do not `make dist-sig` (via
	  `dist-files`) in the CI job [#1400]
	* .github/workflows/01-make-dist.yml, NEWS.adoc: introduce a CI job
	  to maintain `dist` tarballs of recent iterations [#1400, #2829]
	* .github/workflows/{codeql.yml => 05-codeql.yml},
	  .github/workflows/{PyNUTClient.yml => 08-PyNUTClient.yml}:
	  .github/workflows: re-number the jobs to hopefully impact
	  processing order on GHA farm [#1400]
	* Makefile.am, NEWS.adoc, docs/maintainer-guide.txt: introduce `make
	  dist-docs` [#1400]
	* Makefile.am: dist-hook: report if DISTing VERSION_FORCED* files
	* .github/workflows/codeql.yml: fix typo for ccache key name

2025-11-05  Jim Klimov <jimklimov+nut@gmail.com>

	* common/common.c: do not track
	  upsnotify_reported_extend_timeout_systemd, we do not limit by it
	  anyway [#3003]  ...and in the few cases this systemd notification
	  is used, we do want to see it all
	* common/common.c, NEWS.adoc: do not comment on "watchdog situation
	  logged once" if we do not actually log it before (visibly) [#3157]

2025-11-03  Jim Klimov <jimklimov+nut@gmail.com>

	* NEWS.adoc, drivers/dstate.c, drivers/dstate.h, drivers/main.c,
	  drivers/main.h: drivers/main.{c,h}, drivers/dstate.{c,h},
	  NEWS.adoc: track CHRG/DISCHRG reality in all drivers, verify
	  against what the device/protocol says [#3146]
	* drivers/usbhid-ups.c: only consider current_charge > 0 to rule out
	  a conversion error [#3156]
	* drivers/usbhid-ups.c: fix indentations
	* NEWS.adoc, common/state.c, docs/nut.dict, include/state.h:
	  common/state.c, include/state.h, NEWS.adoc: refactor with
	  difftime_st_tree_timespec() [#3156]
	* NEWS.adoc, drivers/dstate.c, drivers/dstate.h, drivers/main.c,
	  drivers/main.h: drivers/main.{c,h}, drivers/dstate.{c,h},
	  NEWS.adoc: track previous_battery_charge_value and
	  previous_battery_charge_timestamp [#3146]
	* clients/upsmon.c, include/common.h: tone down definition of
	  "infinity" by a notch [#3003]

2025-10-31  Jim Klimov <jimklimov+nut@gmail.com>

	* NEWS.adoc, drivers/usbhid-ups.c, drivers/usbhid-ups.h:
	  drivers/usbhid-ups.{c,h}, NEWS.adoc: consider FULLYCHARGED and
	  NOTFULLYCHARGED separately, because many subdrivers report neither;
	  fall back to checking battery.charge=?100 to set CHRG flag [#3146]

2025-10-30  NOV <149171388+NohanV@users.noreply.github.com>

	* drivers/cyberpower-mib.c: Add SNMP info for ups.realpower

2025-10-30  Jim Klimov <jimklimov+nut@gmail.com>

	* drivers/libusb0.c, drivers/libusb1.c: drivers/libusb{0,1}.c:
	  nut_libusb_open(): drop commented-away "goto next_device" now that
	  we have a loop and "continue" to try another rdlen [#3136]
	* drivers/cyberpower-mib.c: bump CYBERPOWER_MIB_VERSION for added
	  ups.realpower [#3154]
	* configure.ac, scripts/systemd/nut-monitor.service.in: introduce
	  SYSTEMD_DAEMON_TIMEOUT_STOP_UPSMON substitution [#3003]
	* clients/upsmon.c: use upsnotify(NOTIFY_STATE_EXTEND_TIMEOUT, ...)
	  to protect from systemd or similar framework killing us by timeout
	  [#3033]
	* common/common.c, include/common.h, NEWS.adoc: Introduced
	  `NOTIFY_STATE_EXTEND_TIMEOUT` option and relevant variables [#3003]
	* common/common.c: upsnotify(): comment since which systemd versions
	  different features are supported

2025-10-29  Atanas Vladimirov <vladimirov.atanas@gmail.com>

	* docs/man/nutdrv_qx.txt: Fix the formatting of VOLTRONIC-AXPERT
	  UNITS

2025-10-27  Jim Klimov <jimklimov+nut@gmail.com>

	* clients/upsmon.c, NEWS.adoc: doshutdown() etc: tickle (systemd)
	  watchdog instead of long quietness when shutting down [#3003]
	* NEWS.adoc, drivers/libusb0.c, drivers/libusb1.c:
	  drivers/libusb{0,1}.c, NEWS.adoc: if the tried "rdlen" did not
	  succeed, fall back to the other value we had in mind [#3136]  In
	  libusb1.c also fix printout of rdlen variables from %d to %PRIi32

2025-10-26  Jim Klimov <jimklimov+nut@gmail.com>

	* .obs/workflows.yml: retarget to "home:networkupstools:*" OBS
	  project for now, and expand workflows for PRs, master iterations
	  and tag releases [#1209]
	* .obs/workflows.yml: extend workflow definition [#1209]  Revised
	  docs at
	  https://openbuildservice.org/help/manuals/obs-user-guide/cha-obs-scm-ci-workflow-integration#sec.obs.obs_scm_ci_workflow_integration.setup.token_authentication.how_to_authenticate_scm_with_obs
	* .obs/workflows.yml: Introduce an OBS workflow [#1209]  Follow
	  https://openbuildservice.org/2021/05/31/scm-integration/
	  instructions

2025-10-25  Jim Klimov <jimklimov+nut@gmail.com>

	* scripts/obs/Makefile.am: fix EXTRA_DIST list

2025-10-24  Jim Klimov <jimklimov+nut@gmail.com>

	* NEWS.adoc, docs/nut.dict: NEWS.adoc: announce upstreamed OBS
	  packaging recipes [#1209, #1316, #3144]
	* tests/NIT/nit.sh: detect PYTHON from caller-provided PYTHON_DEFAULT
	  as fallback interpreter [#3130]
	* configure.ac: on MacOS, also pass PYTHON_DEFAULT via /usr/bin/env
	  [#3130]
	* tests/NIT/nit.sh: detect PYTHON from PY_SHEBANG (or use a
	  caller-provided one) as explicit interpreter [#3130]  CircleCI does
	  see the correct shebang and the script as executable, but
	  apparently tries to call it as a shell script and fails. Maybe
	  /Users/distiller/.pyenv/shims/python3.13 is broken though?.. Or we
	  hit https://github.com/NixOS/nixpkgs/issues/65351/ ?
	* .circleci/config.yml: set DEBUG_NIT=true to troubleshoot python
	  test client runs [#3130]
	* tests/NIT/nit.sh: shouldDebug(): extend with a variable that can be
	  set specifically for this script
	* .circleci/config.yml: opt out of blobless checkouts
	* .circleci/config.yml: update from XCode-13.4.1 to XCode-16.4  Older
	  releases are deprecated and to be removed in November: *
	  https://circleci.com/changelog/deprecation-of-eol-xcode-versions/ *
	  https://circleci.com/changelog/images/#filtered
	* tests/NIT/nit.sh: revise isTestablePython() possible outcomes
	  [#3130]
	* .github/workflows/PyNUTClient.yml: update to use PYTHON_DEFAULT
	  varname now expected by scripts/python/module/Makefile.am [#3130]
	* NEWS.adoc, UPGRADING.adoc: warn about renamed data/html{,cgi}
	  source dir [#3049]
	* lib/.gitignore, lib/libupsclient-config.in:
	  lib//libupsclient-config.in, lib/.gitignore: README=>README.adoc
	  renamed a while ago
	* NEWS.adoc, UPGRADING.adoc: warn about renamed data/html{,cgi}
	  source dir [#3049]
	* scripts/obs/debian.nut-cgi.docs: align with renaming of data/html
	  => data/htmlcgi

2025-10-23  Jim Klimov <jimklimov+nut@gmail.com>

	* NEWS.adoc, drivers/apc-hid.c, drivers/apc_modbus.c,
	  drivers/arduino-hid.c, drivers/bcmxcp_usb.c, drivers/blazer_usb.c,
	  drivers/cps-hid.c, drivers/delta_ups-hid.c, drivers/legrand-hid.c,
	  drivers/liebert-hid.c, drivers/mge-hid.c,
	  drivers/nutdrv_atcl_usb.c, drivers/richcomm_usb.c: drivers/*.c,
	  NEWS.adoc: revised use of NUT macros for USB Vendor IDs  [#3139]
	* drivers/usb-common.h: update comment about USB_DEVICE() macro
	* drivers/nutdrv_qx.c: use symbolic names for USB Vendor IDs [#3139]
	* data/driver.list.in: add Ippon Innova TAE 1000 [#3137, #3139]
	* NEWS.adoc, UPGRADING.adoc, drivers/nutdrv_qx.c:
	  drivers/nutdrv_qx.c: add USB ID based detection for innovatae
	  protocol [#3137, #3139]
	* NEWS.adoc, UPGRADING.adoc, docs/nut.dict: list new
	  nutdrv_qx_innovatae protocol support [#issue 3137, PR #3139]

2025-10-22  Jim Klimov <jimklimov+nut@gmail.com>

	* docs/nut.dict: update for NEWS of PR #3141
	* m4/nut_check_libregex.m4, NEWS.adoc: Added configure script options
	  for libregex tuning [#3140, #3049]
	* NEWS.adoc, docs/nut.dict: update about logging the source of
	  CFLAGS/LIBS/LDFLAGS values [#3049, #3140]
	* m4/nut_check_libsystemd.m4: track and report
	  depCFLAGS_SOURCE/depLIBS_SOURCE consistently [#3049]
	* m4/nut_check_libpowerman.m4: track and report
	  depCFLAGS_SOURCE/depLIBS_SOURCE consistently [#3049]
	* m4/nut_check_libopenssl.m4: track and report
	  depCFLAGS_SOURCE/depLIBS_SOURCE consistently [#3049]
	* m4/nut_check_libnss.m4: track and report
	  depCFLAGS_SOURCE/depLIBS_SOURCE consistently [#3049]
	* m4/nut_check_libgpiod.m4: fix the var names we "unset" in the end
	  [#3049]
	* m4/nut_check_libneon.m4: track and report
	  depCFLAGS_SOURCE/depLIBS_SOURCE consistently [#3049]
	* m4/nut_check_libmodbus.m4: track and report
	  depCFLAGS_SOURCE/depLIBS_SOURCE consistently [#3049]
	* m4/nut_check_libnetsnmp.m4: track and report
	  depCFLAGS_SOURCE/depLIBS_SOURCE consistently [#3049]
	* m4/nut_check_libltdl.m4: track and report
	  depCFLAGS_SOURCE/depLIBS_SOURCE consistently [#3049]
	* m4/nut_check_libgpiod.m4: track and report
	  depCFLAGS_SOURCE/depLIBS_SOURCE consistently [#3049]
	* m4/nut_check_libavahi.m4: track and report
	  depCFLAGS_SOURCE/depLIBS_SOURCE consistently [#3049]
	* m4/nut_check_libusb.m4: track and report
	  depCFLAGS_SOURCE/depLIBS_SOURCE consistently [#3049]
	* m4/nut_check_libgd.m4: track and report
	  depCFLAGS_SOURCE/depLIBS_SOURCE consistently [#3049]
	* m4/nut_check_libfreeipmi.m4: track and report
	  depCFLAGS_SOURCE/depLIBS_SOURCE consistently [#3049]
	* m4/nut_check_libfreeipmi.m4: comment a reminder about numerous libs
	  that we can resolve here (with one being correct) [#3049]
	* m4/nut_arg_with.m4: revise brackets to pass arguments with commas
	  in the value correctly [#3049]
	* m4/nut_arg_with.m4: Revert "m4/nut_arg_with.m4: simplify with use
	  of m4_default() [#3049]"  This reverts commit
	  9eba1eb885e9d29f3d8ecef7637010899661cb54, seems autoconf (or
	  myself) gets lost in the maze of m4_default with or without
	  brackets, especially when arguments with commas are involved.

2025-10-22  Atanas Vladimirov <vladimirov.atanas@gmail.com>

	* NEWS.adoc, drivers/nutdrv_qx_masterguard.c: nutdrv_qx_masterguard:
	  Bump MASTERGUARD_VERSION to 0.04  And updates the NEWS.adoc in
	  regards of PR [#3141]  Tested on Masterguard A1000 and A2000 units.
	* drivers/nutdrv_qx_masterguard.c: nutdrv_qx_masterguard: Makes the
	  deep battery test command works  The test.battery.start.deep (TUD)
	  command requires the slave address as a parameter to function.
	  Following the fix to masterguard_add_slaveaddr in the previous
	  commit, this command can now be properly enabled.  Tested on
	  Masterguard A1000 and A2000 units.

2025-10-21  Viktor Drobot <linux776@gmail.com>

	* drivers/nutdrv_qx_innovatae.c: More info about firmware version in
	  bogus  reply

2025-10-21  Jim Klimov <jimklimov+nut@gmail.com>

	* NEWS.adoc: update notes for #3049 and #3140
	* ci_build.sh: check more ARCH and BITS sources for illumos/Solaris
	  pkgconfig path guessing
	* m4/nut_check_libnetsnmp.m4: fix new --with-net-snmp-config=auto
	  mode [#3049]
	* NEWS.adoc: update entry with PR number
	* m4/nut_arg_with.m4: NUT_ARG_WITH_LIBOPTS_CONFIGSCRIPT_IMPLEM: drop
	  extra brackets [#3049]
	* m4/nut_check_libusb.m4: refactor to word the help and determine
	  options via NUT_ARG_WITH_LIBOPTS* [#3049]
	* m4/nut_check_libnetsnmp.m4, m4/nut_check_libsystemd.m4:
	  m4/nut_check_libnetsnmp.m4: refactor to word the help and determine
	  options via NUT_ARG_WITH_LIBOPTS* [#3049]
	* m4/nut_check_libpowerman.m4: refactor to word the help and
	  determine options via NUT_ARG_WITH_LIBOPTS* [#3049]
	* m4/nut_check_libopenssl.m4: refactor to word the help and determine
	  options via NUT_ARG_WITH_LIBOPTS* [#3049]
	* m4/nut_check_pkgconfig.m4: refactor NUT_ARG_* help and
	  determination of --with-pkg-config [#3049]
	* m4/nut_check_libnss.m4: refactor to word the help and determine
	  options via NUT_ARG_WITH_LIBOPTS* [#3049]
	* m4/nut_check_libneon.m4: refactor to word the help and determine
	  options via NUT_ARG_WITH_LIBOPTS* [#3049]
	* m4/nut_check_libmodbus.m4: refactor to word the help and determine
	  options via NUT_ARG_WITH_LIBOPTS* [#3049]
	* m4/nut_check_libltdl.m4: refactor to word the help and determine
	  options via NUT_ARG_WITH_LIBOPTS* [#3049]
	* configure.ac, NEWS.adoc: there was never a
	  scripts/devd/nut-usbups.rules.in (probably a copy-paste typo in NUT
	  v2.8.0)
	* configure.ac, scripts/devd/README.adoc: revise help and doc
	  regarding FreeBSD devd snippet file installation
	* m4/nut_arg_with.m4: simplify with use of m4_default() [#3049]
	* m4/nut_check_libgpiod.m4: refactor to word the help and determine
	  options via NUT_ARG_WITH_LIBOPTS* [#3049]
	* m4/nut_arg_with.m4: extend NUT_ARG_WITH_LIBOPTS* with optional
	  alternate spelling of project name for help text [#3049]
	* configure.ac: rephrase help for (alt)pidpath [#3049]
	* m4/nut_check_libgd.m4: refactor to word the help and determine
	  options via NUT_ARG_WITH_LIBOPTS* [#3049]
	* m4/nut_arg_with.m4: add NUT_ARG_WITH_LIBOPTS_LIBS_AS_LDFLAGS and
	  NUT_ARG_WITH_LIBOPTS_LDFLAGS for cosmetic completeness [#3049]
	* m4/nut_arg_with.m4: rearrange NUT_ARG_WITH_LIBOPTS_INCLUDES and
	  NUT_ARG_WITH_LIBOPTS_LIBS using renamed
	  NUT_ARG_WITH_LIBOPTS_INVALID_YESNO; use simpler
	  NUT_ARG_WITH_LIBOPTS for new NUT_ARG_WITH_LIBOPTS_CONFIGSCRIPT*
	  methods [#3049]
	* m4/nut_check_libfreeipmi.m4: refactor to word the help and
	  determine options via NUT_ARG_WITH_LIBOPTS* [#3049]

2025-10-21  Atanas Vladimirov <vladimirov.atanas@gmail.com>

	* drivers/nutdrv_qx_masterguard.c: nutdrv_qx_masterguard: Fix
	  masterguard_add_slaveaddr return value  The
	  masterguard_add_slaveaddr function, defined as a preprocess_command
	  handler, must return the length of the command string it has
	  processed. It was incorrectly returning 0.  This caused the main
	  qx_process function to see a 0-byte command length, resulting in a
	  send: timeout (0) debug log and a failure to send the command to
	  the UPS.  This commit fixes the function to return the correct
	  command length (which was already stored in the local variable l),
	  resolving the bug for all commands that use the ,XX slave address
	  placeholder.  Tested on Masterguard A1000 and A2000 units.

2025-10-20  Viktor Drobot <linux776@gmail.com>

	* docs/nut.dict: Forgot to add to dict
	* docs/man/nutdrv_qx.txt, docs/nutdrv_qx-subdrivers.txt,
	  drivers/Makefile.am, drivers/nutdrv_qx.c,
	  drivers/nutdrv_qx_blazer-common.c,
	  drivers/nutdrv_qx_blazer-common.h, drivers/nutdrv_qx_innovatae.c,
	  drivers/nutdrv_qx_innovatae.h: Basic Ippon Innova TAE support

2025-10-20  Jim Klimov <jimklimov+nut@gmail.com>

	* m4/nut_check_libavahi.m4: refactor to word the help and determine
	  options via NUT_ARG_WITH_LIBOPTS* [#3049]
	* m4/nut_arg_with.m4: introduce NUT_ARG_WITH_LIBOPTS* [#3049]
	* configure.ac: refactor NUT_ARG_* help and determination of
	  --with-CCACHE_NAMESPACE [#3049]
	* configure.ac: refactor NUT_ARG_* help and determination of
	  --enable-extapi-enphase [#3049]
	* configure.ac: refactor NUT_ARG_* help and determination of
	  --with-user and --with-group (reword the latter) [#3049, #3120]
	* configure.ac: refactor NUT_ARG_* help and determination of
	  --with-valgrind [#3049]
	* configure.ac: move SYSTEM_AIX and CPU_TYPE determination way up, to
	  where we detect other aspects of the build target
	* configure.ac: refactor NUT_ARG_* help and determination of udev,
	  hotplug, devd, freebsdquirksdir paths [#3049]
	* configure.ac: refactor NUT_ARG_* help and determination of
	  --with-augeas-lenses-dir [#3049]
	* configure.ac: refactor NUT_ARG_* help and determination of
	  --enable-cppunit [#3049]
	* configure.ac: refactor NUT_ARG_* help and determination of systemd
	  paths [#3049]
	* configure.ac: refactor NUT_ARG_* help and determination of
	  Solaris/illumos packaging options, fix a few logical mismatches
	  [#3049]
	* configure.ac: refactor NUT_ARG_* help and determination of
	  PKGCONFIGDIR [#3049]
	* configure.ac: refactor NUT_ARG_* help and determination of
	  --enable-strip (and actually fix a missed compiler family
	  dependency) [#3049]
	* configure.ac: refactor NUT_ARG_* help and determination of
	  --enable-force-nut-version-header (and actually fix default report
	  vs. setting) [#3049]
	* configure.ac: refactor NUT_ARG_* help and determination of
	  --with-logfacility [#3049]
	* configure.ac: refactor NUT_ARG_* help and determination of
	  --with-port [#3049]
	* configure.ac: refactor NUT_ARG_* help and determination of
	  --enable-check-NIT [#3049]
	* configure.ac: refactor NUT_ARG_* help and determination of
	  --with-doc(s) and --with-docs-changelog* tunables [#3049]
	* configure.ac: refactor NUT_ARG_* help and determination of
	  DEFAULT_MAN_* tunables [#3049]
	* configure.ac: refactor NUT_ARG_* help and determination of
	  CGIDATAPATH [#3049]

2025-10-19  Jim Klimov <jimklimov+nut@gmail.com>

	* Makefile.am, configure.ac, data/Makefile.am, data/{html =>
	  htmlcgi}/.gitignore, data/{html => htmlcgi}/Makefile.am, data/{html
	  => htmlcgi}/README.adoc, data/{html => htmlcgi}/bottom.html,
	  data/{html => htmlcgi}/header.html.in, data/{html =>
	  htmlcgi}/index.html, data/{html => htmlcgi}/nut-banner.png,
	  docs/configure.txt, docs/nut.dict: configure.ac, *.am: rename
	  "htmldir" to "htmlcgidir", "data/html" to "data/htmlcgi", CGIPATH
	  to CGIEXECPATH, and tentatively HTMLPATH to CGIDATAPATH (and
	  actually expose the latter two from configure script) [#3049]
	* data/html/Makefile.am: ensure that HTML files for CGI are in dist
	  tarball
	* configure.ac: add separators between unrelated subjects, revise
	  comments
	* configure.ac: refactor NUT_ARG_* help and determination of CGIPATH
	  [#3049]
	* NEWS.adoc, docs/man/nutdrv_qx.txt: update regarding
	  test.battery.start.low [#3135]

2025-10-18  Atanas Vladimirov <vladimirov.atanas@gmail.com>

	* data/cmdvartab, docs/nut-names.txt,
	  drivers/nutdrv_qx_masterguard.c: nutdrv_qx_masterguard: Adds
	  battery test until battery low.  The difference between the battery
	  test until battery low and deep battery test is that the latter is
	  actually a battery calibration test and needs some preconditions to
	  be met, i.e. the load must be between 30% and 100% and the battery
	  capacity is greater than 99%.  Battery test until battery low can
	  be started anytime.  Tested on Masterguard A1000 and A2000 units.

2025-10-17  Jim Klimov <jimklimov+nut@gmail.com>

	* configure.ac: refactor NUT_ARG_* help and determination of DRVPATH
	  [#3049]
	* configure.ac: refactor NUT_ARG_* help and determination of
	  POWERDOWNFLAG [#3049]
	* configure.ac: refactor NUT_ARG_* help and determination of
	  STATEPATH, PIDPATH and ALTPIDPATH [#3049]
	* configure.ac: define "confdir-suffix" via 4-arg syntax of
	  NUT_ARG_WITH; rephrase other confdir options to say =PATH =>
	  =DIRPATH [#3049]
	* m4/nut_arg_with.m4: clarify that parentheses mean "default:" and
	  *_SINGLEQUOTE values are "resolved from" [#3049]
	* m4/nut_arg_with.m4: extend NUT_ARG_ENABLE and NUT_ARG_WITH to
	  optionally accept one more (second) argument for "...=VALUES"
	  [#3049]
	* m4/nut_arg_with.m4: extend NUT_ARG_ENABLE_CUSTOM_DEFAULT_HELP and
	  NUT_ARG_WITH_CUSTOM_DEFAULT_HELP to short-circuit $5==$4 if $5 is
	  not specified [#3049]
	* m4/nut_arg_with.m4: more uniquely name the conftemp variables
	  [#3049]
	* m4/nut_arg_with.m4: update comments [#3049]

2025-10-16  Jim Klimov <jimklimov+nut@gmail.com>

	* configure.ac, m4/nut_arg_with.m4: extend newer
	  NUT_ARG_WITH_CUSTOM_DEFAULT_HELP, NUT_ARG_WITH_EXPAND_DEFAULT_HELP
	  etc. methods to optionally print "--with-VARNAME=VALUES" formatted
	  messages [#3049]
	* m4/nut_arg_with.m4: fix passing of conftemp (non-verbatim per se)
	  [#3049]
	* configure.ac, m4/nut_arg_with.m4: m4/nut_arg_with.m4, configure.ac,
	  NEWS.adoc: refactor with ability to provide custom representation
	  for default value in AS_HELP_STRING message [#3049]
	* configure.ac: fix typo in help message for --with-CCACHE_NAMESPACE
	* Makefile.am: install-as-root: fix typo after replacement of @VAR@
	  to $(VAR) [#3131]
	* Makefile.am, NEWS.adoc, UPGRADING.adoc, ci_build.sh,
	  conf/Makefile.am, configure.ac, docs/configure.txt,
	  docs/man/apc_modbus.txt, docs/nut.dict, docs/packager-guide.txt,
	  lib/libnutclient.pc.in, lib/libnutclientstub.pc.in,
	  lib/libnutconf.pc.in, lib/libnutscan.pc.in,
	  lib/libupsclient-config.in, lib/libupsclient.pc.in,
	  scripts/Aix/nut-aix.spec.in,
	  scripts/upsdrvsvcctl/nut-driver-enumerator.sh.in: configure.ac,
	  docs/configure.txt, lib/*.pc.in, *.am et al: introduce
	  --with-confdir*= options, separate delivery of sample configs
	  [#3131]
	* Makefile.am: install-as-root: use make variables for paths and
	  package version [#3131]
	* m4/nut_check_python.m4, scripts/Solaris/Makefile.am,
	  scripts/Solaris/precheck.py.in, scripts/augeas/Makefile.am,
	  scripts/augeas/gen-nutupsconf-aug.py.in,
	  scripts/python/module/Makefile.am,
	  scripts/python/module/PyNUT.py.in,
	  scripts/python/module/test_nutclient.py.in, tools/Makefile.am,
	  tools/gitlog2changelog.py.in, tools/nut-snmpinfo.py.in:
	  m4/nut_check_python.m4, *.am, *.py.in: introduce PYTHON_DEFAULT to
	  track the implementation to substitute into shebangs or use as tool
	  calls [#1792]

2025-10-15  Jim Klimov <jimklimov+nut@gmail.com>

	* m4/nut_check_python.m4: separate NUT_CHECK_PYTHON_DEFAULT_BEST and
	  NUT_CHECK_PYTHON_INTERIM_RESULTS, and implement discarding of
	  "auto-prio" hits if another hit exists (yes, explicit, auto)
	  [#1792]  It seems `AC_REQUIRE()` calls have priority over other
	  code lines in a method, and get executed first - so using extra
	  methods (also for clearer code base).
	* docs/configure.txt: clarify --with-python*=yes; fix markup [#1792]
	* m4/nut_check_python.m4: separate NUT_CHECK_PYTHON*_SITE_PACKAGES
	  into dedicated methods, to honour forgetting of interpreters due to
	  auto-prio [#1792]
	* m4/nut_check_python.m4, NEWS.adoc, UPGRADING.adoc,
	  INSTALL.nut.adoc, docs/configure.txt, docs/nut.dict: change default
	  to auto-prioritize some one available python interpreter [#1792]

2025-10-14  Jim Klimov <jimklimov+nut@gmail.com>

	* ci_build.sh: pkg-rpm|pkg-spec: fix rpmbuild callout
	* ci_build.sh, scripts/obs/_service, scripts/obs/{debian.nut.changes
	  => nut.changes}: scripts/obs/nut.changes: isn't it a placeholder
	  for RPM changelog?
	* INSTALL.nut.adoc: mention some surprising configure options, like
	  the many --with-python* settings, and a --sysconfdir override
	  [#1792]
	* docs/configure.txt, docs/nut.dict: revise the section on
	  --with-python* settings [#1792]
	* NEWS.adoc, configure.ac: configure.ac: warn if several python
	  versions were AUTO-detected and configured [#1792]

2025-10-13  Jim Klimov <jimklimov+nut@gmail.com>

	* scripts/obs/debian.rules: make list-missing optional (absent in new
	  cdbs)
	* scripts/obs/debian.rules: do not mislead about lack of dh_python2
	  due to our own tests
	* scripts/obs/debian.rules: update for bleeding-edge CDBS that lacks
	  many scripts
	* docs/configure.txt: clarify that --with-group is barely used
	  directly by daemons [#3120]
	* Makefile.am: spellcheck-interactive: follow-up with a
	  spellcheck-quick to soak up timestamp changes of the dictionary
	  file
	* drivers/snmp-ups.c: comment about us not parsing the port from
	  device_path
	* configure.ac: when we suggest to "make" after "configure" is done,
	  have a fallback if MAKE was not defined/exported
	* NEWS.adoc: Revert "NEWS.adoc: Fallout of the refactoring of drivers
	  to use `shutdown.*` commands consistently [#1962]"  This reverts
	  commit 15bc72b0ae7952fe30b013b48eebfd7a6c9bf0a7 prepared problem
	  log was not a problem after all.
	* drivers/victronups.c: fix whitespace markup; translate comments
	* drivers/victronups.c, NEWS.adoc: reshuffle code -- upsdrv_initups()
	  is for preparing comms; upsdrv_initinfo() is for first using them
	  [#1962]
	* drivers/usbhid-ups.c, NEWS.adoc: reshuffle code -- upsdrv_initups()
	  is for preparing comms; upsdrv_initinfo() is for first using them
	  [#1962]
	* drivers/powervar_cx_ser.c, NEWS.adoc: reshuffle code --
	  upsdrv_initups() is for preparing comms; upsdrv_initinfo() is for
	  first using them [#1962]
	* drivers/powercom.c, NEWS.adoc: reshuffle code -- upsdrv_initups()
	  is for preparing comms; upsdrv_initinfo() is for first using them
	  [#1962]
	* drivers/pijuice.c, NEWS.adoc: reshuffle code -- upsdrv_initups() is
	  for preparing comms; upsdrv_initinfo() is for first using them
	  [#1962]
	* drivers/phoenixcontact_modbus.c, NEWS.adoc: reshuffle code --
	  upsdrv_initups() is for preparing comms; upsdrv_initinfo() is for
	  first using them [#1962]
	* drivers/oneac.c, NEWS.adoc: reshuffle code -- upsdrv_initups() is
	  for preparing comms; upsdrv_initinfo() is for first using them
	  [#1962]
	* drivers/mge-utalk.c, NEWS.adoc: reshuffle code -- upsdrv_initups()
	  is for preparing comms; upsdrv_initinfo() is for first using them
	  [#1962]
	* drivers/metasys.c, NEWS.adoc: reshuffle code -- upsdrv_initups() is
	  for preparing comms; upsdrv_initinfo() is for first using them
	  [#1962]
	* drivers/masterguard.c, NEWS.adoc: reshuffle code --
	  upsdrv_initups() is for preparing comms; upsdrv_initinfo() is for
	  first using them [#1962]
	* drivers/gamatronic.c: upsdrv_initups(): update comments [#1962]
	* drivers/everups.c, NEWS.adoc: reshuffle code -- upsdrv_initups() is
	  for preparing comms; upsdrv_initinfo() is for first using them
	  [#1962]
	* drivers/bicker_ser.c, NEWS.adoc: reshuffle code -- upsdrv_initups()
	  is for preparing comms; upsdrv_initinfo() is for first using them
	  [#1962]
	* drivers/bestuferrups.c, NEWS.adoc: reshuffle code --
	  upsdrv_initups() is for preparing comms; upsdrv_initinfo() is for
	  first using them [#1962]
	* drivers/bestfortress.c, NEWS.adoc: reshuffle code --
	  upsdrv_initups() is for preparing comms; upsdrv_initinfo() is for
	  first using them [#1962]

2025-10-12  Jim Klimov <jimklimov+nut@gmail.com>

	* drivers/asem.c, NEWS.adoc: reshuffle code -- upsdrv_initups() is
	  for preparing comms; upsdrv_initinfo() is for first using them
	  [#1962]
	* drivers/upscode2.c: fix indentation
	* drivers/powervar_cx.c, drivers/powervar_cx.h:
	  drivers/powervar_cx.{c,h}: fix setcmd()->setvar() for consistency
	  [#1962]
	* NEWS.adoc, docs/nut.dict, drivers/powerp-bin.c,
	  drivers/powerp-txt.c: drivers/powerp-{txt,bin}.c: install instcmd
	  and setvar handlers [#1962]
	* drivers/optiups.c: fix indentation broken in white-space
	  refactoring of early NUT v2.8.x evolution [#1962]
	* drivers/oneac.c: fix setcmd()->setvar() for consistency [#1962]
	* drivers/metasys.c: avoid spurious void return at end of
	  upsdrv_initinfo() [#1962]
	* drivers/main.c: better log the progress for killpower via running
	  driver instance
	* drivers/riello_ser.c: relocate methods to match structure of
	  riello_usb.c to ease the comparisons
	* NEWS.adoc, drivers/riello_ser.c, drivers/riello_usb.c:
	  drivers/riello_{ser,usb}.c: refactor parse_ups_status() and do not
	  constrain "shutdown.return" and "load.*" INSTCMD with whether the
	  UPS is known to be on battery or not [#1962]
	* scripts/Solaris/Makefile.am: "target_cpu=sparc" is inconclusive
	  about binary bitness [#3099]
	* NEWS.adoc: Fallout of the refactoring of drivers to use
	  `shutdown.*` commands consistently [#1962]
	* configure.ac: refactor echo of NUT_SOURCE_VERSION_REPORT, and
	  suggest to "make" after "configure" is done  Many projects do this
	  latter convenience for beginner users. Seems nice.

2025-10-11  Jim Klimov <jimklimov+nut@gmail.com>

	* NEWS.adoc, docs/man/apcupsd-ups.txt, docs/nut.dict,
	  drivers/apcupsd-ups.c: drivers/apcupsd-ups.c, docs: migrate from
	  gethostbyname() to getaddrinfo(); become IPv6 capable [#1209]
	* drivers/apcupsd-ups.c: revise comments and markup
	* drivers/apcupsd-ups.c: use strrchr(device_path,:) to look for LAST
	  colon, since bare IPv6 addresses contain colons too [#1209]
	* drivers/apcupsd-ups.c: update comments about default port 3551
	* scripts/upsdrvsvcctl/nut-driver-enumerator.sh.in: avoid logging
	  bogus-looking "OK" confirming undeclared activities [#3099]
	* docs/config-notes.txt, docs/configure.txt, docs/man/nut.txt,
	  docs/man/upsmon.conf.txt: clarify /run vs. /var/run [#3099]
	* configure.ac, NEWS.adoc, UPGRADING.adoc: `PIDPATH` is now more
	  strictly `/var/run`, unless `/run` is more preferable for good
	  reason [#3099]

2025-10-10  Jim Klimov <jimklimov+nut@gmail.com>

	* scripts/obs/nut.spec: update comment about python locations
	* scripts/obs/nut.spec: hide %dir /var/log (we do not own it),
	  suffice to mkdir it in build area to match our logrotate
	  configuration
	* scripts/obs/nut.spec: nut-monitor requires python-base
	* scripts/obs/_config: track a copy of prjconf data
	* scripts/obs/README.adoc: update notes on OBS prjconf
	* scripts/upsdrvsvcctl/nut-driver-enumerator.sh.in: fix svccfg
	  setprop for multiple DEPSVC FMRIs [#3099]  Co-authored-by: Nick
	  Briggs <nicholas.h.briggs@gmail.com>
	* NEWS.adoc, UPGRADING.adoc, docs/nut.dict, m4/nut_check_python.m4:
	  m4/nut_check_python.m4: try harder to report the "purelib" location
	  as PYTHON*_SITE_PACKAGES [#1209]
	* NEWS.adoc, docs/nut.dict, tests/NIT/Makefile.am, tests/NIT/nit.sh:
	  tests/NIT/nit.sh, tests/NIT/Makefile.am, NEWS.adoc: let test runs
	  started as root in under-provisioned environments tweak user/group
	  to what is available [#1209]
	* NEWS.adoc: one more Eaton USB ID supported [#2380]

2025-10-09  Jim Klimov <jimklimov+nut@gmail.com>

	* scripts/obs/nut.spec: register other service units (enablement is
	  via presets after all)
	* scripts/obs/nut.spec, scripts/obs/debian.rules: enable storing
	  build configuration and checking the build with NUT Integration
	  Tests suite, and strip binaries of debug symbols
	* scripts/obs/nut.spec: deduplicate man page files with symlinks
	* scripts/obs/nut.spec: reduce layering of HTMLPATH under
	  apache_serverroot_data
	* scripts/obs/nut.spec: reduce layering of CGIPATH under
	  apache_serverroot_cgi
	* scripts/obs/nut.spec: anticipate something like
	  /usr/lib64/python2.7/site-packages/ too
	* scripts/obs/nut.spec: keep excluding from main package stuff that
	  should be in others
	* scripts/obs/nut.spec: revise delivery of CGI artifacts as %dir
	* scripts/obs/nut.spec: address SUSE rpmlint issues with "make check"
	  section
	* scripts/obs/nut.spec: address SUSE rpmlint issues with
	  scripted-only NUT-Monitor package
	* scripts/obs/nut.spec: address SUSE rpmlint issues with logrotate
	* scripts/obs/nut.spec: deliver libs each in its ABI-version-named
	  package
	* scripts/obs/nut.spec: comment away "%dir" and "%exclude" hacks that
	  felt superfluous and probably are
	* scripts/obs/nut.spec: revise pre/port-in/un snippets
	* scripts/obs/nut.spec: do not relocate upssched-cmd to hard-coded
	  /bin
	* scripts/obs/nut.spec: fence delivery of systemd files (check if we
	  could resolve the the paths involved)
	* scripts/obs/nut.spec: fix systemdtmpfilesdir determination
	* scripts/obs/nut.spec: BuildRequires:  libxml2-devel
	* scripts/obs/nut.spec: dep on accounts for pkg self-test does not
	  work like this
	* scripts/obs/nut.spec: dep on chroot does not work like this
	* scripts/obs/nut.spec: do not package directly-named "/bin" objects
	* scripts/obs/nut.spec: require more tools for SUSE platform tests on
	  OBS
	* scripts/obs/nut.spec: require user/group for post-install script
	  context
	* scripts/obs/nut.spec: refactor how we get HTMLPATH and CGIPATH,
	  they may be different in APXS output
	* scripts/obs/nut.spec: let the SPEC version reflect in NUT
	  self-identification
	* ci_build.sh: add failsafes into pkg* build types
	* docs/nut.dict, scripts/obs/README.adoc: scripts/obs/README.adoc:
	  update with Practical setup and Other notes
	* scripts/obs/Makefile.am, scripts/obs/_service:
	  scripts/obs/_service: add a copy of working OBS recipe
	* Makefile.am, ci_build.sh, configure.ac, scripts/Makefile.am, {obs
	  => scripts/obs}/Makefile.am, {obs => scripts/obs}/README.adoc, {obs
	  => scripts/obs}/debian.Makefile.am, {obs =>
	  scripts/obs}/debian.NEWS, {obs => scripts/obs}/debian.changelog,
	  {obs => scripts/obs}/debian.compat, {obs =>
	  scripts/obs}/debian.control, {obs => scripts/obs}/debian.copyright,
	  {obs => scripts/obs}/debian.description.subst, {obs =>
	  scripts/obs}/debian.gbp.conf, {obs => scripts/obs}/debian.hotplug,
	  {obs => scripts/obs}/debian.libnutclient-dev.install, {obs =>
	  scripts/obs}/debian.libnutclient-dev.manpages, {obs =>
	  scripts/obs}/debian.libnutclient1.install, {obs =>
	  scripts/obs}/debian.libnutclient1.lintian-overrides, {obs =>
	  scripts/obs}/debian.libnutclientstub-dev.install, {obs =>
	  scripts/obs}/debian.libnutclientstub1.install, {obs =>
	  scripts/obs}/debian.libnutclientstub1.lintian-overrides, {obs =>
	  scripts/obs}/debian.libnutscan-dev.install, {obs =>
	  scripts/obs}/debian.libnutscan1.install, {obs =>
	  scripts/obs}/debian.libups-nut-perl.install, {obs =>
	  scripts/obs}/debian.libupsclient-dev.install, {obs =>
	  scripts/obs}/debian.libupsclient-dev.manpages, {obs =>
	  scripts/obs}/debian.libupsclient4.install, {obs =>
	  scripts/obs}/debian.nut-cgi.README.Debian, {obs =>
	  scripts/obs}/debian.nut-cgi.docs, {obs =>
	  scripts/obs}/debian.nut-cgi.install, {obs =>
	  scripts/obs}/debian.nut-cgi.manpages, {obs =>
	  scripts/obs}/debian.nut-cgi.postinst, {obs =>
	  scripts/obs}/debian.nut-cgi.postrm, {obs =>
	  scripts/obs}/debian.nut-client.init.in, {obs =>
	  scripts/obs}/debian.nut-client.install, {obs =>
	  scripts/obs}/debian.nut-client.links, {obs =>
	  scripts/obs}/debian.nut-client.lintian-overrides, {obs =>
	  scripts/obs}/debian.nut-client.maintscript, {obs =>
	  scripts/obs}/debian.nut-client.manpages, {obs =>
	  scripts/obs}/debian.nut-client.postinst, {obs =>
	  scripts/obs}/debian.nut-client.preinst, {obs =>
	  scripts/obs}/debian.nut-client.prerm, {obs =>
	  scripts/obs}/debian.nut-common.install, {obs =>
	  scripts/obs}/debian.nut-common.postinst.in, {obs =>
	  scripts/obs}/debian.nut-common.prerm.in, {obs =>
	  scripts/obs}/debian.nut-common.tmpfiles.in, {obs =>
	  scripts/obs}/debian.nut-doc.doc-base.nut-developer-guide, {obs =>
	  scripts/obs}/debian.nut-doc.doc-base.nut-faq, {obs =>
	  scripts/obs}/debian.nut-doc.doc-base.nut-packager-guide, {obs =>
	  scripts/obs}/debian.nut-doc.doc-base.nut-user-manual, {obs =>
	  scripts/obs}/debian.nut-doc.install, {obs =>
	  scripts/obs}/debian.nut-ipmi.install, {obs =>
	  scripts/obs}/debian.nut-ipmi.manpages, {obs =>
	  scripts/obs}/debian.nut-linux-i2c.install, {obs =>
	  scripts/obs}/debian.nut-linux-i2c.manpages, {obs =>
	  scripts/obs}/debian.nut-modbus.install, {obs =>
	  scripts/obs}/debian.nut-modbus.manpages, {obs =>
	  scripts/obs}/debian.nut-monitor.install, {obs =>
	  scripts/obs}/debian.nut-monitor.menu, {obs =>
	  scripts/obs}/debian.nut-monitor.xpm, {obs =>
	  scripts/obs}/debian.nut-powerman-pdu.install, {obs =>
	  scripts/obs}/debian.nut-powerman-pdu.manpages, {obs =>
	  scripts/obs}/debian.nut-server.dirs, {obs =>
	  scripts/obs}/debian.nut-server.init.in, {obs =>
	  scripts/obs}/debian.nut-server.install, {obs =>
	  scripts/obs}/debian.nut-server.manpages, {obs =>
	  scripts/obs}/debian.nut-server.postinst, {obs =>
	  scripts/obs}/debian.nut-server.postrm, {obs =>
	  scripts/obs}/debian.nut-server.preinst, {obs =>
	  scripts/obs}/debian.nut-server.prerm.in, {obs =>
	  scripts/obs}/debian.nut-snmp.docs, {obs =>
	  scripts/obs}/debian.nut-snmp.install, {obs =>
	  scripts/obs}/debian.nut-snmp.manpages, {obs =>
	  scripts/obs}/debian.nut-xml.install, {obs =>
	  scripts/obs}/debian.nut-xml.manpages, {obs =>
	  scripts/obs}/debian.nut.README.Debian, {obs =>
	  scripts/obs}/debian.nut.TODO.Debian, {obs =>
	  scripts/obs}/debian.nut.changes, {obs =>
	  scripts/obs}/debian.nut.docs, {obs =>
	  scripts/obs}/debian.python-nut.install, {obs =>
	  scripts/obs}/debian.rules, {obs => scripts/obs}/debian.series, {obs
	  => scripts/obs}/debian.watch, {obs => scripts/obs}/nut.dsc, {obs =>
	  scripts/obs}/nut.spec, {obs => scripts/obs}/pkgsrc.obs: Move obs/
	  to scripts/obs/ for consistency with other helper code
	* obs/nut.spec: shebangs: fix shell and sed syntax
	* obs/nut.spec: abstract the DOCPATH as a spec-var
	* obs/nut.spec: do not mention man1
	* obs/nut.spec: abstract the LIBEXECPATH as a spec-var
	* obs/nut.spec: reject found apache_serverroot that is under
	  /usr/share
	* obs/nut.spec: announce where and how we rewrite shebangs
	* obs/nut.spec: seems there is no "%if X != Y" syntax
	* obs/nut.spec: comment about alias man pages seen as duplicate files
	  in package
	* obs/nut.spec: specify system locations we use via %dir
	* obs/nut.spec: do not dump sockdebug and NDE script into
	  /usr/libexec directly
	* obs/nut.spec: avoid what looks like spec-var expansion in comments
	* obs/debian.rules: try harder to detect python2/3 helper
	* ci_build.sh: pkg*: pre-cleanup more
	* ci_build.sh: pkg-deb: clean away cdbs temp leftovers
	* ci_build.sh: pkg-deb: install prereqs (TBD;: optional?)
	* ci_build.sh: pkg-deb: force debuikd differently
	* ci_build.sh: pkg-deb: fix shell and sed syntax
	* obs/Makefile.am, obs/control: obs/*: drop "control" symlink
	* ci_build.sh, obs/Makefile.am, obs/{nut-linux-i2c.install =>
	  debian.nut-linux-i2c.install}, obs/{nut-linux-i2c.manpages =>
	  debian.nut-linux-i2c.manpages}, obs/{nut-modbus.install =>
	  debian.nut-modbus.install}, obs/{nut-modbus.manpages =>
	  debian.nut-modbus.manpages}, obs/{nut.changes =>
	  debian.nut.changes}: obs.*, ci_build.sh: rename debiam recipe files
	  to standard pattern
	* ci_build.sh: wrap pkg-rpm and pkg-deb (PoC)
	* obs/debian.rules: convince cdbs about dh_python3 when it is the
	  only viable option
	* obs/nut.dsc, obs/debian.control: do not require "python-is-..."
	  which confuses cdbs
	* NEWS.adoc, UPGRADING.adoc: Drop git-tracked compile script
	* Makefile.am: EXTRA_DIST the autotools compile script
	* .gitignore, compile: Drop git-tracked compile script

2025-10-08  Jim Klimov <jimklimov+nut@gmail.com>

	* obs/nut.spec: reshuffle NUT_SYSTEMD_UNITS_SERVICE_TARGET definition
	* obs/debian.rules: fix pkg-config search for systemd vars
	* obs/debian.rules: fix iteration for debian *.install fixup (DMF)
	* obs/debian.rules: fix check for NUTPKG_WITH_DMF
	* obs/debian.rules: search for systemd configs also in libsystemd
	* obs/nut.spec: udev rules no longer under /etc - not a %config
	  (hopefully)
	* obs/nut.spec: fix rpm-var expansion for conditionals
	* obs/debian.rules: fix sed with parentheses
	* obs/nut.spec: only package docs/cables/*.txt, not the whole
	  builddir
	* obs/nut.spec: address some concerns from rpmlint
	* obs/nut.spec: %pre: try to groupadd to be sure
	* obs/debian.rules: make NUTPKG_WITH_DMF optional (based on the
	  branch we build)
	* obs/debian.nut-cgi.docs: README renamed to *.adoc
	* obs/README.adoc, docs/nut.dict: update info about OBS recipes
	  [#1209]
	* obs/nut.spec: require basic tooling used in rpmlint checks
	* obs/nut.spec: try another way of checking that apache_serverroot is
	  defined and not empty
	* obs/debian.rules: bump SO_MAJOR_LIB* vars and add libnutconf
	  installation
	* obs/nut.spec: comment about %(cmd) definitions
	* obs/debian.rules: binary-install/nut-monitor: use dh_python* more
	  clearly
	* obs/debian.rules: fix a shell/make typo
	* obs/nut.spec: try another way of checking that apache_serverroot is
	  defined and not empty
	* obs/nut.spec: exclude in root package whatever we put into
	  sub-packages (rpmbuild seems to duplicate this)
	* obs/nut.spec: post: neuter faults of chown/chgrp/chmod (some
	  rpmbuilds fail self-check due to lack of accounts)
	* obs/nut.spec: update comments
	* obs/nut.spec: actually detect ability to build NUTPKG_WITH_DMF
	  (sources available or not in this branch)
	* obs/nut.spec: only use apache_serverroot if we can detect it;
	  otherwise dump NUT CGI artifacts under our _libexecdir and _datadir
	* NEWS.adoc, UPGRADING.adoc, docs/man/Makefile.am,
	  .../{nutdrv_siemens_sitop.txt => nutdrv_siemens-sitop.txt}:
	  docs/man/nutdrv_siemens-sitop.txt, docs/man/Makefile.am,
	  UPGRADING.adoc: Fixed man page naming for
	  `nutdrv_siemens-sitop(.8)` (dash vs. underscore) to match the
	  driver program name [#1209, #545]
	* configure.ac, scripts/python/Makefile.am: Avoid "make install"
	  writing PyNUT.py and test_nutclient.py to same location twice
	* drivers/mge-hid.c: add Eaton Ellipse PRO 5S1600 [#2380]

2025-10-07  Jim Klimov <jimklimov+nut@gmail.com>

	* obs/nut.spec: fix sub-package name for NUT-Monitor (GUI)
	* obs/debian.nut-monitor.install: GUI glade files have moved
	* obs/nut.spec: avoid "chown USER:GROUP" syntax
	* obs/debian.nut.docs: update file name lists
	* obs/nut.spec: only run udevadm where available
	* obs/nut.spec: rename "GROUP" which tends to pull in package type
	  string
	* obs/nut.spec: deliver files that are built and installed but were
	  not listed
	* obs/debian.control: support several libusb implementations
	* obs/debian.rules: do not run python directly anymore
	* obs/debian.changelog, obs/nut.dsc: bump formal versioning
	* obs/nut.spec: many docs files were renamed to *.adoc
	* obs/nut.spec: exclude DMF artifacts from main pkg only if
	  NUTPKG_WITH_DMF in the first place
	* obs/nut.spec: reword comment
	* obs/nut.spec: hide dblatex
	* obs/nut.spec: explicitly "Prefer" something when OBS sees we "have
	  choice for (X or Y)"
	* obs/nut.spec: do not call "python" directly
	* obs/nut.spec: revise neon dependency
	* obs/nut.spec: LUA only needed for DMF builds
	* obs/nut.spec: fix typos; make cppunit-devel optional (not in RHEL7)
	* obs/nut.spec: make TCP_WRAPPERS builds optional (if package seems
	  available to be installed - was obsoleted in many distros)
	* obs/nut.spec: refactor BuildRequires to avoid catering to
	  distro-specific macro names
	* obs/nut.spec: make IPMI, AVAHI and POWERMAN builds optional (if
	  package seems available to be installed)
	* obs/nut.spec: make DMF builds and deliveries optional (currently
	  off by default)
	* obs/nut.spec: accept either httpd-devel or apache2-devel
	* obs/nut.spec: accept either libusb-0.1 or 1.0
	* obs/nut.spec: update heading metadata
	* obs/nut.spec: expand python requirements
	* clients/upssched.c: start_timer(): drop unneeded NULLness checks
	  [#3105]
	* conf/upsmon.conf.sample.in: align NOTIFYFLAG samples with NOTIFYMSG
	  definitions [#3084]  Also helps NIT generate an upsmon.conf to
	  report those events in tests.
	* tests/NIT/upssched.conf.in: add handling for SHUTDOWN_HOSTSYNC
	  [#3084]
	* docs/man/upsmon.txt, docs/nut.dict: introduce SHUTDOWN ACTIVITY
	  WORKFLOW section [#3003, #3110]
	* docs/man/upsmon.txt: in SIMULATING POWER FAILURES section, refer to
	  NIT scripts as a source of inspiration
	* docs/man/upsmon.txt: from UPS CONNECTION TYPES AND UPSMON ROLES
	  section, refer to TIMED SHUTDOWNS section
	* docs/man/upsmon.txt: reword intro (and name) of UPS CONNECTION
	  TYPES AND UPSMON ROLES section

2025-10-06  Jim Klimov <jimklimov+nut@gmail.com>

	* docs/man/upssched.txt: suggest using FSD notification for early
	  shutdown activity on the upsmon primary system [#3003]
	* docs/man/upssched.conf.txt, docs/man/upssched.txt: note that
	  command execution is not async in upssched
	* NEWS.adoc, clients/upsmon.c, clients/upsmon.h:
	  clients/upsmon.{c,h}, NEWS.adoc: Make sure `FSD` notifications are
	  always issued at latest when shutdown handling just starts (or
	  earlier) [#3003, #3110]
	* ci_build.sh: consider_cleanup_shortcut(): better react to changes
	  of sources for configure script  ...even if there is no Makefile
	  yet
	* scripts/misc/nut.bash_completion.in: fix indentations
	* configure.ac, scripts/Makefile.am, scripts/misc/.gitignore,
	  scripts/misc/{nut.bash_completion => nut.bash_completion.in}:
	  scripts/misc/nut.bash_completion: convert to .in template to use
	  TAIL_ARGS_FROM_NTH_LINE [#3099]
	* scripts/upsdrvsvcctl/nut-driver-enumerator.sh.in: use
	  TAIL_ARGS_FROM_NTH_LINE [#3099]
	* configure.ac: detect TAIL_ARGS_FROM_NTH_LINE [#3099]
	* configure.ac: fix indent

2025-10-04  Jim Klimov <jimklimov+nut@gmail.com>

	* scripts/Solaris/postinstall.in: Update comments/messages for legacy
	  init script usage on Solaris older than 10 [#3099]
	* scripts/Solaris/preremove.in, scripts/Solaris/postinstall.in:
	  quiesce upsdrvctl activity; add tweak-ability for debugging NUT
	  programs in the install script context (possibly with custom
	  package builds) [#3099]
	* scripts/misc/nut.bash_completion,
	  scripts/Solaris/reset-ups-usb-solaris.sh.sample,
	  scripts/upsdrvsvcctl/nut-driver-enumerator.sh.in: avoid "tail -n
	  +/-NUM" syntax as unportable [#3099]
	* .github/workflows/codeql.yml: disable ccache use for actual
	  compilation, for CodeQL analysis to hook into compiler correctly

2025-10-02  Jim Klimov <jimklimov+nut@gmail.com>

	* ci_build.sh: fix typo in message
	* ci_build.sh: USE_CONFIG_SHELL at least from explicit caller envvar
	  [#3099]
	* ci_build.sh: revise indentation
	* clients/upssched.c: simplify loop processing [#3097]
	* tests/NIT/upssched.conf.in: rename parameters passed to "EXECUTE"
	  methods, for less confusing dev-testing logs [#3105]
	* clients/upsmon.c: add debug logging to NOTIFYCMD (WIN32) [#3097]
	* docs/man/upssched.txt: list common and unique options
	* NEWS.adoc, clients/upssched-cmd, clients/upssched.c,
	  conf/upssched.conf.sample.in, docs/man/upssched.conf.txt,
	  docs/man/upssched.txt, scripts/misc/notifyme-debug: upssched:
	  introduce passing of NOTIFYMSG to CMDSCRIPT [#3105]

2025-10-01  Jim Klimov <jimklimov+nut@gmail.com>

	* Makefile.am: work around lack of "id -u" [#3099]
	* ci_build.sh: detect_platform_PKG_CONFIG_PATH_and_FLAGS(): fix use
	  of PKG_CONFIG variable [#3099]
	* ci_build.sh: work around NCPUS prefixed with white-space [#3099]
	* ci_build.sh: work around lack of "find -maxdepth" [#3099]
	* scripts/python/Makefile.am: add a fallback TOUPPER/TOLOWER
	  implementation [#3099]
	* ci_build.sh, scripts/subdriver/gen-snmp-subdriver.sh,
	  scripts/subdriver/gen-usbhid-subdriver.sh: add a fallback
	  TOUPPER/TOLOWER implementation [#3099]
	* configure.ac, m4/ax_realpath.m4: introduce a fallback "mktemp"
	  [#3099]
	* scripts/subdriver/gen-usbhid-subdriver.sh: quote calls to mktemp
	  [#3099]
	* scripts/subdriver/gen-snmp-subdriver.sh,
	  scripts/subdriver/gen-usbhid-subdriver.sh: add a fallback mktemp
	  implementation [#3099]
	* scripts/subdriver/gen-snmp-subdriver.sh: avoid grep for char
	  classes, it is also not ubiquitous [#3099]
	* scripts/subdriver/gen-snmp-subdriver.sh: avoid "GREP -e", it is
	  also not ubiquitous [#3099]
	* ci_build.sh: avoid "GREP -e", it is also not ubiquitous [#3099]
	* ci_build.sh: fix GGREP detection [#3099]
	* tools/driver-list-format.sh: revise reaction to "diff" problems or
	  successes [#3099]
	* tools/driver-list-format.sh: sed class [[:blank:]] is not portable
	  [#3099]
	* tools/driver-list-format.sh, docs/docinfo.xml.sh.in: fallback for
	  absent "diff -u" feature in pretty reporting [#3099]
	* Makefile.am, tests/nut-driver-enumerator-test.sh: fallback for
	  absent "diff -u" feature; use detected or passed EGREP [#3099]
	* NEWS.adoc: update about portability fixes [#3099]
	* tests/NIT/nit.sh: "id -u" is not ubiquitous, find fallback ways to
	  check that I_AM_ROOT [#3099]
	* ci_build.sh, configure.ac, docs/Makefile.am, docs/man/Makefile.am,
	  m4/ax_realpath_lib.m4, m4/nut_check_libnetsnmp.m4,
	  scripts/upsdrvsvcctl/nut-driver-enumerator.sh.in: Portability: in
	  some shells, "if" only accepts the list of commands to run (there
	  is no "if ! condition" support) - some better hidden cases [#3099]
	* scripts/installer/common/aix_init,
	  scripts/installer/common/ipp-host-shutdown.sample,
	  scripts/installer/common/ipp-os-shutdown: scripts/installer/*: fix
	  syntax to pass on old Solaris 8 /bin/sh [#3099]
	* Makefile.am, ci_build.sh, configure.ac, docs/Makefile.am,
	  docs/man/Makefile.am, scripts/Windows/build-mingw-prereqs.sh,
	  scripts/python/app/NUT-Monitor, scripts/python/module/Makefile.am,
	  scripts/upsdrvsvcctl/nut-driver-enumerator.sh.in, tests/NIT/nit.sh,
	  tools/Makefile.am, tools/gitlog2version.sh: Portability: in some
	  shells, "if" only accepts the list of commands to run (there is no
	  "if ! condition" support) [#3099]
	* autogen.sh: do fail if configure script did not get generated
	  [#3099]
	* configure.ac, m4/ax_check_compile_flag.m4, m4/ax_realpath_lib.m4,
	  m4/nut_check_asciidoc.m4, m4/nut_check_aspell.m4,
	  m4/nut_check_libmodbus.m4, m4/nut_check_libsystemd.m4,
	  m4/nut_check_os.m4, m4/nut_check_pkgconfig.m4,
	  m4/nut_check_python.m4, m4/nut_compiler_family.m4: configure.ac,
	  m4/*.m4: try to use the detected GREP and EGREP tools [#3099]
	* NEWS.adoc: add historic reference from #3099 to #1660
	* ci_build.sh: handle a couple more "test -e" cases [#3099]
	* docs/Makefile.am, docs/man/Makefile.am: handle a couple more "test
	  -e" cases [#3099]
	* scripts/upsdrvsvcctl/nut-driver-enumerator.sh.in: substitute plain
	  GREP too [#3099]
	* docs/man/Makefile.am: substitute plain GREP too [#3099]
	* docs/Makefile.am: substitute plain GREP too [#3099]
	* data/Makefile.am: export GREP or EGREP detected by configure, so
	  further called scripts do not have to re-detect [#3099]
	* tools/gitlog2version.sh: use or discover GREP to avoid literal
	  "grep" [#3099]
	* tools/driver-list-format.sh: use or discover EGREP to avoid literal
	  "grep -E" [#3099]
	* configure.ac: detect and export (E)GREP as early as possible
	  [#3099]
	* configure.ac: avoid "[ -e" or "test -e" which some older shells
	  lack [#3099]
	* tests/NIT/Makefile.am: nut_version.h: export GREP or EGREP detected
	  by configure, so further called scripts do not have to re-detect
	  [#3099]
	* include/Makefile.am: nut_version.h: export GREP or EGREP detected
	  by configure, so further called scripts do not have to re-detect
	  [#3099]
	* autogen.sh, ci_build.sh: export GREP or EGREP if we detect them, so
	  further called scripts do not have to re-detect [#3099]
	* NEWS.adoc: summarize fixes for "grep" and "test" callouts [issue
	  #3099]
	* scripts/Solaris/postinstall.in: avoid "[ -e" or "test -e" which
	  some older shells lack [#3099]
	* m4/ax_realpath.m4: protect against lack of "test -e" even better
	  (some shells do crash trying) [#3099]
	* docs/man/Makefile.am: avoid "[ -e" or "test -e" which some older
	  shells lack [#3099]
	* tests/NIT/nit.sh: use or discover EGREP to avoid literal "grep -E";
	  also GREP [#3099]
	* tools/nut-dumpdiff.sh: use or discover EGREP to avoid literal "grep
	  -E" [#3099]
	* scripts/subdriver/gen-usbhid-subdriver.sh: use or discover EGREP to
	  avoid literal "grep -E"; also GREP; avoid "grep -q" [#3099]
	* scripts/subdriver/gen-snmp-subdriver.sh: use or discover EGREP to
	  avoid literal "grep -E"; also GREP; avoid "grep -q" [#3099]
	* scripts/Solaris/reset-ups-usb-solaris.sh.sample: roll back "grep
	  -E" requirement [#3099, #1660]
	* ci_build.sh: use or discover EGREP to avoid literal "grep -E"
	  [#3099]
	* drivers/nutdrv_hashx.c: do not directly require "stdint.h" [#3099]
	* drivers/Makefile.am: fix library search order for upsdrvctl build
	  [#3099]
	* autogen.sh: avoid "find -not ..." [#3099]
	* autogen.sh: use or discover EGREP to avoid literal "grep -E"
	  [#3099]
	* autogen.sh: report about testing generated script syntax [#3099]
	* tools/gitlog2version.sh: avoid shell substitution missing in older
	  shells [#3099]
	* tools/gitlog2version.sh: use or discover EGREP to avoid literal
	  "grep -E" [#3099]
	* tools/gitlog2version.sh: avoid "[ -e" or "test -e" which some older
	  shells lack and do crash trying [#3099]
	* docs/Makefile.am: avoid "[ -e" or "test -e" which some older shells
	  lack [#3099]
	* Makefile.am: avoid "[ -e" or "test -e" which some older shells lack
	  [#3099]
	* tests/NIT/README.adoc, tests/NIT/nit.sh: tests/NIT/nit.sh: avoid "[
	  -e" or "test -e" which some older shells lack [#3099]
	* ci_build.sh: avoid "[ -e" or "test -e" which some older shells lack
	  [#3099]
	* Makefile.am: EXTRA_DIST some more useful files

2025-09-30  Jim Klimov <jimklimov+nut@gmail.com>

	* docs/net-protocol.txt: log the TODO idea for "Logout pending" of
	  some sort [#3086]
	* docs/net-protocol.txt: cross-link LIST CLIENT and GET NUMLOGINS
	* docs/net-protocol.txt: clarify intro about client libraries and
	  other bindings, in-tree or third-party

2025-09-29  Jim Klimov <jimklimov+nut@gmail.com>

	* drivers/snmp-ups.c: allow to actually abort stuck init [#3101]
	* drivers/snmp-ups.c: implement a non-trivial
	  upsdrv_tweak_prognames() to allow aliasing with "snmp-ups-old"
	  [#3101]
	* NEWS.adoc, UPGRADING.adoc, docs/new-drivers.txt, docs/nut.dict,
	  drivers/adelsystem_cbi.c, drivers/al175.c, drivers/apc_modbus.c,
	  drivers/apcsmart-old.c, drivers/apcsmart.c, drivers/apcupsd-ups.c,
	  drivers/asem.c, drivers/bcmxcp.c, drivers/belkin.c,
	  drivers/belkinunv.c, drivers/bestfcom.c, drivers/bestfortress.c,
	  drivers/bestuferrups.c, drivers/bestups.c, drivers/bicker_ser.c,
	  drivers/blazer_ser.c, drivers/blazer_usb.c, drivers/clone-outlet.c,
	  drivers/clone.c, drivers/dummy-ups.c, drivers/etapro.c,
	  drivers/everups.c, drivers/failover.c, drivers/gamatronic.c,
	  drivers/generic_gpio_common.c, drivers/generic_gpio_libgpiod.c,
	  drivers/generic_modbus.c, drivers/genericups.c,
	  drivers/huawei-ups2000.c, drivers/hwmon_ina219.c, drivers/isbmex.c,
	  drivers/ivtscd.c, drivers/liebert-esp2.c, drivers/liebert-gxe.c,
	  drivers/liebert.c, drivers/macosx-ups.c, drivers/masterguard.c,
	  drivers/metasys.c, drivers/mge-utalk.c, drivers/microdowell.c,
	  drivers/microsol-apc.c, drivers/microsol-common.c,
	  drivers/netxml-ups.c, drivers/nhs_ser.c, drivers/nut-ipmipsu.c,
	  drivers/nutdrv_atcl_usb.c, drivers/nutdrv_hashx.c,
	  drivers/nutdrv_qx.c, drivers/nutdrv_siemens_sitop.c,
	  drivers/oneac.c, drivers/optiups.c,
	  drivers/phoenixcontact_modbus.c, drivers/pijuice.c,
	  drivers/powercom.c, drivers/powerman-pdu.c, drivers/powerpanel.c,
	  drivers/powervar_cx_ser.c, drivers/powervar_cx_usb.c,
	  drivers/rhino.c, drivers/richcomm_usb.c, drivers/riello_ser.c,
	  drivers/riello_usb.c, drivers/safenet.c, drivers/skel.c,
	  drivers/sms_ser.c, drivers/snmp-ups.c, drivers/socomec_jbus.c,
	  drivers/solis.c, drivers/tripplite.c, drivers/tripplite_usb.c,
	  drivers/tripplitesu.c, drivers/upscode2.c, drivers/usbhid-ups.c,
	  drivers/ve-direct.c, drivers/victronups.c: drivers/*,
	  docs/new-drivers.txt, UPGRADING.adoc, NEWS.adoc: implement (no-op)
	  upsdrv_tweak_prognames() and bump DRIVER_VERSION numbers [#3101]
	* drivers/main.c, drivers/main.h: drivers/*: introduce
	  upsdrv_tweak_prognames() hook [#3101]
	* common/common.c, drivers/main.c: drivers/main.c: main(): use new
	  sendsignalfnaliases() and sendsignalpidaliases() with prognames[]
	  [#3101]
	* NEWS.adoc, common/common.c, docs/nut.dict, include/common.h:
	  common/common.c, include/common.h, NEWS.adoc: extend with plural
	  sendsignalpidaliases() and sendsignalfnaliases() [#3101]
	* drivers/main.c, drivers/main.h: drivers/main.{c,h}: allow to track
	  several prognames[] for acceptable driver program aliases [#3101]
	* drivers/upsdrvctl.c: help(): fix global vs local arg name
	* NEWS.adoc, common/common.c, docs/nut.dict, include/common.h:
	  common/common.c, include/common.h, NEWS.adoc: extend with plural
	  checkprocnames() and compareprocnames() [#3101]
	* clients/upsmon.c: add comments to methods involved in shutdown to
	  clarify who normally runs as root or not [#3084]

2025-09-28  Nick Briggs <nicholas.h.briggs@gmail.com>

	* Makefile.am, clients/Makefile.am, docs/Makefile.am,
	  docs/docinfo.xml.sh.in, docs/man/Makefile.am,
	  scripts/python/Makefile.am, scripts/systemd/nut-server.service.in,
	  scripts/upsdrvsvcctl/nut-driver-enumerator.sh.in: Modifies
	  Makefile.am files and some script ".in" files to use $EGREP  The
	  standard Solaris 10/11 "/usr/bin/grep" does not accept the "-E"
	  option.  The autotools will set EGREP to the best available tool.
	  Makefile.am that need EGREP functionality should use $(EGREP)
	  rather than directly calling "grep -E".  Additionally, scripts that
	  are generated to be installed as part of the package that need
	  EGREP functionality should use the same tool that was located
	  during configuration (assuming no cross-compilation with different
	  EGREP tool availability).  Closes #3099

2025-09-25  Jim Klimov <jimklimov+nut@gmail.com>

	* clients/upsmon.c: main loop: avoid sleep if FSD signal was raised
	  during the long work cycle [#3084]
	* clients/upsmon.c: user_fsd(), main loop: try to ensure immediate
	  reaction to FSD signals (interrupt a sleep() if needed) [#3084]
	* docs/config-notes.txt: clarify that upsmon exit is now subject to
	  `SHUTDOWNEXIT` setting [#3084, #2133]
	* NEWS.adoc, clients/upsmon.c, clients/upsmon.h, common/nutconf.cpp,
	  common/nutwriter.cpp, conf/upsmon.conf.sample.in,
	  docs/config-notes.txt, docs/man/upsmon.conf.txt,
	  include/nutconf.hpp: clients/upsmon.h, conf/upsmon.conf.sample.in,
	  etc: Introduced a `SHUTDOWN_HOSTSYNC` notification message [#3084]
	* conf/upsmon.conf.sample.in, docs/man/upsmon.conf.txt: revise
	  documentation of FINALDELAY [#3084]  Notably, both primary and
	  secondary upsmon `doshutdown()` to handle FSD.
	* clients/upsmon.c: doshutdown(), runparent(): debug-log just before
	  executing shutdowncmd [#3084]
	* clients/upsmon.c: runparent(): when waiting for a child to exit,
	  and we know its PID, react to the end of specifically that process
	  [#3084]
	* clients/upsmon.c: doshutdown(), runparent(): Take note of start
	  timestamp before calling SHUTDOWNCMD [#3084]
	* clients/upsmon.c: doshutdown(): debug-log about waiting for
	  FINALDELAY [#3084]
	* clients/upsmon.c: set_pdflag(): log if POWERDOWNFLAG is not
	  configured or is being written now [#3084]
	* clients/upsmon.c: doshutdown(), runparent(): initialize
	  "time(&start)" always [#3084]  Avoid (semi-bogus) warnings from
	  clang that `variable 'start' may be uninitialized when used here`
	  in `difftime()` later on.
	* clients/upsmon.c: truly deal with SHUTDOWNEXIT timeout as such, not
	  a countdown [#3084]
	* clients/upsmon.c: revise tracking pid_pipechild when parent exits
	  [#3084]
	* clients/upsmon.c: fix whitespace markup in decls

2025-09-24  Jim Klimov <jimklimov+nut@gmail.com>

	* clients/upsmon.c: add interaction between upsmon parent and child
	  if SHUTDOWNEXIT is non-trivial [#3084]
	* clients/upsmon.c: revise comments and log messages in
	  forceshutdown(), doshutdown(), start_pipe() [#3084]
	* clients/upsmon.c: start_pipe(), notify(): revise parent/child
	  logging around the fork() [#3084]
	* clients/upsmon.c, clients/upssched.c, drivers/upsdrvctl.c: call
	  first setproctag() after setting up nut_debug_level [#3084]
	* common/common.c, include/common.h: refactor and optimize
	  getprocname(getpid()) calls with caching getmyprocname() and
	  getmyprocbasename() [#3084]
	* common/common.c, include/common.h, clients/upsmon.c,
	  clients/upssched.c, drivers/upsdrvctl.c: move proctag_cleanup()
	  into common code and auto-register during first use of setproctag()
	  [#3084]
	* drivers/upsdrvctl.c, NEWS.adoc: introduce logging of self-assigned
	  forked process tags [#3084]
	* clients/upssched.c, NEWS.adoc: introduce logging of self-assigned
	  forked process tags [#3084]
	* clients/upsmon.c: improve debugging messages of forceshutdown()
	  [#3084]
	* clients/upsmon.c, NEWS.adoc: introduce logging of self-assigned
	  forked process tags [#3084]
	* common/common.c, include/common.h, NEWS.adoc, docs/nut.dict:
	  introduce logging of self-assigned forked process tags [#3084]

2025-09-23  Jim Klimov <jimklimov+nut@gmail.com>

	* ci_build.sh: honour CI_CCACHE_USE=no more diligently
	* NEWS.adoc, clients/upssched.c, conf/upssched.conf.sample.in,
	  docs/man/upssched.conf.txt: clients/upssched.c: revise
	  CANCEL-TIMER, introduce CANCEL-TIMER-MATCHED [#3097]
	* scripts/misc/notifyme-debug: fix shell typo
	* clients/upssched.c: fix START-TIMER-SHARED [#3097]
	* clients/upssched.c: revise logging of timer events [#3097]

2025-09-22  Jim Klimov <jimklimov+nut@gmail.com>

	* clients/upssched.c: start_timer(): revise START-TIMER-SHARED
	  behavior [#3097]
	* clients/upssched.c: fix CI suggestions [#3097]
	* clients/upssched.c: log-trace through, and fix, removetimers() and
	  connection loss due to a recent bug there [#3097]
	* clients/upssched.c: send_to_one(): improve debugging [#3097]
	* clients/upssched.c: collect_string(): fix the iteration logic
	  [#3097]
	* clients/upssched.c, docs/man/upssched.txt, NEWS.adoc: introduce
	  `upssched -l` mode [#3097]
	* docs/man/upssched.conf.txt: PIPEFN: chain the paragraphs of one
	  description (indent them correctly) [#3097]
	* NEWS.adoc, clients/upssched.c, conf/upssched.conf.sample.in,
	  docs/man/upssched.conf.txt, tests/NIT/upssched.conf.in:
	  clients/upssched.c, conf/upssched.conf.sample.in,
	  docs/man/upssched.conf.txt, NEWS.adoc: introduce support for
	  DEBUG_MIN in upssched.conf [#3097]
	* clients/upssched.c: update (C) header with major contributors
	* clients/upssched.c: in messages that refer to upsmon, append its
	  man page section
	* clients/upssched.c, NEWS.adoc, conf/upssched.conf.sample.in,
	  docs/man/upssched.conf.txt: let timers pass forward the UPSNAME and
	  NOTIFYTYPE again - now with relevant values; introduce
	  START-TIMER-SHARED [#3092, #3097]

2025-09-21  Jim Klimov <jimklimov+nut@gmail.com>

	* clients/upssched.c: update comments [#3092]
	* clients/upssched.c: rename global upsname => ups_name to be on par
	  with global notify_type [#3092]
	* docs/man/nut.txt, docs/nut.dict: describe NUT layer 3.5 - role of
	  the drivers during shutdown
	* docs/man/nut.txt: suggest more packaged user-names for NUT daemons
	* NEWS.adoc, drivers/nutdrv_qx.c, drivers/nutdrv_qx.h:
	  drivers/nutdrv_qx.{c,h}, NEWS.adoc: define an internal
	  QX_FLAG_MAPPING_HANDLED, introduce analyze_mapping_usage() method
	  [#3095]
	* drivers/nutdrv_qx.c: fix whitespace
	* drivers/usbhid-ups.c: analyze_mapping_usage(): rephrase last
	  suggestion with also checking and building recent NUT code [#3082,
	  #3095]

2025-09-19  Jim Klimov <jimklimov+nut@gmail.com>

	* drivers/snmp-ups.c, drivers/usbhid-ups.c: drivers/snmp-ups.c:
	  account SU_FLAG_MAPPING_HANDLED and do analyze_mapping_usage()
	  [#3095]
	* NEWS.adoc, drivers/snmp-ups.h: drivers/snmp-ups.{c,h}, NEWS.adoc:
	  define an internal SU_FLAG_MAPPING_HANDLED [#3095]
	* drivers/snmp-ups.c: fix markup
	* drivers/snmp-ups.h: modernize a few comments
	* drivers/snmp-ups.c: suggest in log how to improve a driver where
	  only IETF auto-matched [#3095]
	* drivers/hidtypes.h: update a comment [#3082]
	* drivers/usbhid-ups.c: fix whitespace
	* drivers/usbhid-ups.c: offload analyze_mapping_usage() to a method
	  [#3082, #3095]  Note the activity is now still limited to when
	  debug logging is enabled.

2025-09-18  Jim Klimov <jimklimov+nut@gmail.com>

	* drivers/usbhid-ups.c, NEWS.adoc: suggest in log how to improve a
	  driver with too few mappings defined/used [#3082]
	* NEWS.adoc, docs/ci-farm-do-setup.adoc, docs/ci-farm-lxc-setup.txt,
	  docs/config-notes.txt, docs/config-prereqs.txt, docs/configure.txt,
	  docs/daisychain.txt, docs/design.txt, docs/documentation.txt,
	  docs/download.txt, docs/features.txt, docs/hid-subdrivers.txt,
	  docs/net-protocol.txt, docs/new-clients.txt, docs/new-drivers.txt,
	  docs/nut-names.txt, docs/nut-versioning.adoc,
	  docs/nutdrv_qx-subdrivers.txt, docs/outlets.txt,
	  docs/scheduling.txt, docs/security.txt, docs/snmp-subdrivers.txt,
	  docs/sock-protocol.txt, docs/support.txt: docs/*.txt: add asciidoc
	  comments with links to nut-website rendered contents of most
	  interesting pages
	* docs/maintainer-guide.txt: avoid pushing final release tags to
	  upstream more than once, really!
	* scripts/Makefile.am: do not EXTRA_DIST the generated
	  scripts/Windows/Makefile -- the .in template suffices  Thanks to
	  @gdt for the heads-up.

2025-09-12  Jim Klimov <jimklimov+nut@gmail.com>

	* clients/upsmon.c: doshutdown(): log more loudly that exit_flag is
	  raised, so shutdownexitdelay does not apply currently [#3084]

2025-09-11  Jim Klimov <jimklimov+nut@gmail.com>

	* clients/upsmon.c, NEWS.adoc: doshutdown(): collapse non-zero
	  shutdownexitdelay handling into one clause, and ping the data
	  server(s) while in the loop [#3084]
	* clients/upsmon.c: more logging about ways to exit() the program,
	  and why/when it happened [#3084]

2025-09-10  Jim Klimov <jimklimov+nut@gmail.com>

	* scripts/python/module/Makefile.am: emit log note that
	  .pypi-dist-pip-wheel goal does not produce sdist archives [#3056]
	* scripts/python/module/Makefile.am: fix typo in comment
	* NEWS.adoc: fixed PyPI publication to include sdist tarball [#3056]
	* .github/workflows/PyNUTClient.yml: fix shell markup [#3056]
	* .github/workflows/PyNUTClient.yml: actually install "setuptools"
	  module with "pip" [#3056]
	* .github/workflows/PyNUTClient.yml: allow manually running the GHA
	  task

2025-09-08  Jim Klimov <jimklimov+nut@gmail.com>

	* docs/hid-subdrivers.txt, docs/nut.dict: docs/hid-subdrivers.txt:
	  updating existing drivers: suggest newly logged discrepancies of
	  "seen vs. used" data [#3082]
	* drivers/nutdrv_atcl_usb.c: when suggesting other drivers and
	  configs, refer to build-aware man page sections
	* docs/hid-subdrivers.txt: fix a bit of markup
	* clients/upslog.c, NEWS.adoc: update help() and failure messages to
	  suggest -m '*,-'
	* drivers/usbhid-ups.c: process_boolean_info(): handle OB=!OL and
	  OL=!OB here (when the bit is being set) [#3080]
	* drivers/usbhid-ups.c: upsdrv_initups(): upsdebugx() at verbosity 0
	  (always) if there are too few mappings known or used via USB HID
	  [#3082]
	* drivers/apc-hid.c, NEWS.adoc, scripts/upower/95-upower-hid.hwdb:
	  declare support for APC 0x051d:0x0005 as a USB HID device [#3047]
	* drivers/nutdrv_atcl_usb.c: upsdrv_initups() failure mode: suggest
	  using nutdrv_qx(8) or blazer_usb(8) driver instead [#1021, #2152
	  follow-up]
	* data/driver.list.in: add Voltronic Power USB ID 0665:5161 as
	  nutdrv_qx supported (per driver source comments)
	* data/driver.list.in: add "Various" USB interface chip names or IDs
	  0665:5161 and 0001:0000 as nutdrv_qx or rarely nutdrv_atcl_usb
	  supported
	* data/driver.list.in: add Salicru SPS 500 ONE USB ID 0665:5161 as
	  nutdrv_qx supported [#3079]
	* data/driver.list.in: add Belkin USB ID 0665:5161 as nutdrv_qx
	  supported (per driver source comments)
	* drivers/usbhid-ups.c: upsdrv_initups(): fix variable name for the
	  snprintf() return value [#3083]
	* drivers/usbhid-ups.c: upsdrv_initups(): also report how many
	  hid2nut mappings are known vs. how many were used using USB HID
	  [#3082]
	* drivers/usbhid-ups.c: upsdrv_initups(): generalize the report of
	  unused report descriptor entries to "completely unused" vs.
	  "partially unused" (e.g. Feature vs Input) [#3082]
	* drivers/usbhid-ups.c, drivers/hidtypes.h, NEWS.adoc: check if the
	  subdriver code (mappings) and the device report sit together well
	  [#3082]
	* drivers/usbhid-ups.c: callback(): update logged message that not
	  only Manufacturer, but possibly an explicit Model, may be
	  not-supported
	* NEWS.adoc: update about usbhid-ups suggestion to iterate
	  "subdriver" values
	* drivers/usbhid-ups.c: upsdrv_initups(): check that if no ups_status
	  bit was set, suggest that wrong "subdriver" is used then [#3080,
	  #3061, #2058]
	* drivers/usbhid-ups.c: callback(): add log messages to stress that
	  the dump of Report Descriptor actually seen, and its later
	  hid_ups_walk() with a particular subdriver, may not match up well
	  [#3061]
	* drivers/usbhid-ups.c: upsdrv_initups(): add log messages to help
	  trace logical progress through the code [#3061]
	* drivers/usbhid-ups.c: possibly_supported(): suggest iterating
	  "subdriver" values [#2058]
	* NEWS.adoc, drivers/usbhid-ups.c, drivers/usbhid-ups.h:
	  drivers/usbhid-ups.c: do not assume that "!online"=="offline"
	  [#3080]
	* drivers/usbhid-ups.c: fix indentation (cosmetic)
	* drivers/usbhid-ups.c: ups_status_set(): revise code markup/style

2025-09-07  Jim Klimov <jimklimov+nut@gmail.com>

	* drivers/mge-hid.c, NEWS.adoc: Improved support for Eaton 5S1500LCD
	  (US version). [#2380]
	* NEWS.adoc, docs/config-prereqs.txt, docs/configure.txt,
	  docs/developers.txt, docs/download.txt, docs/maintainer-guide.txt,
	  docs/man/apcsmart.txt, docs/man/belkin.txt,
	  docs/man/genericups.txt, docs/man/mge-shut.txt,
	  docs/man/upsdrvsvcctl.txt, docs/man/upsmon.conf.txt,
	  docs/man/upssched.conf.txt, docs/man/upsset.cgi.txt,
	  docs/man/usbhid-ups.txt, docs/new-drivers.txt, docs/outlets.txt,
	  docs/packager-guide.txt, docs/scheduling.txt,
	  scripts/Windows/README.adoc,
	  scripts/external_apis/enphase/README.adoc: Reword multiple docs to
	  avoid admonition blocks with invalid sentences
	* docs/Makefile.am: spellcheck: help avoid admonition blocks with
	  invalid sentences (after rendering as a box)
	* docs/download.txt: revise markup for Windows downloads
	* docs/download.txt: revise info about/from Repology
	* docs/download.txt: revise note about official releases
	* docs/download.txt: revise part about source archives from github

2025-09-06  desertwitch <24509509+desertwitch@users.noreply.github.com>

	* drivers/nutdrv_qx_megatec.c: trim battery.runtime variable

2025-09-05  Jim Klimov <jimklimov+nut@gmail.com>

	* .github/workflows/codeql.yml: fix syntax for codeql queries

2025-09-04  Jim Klimov <jimklimov+nut@gmail.com>

	* .github/workflows/codeql.yml: Revert ".github/workflows/codeql.yml:
	  use modern "language" ID "c-cpp""  This reverts commit
	  972358ec7663007419f0b1926d30f9f5a494d910.
	* .github/workflows/codeql.yml: enable ccache per scenario, follow
	  experience from networkupstools/wmnut#24
	* .github/workflows/codeql.yml: enable more codeql queries
	* .github/workflows/codeql.yml: relocate comments, drop dead code
	* .github/workflows/codeql.yml: avoid man-db update in APT actions
	* .github/workflows/codeql.yml: report the location and version of
	  compiler used
	* .github/workflows/codeql.yml: add a way to vary matrix.build-mode
	  for codeql
	* .github/workflows/codeql.yml: only init CodeQL just before the
	  actual build, not before other filesystem changes
	* .github/workflows/codeql.yml: use modern "language" ID "c-cpp"  "c"
	  and "cpp" are older names, now aliases to this one
	* .github/workflows/codeql.yml: revise markup and comments of the
	  matrix definition
	* .github/workflows/codeql.yml: Allow manually running the action,
	  e.g. if disabled after some quietness in the source

2025-09-03  Laurent Bigonville <bigon@bigon.be>

	* docs/Makefile.am: Fix installation of the pdf files

2025-09-03  Jim Klimov <jimklimov+nut@gmail.com>

	* docs/developers.txt: clarify use of "void" argument lists

2025-09-02  Jim Klimov <jimklimov+nut@gmail.com>

	* tools/nut-usbinfo.pl: update comment
	* tools/nut-usbinfo.pl: use binmode for written files to have same
	  markup regardless of builder OS
	* ci_build.sh: when reporting host envvars, use backslashes to
	  facilitate copy-paste reproduction of CI builds
	* ci_build.sh: when reporting CONFIGURING NUT, use backslashes to
	  facilitate copy-paste reproduction of CI builds
	* configure.ac, docs/configure.txt, m4/nut_check_python.m4,
	  NEWS.adoc: allow to configure Python module install location more
	  generally [#3062]
	* scripts/python/app/NUT-Monitor-py2gtk2.in,
	  scripts/python/app/NUT-Monitor-py3qt5.in,
	  scripts/python/app/NUT-Monitor-py3qt6.in:
	  scripts/python/app/NUT-Monitor-py*.in: try to honour a customized
	  PyNUT(Client) module path [#3062]

2025-09-02  Hector Martin <marcan@marcan.st>

	* drivers/apc_modbus.c: apc_modbus: Fix invalid memory access for USB
	  vendor/product/serial

2025-08-31  Jim Klimov <jimklimov+nut@gmail.com>

	* configure.ac, docs/configure.txt, m4/nut_check_python.m4,
	  NEWS.adoc: allow to configure PyNUT(Client) install location
	  [#3062]

2025-08-21  me <me@LIONINE>

	* drivers/upsdrvctl.c: In case of WIN32 build, most drivers are
	  located in "bin". but referred Relative running path, it is "sbin".
	  So changing to "NULL(running path)" to "bin"
	* scripts/Windows/wininit.c: nut.exe are call upsdrvctl.exe in bin.
	  but upsdrvctl.exe located in sbin. So, change bin to sbin.

2025-08-09  Colin Dean <colindean@users.noreply.github.com>

	* docs/download.txt, docs/nut.dict: Include macOS with Mac OS X
	  Apple shortened the name to "OS X" in 2011 and then changed it to
	  "macOS" in 2016 to align with the branding of Apple's other
	  operating systems.
	  https://en.wikipedia.org/w/index.php?title=MacOS&oldid=1304698699
	* docs/download.txt: Update download.txt with link to Homebrew
	  formula for macOS  nut has been in Homebrew since 2014.

2025-08-08  Jim Klimov <jimklimov+nut@gmail.com>

	* NEWS.adoc, UPGRADING.adoc: prepare for v2.8.5.x iterations
	* NEWS.adoc, UPGRADING.adoc, docs/docinfo.xml.in: Revert "NEWS.adoc,
	  UPGRADING.adoc, docs/docinfo.xml.in: finalize text before NUT
	  v2.8.4 release"  This reverts commit
	  8f14140bbc395baa108bd06a9f664bd0a6f00bc8.
	* tools/gitlog2version.sh: for development, set fallback
	  NUT_VERSION_DEFAULT=2.8.4.1

2025-07-30  Jim Klimov <jimklimov+nut@gmail.com>

	* docs/qa-guide.adoc: mention OBS [#1209]
	* obs/README.adoc, obs/Makefile.am, Makefile.am, configure.ac:
	  document the "obs" directory and cover it with scripting [#1209]
	* docs/qa-guide.adoc: move CodeQL up (alphabetically, and before
	  semi-defunct Travis)
	* docs/nut-versioning.adoc, docs/developers.txt: rename to "NUT
	  Semantic Versioning" consistently

2025-07-08  Jim Klimov <jimklimov+nut@gmail.com>

	* drivers/usbhid-ups.c, drivers/powercom-hid.c,
	  docs/man/usbhid-ups.txt, NEWS.adoc: introduce
	  powercom_sdcmd_discrete_delay flag for Powercom Raptor and Smart
	  KING Pro series [#3000]
	* drivers/powercom-hid.c: WIP fixes for discrete shutdown timings
	  (per RAPTOR RPT-1500AP LCD practice) - fix messages [#3000]
	* NEWS.adoc, drivers/powercom-hid.c: fix shutdown delays for Powercom
	  HID [#3000]
	* drivers/powercom-hid.c: WIP fixes for discrete shutdown timings
	  (per RAPTOR RPT-1500AP LCD practice) [#3000]  Authored-by:
	  https://github.com/aleka204

2024-12-30  Jim Klimov <jimklimov@gmail.com>

	* tests/nutlogtest.c: Standardize wording of "vs." over "vs"
	  (comments, messages, docs) to be consistent, take two

2024-01-31  Charles Lepple <clepple+nut@gmail.com>

	* drivers/tripplite_usb.c: add battery.charge for Protocol 3017
	  Reference: #2258

2024-01-25  Charles Lepple <clepple+nut@gmail.com>

	* drivers/tripplite_usb.c: Protocol 3017 adjustments  Reference:
	  #2258  SMX1200XLHG is 230V / 50 Hz

2023-02-28  Jim Klimov <jimklimov+nut@gmail.com>

	* common/str.c: str_ends_with(): update origin attribution

2022-02-10  Jim Klimov <jim@jimklimov.com>

	* obs/debian.rules: packaging/debian/rules: define a
	  systemdtmpfilesdir
	* obs/debian.rules: packaging/debian/rules: report PKG_CONFIG_PATH
	  default
	* obs/debian.control: packaging/debian/control: update "libmodbus5"
	  dependency name for Debian 11

2022-02-09  Jim Klimov <jim@jimklimov.com>

	* obs/debian.changelog, obs/debian.control,
	  obs/debian.nut-server.install, obs/debian.nut-server.manpages,
	  obs/nut-linux-i2c.install, obs/nut-linux-i2c.manpages,
	  obs/nut-modbus.install, obs/nut-modbus.manpages, obs/nut.dsc:
	  packaging/debian: update for nut-modbus and nut-linux-i2c driver
	  packages

2021-08-13  Clement <perrettecl@users.noreply.github.com>

	* obs/nut.dsc: Update nut.dsc

2021-08-12  Clement <perrettecl@users.noreply.github.com>

	* obs/debian.control: Update debian.control

2021-05-18  Clappier, Eric <EricClappier@Eaton.com>

	* obs/debian.libnutclientstub-dev.install: Remove lib static for
	  libnutclientstub dev install
	* obs/debian.rules: Fix issue in debian rules for libnutclientstub

2021-05-17  Clement <clementperrette@eaton.com>

	* obs/debian.control, obs/debian.libnutclientstub-dev.install,
	  obs/debian.libnutclientstub1.install,
	  obs/debian.libnutclientstub1.lintian-overrides: Add new package for
	  nut client stub

2021-05-04  Jim Klimov <jim@jimklimov.com>

	* obs/pkgsrc.obs: pkgsrc.obs: tell OBS pusher to append gitdate to
	  version (first line must be from a specific range of values)
	* obs/pkgsrc.obs: pkgsrc.obs: tell OBS pusher to append gitdate to
	  version

2021-02-10  Jim Klimov <jim@jimklimov.com>

	* obs/debian.nut-client.links, obs/debian.rules: obs packaging: avoid
	  warnings from systemd-sysv about legacy init scripts without a
	  service unit

2021-01-21  Jim Klimov <jim@jimklimov.com>

	* obs/debian.control, obs/nut.dsc: debian.rules, nut.dsc: rather ask
	  for dh-python | dh-python2 | dh-python3 | dh-pypy
	* obs/debian.control, obs/nut.dsc: debian.rules, nut.dsc: ask for
	  dh_python2 | dh_python3 | dh_pypy
	* obs/debian.rules: debian.rules: clarify that any python 2/3 is
	  okay, but we need an interpreter called "python" to be generic
	* obs/debian.control: debian.control: clarify that any python 2/3 is
	  okay, but we need an interpreter called "python" to be generic
	* obs/nut.dsc: nut.dsc: clarify that any python 2/3 is okay, but we
	  need an interpreter called "python" to be generic

2021-01-20  Jim Klimov <jim@jimklimov.com>

	* obs/debian.control, obs/nut.dsc: FTY OBS packaging: require
	  libsystemd-dev in the build root (to use pkgconfig systemd queries)

2020-03-14  Jim Klimov <jim@jimklimov.com>

	* obs/debian.nut-monitor.install: Fix formal 42ity packaging for
	  nut-monitor.png icon (recent master branch added different
	  resolutions)

2019-12-06  Jim Klimov <jim@jimklimov.com>

	* obs/debian.rules: debian.rules : fix away debian. prefix for *.in
	  templates
	* obs/debian.Makefile.in, ...n.nut-client.init =>
	  debian.nut-client.init.in}, ...mmon.postinst =>
	  debian.nut-common.postinst.in}, ...nut-common.prerm =>
	  debian.nut-common.prerm.in}, obs/debian.nut-common.tmpfiles,
	  obs/debian.nut-common.tmpfiles.in, ...n.nut-server.init =>
	  debian.nut-server.init.in}, ...nut-server.prerm =>
	  debian.nut-server.prerm.in}, obs/debian.rules: Introduce
	  "runbasedir" in debian packaging on OBS to use /run or /var/run as
	  appropriate

2019-04-12  Jim Klimov <jim@jimklimov.com>

	* obs/debian.control, obs/nut.dsc: Debian packaging: explicitly
	  request libssl*-dev so OBS is not confused for Debian 9 options
	* obs/nut.spec: nut.spec : do not fail making build dir trees
	* obs/debian.control, obs/nut.dsc: Debian packaging: explicitly
	  request libjpeg-dev so OBS is not confused for Debian 9 options

2019-04-03  Jim Klimov <jim@jimklimov.com>

	* obs/debian.rules: debian.rules : update SO_MAJOR_LIBUPSCLIENT for
	  42ity packaging

2019-02-20  Jim Klimov <jim@jimklimov.com>

	* obs/debian.rules: debian.rules : make sure wanted SONAMES exist
	  (numbers remained unchanged)
	* obs/debian.control, obs/debian.libnutclient0.lintian-overrides,
	  ...bnutclient0.install => debian.libnutclient1.install},
	  obs/debian.libnutclient1.lintian-overrides, obs/debian.rules,
	  obs/nut.dsc: Problem: libnutclient not found in consumer packaged
	  builds  Solution: update the hardcoded pathnames in recipes, leave
	  some comments for improvement

2018-12-06  Jim Klimov <jim@jimklimov.com>

	* obs/debian.control: debian.control : nut-ipmi should have run-time
	  deps on IPMI libs
	* obs/debian.control: debian.control : rephrase nut-server
	  description

2018-10-05  Jim Klimov <jim@jimklimov.com>

	* obs/debian.nut-server.postinst: debian.nut-server.postinst :
	  REPORT_RESTART_42=no when reconfiguring
	* obs/debian.nut-server.postinst: nut-driver-enumerator : use
	  --reconfigure to remake units from scratch in Debian postinstall

2018-09-28  Jim Klimov <jim@jimklimov.com>

	* obs/debian.nut-client.postinst, obs/debian.nut-common.postinst,
	  obs/debian.nut-server.postinst: nut-(client|server|common).postinst
	  : skip DEBHELPER in our case

2018-09-27  Jim Klimov <jim@jimklimov.com>

	* obs/debian.control: debian.control : "nut-server" should have no
	  business requiring "nut-client"
	* obs/debian.control: debian.control : have "nut" metapackage
	  explicitly depend on nut-common to pre-create things
	* obs/debian.control: debian.control : new nut-common has no opinion
	  about old nut-hal-drivers
	* obs/debian.nut-client.postinst, obs/debian.nut-common.postinst,
	  obs/debian.nut-server.postinst: debian.nut-*.post/pre-inst/rm : do
	  not fail package installation if could not start services
	* obs/debian.nut-client.postinst, obs/debian.nut-client.prerm,
	  obs/debian.nut-common.postinst, obs/debian.nut-common.prerm,
	  obs/debian.nut-server.postinst, obs/debian.nut-server.prerm:
	  debian.nut-*.post/pre-inst/rm : call /bin/systemctl only on systems
	  where it is available, and do not block on attempts to start the
	  services

2018-09-26  Jim Klimov <jim@jimklimov.com>

	* obs/debian.control: debian.control : reference nut-common
	* obs/debian.rules: debian.rules : deliver one nut-common.conf
	  tmpfiles config instead of two same files for client and server
	* obs/debian.control: debian.control : update sub-driver packages to
	  rely on just the nut-server package, not nut metapackage
	* obs/debian.control: debian.control : clarify where packages provide
	  clients for "a local or remote NUT server"
	* obs/debian.nut-client.prerm, obs/debian.nut-common.prerm,
	  obs/debian.nut-server.prerm: Add systemd shutdown of installed
	  units during uninstallation of the packages
	* obs/debian.nut-client.postinst, obs/debian.nut-common.postinst,
	  obs/debian.nut-server.postinst: Add systemd startup of installed
	  units
	* obs/debian.nut-client.postinst, obs/debian.nut-common.postinst,
	  obs/debian.nut-server.postinst: Add systemd registration of
	  installed units
	* obs/debian.control, obs/debian.nut-cgi.postinst,
	  obs/debian.nut-client.postinst, obs/debian.nut-common.install,
	  obs/debian.nut-common.postinst, obs/debian.nut-common.prerm,
	  ...-client.tmpfiles => debian.nut-common.tmpfiles},
	  obs/debian.nut-server.postinst, obs/debian.nut-server.tmpfiles,
	  obs/debian.rules: Introduce (debian) nut-common package for user
	  account and shared FS objects

2018-09-06  Jim Klimov <jim@jimklimov.com>

	* obs/nut.spec: nut.spec : do not use the configure macro
	* obs/nut.spec: nut.spec : do not use the configure macro

2018-09-05  Jim Klimov <jim@jimklimov.com>

	* obs/nut.spec: nut.spec : do not redefine (differently) paths set by
	  %configure macro, try to set them directly
	* obs/nut.spec: nut.spec : whitespace
	* obs/nut.spec: nut.spec : remove commented-away references to
	  private OBS patches that are not used anymore

2018-09-03  Jim Klimov <jim@jimklimov.com>

	* obs/debian.nut-server.install, obs/nut.spec: nut.spec : fix RPM
	  packaging for OBS

2018-01-15  Jim Klimov <jim@jimklimov.com>

	* obs/nut.spec: nut.spec : avoid "nut" vs "nut-drivers-net" conflict
	  over gen-snmp-subdriver.sh

2018-01-03  Jim Klimov <jim@jimklimov.com>

	* obs/nut.spec: nut.spec : publish augeas files

2018-01-02  Jim Klimov <jim@jimklimov.com>

	* obs/debian.control, obs/debian.rules, obs/nut.dsc: Debian packaging
	  : require pkg-config, and provide some fallbacks if systemd dirs
	  are unknown
	* obs/nut.spec: nut.spec : suse wants a package
	* obs/nut.spec: nut.spec : dist augeas files
	* obs/debian.rules, obs/nut.spec: Packaging : pass the systemd*dir
	  arguments to configure script
	* obs/nut.spec: nut.spec : use proper systemdshutdowndir relevant for
	  current distro/arch
	* obs/nut.spec: nut.spec : fix "bindir" macro to "_bindir"

2017-12-31  Jim Klimov <jim@jimklimov.com>

	* obs/debian.rules: debian.rules : avoid re-configuring before "make
	  install" again
	* obs/debian.rules, obs/nut.spec: packaging : use
	  --with-docs=man=dist-auto

2017-10-19  Jim Klimov <jim@jimklimov.com>

	* obs/debian.compat, obs/debian.rules: Use DH_COMPAT=10 to enable
	  parallel build support by default

2017-10-13  Jim Klimov <jim@jimklimov.com>

	* obs/debian.rules: debian.rules : enable parallelized packaging

2017-04-12  Jim Klimov <jim@jimklimov.com>

	* obs/debian.nut-server.install: Drop remaining references to
	  oldmge-shut

2016-10-06  Arnaud Quette <arnaud.quette@free.fr>

	* obs/nut.spec: Distribute gen-snmp-subdriver.sh with nut-snmp for
	  RPM
	* obs/debian.nut-snmp.install, obs/debian.rules: Distribute
	  gen-snmp-subdriver.sh with nut-snmp

2016-09-22  Jim Klimov <jim@jimklimov.com>

	* obs/debian.rules: debian.rules : skip even the manpages if the host
	  cannot build them
	* obs/debian.rules: debian.rules : whitespace fixes
	* obs/debian.rules, obs/nut.dsc, obs/nut.spec: nut.dsc / nut.spec :
	  do not request rebuild and revalidation of DMF files - they were
	  tested in Jenkins NUT-master job (remove build dependency on
	  pycparser and speed up the build)
	* obs/nut.spec: nut.spec : try to fix inability to detect LUA on some
	  RPM buildhosts

2016-09-14  Jim Klimov <jim@jimklimov.com>

	* obs/debian.libnutscan1.install, obs/debian.nut-snmp.install:
	  debian.nut-snmp.install debian.libnutscan1.install : fix conflict
	  for dmfnutscan resource dirs delivered by both packages
	* obs/nut.spec: nut.spec : fix mixed spaces vs tabs
	* obs/debian.nut-snmp.install, obs/nut.spec: RPM/DEB : deliver the
	  sorted symlinks in packages

2016-08-19  Jim Klimov <jim@jimklimov.com>

	* obs/debian.control, obs/nut.dsc, obs/nut.spec: OBS: Try to rectify
	  package numbering and dependencies of sub-packages for Debian
	* obs/nut.dsc, obs/nut.spec: Build Requires python-pycparser
	* obs/nut.spec: OBS nut.spec : make manpages optional
	* obs/nut.spec: OBS nut.spec : fix LUA requirement at == 5.1 (not >=
	  5.1)
	* obs/nut.spec: nut.spec : make asciidoc a common dependency
	* obs/debian.rules, obs/nut.spec: OBS : try to call autogen.sh before
	  configuring sources
	* obs/nut.spec: OBS nut.spec : use common tarball filename pattern
	* obs/nut.dsc: OBS nut.dsc : comment away DEBTRANSFORM of teh tarball
	* obs/debian.nut-snmp.install, obs/nut.spec: Update OBS packaging to
	  deliver bin/nut-scanner-reindex-dmfsnmp
	* obs/debian.nut-snmp.install, obs/debian.rules, obs/nut.spec: Update
	  packaging files to install DMF data files
	* obs/control: Seems OBS mkpac.sh wants a file named "control" in any
	  debian-pkg directory type (obs/ too)

2016-08-18  Jim Klimov <jim@jimklimov.com>

	* obs/debian.Makefile.am, obs/debian.Makefile.in, obs/debian.NEWS,
	  obs/debian.changelog, obs/debian.compat, obs/debian.control,
	  obs/debian.copyright, obs/debian.description.subst,
	  obs/debian.gbp.conf, obs/debian.hotplug,
	  obs/debian.libnutclient-dev.install,
	  obs/debian.libnutclient-dev.manpages,
	  obs/debian.libnutclient0.install,
	  obs/debian.libnutclient0.lintian-overrides,
	  obs/debian.libnutscan-dev.install, obs/debian.libnutscan1.install,
	  obs/debian.libups-nut-perl.install,
	  obs/debian.libupsclient-dev.install,
	  obs/debian.libupsclient-dev.manpages,
	  obs/debian.libupsclient4.install, obs/debian.nut-cgi.README.Debian,
	  obs/debian.nut-cgi.docs, obs/debian.nut-cgi.install,
	  obs/debian.nut-cgi.manpages, obs/debian.nut-cgi.postinst,
	  obs/debian.nut-cgi.postrm, obs/debian.nut-client.init,
	  obs/debian.nut-client.install, obs/debian.nut-client.links,
	  obs/debian.nut-client.lintian-overrides,
	  obs/debian.nut-client.maintscript, obs/debian.nut-client.manpages,
	  obs/debian.nut-client.postinst, obs/debian.nut-client.preinst,
	  obs/debian.nut-client.tmpfiles,
	  obs/debian.nut-doc.doc-base.nut-developer-guide,
	  obs/debian.nut-doc.doc-base.nut-faq,
	  obs/debian.nut-doc.doc-base.nut-packager-guide,
	  obs/debian.nut-doc.doc-base.nut-user-manual,
	  obs/debian.nut-doc.install, obs/debian.nut-ipmi.install,
	  obs/debian.nut-ipmi.manpages, obs/debian.nut-monitor.install,
	  obs/debian.nut-monitor.menu, obs/debian.nut-monitor.xpm,
	  obs/debian.nut-powerman-pdu.install,
	  obs/debian.nut-powerman-pdu.manpages, obs/debian.nut-server.dirs,
	  obs/debian.nut-server.init, obs/debian.nut-server.install,
	  obs/debian.nut-server.manpages, obs/debian.nut-server.postinst,
	  obs/debian.nut-server.postrm, obs/debian.nut-server.preinst,
	  obs/debian.nut-server.prerm, obs/debian.nut-server.tmpfiles,
	  obs/debian.nut-snmp.docs, obs/debian.nut-snmp.install,
	  obs/debian.nut-snmp.manpages, obs/debian.nut-xml.install,
	  obs/debian.nut-xml.manpages, obs/debian.nut.README.Debian,
	  obs/debian.nut.TODO.Debian, obs/debian.nut.docs,
	  obs/debian.python-nut.install, obs/debian.rules, obs/debian.series,
	  obs/debian.watch, obs/nut.changes, obs/nut.dsc, obs/nut.spec: Added
	  packaging metadata used by OBS as of 2016-08-18 (except
	  debian.series)
