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
KindOne (talk | contribs)
m Correct typo.
 
(58 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{ChangeLog}}
{{ChangeLog}}
<!-- The following is generated via this command:
HEAD=$(git rev-parse master) ; echo "Last update at $HEAD" ; echo ; git log --format='* %s {{git|%h}}' --no-merges znc-0.098..$HEAD | cat
-->
<!-- Last update at eb607b9736386844dc1aac6005d6ec95e270f0c0 -->
See https://github.com/znc/znc/compare/znc-{{ZNC-Version}}...master for a list of changes since {{ZNC-Version}} stable.


== New ==
== New ==
* Require C++17 compiler. That is, GCC 8+ or Clang 5+.
* 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}}
* Remove autoconf, leave 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>. Minimum supported CMake version is 3.13.
** 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 version of 1.9.x''' (from git or from nightly tarballs) will NOT have this module loaded automatically, because the existing config states <code>Version = 1.9</code>. This is to honor choice of users who decide to unload it, since we don't know whether the module is missing intentionally. You MUST manually load this module if you have clients or scripts that depends on away-notify, account-notify, account-tag, and/or extended-join.
** 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 ==
== Fixes ==
* Don't send 333 (RPL_TOPICWHOTIME) to client if topic owner is unknown {{GH|1889}}
* Fixed crash when receiving SASL lines from server without having negotiated SASL via CAP
* Fix build with SWIG 4.2.0
* 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}}


== Modules ==
== 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}}
== 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>
== Internal ==
== Internal ==
 
* Switched to steady clock for cache map and for sockets to fix certain issues with leap seconds and DST
* Make modperl support AddServerDependentCapability {{git|2b3b224b}}
* Made <code>CUser::Put...()</code> send to all clients instead of only networkless clients. Deprecate CUser::PutAllUser()
* Make modpython work with server-dependent caps {{git|efd136c0}}
* Setup Github Actions to replace old Travis CI setup
* Move extended-join test to integration test {{git|4b1a524a}}
* Added CIFuzz {{GH|1845}}
* Add comments {{git|e2508d97}}
* Added CodeQL {{GH|1846}}
* Code cleanup {{git|b1009bd8}}
* List of translators is now automatically generated from Crowdin
* Modulefy core server-dependent caps {{git|f7ff0ee3}}
* Modernized the way how CMake is used
* Improve test {{git|da391924}}
* Updated default SSL settings from Mozilla recommendations
* Add CCapability {{git|99e6869b}}
* Rewrote message parsing using std::string_view, improving the performance of the parser {{GH|1785}}
* in theory support non-network modules too {{git|23675544}}
* Web: removed legacy xhtml syntax {{GH|1723}}
* The test is now working {{git|b5a6ff52}}
* Documented more functions
* Progress: CAP NEW is sent to client {{git|7ee38927}}
* Made some integration tests run faster by changing ServerThrottle value in the test
* Set ServerThrottle=5 in integration test {{git|2605370f}}
* Update comments, namespace some internal modpython functions {{git|64ce25e5}}
* Progress {{git|66137bd8}}
* Add comments to header {{git|52a9752e}}
* Cleanup ZNC_LVREFQUAL {{git|0a355636}}
* Fix modpython to show list of available modules {{git|aa501665}}
* Add a comment {{git|ce04d4c6}}
* 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}}
* 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}}
* 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}}
* 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}}
* 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}}

Latest revision as of 07:26, 29 May 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 version of 1.9.x (from git or from nightly tarballs) will NOT have this module loaded automatically, because the existing config states Version = 1.9. This is to honor choice of users who decide to unload it, since we don't know whether the module is missing intentionally. You MUST manually load this module if you have clients or scripts that depends on away-notify, account-notify, account-tag, and/or extended-join.
    • 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