New features
- core: display a warning on startup if $TERM does not start with "screen" under Screen/Tmux
- core: add option weechat.color.status_nicklist_count (issue #109 , issue #110)
- core: add option "env" in command /set (manage environment variables)
- core: add bar item "buffer_short_name" (task #10882)
- core: add option "send" in command /input (send text to a buffer)
- core: add support of negated tags in filters (with "!") (issue #72, issue #74)
- core: add hidden buffers, add options hide/unhide in command /buffer
- core: add default key Alt+- (toggle filters in current buffer) (issue #17)
- core: add non-active merged buffers with activity in hotlist (if another merged buffer is zoomed) (task #12845)
- core: add text search in buffers with free content (task #13051)
- core: add buffer property "clear"
- core: add option weechat.look.hotlist_add_conditions, remove option weechat.look.hotlist_add_buffer_if_away
- core: add option weechat.look.hotlist_remove (issue #99)
- core: add options "-beep" and "-current" in command /print
- core: add bare display mode for easy text selection and click on URLs, new key: Alt+l, new option "bare" in command /window, new options: weechat.look.bare_display_exit_on_input and weechat.look.bare_display_time_format
- core: add signals "key_combo_{default|search|cursor}"
- core: add terabyte unit for size displayed
- core: display a warning in case of inconsistency between the options weechat.look.save_{config|layout}_on_exit
- core: add option "-mask" in command /unset (issue #112)
- core: set option weechat.look.buffer_search_where to prefix_message by default
- core: mute all buffers by default in command /mute (replace option -all by -core)
- api: allow value "-1" for property "hotlist" in function buffer_set() (to remove a buffer from hotlist)
- api: add option "buffer_flush" in function hook_process_hashtable()
- api: add support of case insensitive search and search by buffer full name in function buffer_search() (bug #34318)
- api: add option "detached" in function hook_process_hashtable()
- api: add option "signal" in function hook_set() to send a signal to the child process
- api: add support of nested variables in function string_eval_expression() and command /eval (issue #35)
- api: add support of escaped strings with format
${esc:xxx}
or${\xxx}
in function string_eval_expression() and command /eval - api: add functions hashtable_dup(), string_replace_regex(), string_split_shell(), string_convert_escaped_chars()
- api: add integer return code for functions hook_{signal|hsignal}_send()
- api: add argument "flags" in function hdata_new_list()
- api: allow wildcard "*" inside the mask in function string_match()
- api: allow negative value for y in function printf_y()
- alias: add default alias "msgbuf" (send text to a buffer)
- exec: add exec plugin: new command /exec and file exec.conf
- irc: add bar item "irc_nick_modes" (issue #71)
- irc: add support of message 324 (channel modes) in option irc.look.display_join_message (issue #75)
- irc: add option irc.look.join_auto_add_chantype (issue #65)
- irc: add tag with host ("host_xxx") in IRC messages displayed (task #12018)
- irc: add option irc.color.item_nick_modes (issue #47)
- irc: add support of "away-notify" capability (issue #12)
- irc: add command /remove (issue #91)
- irc: add command /unquiet (issue #36)
- irc: add command /allpv (task #13111)
- irc: display locally away status changes in private buffers (in addition to channels) (issue #117)
- irc: allow many fingerprints in server option ssl_fingerprint (issue #49)
- irc: rename option irc.look.item_channel_modes_hide_key to irc.look.item_channel_modes_hide_args, value is now a string (task #12070, task #12163, issue #48)
- irc: add value "+" for option irc.look.smart_filter_mode to use modes from server prefixes (this is now the default value) (issue #90)
- irc: allow "$ident" in option irc.network.ban_mask_default (issue #18)
- irc: evaluate content of server options "username" and "realname"
- irc: set option irc.network.autoreconnect_delay_max to 600 by default, increase max value to 604800 seconds (7 days)
- irc: set option irc.network.whois_double_nick to "off" by default
- relay: add messages "_buffer_cleared", "_buffer_hidden" and "_buffer_unhidden"
- relay: add info "relay_client_count" with optional status name as argument
- relay: add signals "relay_client_xxx" for client status changes (issue #2)
- relay: add option relay.network.clients_purge_delay
- rmodifier: remove plugin (replaced by trigger)
- script: set option script.scripts.cache_expire to 1440 by default
- trigger: add trigger plugin: new command /trigger and file trigger.conf
Bug fixes
- core: fix zero-length malloc of an hashtable item with type "buffer"
- core: fix memory leak on /upgrade when file signature in upgrade file is invalid
- core: fix memory leak in completion of config options values
- core: fix memory leak when removing script files
- core: fix result of hash function (in hashtables) on 32-bit systems
- core: fix insert of mouse code in input line after a partial key combo (issue #130)
- core: check code point value in UTF-8 check function (issue #108)
- core: fix socks5 proxy for curl downloads (issue #119)
- core: display curl error after a failed download
- core: do not display content of passphrase on /secure buffer
- core: fix potential memory leak with infolists not freed in plugins (debian #751108)
- core: fix color display of last terminal color number + 1 (issue #101)
- core: add option "-buffer" in command /command (issue #67)
- core: fix restoration of core buffer properties after /upgrade
- core: fix "/buffer clear" with a name (don't clear all merged buffers with same number)
- core: fix evaluation of expression with regex: when a comparison char is in the regex and don't evaluate the regex itself (issue #63)
- core: close .upgrade files before deleting them after /upgrade
- core: fix refresh of bar item "buffer_zoom" on buffer switch
- core: fix reset of attributes in bars when "resetcolor" is used (issue #41)
- core: fix alignment of lines in merged buffers when options weechat.look.prefix_align and weechat.look.prefix_buffer_align are set to "none" (issue #43)
- core: quit WeeChat on signal SIGHUP, remove signal "signal_sighup"
- core: fix add of filter on OS X when regex for message is empty (filter regex ending with "\t")
- core: check validity of buffer pointer when data is sent to a buffer (command/text from user and API function command())
- core: fix crash when buffer is closed during execution of multiple commands (issue #27)
- core: fix compilation on SmartOS (bug #40981, issue #23)
- core: add missing \0 at the end of stderr buffer in function hook_process()
- core: fix highlight problem with "(?-i)" and upper case letters in option weechat.look.highlight (issue #24)
- core: fix detection of terminated process in function hook_process()
- core: fix "/window scroll -N" on a buffer with free content
- core: fix recursive calls to function eval_expression()
- core: save and restore mute state in command /mute (bug #41748)
- core: fix memory leak when removing a hdata
- core: fix memory leak in evaluation of sub-conditions
- core: fix memory leak in function gui_key_add_to_infolist() (in case of insufficient memory)
- core: fix use of invalid pointer in function gui_bar_window_content_alloc() (in case of insufficient memory)
- core: fix uninitialized value in function string_decode_base64()
- core: fix memory leak and use of invalid pointer in split of string (in case of insufficient memory)
- core: fix potential NULL pointer in function gui_color_emphasize()
- core: use same return code and message in all commands when arguments are wrong/missing
- core: allow empty arguments for command /print
- core: fix freeze/crash in GnuTLS (bug #41576)
- api: fix function string_decode_base64()
- api: fix function string_format_size() on 32-bit systems
- api: change type of arguments displayed/highlight in hook_print() callback from string to integer (in scripts)
- alias: change default command for alias /beep to "/print -beep"
- guile: fix module used after unload of a script
- irc: fix memory leak in CTCP answer
- irc: fix duplicate sender name in display of wallops (issue #142, issue #145)
- irc: fix extract of channel in parser for JOIN/PART messages when there is a colon before the channel name (issue #83)
- irc: fix duplicate sender name in display of notice (issue #87)
- irc: fix refresh of buffer name in bar items after join/part/kick/kill (issue #86)
- irc: display message 936 (censored word) on channel instead of server buffer
- irc: make reason optional in command /kill
- irc: add alias "whois" for target buffer of messages 401/402 (issue #54)
- irc: fix truncated read on socket with SSL (bug #41558)
- irc: display output of CAP LIST in server buffer
- irc: fix colors in message with CTCP reply sent to another user
- irc: fix read of MODES server value when in commands /op, /deop, /voice, /devoice, /halfop, /dehalfop
- irc: fix parsing of nick in host when "!" is not found (bug #41640)
- lua: fix interpreter used after unload of a script
- perl: fix context used after unload of a script
- python: fix read of return value for callbacks returning an integer in Python 2.x (issue #125)
- python: fix interpreter used after unload of a script
- relay: fix memory leak during handshake on websocket
- relay: fix memory leak when receiving commands from client (weechat protocol)
- relay: fix crash when an IRC "MODE" command is received from client without arguments
- relay: fix number of bytes sent/received on 32-bit systems
- relay: fix crash when closing relay buffers (issue #57, issue #78)
- relay: check pointers received in hdata command to prevent crashes with bad pointers (WeeChat protocol)
- relay: remove warning on /reload of relay.conf when ports are defined
- relay: fix client disconnection on empty websocket frames received (PONG)
- relay: add support of Internet Explorer websocket (issue #73)
- relay: fix crash on /upgrade received from a client (weechat protocol)
- relay: fix freeze after /upgrade when many disconnected clients still exist
- relay: fix NULL pointer when reading buffer lines for irc backlog
- ruby: fix crash when trying to load a directory with /ruby load
- script: fix display of curl errors
- script: fix scroll on script buffer in the detailed view of script (issue #6)
- scripts: fix crash when a signal is received with type "int" and NULL pointer in signal_data
- xfer: fix problem with option xfer.file.auto_accept_nicks when the server name contains dots
- xfer: fix freeze/problems when sending empty files with DCC (issue #53)
- xfer: fix connection to remote host in DCC receive on Mac OS X (issue #25)
- xfer: remove bind on xfer.network.own_ip (issue #5)
Build
- core: fix cmake warning CMP0007 on "make uninstall" (bug #41528)
- core: use glibtoolize on Mac OS X (autotools) (issue #22)
- ruby: add detection of Ruby 2.1
Tests
- add unit tests using CppUTest