To create new wiki account, please join us on #znc at Libera.Chat and ask admins to create a wiki account for you. You can say thanks to spambots for this inconvenience.

ChangeLog/1.9.0: Difference between revisions

From ZNC
Jump to navigation Jump to search
No edit summary
 
(60 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{ChangeLog}}
{{ChangeLog}}


<!-- The following is generated via this command:
== New ==
HEAD=$(git rev-parse master) ; echo "Last update at $HEAD" ; echo ; git log --format='* %s {{git|%h}}' --no-merges znc-0.098..$HEAD | cat
* Support for [https://ircv3.net/specs/extensions/capability-negotiation capability negotiation] 302 and <code>cap-notify</code>. ZNC now has API <code>AddServerDependentCapability()</code>, using which modules can easily implement new capabilities: if server supports a cap, it will automatically be offered to clients which support <code>cap-notify</code> and ZNC will notify the module when the capability is enabled or disabled for server and for each client. {{GH|1859}}
-->
** Several capabilities ([https://ircv3.net/specs/extensions/away-notify away-notify], [https://ircv3.net/specs/extensions/account-notify account-notify], [https://ircv3.net/specs/extensions/extended-join extended-join]) were moved from the core to a new module: corecaps.
** The [[corecaps]] module is loaded automatically when upgrading from old config and when creating new config, but it's possible to unload it.
*** Note: users who were using pre-release versions of 1.9.x (from git or from nightly tarballs) won't have it loaded automatically, because the existing config states <code>Version = 1.9</code>. In such case you can load it manually. This is to honor choice of users who decide to unload it, since we don't know whether the module is missing intentionally.
** Added support for [https://ircv3.net/specs/extensions/account-tag account-tag] capability, also in corecaps module {{GH|1746}}
* Updated password hashing algorithm from SHA-256 to [[wikipedia:Argon2|Argon2id]] (if libargon2 is installed). Existing passwords are transparently upgraded upon login. {{GH|1879}}
* Allow ordering of channels: via ListChans, MoveChan and SwapChans commands, and via webadmin {{GH|1744}}
* New user options: DenySetIdent, DenySetNetwork, DenySetRealName, DenySetQuitMsg, DenySetCTCPReplies {{GH|1814}}
* Switch --makeconf wizard default network from freenode to Libera
* Added Portuguese and Turkish translations
* znc-buildmod: output where the module was written to
 
== Fixes ==
* Fixed crash when receiving SASL lines from server without having negotiated SASL via CAP
* Fixed build with SWIG 4.2.0
* Fixed build with LibreSSL {{GH|1828}}
* Fixed handling of timezones when parsing server-time tags received from server {{GH|1857}} {{GH|1773}}
* Use module names as the module ident, otherwise some clients were merging conversations with different modules together. {{GH|1874}}
* Stopped sending invalid 333 (RPL_TOPICWHOTIME) to client if topic owner is unknown {{GH|1889}}
* Fixed an ODR violation {{GH|1835}}
* Better hide password in PASS debug lines, sometimes it was not hidden
* CAP REQ sent by client without CAP LS now suspends the registration as the spec requires {{GH|1820}}


<!-- Last update at eb607b9736386844dc1aac6005d6ec95e270f0c0 -->
== Modules ==
* [[autoop]]: In some cases settings were parsed incorrectly, resulting in failure to do the autoop, now it's fixed
* [[clientnotify]]: Added options to reduce amount of notifications depending on the IP and the client ID of the connecting client {{GH|1843}}
* [[controlpanel]]: Fixed help output
* [[log]]: Log nickserv account in the joins lines. {{GH|1870}}
* [[modperl]]: Allow overriding label for timers, which means now there can be more than 1 timer per module
* [[modpython]]:
** Rewrote internals of how modpython loads modules. {{GH|1724}}
*** Main motivation for the switch from using <code>imp</code> to using <code>importlib</code> was to support Python 3.12+.
*** As an additional benefit, now it's possible to structure the module as a python package (a subdirectory with <code>__init__.py</code> and other .py files).
*** All the old python modules should load as they were before.
*** ZNC no longer supports loading a C python extension directly through modpython (though I doubt there were any users of that obscure feature): if you want to some parts of the module to be compiled, you can always import that from <code>__init__.py</code>.
** Implemented Module.AddCommand() {{GH|1832}} {{GH|1833}}
* [[route_replies]]:
** Added Solanum-specific 337 (RPL_WHOISTEXT) to possible replies of /whois {{GH|1881}}
** Route replies to /topic
* [[sasl]]: Don't forward 908 (RPL_SASLMECHS) to clients {{GH|1756}}
* [[webadmin]]: Fixed order of breadcrumbs in network page
* [[watch]]: Allow new entries to use spaces {{GH|1822}}


See https://github.com/znc/znc/compare/znc-{{ZNC-Version}}...master for a list of changes since {{ZNC-Version}} stable.
== Notes for package maintainers ==
* Require C++17 compiler. That is, GCC 8+ or Clang 5+. {{GH|1887}}
* Removed autoconf, leaving only CMake as the build system. The <code>configure</code> script is now merely a wrapper for CMake, and accepts mostly the same parameters as the old <code>configure</code>. You can use either <code>configure</code> as before, or CMake directly. Minimum supported CMake version is 3.13.
* If cctz library is available on the system, it will be used, otherwise the bundled copy will be used
* libargon2 is new optional dependency
* Dropped support for Python < 3.4
* Dropped support for SWIG < 4.0.1
* The systemd unit now passes <code>--datadir=/var/lib/znc</code>


== New ==
* Remove autoconf, leave only CMake as the build system. The old <code>configure</code> script is now merely a wrapper for CMake, and accepts mostly the same parameters as the old <code>configure</code>.
== Fixes ==
* Don't send 333 (RPL_TOPICWHOTIME) to client if topic owner is unknown {{GH|1889}}
== Modules ==
== Internal ==
== Internal ==
 
* Switched to steady clock for cache map and for sockets to fix certain issues with leap seconds and DST
* Add argon to readme {{git|8d34d9c8}}
* Made <code>CUser::Put...()</code> send to all clients instead of only networkless clients. Deprecate CUser::PutAllUser()
* Bump docker/metadata-action from 4 to 5 {{git|b54eddd5}}
* Setup Github Actions to replace old Travis CI setup
* Bump github/codeql-action from 2 to 3 {{git|b7035977}}
* Added CIFuzz {{GH|1845}}
* Bump actions/checkout from 3 to 4 {{git|49b2852d}}
* Added CodeQL {{GH|1846}}
* Bump docker/login-action from 2 to 3 {{git|2281e007}}
* List of translators is now automatically generated from Crowdin
* Bump docker/build-push-action from 3 to 5 {{git|3b3bbb92}}
* Modernized the way how CMake is used
* Make modperl support AddServerDependentCapability {{git|2b3b224b}}
* Updated default SSL settings from Mozilla recommendations
* Make modpython work with server-dependent caps {{git|efd136c0}}
* Rewrote message parsing using std::string_view, improving the performance of the parser {{GH|1785}}
* Move extended-join test to integration test {{git|4b1a524a}}
* Web: removed legacy xhtml syntax {{GH|1723}}
* Add comments {{git|e2508d97}}
* Documented more functions
* Code cleanup {{git|b1009bd8}}
* Made some integration tests run faster by changing ServerThrottle value in the test
* Modulefy core server-dependent caps {{git|f7ff0ee3}}
* Improve test {{git|da391924}}
* Add CCapability {{git|99e6869b}}
* in theory support non-network modules too {{git|23675544}}
* The test is now working {{git|b5a6ff52}}
* Progress: CAP NEW is sent to client {{git|7ee38927}}
* Set ServerThrottle=5 in integration test {{git|2605370f}}
* Update comments, namespace some internal modpython functions {{git|64ce25e5}}
* Fix build with SWIG 4.2.0 {{git|3f4c1cce}}
* Force argon support in CI {{git|6aef3155}}
* Progress {{git|66137bd8}}
* Welcome to 2024 [skip ci] {{git|17a004aa}}
* Add comments to header {{git|52a9752e}}
* Force argon support in CI {{git|a2ac2431}}
* Cleanup ZNC_LVREFQUAL {{git|0a355636}}
* Require C++ version via cmake features {{git|157095fd}}
* Use std::variant to save a bit of RAM {{git|9835f769}}
* Use std::string_view instead of backported one {{git|ba0351e4}}
* Use C++17 {{git|53f0751f}}
* Fix modpython to show list of available modules {{git|aa501665}}
* Update docker alpine to 3.18 {{git|bf5805d9}}
* Add a comment {{git|ce04d4c6}}
* Bump cmake requirements in subprojects too {{git|2b9a582d}}
* Use llvm-cov in macos CI {{git|72d1544d}}
* Try to simplify building modules {{git|afe94158}}
* Maybe fix znc-buildmod on macos {{git|66faa38f}}
* Use use_homebrew in znc-buildmod {{git|40875f1d}}
* Pass list of deps to modperl and modpython bindings too {{git|57188cda}}
* Apple libsasl2 is still missing the .pc file {{git|5f2f3b29}}
* Re-enable macos CI {{git|31e883f4}}
* Maybe fix macos build again {{git|901c3180}}
* Add necessary find_dependency() to ZNCConfig.cmake {{git|1987eb37}}
* Maybe fix build on macos {{git|a69e6b85}}
* Use imported targets in cmake more consistently {{git|4228754f}}
* Update route_replies.cpp {{git|8c00ddb3}}
* route_replies: add 337 to whois {{git|b5edca59}}
* Update password hashes from SHA-256 to Argon2id {{git|a1a254be}}
* Use module names as the module ident. {{git|ee9ad2ff}}
* Add TODO entry to move account logic to a separate method. {{git|1240ddc6}}
* sAccount for consistency {{git|0a0ce543}}
* Add account to joins for the log module. {{git|47b815ae}}
* Don't duplicate the map of cap handlers per client {{git|50a3226b}}
* Move CClient constructor body to .cpp {{git|9eebb1ff}}
* Remove done todo {{git|64da93f7}}
* Show more details how exactly cctz is used {{git|3a5f8901}}
* Fix build with old cmake {{git|e6ffa045}}
* Switch to upstream cctz {{git|c5643d71}}
* cygwin qt doesn't know qsizetype yet {{git|d532dcbd}}
* Implement cap negotiation 3.2 on server side {{git|c15fc63c}}
* Make it possible for modules to send values in CAP LS {{git|d49168b9}}
* Send multiline CAP LS response for IRCv3.2 clients {{git|b57d794a}}
* Remove coverity badge too {{git|f2ebee26}}
* Update badges {{git|525aac56}}
* Use patched cctz for now {{git|6f199ac0}}
* Add test for different timezones {{git|4fc9429d}}
* Upload tarball as artifact in CI {{git|87af1a1a}}
* Build cctz as part of znclib when not found {{git|9de3f908}}
* Split dependencies of znclib target {{git|f9693e47}}
* Copy relevant parts of cctz to the tarball {{git|aaead6f1}}
* Use std::chrono and cctz instead of messing with TZ {{git|64359328}}
* Use steady clock for cache map {{git|c5befe3d}}
* Update Csocket submodule {{git|42fdf9b4}}
* CI: update comment {{git|7c6dc23f}}
* Bump docker/build-push-action from 2 to 3 {{git|9e5cf050}}
* Welcome to 2023 {{git|f9fd05c3}}
* Add ParseServerTime TZ fix and tests {{git|2a6a1d70}}
* Add Portuguese translations/ files {{git|aebdf764}}
* CI: Update instructions how to setup freebsd image {{git|f61eed7b}}
* Bump actions/checkout from 2 to 3 {{git|f0b3d313}}
* Bump codecov/codecov-action from 1 to 3 {{git|1358b720}}
* Bump actions/upload-artifact from 2 to 3 {{git|f60256d4}}
* Bump docker/login-action from 1 to 2 {{git|4d1f4c6a}}
* Bump docker/metadata-action from 3 to 4 {{git|d019b588}}
* Check for github action updates monthly {{git|187b2ce2}}
* CI: stop testing on 32bit cygwin {{git|1016c44c}}
* Add CodeQL workflow {{git|1e455424}}
* Fuzzer: add comment {{git|c98d0246}}
* docker: update alpine to 3.17 {{git|1bbcff08}}
* Update message in clientnotify to tell what ID is that {{git|da314683}}
* CI: add CIFuzz GitHub action {{git|2fd304fe}}
* formatting commit {{git|5eb2be27}}
* split up the option into two separate ones {{git|876b3d41}}
* re-add the ip to the user message {{git|1e90b8a1}}
* implement the new notification logic {{git|5fb8891d}}
* add test for the "clientnotify" module {{git|bcf6e2fb}}
* allow identifiers in the test setup {{git|8562f613}}
* Add support SWIG 4.1.0, drop support for < 4.0.1 {{git|fecdd989}}
* CI: Update usage of rebaseall on cygwin {{git|08ca309f}}
* Make CUser::Put* send to all clients {{git|c55237be}}
* Fix an ODR violation {{git|3e45b2f3}}
* Test module translation of commands {{git|9c855b5c}}
* Rename cmd/desc to command/description {{git|e0c05ddb}}
* modules: modpython: Implement Module.AddCommand() {{git|94f1c327}}
* CI: update crowdin contributors file in utf-8 {{git|ed49d6c0}}
* DH_set0_pqg and DH_get0_key have existed since LibreSSL 2.7 {{git|7c8ac898}}
* Add test for watch with spaces {{git|c87192fb}}
* Allow spaces when adding new pattern {{git|34aece32}}
* Welcome to 2022 The same procedure as last year, Miss Sophie? Same procedure as every year, James. {{git|6402d241}}
* Don't crash when receiving SASL lines from server without having negotiated SASL via CAP {{git|6f28db4a}}
* Fix order of breadcrumbs in network page in webadmin {{git|465cb66b}}
* Fix build with libressl {{git|dcb5f3df}}
* wip {{git|675024b5}}
* Dockerfile: Switch from libressl to openssl {{git|dde59a24}}
* Fix coverage for C++ on github actions {{git|29142359}}
* Build but not push docker on pull requests {{git|315da8e1}}
* Add tests for deny options {{git|8a9423d3}}
* Add more deny options {{git|fe475e1e}}
* Port updater of docs.znc.in from travis to github actions {{git|8be5e4ce}}
* Replace github actions badge with one via shields.io for consistency {{git|01877fcb}}
* Replace Travis badge with Github Actions {{git|22cb2d1e}}
* Fix tarball testing in github actions after .github/ removal {{git|5b5085e4}}
* Docker git version: fix versio, update alpine {{git|c97e2b18}}
* Remove .github/ from tarball {{git|71321a2b}}
* CI: Remove ' symbol where it shouldn't be {{git|acda0eab}}
* Setup github actions {{git|bcbdce2d}}
* Fix integration test after switch to libera {{git|68864541}}
* Fixed missing paragraph closing tag {{git|2a733cc9}}
* Hide password in PASS debug lines without : in trailing param {{git|e7b6a771}}
* Switch --makeconf wizard from freenode to libera {{git|15e2351d}}
* route_replies: route TOPIC requests to client {{git|9ff9fa7c}}
* move IRC channel to Libera.Chat {{git|3c3a445a}}
* Rewrite message parsing using string_view {{git|fd71a69f}}
* Fix controlpanel output {{git|4393b9d9}}
* change message when staying in foreground {{git|57c94b8b}}
* Welcome to 2021 {{git|99687b0f}}
* znc-buildmod: output where the module was written to {{git|25a88004}}
* Fix znc-buildmod -v in cmake build {{git|a2d16817}}
* Fix other skins for #1744 {{git|d505a6d4}}
* Allow reordering of channels in webadmin {{git|92d04e6a}}
* List channels in order in webadmin {{git|3ff5aaf4}}
* Add MoveChan and SwapChans commands {{git|99b33ead}}
* Update default SSL settings from Mozilla recommmendations {{git|b80d674c}}
* Fix path in systemd service (which shouldn't be here at all) {{git|d4bfd143}}
* Don't load modperl as a python module {{git|47e633b2}}
* WIP fix autotop {{git|38081d5a}}
* sasl: don't forward 908 numeric to clienT {{git|f9fc9b40}}
* Dockerfile: upgrade Alpine to 3.12 {{git|eeea60f5}}
* Use 1.8.x again {{git|a11866fe}}
* Show channel indexes in ListChans command {{git|dbd47b24}}
* Respect order of subconfigs in znc.conf {{git|926d140a}}
* Add test for account-tag capability {{git|cf547264}}
* Cleanup capabilities from m_ssAcceptedCaps in CClient::ClearServerDependentCaps after CAP DEL {{git|f5c3ea40}}
* Add support for cap account-tag {{git|c79961c5}}
* modperl: allow overriding timer label {{git|1c9cb3f8}}
* CI: Try to fix coverity setup {{git|c04544c1}}
* Remove merge conflicts from .po files {{git|fd24fa67}}
* Web: remove legacy xhtml syntax (#1723) {{git|17ec6095}}
* CI: the file now exists {{git|2b8f0dd3}}
* Fix the new CI script {{git|ff064e3a}}
* CI: try to show who helped to translate ZNC {{git|0f413ea3}}
* Update README about new python {{git|9ea9d308}}
* Fix PY_SSIZE_T_CLEAN python warning {{git|e8ff1612}}
* Rewrite how modpython loads modules {{git|b3b38956}}
* Appveyor: avoid the symlink {{git|9a909b86}}
* Looks like appveyor cygwin doesn't like such symlinks. Make it explicitly relative {{git|3bd7c899}}
* Update comment {{git|87ed28f7}}
* Rename configure.sh cmake wrapper to configure {{git|84d8375a}}

Latest revision as of 19:31, 10 February 2024

← 1.8.2 ZNC 1.9.0 git →


New

  • Support for capability negotiation 302 and cap-notify. ZNC now has API AddServerDependentCapability(), using which modules can easily implement new capabilities: if server supports a cap, it will automatically be offered to clients which support cap-notify and ZNC will notify the module when the capability is enabled or disabled for server and for each client. (#1859)
    • Several capabilities (away-notify, account-notify, extended-join) were moved from the core to a new module: corecaps.
    • The corecaps module is loaded automatically when upgrading from old config and when creating new config, but it's possible to unload it.
      • Note: users who were using pre-release versions of 1.9.x (from git or from nightly tarballs) won't have it loaded automatically, because the existing config states Version = 1.9. In such case you can load it manually. This is to honor choice of users who decide to unload it, since we don't know whether the module is missing intentionally.
    • Added support for account-tag capability, also in corecaps module (#1746)
  • Updated password hashing algorithm from SHA-256 to Argon2id (if libargon2 is installed). Existing passwords are transparently upgraded upon login. (#1879)
  • Allow ordering of channels: via ListChans, MoveChan and SwapChans commands, and via webadmin (#1744)
  • New user options: DenySetIdent, DenySetNetwork, DenySetRealName, DenySetQuitMsg, DenySetCTCPReplies (#1814)
  • Switch --makeconf wizard default network from freenode to Libera
  • Added Portuguese and Turkish translations
  • znc-buildmod: output where the module was written to

Fixes

  • Fixed crash when receiving SASL lines from server without having negotiated SASL via CAP
  • Fixed build with SWIG 4.2.0
  • Fixed build with LibreSSL (#1828)
  • Fixed handling of timezones when parsing server-time tags received from server (#1857) (#1773)
  • Use module names as the module ident, otherwise some clients were merging conversations with different modules together. (#1874)
  • Stopped sending invalid 333 (RPL_TOPICWHOTIME) to client if topic owner is unknown (#1889)
  • Fixed an ODR violation (#1835)
  • Better hide password in PASS debug lines, sometimes it was not hidden
  • CAP REQ sent by client without CAP LS now suspends the registration as the spec requires (#1820)

Modules

  • autoop: In some cases settings were parsed incorrectly, resulting in failure to do the autoop, now it's fixed
  • clientnotify: Added options to reduce amount of notifications depending on the IP and the client ID of the connecting client (#1843)
  • controlpanel: Fixed help output
  • log: Log nickserv account in the joins lines. (#1870)
  • modperl: Allow overriding label for timers, which means now there can be more than 1 timer per module
  • modpython:
    • Rewrote internals of how modpython loads modules. (#1724)
      • Main motivation for the switch from using imp to using importlib was to support Python 3.12+.
      • As an additional benefit, now it's possible to structure the module as a python package (a subdirectory with __init__.py and other .py files).
      • All the old python modules should load as they were before.
      • ZNC no longer supports loading a C python extension directly through modpython (though I doubt there were any users of that obscure feature): if you want to some parts of the module to be compiled, you can always import that from __init__.py.
    • Implemented Module.AddCommand() (#1832) (#1833)
  • route_replies:
    • Added Solanum-specific 337 (RPL_WHOISTEXT) to possible replies of /whois (#1881)
    • Route replies to /topic
  • sasl: Don't forward 908 (RPL_SASLMECHS) to clients (#1756)
  • webadmin: Fixed order of breadcrumbs in network page
  • watch: Allow new entries to use spaces (#1822)

Notes for package maintainers

  • Require C++17 compiler. That is, GCC 8+ or Clang 5+. (#1887)
  • Removed autoconf, leaving only CMake as the build system. The configure script is now merely a wrapper for CMake, and accepts mostly the same parameters as the old configure. You can use either configure as before, or CMake directly. Minimum supported CMake version is 3.13.
  • If cctz library is available on the system, it will be used, otherwise the bundled copy will be used
  • libargon2 is new optional dependency
  • Dropped support for Python < 3.4
  • Dropped support for SWIG < 4.0.1
  • The systemd unit now passes --datadir=/var/lib/znc

Internal

  • Switched to steady clock for cache map and for sockets to fix certain issues with leap seconds and DST
  • Made CUser::Put...() send to all clients instead of only networkless clients. Deprecate CUser::PutAllUser()
  • Setup Github Actions to replace old Travis CI setup
  • Added CIFuzz (#1845)
  • Added CodeQL (#1846)
  • List of translators is now automatically generated from Crowdin
  • Modernized the way how CMake is used
  • Updated default SSL settings from Mozilla recommendations
  • Rewrote message parsing using std::string_view, improving the performance of the parser (#1785)
  • Web: removed legacy xhtml syntax (#1723)
  • Documented more functions
  • Made some integration tests run faster by changing ServerThrottle value in the test