Konversation 1.5-rc1 has been released!
March 16, 2013
Konversation 1.5-rc1 is the first test release for our next major release. The 1.5 development cycle has lead to significant new features in many areas of the application, from support for SASL and client certificate authentication on the protocol side, to all-new topic management UI, overhauled authentication UI, per-tab spell-checking language settings, user-configurable nick context menu entries and mouse spring-loading in the frontend and all-new versions of major bundled scripts. Improved Ignore, Watched Nicknames and Edit Paste functionality and behavior, performance improvements in some critical codepaths and many other bug fixes and minor UI touch-ups round things out.
Changes from 1.4 to 1.5-rc1
- The user interface for the Auto Identify settings in the Identities dialog has been extended by a combo box that allows choosing the type of authentification to be performed. Depending on the chosen type, different input fields are shown below the combo box.
- The server password-based authentification supported by some networks is now configurable in the Identities dialog as well, making it more discoverable and allowing to keep Auto Identify settings generally with the Identity rather than requiring going through the Edit Server dialog.
- SASL PLAIN authentification is now supported. To use, pick SASL as the Auto Identify type in the Identities dialog and fill in your account name and password.
- Standard NickServ authentification has been further improved. The command sent to to the service, previously hard-coded to “identify”, is now configurable, and the name of the service now defaults to “nickserv” in new identities (the previous default was an empty field).
- Added support for authenticating via a SSL Client Certificate in the form of a PEM file if Konversation is built against KDE Platform v4.8.3 or higher. Choosing this type of authentication in the Identities dialog forces SSL to be enabled for a connection, overriding any server settings.
- Added the ability to set a different spell-checking language for every tab, from the context menu of the input box. The chosen language setting is preserved across application restarts.
-
The Topic tab in the Channel Options dialog has been redesigned and rewritten from scratch, featuring a much improved UI and many bug fixes:
- In place of the previous UI with a multi-column topic history list and two distinct text fields for browsing and editing there is now only the list and an edit field. The list has been redesigned to show all of the data for a topic, with visually distinct headers serving to delineate individual entries and showing the author and timestamp, above the full text for each topic.
- Entries in the history list now sport a context menu allowing to copy the topic text and querying the topic author.
- A new search field above the history list allows filtering it by looking for the search string in the text, author name and timestamp of all topics.
- When an encryption key is set for a channel an attempt is now made to decrypt all of the topics in the history, not just the current topic.
- When editing the topic any text entered past the server’s maximum allowed topic length will now be drawn in the color scheme’s negative text color (i.e. usually red). Further, if Konversation has been built against KDE Platform v4.7.0 or higher, a warning is shown at the bottom of the text field explaining the limit and offering the option - via a button - to delete the excess text.
- The text cursor is now automatically placed at the end of the edit field, making the common use case of adding to the topic more convenient.
- The location of the splitter handle inbetween the history list and the edit is now remembered across all Channel Options dialogs and application restarts.
- Storing the topic history for each channel now takes up less memory, and general efficiency in handling with topic data has been improved greatly.
- Fixed a bug causing redundant entries to accumulate in the topic history across reconnects when the last entry in the history corresponds to the topic given by the server at rejoin.
- Fixed a bug causing HTML tags (e.g. <title>) in topics to be invisible in the edit field.
- Fixed a bug causing the “Undo” action in the edit field to occassionally stop working, making it impossible to return the field to the unmodified state in which its contents sync to the selected history list entry.
- Fixed a bug causing the topic not to return to its encrypted form when the decryption key for a channel has been deleted.
- Fixed a bug causing the author of a topic to sometimes be shown as the full user mask instead of consistenty showing only the nickname.
- Fixed a bug causing the “Unknown” placeholder that is used when the author of a topic is unknown not to be translated.
- Fixed the incorrect tab key order in the Topic tab.
- Fixed a bug causing the topic at the top of channel tabs not to return to its encrypted form after the decryption key for a channel has been deleted.
- The size of the Channel Options dialog is now synchronized between the dialogs for different channels and remembered across application restarts.
- The widths of the columns in the Ban List tab in the Channel Options dialog is now synchronized across all Channel Options dialogs.
- The Quick Buttons options now feature a new checkbox that toggles whether Quick Buttons that operate on nicknames will be shown alongside other nickname-related actions in context menus throughout Konversation. Essentially, this allows for placing custom actions in nickname context menus.
- The list of placeholders available in Quick Button patterns now mention the previously undocumented “%k” placeholder for the current channel’s key and is sorted alphabetically.
- When a Quick Button pattern replaces the current input box contents (due to the presence of the “%n” expando in the pattern) they are now added to the input box history first.
- Quick Button patterns now support a new “%i” placeholder that is replaced with the current contents of the input box.
- Both the regular tab bar and its listview version now implement “spring-loading”. That is, when dragging something onto a tab and holding it there, the hovered tab will now be switched to after a brief delay. This allows switching to the intended tab as part of dragging text or a file to its destination, e.g. the tab’s input bar or nicklist.
- All types of tabs which sport a prominent input widget will now see focus moved to that widget and the first keypress redirected when focus is on the treelist version of the tab bar while starting to type. In previous releases this already worked for chat tabs with their usual input bars, now it also works for e.g. Channel List tabs and Konsole tabs.
- A ‘umode’ convenience command to set modes on self has been added.
- The ‘Mode change’ notification event now sports a proper text payload describing what has happened.
- The system tray icon now shows an overlay icon when global away is enabled.
- The behavior of the ‘Show/Hide Konversation’ action has been simplified and tuned to do the correct thing in more scenarios. Previously, invoking the action would hide the window even if it was not actually visible due to being covered by other windows, because merely not being hidden, not being minimized and being on the current desktop was already considered being shown. A much simpler approach of always showing the window if it is not the currently active window (and, as before, moving it to the current desktop as needed) and hiding it when it is has been adopted now instead.
- Added an option to restrict logging to private conversations (queries, DCC chats).
- Added an action to manually apply the user-configured auto-replace rules to the input box contents without sending the message, enabling user review before doing so. The relative cursor position is preserved or the cursor is moved to the end of an intersecting replacement insertion when auto-replace is applied.
- Server status tabs for networks listed in the Server List dialog now have a “Connect at Startup” checkbox in their context menu, similar to the “Join on Connect” checkbox in the context menu of channel tabs. Both set options also available from the Server List.
- Removing newlines in the Edit Paste dialog can now handle Windows-style carriage return line breaks and whitespace characters other than ASCII 0x20.
- Part and Quit messages now show the hostmask of the subject, consistent with Join messages.
- The nickname list theme preview in the configuration dialog now uses the same background color as the actual nickname lists.
- Raw log tabs now use color coding to visually differenciate inbound and outbound messages, using the server message and channel message colors from the color settings respectively.
- The DCC Status transfer list update interval now depends on the graphics effects level setting in KDE System Settings, changing between 500, 1000 and 2000 ms depending on the level set.
- Fixed a bug causing the input box height not to be adjusted appropriately to fit the contents when the “Input box expands with text” option is enabled and the window is resized horizontally, causing the text to rewrap.
- Fixed a bug causing the context menu for an item in the DCC Status transfer list to appear in the wrong position.
- The double-click action command for Watched Nicks list entries now supports command aliases.
- Fixed a bug causing wildcard expansion to be performed on the input box contents when they start with a Command Alias (rather than just expanding wildcards in the Alias replacement pattern).
- The bundled ‘media’ script has been rewritten from scratch to implement the MPRIS2 standard for interfacing with media players - and only the MPRIS2 standard. This means losing support for a number of legacy players which do not support MPRIS2, but also gaining support for a number of popular modern players which do (e.g. Tomahawk). Additionally, there are often third-party MPRIS2 bridges or plugins for players which do not support it natively. The script now also features much-improved error handling and reporting in the face of misbehaving players or configuration errors.
- The bundled ‘sysinfo’ script has been rewritten from scratch. The new version offers more accurate CPU and KDE version information (accounting for multiple cores and frequency scaling for the former, and making the difference between running inside KDE or just using the KDE Platform for the latter), as well as the addition of distro name and release information and generally improved robustness in data acquisition. Finally, the output format is now easier to configure, adopting an approach similar to the one used in the ‘media’ script.
- The bundled ‘sayclip’ script has been rewritten from scratch, removing the now-redundant flood handling found in the old version (Konversation takes care of this implicitly today) and improving the error handling in case Klipper cannot be contacted.
- The bundled ‘bug’ script has been rewritten from scratch, featuring improved error handling and adding internationalization support.
- Fixed a bug causing the What’s This help tooltip for nickname lists to show the regular user icon instead of the away icon as the away icon example.
- The desktop notification for a completed incoming DCC file transfer now offers an action to open/run the received file.
- Various fixed to tab stops and margins in the configuration dialog pages.
- Minor UI fixes for the Queue Tuner (opened by /queuetuner), correcting icon use and button labels.
- Removed excess white space from several warning dialog messages.
- Fixed a bug causing the Watched Nicks to spam the active tab with repeated WHOIS requests for someone on the Watched Nicks List after opening a query tab to them while they were offline.
- Fixed several bugs in preserving per-tab encoding settings across application restarts.
- Link opening now properly respects KDE’s file type associating settings instead of always opening a web browser.
- Fix Konversation not saving the unchecked “… a channel invitation is received” warning dialog option in the Warning Dialogs list in the configuration dialog
- Unchecking the “… a channel invitation is received” warning dialog option in the Warning Dialogs list in the configuration dialog now sets the behavior for future channel join invitations to always joining them. The actual dialog allows chosing between always accepting and always ignoring, but until this can be exposed in the configuration dialog, always joining them makes this option consistent to all other warning dialog options.
- The default behavior upon receiving a channel join invitation is now to ask the user, instead of silently accepting the invitation. The latter behavior accidentally snuck into 1.4 and is considered a bug.
- Added a workaround for behavior in the Phonon multimedia library that could lead to crashes on application quit when using custom highlight notification sounds.
- Fixed a bug causing an ambiguous shortcut warning dialog when using the default ESC keyboard shortcut to invoke the Focus Input Box action after the search has been opened and the Focus New Tabs option was disabled while a new tab was opened.
- Fixed a bug causing multiple ignore list entries with the same pattern not to be preserved across application restarts. Instead only the latest entry with the pattern would.
- Fixed a bug causing the tab label for open log viewer tabs to be set to “ChatWindowObject” when switching the tab bar position between top or bottom and left.
- Made the code turning channel names into clickable links more strict about what types of trailing punctuation it incorporates into the link.
- Fixed bugs causing currently joined channels not to react correctly to changes in the enabled state of the Automatic User Information Lookup setting. Previously, enabling the lookup would not actually start it, and disabling it would only take effect after one last lookup was performed. Both now take effect immediately.
- The reaction to a change of the Automatic User Information Lookup interval setting has been improved considerably: Whereas previously Konversation would simply wait out the current interval scheduled using the old setting value and only then schedule the next lookup using the new value, it now reschedules the next lookup to occur as if the new value had been set all along, or, if the time elapsed since the last lookup was performed already exceeds the new value, comes as close as possible by performing a lookup immediately.
- All forms of opening a query (the ‘/query’ command, clicking a nickname in the chat text display, double-clicking in the nickname list or the nickname list context menu action) now consistently move focus to an existing matching query tab, matching the behavior of various forms of joining an already-joined channel. Previously this was only true for the ‘/query. command.
- Minor visual (the selection decoration for server items now spans the whole row) and behavioral (when collapsing a network while one of its a server is selected, the selection is now moved to the network item instead of becoming invisible) improvements in the Server List dialog.
- Fixed a bug causing the option to automatically focus new query tabs not to work correctly.
- Fixed a bug causing IRC formatting state not to be reset at the end of a topic when showing it in a channel’s chat text display, potentially causing the rest of the line to be malformatted.
- If built against KDE Platform v4.8.3 or higher, the date column in the Url Catcher will now immediately reflect changes to the date format made in KDE’s System Settings application.
- Fixed a bug causing an application crash in response to an (illegal) ‘/unban <#channel>’ command.
- Showing line and paragraph indicators in the Edit Paste dialog’s text entry field unfortunately had to be disabled for the time being due to a bug in the underlying Qt code.
- Leaving the “Use custom version reply” option’s text field empty now disables responding to CTCP VERSION requests entirely instead of sending empty responses.
- Fixed the vertical height of rows in the Channel Invites dialog possibly cutting off the checkboxes depending on the checkbox and font sizes in play.
- A basic framework to support the IRC Client Capabilities Extension (“CAP”) has been added.
- Performance optimizations and code cleanup for processing NAMES messages from the server.
- Performance improvements have been applied to hotpaths in the protocol implementation.
- Debug builds of Konversation now understand a “–nui” command line argument to disable the check for whether Konversation is already running, thus allowing multiple instances of Konversation to be started. This is known to cause bugs (e.g. for anything started by Konversation that relies on the D-Bus service name of the running instance being org.kde.konversation: this means all bundled scripts) and can wreak havoc with the config file - it’s meant only for use by developers for debugging purposes.
- Markup cleanups in the handbook and visual improvements to handbook icons in the PDF export on here.
- Fixed a compilation problem on 64bit Windows.
- Code cleanups for warnings issued by clang.
- Build system improvements for kdepimlibs includes handling.
- Konversation now depends on KDE Platform v4.6.0 or higher and Qt v4.7.0 or higher.