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.0: Difference between revisions

From ZNC
Jump to navigation Jump to search
No edit summary
No edit summary
 
(36 intermediate revisions by 4 users not shown)
Line 1: Line 1:
<!-- The following is generated via this command:
{{ChangeLog}}
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 368d06679e3ba007284e52449ba2a90c4883a1f0
== The Big News ==
 
=== Multiple networks per user ===
Think about new users as "user groups", while new networks are similar to old users.
 
To login to ZNC, use <code>user/network:password</code> as password, or <code>user/network</code> as username.
Also, you can switch between different networks on the fly using the <code>/znc JumpNetwork</code> command.
 
When you first run ZNC 1.0, it will automatically convert your config and create a network called "default" for each user. Settings from each user are moved into these "default" networks. When you log into ZNC without setting a network, the "default" network will automatically be chosen for you.
 
Users can create new networks up to an admin-configurable limit. By default, this limit is one network per user.
 
Existing user-per-network setups can be migrated to the new multinetwork setup using the <code>/znc MoveNetwork</code> command.
 
You can see a list of networks via <code>/znc ListNetworks</code> and <code>/znc ListAllUserNetworks</code>.
 
=== Timezones ===
Timezone can now be configured by name, e.g. "GMT-9", or "Europe/Madrid".
Old TimezoneOffset setting (which was the number of hours between the server's timezone and the user's timezone) is deprecated and should not be used anymore. Its old value is lost. The reason for this change is that the old TimezoneOffset was not trivial to count and often broke during switches to/from  daylight savings time.
 
So if you previously used the TimezoneOffset option, you now have to configure your timezone again (via the [[webadmin]] or [[controlpanel]] module).
 
=== No more ZNC-Extra ===
Most modules from [[ZNC-Extra]] are now enabled in the usual installation. It was pointless to have them shipped in the tarball, but requiring user to add some weird flags to ./configure.
 
Antiidle, fakeonline and motdfile modules are dropped.


== The Big News ==
Away module is renamed to [[awaystore]] to better explain its meaning.
//TODO: describe items of this section in many details.
* Multinetwork.
* Multitype modules. Web pages for them.
* Flood protection. Rate-limit.
* Timezones. TimezoneOffset is deprecated.
* ZNC-Extra no more. Drop antiidle, fakeonline and motdfile. Rename away module to [[awaystore]] to better explain its meaning.
* server-time capability


== Fixes ==
== Fixes ==
* Don't try IPv6 servers, if IPv6 isn't available. Get rid of c-ares.
* Don't try IPv6 servers when IPv6 isn't available. Use threads for non-blocking DNS instead of c-ares.
* Fix debug output of identfile. {{git|4e16e9f}}
* Fix debug output of identfile.
* Don't forward WHO replies with multi-prefix to unsupported clients
* Don't forward WHO replies with multi-prefix to clients which don't support multi-prefix
* Send nick changes to clients before we use call the OnNick module hook
* Send nick changes to clients before we call the OnNick module hook
* Fix a busy loop with the connection queue
* Don't connect to SSLed IRC servers when ZNC is compiled without SSL support
* Fix help of admin module.
* Fix check for visibility support in the compiler
* autoreply: Honor RFC 2812.
* Fix compilation on cygwin again, including [[modperl]] and [[modpython]]
* Support parting several channels at once
* Fix a crash in admin (now [[controlpanel]]) module
* Fix webadmin to deny setting a bindhost that is not on the global list of allowed bindhosts.
* Fix using empty value for defaults in user page in webadmin.


== Minor Stuff ==
== Minor Stuff ==
* Improvements to [[modtcl]] module.
* Rename admin module to [[controlpanel]] to make it clearer that it's not the same as admin flag of a user.
* Add timestamp to <code>znc --debug</code>
* Add protection from flood. If you send multiple lines at once, they will be slowed down, so that the server will not disconnect ZNC due to flood. It can be configured and can be completely turned off. Default settings are: 1 line per second, first 4 lines are sent at once.
* Modules can support several types now: a module can be loaded as a user module, as a network module ''and'' as a global module, if the module supports these types.
* Rename (non-)<code>KeepBuffer</code> to <code>AutoClearChanBuffer</code>
* Process starttls numeric
* Improvements to [[modperl]], [[modpython]], [[modtcl]].
* Add timestamps to <code>znc --debug</code>
* Listeners editor in [[webadmin]]
* Listeners editor in [[webadmin]]
* Add [[sasl]] module which uses SASL to authenticate to NickServ.
* Rename saslauth to [[cyrusauth]], to make it clearer that it's ''not'' needed to do SASL authentication to NickServ.
* Modules get a way to describe their arguments.
* Modules get a way to describe their arguments.
* webadmin: allow edit bindhost without global list.
* webadmin: allow editing of the bindhost without global list.
* make web more strict (closer to XHTML)
* Don't send our password required notice until after CAP negotiation
* Rewrite the JOIN channel logic, dropping MaxJoins {{git|db7c47f}} (need to revert it?)
* Rewrite the JOIN channel logic, dropping MaxJoins
* Support messages directed to specific user prefixes (like <code>/msg @#channel Hello</code>)
* Show link to http://znc.in/ from web as a link. It was plain text before.
* Show link to http://znc.in/ from web as a link. It was plain text before.
* Webadmin: use HTML5 numeric inputs for numbers.
* Webadmin: use HTML5 numeric inputs for numbers.
* Add SSL/IPv6/DNS info to znc --version
* Add SSL/IPv6/DNS info to znc --version
* Clarify that only admins can load [[shell]] module.
* Clarify that only admins can load the [[shell]] module.
* [[cyrusauth]]: Allow creating new users on first login
* Clear channel buffers when keep buffer is disabled if we're online
* Clear channel buffers when keep buffer is disabled if we're online
* [[send_raw]]: Add a command to send a line to the current client
* [[send_raw]]: Add a command to send a line to the current client
* webadmin: Implement clone user
* webadmin: Implement clone user
* Add 381 to the buffer (You are now an IRC Operator)
* autoreply: Honor RFC 2812.
* Add 381 to the buffer ("You are now an IRC Operator")
* identfile: Pause the connection queue while we have a locked file
* identfile: Pause the connection queue while we have a locked file
* autoop: Check for autoops when we are opped ourself
* Add <code>ShowBindHost</code> command
* Improvements to [[partyline]] module
* autoop: Check for autoops when we get op status
* Improvements and fixes to the [[partyline]] module
* [[partyline]] Drop support for fixed channels
* Check that there're modules available on startup. Check if ZNC is installed or not.
* Check that there're modules available on startup. Check if ZNC is installed or not.
* Modified description field for bouncedcc module to explain what the module actually does.
* Modified description field for bouncedcc module to explain what the module actually does.
* nickserv: support also wenet.ru's and rusnet's nickserv requests.
* nickserv: add support for nickserv requests on wenet.ru and rusnet.
* send 422 event if MOTD buffer is empty
* send 422 event if MOTD buffer is empty
* Don't forward a 670 to a client
* route_replies: Handle much more replies
* route_replies: Handle raw 482 ("You're not a channel operator")
* Clear text colors before appending timestamps to buffer lines, add space before AppendTimestamp for colorless lines.
* Clear text colors before appending timestamps to buffer lines
* Don't replace our motd with a different servers motd
* webadmin: Add a "Disabled" checkbox for channels
* Send a 464 ERR_PASSWDMISMATCH to clients that did not supply a password
* Separate compilation and linking for modules.
* Trim spaces from end of commands to autoattach.
* nickserv: add ghost, recover and release
* Warn if config was saved in a newer ZNC version.
* Backup znc.conf when upgrading ZNC.


== Internal Stuff ==
== Internal Stuff ==
* #include <znc/...h> instead of #include "...h"
* #include <znc/...h> instead of #include "...h"
* {} in strings
* Add string formatting function with named params.
* Csock: able use non-int number of secs for timer. {{git|3aa6b58}} (need to fix a conversion warning)
* Python, perl: support global, user, network modules.
* Csock: able use non-int number of secs for timer.
* CString("off").ToBool() shouldn't be true
* CString("off").ToBool() shouldn't be true
* Python: Override __eq__ to allow comparison of strings
* Python: Override __eq__ to allow comparison of strings
* python: Allow iterating over CModules
* python: Allow iterating over CModules
* Add methods to CModule to get the web path
* Add methods to CModule to get the web path
* Fix several issues in modpython.
* Rework modperl to better integrate with perl.
* Rework modperl to better integrate with perl.
* Store all 005 values in a map.
* Store all 005 values in a map.
* Python: Use znc.Socket if no socket class is specified in CreateSocket()
* Python: Use znc.Socket if no socket class is specified in CreateSocket()
 
* CZNC::WriteConfig(): Better --debug output
== git short log ==
* Slight refactor of CBuffer & CBufLine.
* Fix a NULL pointer issue on CChan::SaveBuff {{git|74738a2}}
* Implemented an OnInvite hook
* Don't forward a 670 to a client {{git|94ffcbe}}
* Allow a client to become "away"
* Add {Add,Del,List}Network to *admin module {{git|aa085ef}}
* Create a connection queue
* route_replies: Handle raw 482 {{git|e607b1a}}
* Set default TrimPrefix to ":"
* Change the order of -I directives in Makefile. {{git|8af35e1}}
* Add a config writer
* Clear text colors before appending timestamps to buffer lines {{git|6ed3b27}}
* Wrap MODULECALL macros in a do-while
* Fix CZNC::Broadcast... {{git|0b6d609}}
* Don't require CTimer's label to be unique if its empty
* Don't use "mkdir" during install {{git|a08ec52}}
* Allow loading python modules with modpython (ex. modname/__init__.py)
* Check for /usr/bin/swig2.0 too. {{git|7ac4609}}
* bNoChange in On{,De}{Op,Voice} wast incorrect
* webadmin: Add a "Disabled" checkbox for channels {{git|a66721e}}
* Drop znc-config, change znc-buildmod so it doesn't need znc-config
* CZNC::WriteConfig(): Better --debug output {{git|9140a0d}}
* Just some small comment explaing some craziness {{git|a97abc5}}
* Disable some more warnings on mod{perl,python} {{git|962c107}}
* Ups, forgot to change message for python compiler. {{git|c00ad1a}}
* Separate compilation and linking for modules. {{git|f4097e6}}
* Be able to remove servers using webadmin. {{git|cf49449}}
* Working savebuff saving and loading. {{git|355f196}}
* Store and format time in CBufLine. {{git|c36480c}}
* Slight refactor of CBuffer & CBufLine. {{git|c3d677a}}
* Unify channel buffers and CBuffer. {{git|cb4131e}}
* Rewrite Buffer to store a format string. {{git|948ae25}}
* Add string formatting function with named params. {{git|2fdf54d}}
* Add server time CAP and Client flag. {{git|f7e5b41}}
* Respond to 670 from the server by switching to TLS {{git|a253167}}
* Update Csocket to d7206c6aa88bd7988f {{git|2009407}}
* Macro NETWORKMODULECALL to IRCSOCKMODULECALL inside CIRCSock {{git|131a065}}
* Its .co.uk not .co.u in the authors list {{git|7a754f4}}
* Make the OnInvite hook return EModRet so we can ignore invites {{git|b8c2da9}}
* Pass the nick who send an invite with the OnInvite hook {{git|e11d338}}
* antiidle: Don't SIGABRT when receiving a line with less than 2 words {{git|8cce595}}
* Move me to the top of authors {{git|71636d2}}
* Make sure a IRCSock is authed before we use the nick {{git|7e5144d}}
* Make UpdateModule reload the module for every module type {{git|8659d72}}
* Don't include Modules.h from User.h {{git|3a7d015}}
* autoreply: check if the network is attached instead of the user {{git|483c8ed}}
* simple_away: check if the network is attached instead of the user {{git|a8cb769}}
* Only save a buffer in buffextras if no clients are "away" {{git|9c86f08}}
* zncconfig.h has moved to include/znc {{git|0a56a02}}
* Allow a client to become "away" {{git|bce4e60}}
* bouncedcc should use PutUser() and not m_pUser->PutUser() {{git|6ae491c}}
* Fix the OnUserCTCP() module hook {{git|eb1abb5}}
* Fix the "Connecting user/network" message {{git|af24f7b}}
* Use time zone string instead of offset. {{git|eca0211}}
* Introduce time zone (string) setting. {{git|b824709}}
* identfile: Improve the debug messages {{git|edaa20e}}
* Improve admin module description. {{git|f483053}}
* Don't connect to SSLed IRC servers when ZNC is not compiled with SSL {{git|c7d171b}}
* Create a connection queue including all the networks we need to connect {{git|a4aedc9}}
* Fscking perl... This fixes modperl's compilation. {{git|0f0591b}}
* Trim spaces from end of commands to autoattach. {{git|c86a612}}
* Fix shell module. It didn't send anything to user. {{git|c646479}}
* Tell users to use user/network:pass in --makeconf {{git|59c6215}}
* Nick in 301 can start with : - it's IRC after all... {{git|187a05d}}
* Update to latest Csocket {{git|7f6a4fb}}
* Fix visibility support {{git|c0907f2}}
* Implemented a OnInvite hook {{git|23acbe4}}
* Fix OnClientDisconnect() hook of network modules. {{git|2dcb3ef}}
* This avoids your irc windows being filled with away stuff {{git|232d261}}
* Added several new features to the nickserv module {{git|5248987}}
* Fix CUser::IsUserAttached(). {{git|ceeebf7}}
* Move core .cpp files to src/ {{git|afeab4a}}
* Move ZNC headers into own directory. {{git|e354c24}}
* Send a MODE request when JOINing {{git|7683592}}
* Set default TrimPrefix to ":" {{git|4b1e714}}
* Clean up CClient::ReadLine {{git|523deaf}}
* SHA256.cpp: Include some ZNC header first {{git|4d4e6a6}}
* Fork the gl_visibility macro {{git|08cc624}}
* configure.ac: Redefine AC_PROG_CC to cause errors {{git|6f2335d}}
* Bump version of master to 0.203 {{git|ca476ef}}
* PutModule should try sending the line to all clients connected to the same network before the user clients {{git|9e3dc0b}}
* Honor per-network nick in awaynick and keepnick. {{git|cd1192e}}
* Compare floats as floats. {{git|f7919bb}}
* Warn if config was saved in too new version. {{git|b90bdf2}}
* Backup znc.conf when upgrading ZNC. {{git|689c330}}
* Fix CIRCNetwork::ExpandString() {{git|e029dde}}
* Backup znc.conf once when updating to networks {{git|b07f37b}}
* Fix network module calls {{git|f97a6a8}}
* Move log out of extra {{git|57c4ccf}}
* Fix code style in Chan.cpp {{git|425b6da}}
* rename away to autoaway to help alleviate any ambiguity as to what it does {{git|f604709}}
* rework SendBuffer fixing an issue where ClearBuffer() nuked the buffer after playing to the first client {{git|793c346}}
* Better describe what does away module do. {{git|c13148b}}
* update module description with something more useful. Additionally added explanation at the top of the header. {{git|4b1b346}}
* fixed a null reference to pClient in hooks 'OnChanBufferStarting,OnChanBufferStarting,OnChanBufferEnding,OnChanBufferEnding', such that when pClient is NULL the hooks are called on all clients associated to that user {{git|002b31d}}
* Partyline compiles again! Yay! {{git|3947ea9}}
* CString should be const& in parameters. {{git|c25e240}}
* Anyone seen my brown paper bag? {{git|a3226c2}}
* (Hopefully) fix all remaining module calls {{git|bdf0d19}}
* Add CIRCNetwork::ExpandString {{git|fa7ec78}}
* Support having a nickname per network {{git|6686c0d}}
* Fix ALLMODULECALL() {{git|64ae6f3}}
* Fix a crash with OnClientLogin() {{git|3e9ad07}}
* Remove MODULECALL macro {{git|9e3019d}}
* Only run NETWORKMODULECALL from MODULECALL if we have a network {{git|895d766}}
* webadmin: Show a field for the network name when someone add's a network {{git|cb604a0}}
* OnClientDisconnect() always needs a valid user {{git|ff35970}}
* Wrap MODULECALL macros in a do-while {{git|893a631}}
* Add a missing semicolon {{git|924381f}}
* assert that we have a user/network on module calls {{git|3e913d4}}
* Make the debug output for raw query line up {{git|1e3b73c}}
* Make 1st parameter of CConfig::Write() a reference. {{git|fa9321a}}
* Move CConfigEntry out of CConfig. {{git|508ca27}}
* modpython: We are modpython not modperl {{git|eb5ac35}}
* modpython: Supress "Nested struct not currently supported (ignored)." warnings from {{git|b75e0b7}}
* Destroy the CIRCSock for a network when the CIRCNetwork is destroyed {{git|855e077}}
* Check we have a network before we try to get its modules (in /msg *status listavailmods) {{git|8945fbe}}
* modpython: Show (module/__init__.py) in listavailmods {{git|12d1a5a}}
* Don't crash when loading python network modules. {{git|9e95d1c}}
* route_replies: Improve the timeout message {{git|b9fe573}}
* Fix CChan::TrimBuffer() (#63) {{git|c6b74fa}}
* Upgrading to networks: Slightly rephrase a message {{git|dbf8c27}}
* autocycle: Only cycle once in 15 seconds {{git|6ed10a1}}
* Move autocycle module to extra. {{git|7885967}}
* fix build error when compiling against uclibc(++) {{git|461c61f}}
* Change "znc" to "ZNC". {{git|d252a2b}}
* Fix compilation after merge of 'redirects' branch. {{git|3fe7039}}
* Add -r parameter of ZNC to man. {{git|982812e}}
* admin: Fix getchan {inconfig,keepbuffer,detached} {{git|ce5d73c}}
* Drop @DEFS@ from the build system {{git|013d0d2}}
* Install .py files along with .pyc {{git|5e73af6}}
* Add a message sent to user in case of redirect. {{git|8f98384}}
* Allow loading python modules with modpython (ex. modname/__init__.py) {{git|d14528b}}
* Let a user filter the result of help CModule::HandleHelpCommand {{git|1f16d6d}}
* Don't timeout bouncedcc connections, inactive bounced DCC chat's would be dropped otherwise {{git|3eaa308}}
* Unload user and network modules once all the clients are gone and we are disconencted from any IRC servers. {{git|bf8b162}}
* Fix CALLMOD, m_pNetwork could be NULL, in this case CALLMOD would be passed a NULL network. But CALLMOD will try calling its modules anyway {{git|75d7cdf}}
* Fix modp{erl,ython}, these modules should set a "default" module type for its submodules {{git|e70b685}}
* Turn stickchan into a network module, this prevents a segfault {{git|9006fec}}
* Fix logging in with PASS after USER {{git|10c3311}}
* Remove some IMHO dangerous functions {{git|9c9e40a}}
* Partyline: Drop support for fixed channels {{git|bd3e6d3}}
* Silence some wrong compiler warnings {{git|6016929}}
* Add default types to modules {{git|d48ae67}}
* Allow loading the log module as either user, network or global {{git|98777a2}}
* Allow the cert module to be loaded as a network module {{git|8910ec5}}
* Perform is now a network module, but could also be loaded as a user module if the user desires {{git|b2e6d09}}
* Part the client from the channels they are in when they used /znc JumpNetwork {{git|d3ffdbb}}
* Allow a user to add networks in `znc --makeconfig` {{git|b3b4e08}}
* Make modpython support network modules {{git|260421e}}
* Turn modtcl into a network module {{git|9a2fed6}}
* Change the order that modules are looked up in /msg *module {{git|9b746dc}}
* Make all the modules support networks {{git|0b1627c}}
* Make the *webadmin module support IRC networks {{git|ee7a208}}
* Support IRC networks in the *admin module {{git|0f9af26}}
* Add support for network commands with *status {{git|e3a8dd9}}
* Create network modules {{git|8dd2a70}}
* Make CNick network aware {{git|498cbf8}}
* Make IRCSock network aware {{git|da6c601}}
* Make CClient network aware {{git|ef2b2cf}}
* CChans should now work on IRC networks {{git|4e4e88e}}
* Add CIRCNetwork which now hold each IRC Connection. {{git|fec1a3f}}
* Don't forward server redirects to client. {{git|5512ed2}}
* Don't send server redirects to client [TorrentialStorm] {{git|960a449}}
* Save listeners as a section in znc.conf {{git|88033a5}}
* Add an easy way to read bools and ints from config. {{git|d2b005a}}
* Fix doxycomment about global mobules. {{git|afbd741}}
* Fix modpython about renaming EModuleType. {{git|fca0d83}}
* Save passwords as a section in znc.conf {{git|288f450}}
* Fix up indentation in config writing {{git|2513149}}
* Some more cleanup to module loading {{git|26368a6}}
* Remove GLOBALMODCONSTRUCTOR {{git|80c76c9}}
* Fix compilation of modpython. {{git|c2cc57c}}
* Add new parameter of OnModuleLoading to doxygen. {{git|b62c47c}}
* Move the EModuleType into CModInfo {{git|cce40e9}}
* Fix some minor issues {{git|5f53c35}}
* Add a config writer {{git|f44f307}}
* Make modpython support different module types {{git|274d3eb}}
* Fix dependencies between modpython parts. {{git|9e33e4b}}
* Fix enum handling in modpython callbacks params. {{git|289cfa5}}
* Add CModInfo::SupportsType(EModuleType) and supply a module type with CModules::LoadModule {{git|b2d8f2e}}
* Fix global python modules. {{git|0c9eae2}}
* Unload modules in reverse order. {{git|76aaafd}}
* Merge CGlobalModule(s) into CModule(s) {{git|c456d20}}
* Create EModuleType, creating SetType which replaces SetGlobal {{git|a4b1559}}
* Increase the version number to 0.201 {{git|091a287}}
* Add ZNC systemd unit file for those distros that use systemd for their init {{git|4f79b99}}
 
[[Category:ChangeLog]]

Latest revision as of 09:56, 2 April 2017

← 0.206 ZNC 1.0 1.2 →


The Big News

Multiple networks per user

Think about new users as "user groups", while new networks are similar to old users.

To login to ZNC, use user/network:password as password, or user/network as username. Also, you can switch between different networks on the fly using the /znc JumpNetwork command.

When you first run ZNC 1.0, it will automatically convert your config and create a network called "default" for each user. Settings from each user are moved into these "default" networks. When you log into ZNC without setting a network, the "default" network will automatically be chosen for you.

Users can create new networks up to an admin-configurable limit. By default, this limit is one network per user.

Existing user-per-network setups can be migrated to the new multinetwork setup using the /znc MoveNetwork command.

You can see a list of networks via /znc ListNetworks and /znc ListAllUserNetworks.

Timezones

Timezone can now be configured by name, e.g. "GMT-9", or "Europe/Madrid". Old TimezoneOffset setting (which was the number of hours between the server's timezone and the user's timezone) is deprecated and should not be used anymore. Its old value is lost. The reason for this change is that the old TimezoneOffset was not trivial to count and often broke during switches to/from daylight savings time.

So if you previously used the TimezoneOffset option, you now have to configure your timezone again (via the webadmin or controlpanel module).

No more ZNC-Extra

Most modules from ZNC-Extra are now enabled in the usual installation. It was pointless to have them shipped in the tarball, but requiring user to add some weird flags to ./configure.

Antiidle, fakeonline and motdfile modules are dropped.

Away module is renamed to awaystore to better explain its meaning.

Fixes

  • Don't try IPv6 servers when IPv6 isn't available. Use threads for non-blocking DNS instead of c-ares.
  • Fix debug output of identfile.
  • Don't forward WHO replies with multi-prefix to clients which don't support multi-prefix
  • Send nick changes to clients before we call the OnNick module hook
  • Don't connect to SSLed IRC servers when ZNC is compiled without SSL support
  • Fix check for visibility support in the compiler
  • Fix compilation on cygwin again, including modperl and modpython
  • Support parting several channels at once
  • Fix a crash in admin (now controlpanel) module
  • Fix webadmin to deny setting a bindhost that is not on the global list of allowed bindhosts.
  • Fix using empty value for defaults in user page in webadmin.

Minor Stuff

  • Rename admin module to controlpanel to make it clearer that it's not the same as admin flag of a user.
  • Add protection from flood. If you send multiple lines at once, they will be slowed down, so that the server will not disconnect ZNC due to flood. It can be configured and can be completely turned off. Default settings are: 1 line per second, first 4 lines are sent at once.
  • Modules can support several types now: a module can be loaded as a user module, as a network module and as a global module, if the module supports these types.
  • Rename (non-)KeepBuffer to AutoClearChanBuffer
  • Process starttls numeric
  • Improvements to modperl, modpython, modtcl.
  • Add timestamps to znc --debug
  • Listeners editor in webadmin
  • Add sasl module which uses SASL to authenticate to NickServ.
  • Rename saslauth to cyrusauth, to make it clearer that it's not needed to do SASL authentication to NickServ.
  • Modules get a way to describe their arguments.
  • webadmin: allow editing of the bindhost without global list.
  • Don't send our password required notice until after CAP negotiation
  • Rewrite the JOIN channel logic, dropping MaxJoins
  • Support messages directed to specific user prefixes (like /msg @#channel Hello)
  • Show link to http://znc.in/ from web as a link. It was plain text before.
  • Webadmin: use HTML5 numeric inputs for numbers.
  • Add SSL/IPv6/DNS info to znc --version
  • Clarify that only admins can load the shell module.
  • cyrusauth: Allow creating new users on first login
  • Clear channel buffers when keep buffer is disabled if we're online
  • send_raw: Add a command to send a line to the current client
  • webadmin: Implement clone user
  • autoreply: Honor RFC 2812.
  • Add 381 to the buffer ("You are now an IRC Operator")
  • identfile: Pause the connection queue while we have a locked file
  • Add ShowBindHost command
  • autoop: Check for autoops when we get op status
  • Improvements and fixes to the partyline module
  • partyline Drop support for fixed channels
  • Check that there're modules available on startup. Check if ZNC is installed or not.
  • Modified description field for bouncedcc module to explain what the module actually does.
  • nickserv: add support for nickserv requests on wenet.ru and rusnet.
  • send 422 event if MOTD buffer is empty
  • route_replies: Handle much more replies
  • Clear text colors before appending timestamps to buffer lines, add space before AppendTimestamp for colorless lines.
  • Don't replace our motd with a different servers motd
  • webadmin: Add a "Disabled" checkbox for channels
  • Send a 464 ERR_PASSWDMISMATCH to clients that did not supply a password
  • Separate compilation and linking for modules.
  • Trim spaces from end of commands to autoattach.
  • nickserv: add ghost, recover and release
  • Warn if config was saved in a newer ZNC version.
  • Backup znc.conf when upgrading ZNC.

Internal Stuff

  • #include <znc/...h> instead of #include "...h"
  • Add string formatting function with named params.
  • Python, perl: support global, user, network modules.
  • Csock: able use non-int number of secs for timer.
  • CString("off").ToBool() shouldn't be true
  • Python: Override __eq__ to allow comparison of strings
  • python: Allow iterating over CModules
  • Add methods to CModule to get the web path
  • Rework modperl to better integrate with perl.
  • Store all 005 values in a map.
  • Python: Use znc.Socket if no socket class is specified in CreateSocket()
  • CZNC::WriteConfig(): Better --debug output
  • Slight refactor of CBuffer & CBufLine.
  • Implemented an OnInvite hook
  • Allow a client to become "away"
  • Create a connection queue
  • Set default TrimPrefix to ":"
  • Add a config writer
  • Wrap MODULECALL macros in a do-while
  • Don't require CTimer's label to be unique if its empty
  • Allow loading python modules with modpython (ex. modname/__init__.py)
  • bNoChange in On{,De}{Op,Voice} wast incorrect
  • Drop znc-config, change znc-buildmod so it doesn't need znc-config