Konversation 1.5-rc1 has been released! (March 16th, 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 http://doc.kde.org.
- 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.
Konversation 1.4 has been released! (December 4th, 2011)
The dominant theme in Konversation v1.4 is improvements and feature additions to the user interface, particularly to text views, dialogs, (context) menus and input line commands. However, nearly all areas of the application have seen some amount of improvements in this release, as is to be expected given the relatively long relase cycle: Connection behavior, IRC protocol handling, scripting support, encryption support, user documentation - new features, polish and certainly also bug fixes are to be found in all of them. In summary, we hope you will enjoy the best Konversation yet.
The changelog for this release starts with a (very) brief summary of major highlights relative to v1.3.1, followed by the short list of changes since v1.4-beta1. If you skipped the beta, please do refer to the changelog for v1.4-beta1 as well, which is highly detailed and categorized for your reading pleasure.
A brief selection of highlights since 1.3.1:
- URL and email detection in text views has been rewritten from scratch, greatly improving the handling of various types of URLs and the contexts they might appear in.
- Extensive improvements to IRC formatting code handling, including the return of background color support.
- Extensive, sometimes full rewrites of user interface elements such as nearly all context menus, the URL Catcher and the Warning Dialogs system for a long list of user interface improvements and bug fixes.
- Improved SSL connection behavior.
- Translation support and various other improvements in several bundled scripts.
- Expanded Python scripting support via the introduction of an API support package.
- Support for more IRC numerics.
- Various bugfixes to input line command handling and connection behavior.
Changes from 1.4-beta1 to 1.4:
- Fixed +q Type A channel modes (Freenode's "quiet bans") being reported as awarding channel owner privileges.
- Fixed a bug causing the +r channel mode to be incorrectly described as "server reop" in the user interface.
- Improved the description string for the +l channel mode.
- Fixed the parameter handling of the example script in the handbook's section on scripting.
- Fixed build with KDE Platform versions below 4.6.0. The minimum required version is 4.4.3.
- The '/setkey' command now supports keys that have spaces in them, by treating all parameters after the first as part of the key.
- The 'Edit Multiline Paste' editor now puts initial focus on the text field, rather than the Send button.
- Added a sanity check to avoid a crash while processing broken, empty NAMES messages from a server, encountered with the shroudBNC bouncer.
Konversation 1.4-beta1 has been released! (November 1st, 2011)
Konversation v1.4-beta1 is the first pre-release leading up to our next major release. A dominant theme in this release cycle have been improvements and feature additions to the user interface, particularly to text views, dialogs, menus and input line commands. However, as you might expect given the amount of time since the last release (sorry about that :-), improvements are to be found in nearly all areas of the application, including connection behavior, IRC protocol handling, scripting support, and more. Please have a look at the changelog for a short summary of the major highlights, as well as the usual extensive coverage of the details.
Changes from 1.3.1 to 1.4-beta1:
General User interface (more UI changes in individual sections below):
- The code handling the context menus of chat text views (including the context menus for nicks and channel links), channel nickname list views and topic areas has been rewritten from scratch, resulting in a long list of bug fixes and consistency and efficiency improvements:
- Numerous consistency problems in the area of which actions are available in which context menus have been addressed. For example, the chat text nick context menu used to lack many of the actions available in the nickname list context menu.
- Numerous actions that require an established connection (e.g. everything in the "Modes" submenu of nick context menus or the DCC actions) used to not get disabled when loss of connection occured. Others did get disabled, but not consistently in all menus in which they are available. Still others, such as the "Add to Watched Nicks" action, used to get disabled unnecessarily. All of this has been addressed.
- Toggle actions used to appear and behave inconsistently: The nickname list context menu showed either "Ignore" or "Unignore" actions as applicable, while the chat text view nick context menu used a checkable item. Meanwhile, the "Add to Watched Nicknames" action had no corresponding action to remove a nick from the Watched Nicks Online list at all. All of this has been fixed, going with the "Ignore"/"Unignore" style of the nickname list context menu (i.e. there's now a "Remove from Watched Nicks").
- If built against Qt 4.7, the topic area now uses the same context menus as the chat text view (with the exception of the inappropriate "Find Text.." action in the basic context menu), enabling a lot of functionality missing otherwise.
- Some actions used to be shown in menus inappropriately, e.g. the "Channel Settings" action in the chat text view context menu of a connection status tab or the "Open Logfile" action in the same context menu of a raw log tab. This has been addressed.
- The behavior of many of the actions is now more consistent with their input line equivalents. For example, clicking "Join Channel" in a link to an already-joined channel will now focus the existing channel tab, the same as the /join command would do. Previously, nothing would happen.
- Fixed a bug causing the nick and channel link context menus in the chat text view of a channel tab to get disabled after having been kicked from the channel.
- Fixed a bug causing the "Send Email..." action to always be disabled, even when any of the associated address book entries did have an email address on file.
- The display of helpful titles repeating the nick/channel at the top of the chat text view nick and channel link context menus has been fixed - it previously got broken in the KDE 4 port.
- The nick and channel link context menus now mark the action that occurs when clicking either as the default action of the context menu, improving the appearance with UI styles that visually distinguish the default action.
- General improvements to the layout of menus, often with an aim for improved consistency with other KDE applications.
- Numerous actions that were missing icons now have them.
- The consistency of keyboard accelerators between the various menus has been improved.
- Various actions in the nickname list context menu now appropriately use a singular or plural form for their text label depending on the number of selected nicks the menu operates on.
- Improved memory efficiency by using single global instances of the various menus, rather than for example having two separate instances of the nick context menu - one for the chat text view, one for the nickname list view - for every channel tab.
- The code implementing the various actions was in many cases redundantly implemented in three different places, for some even in four. This staggering code duplication has been done away with.
- Links now have an "Open With..." action that opens a dialog allowing to choose in which application to open the link.
- The URL Catcher has been rewritten from scratch, bringing about a number of improvements and bug fixes:
- It is now possible to select multiple list entries, and all of the selection-related actions, such as "Open" or "Add Bookmark", can now operate on multiple selected entries ("Add Bookmark" will offer to add all selected entries as a new bookmark folder, for example).
- Reasonable default sorting: The list is now sorted by the "Date" column in descending order the first time the URL Catcher is opened, so that the newest URLs are found at the top. Previously, the list was sorted by the "From" column in ascending order by default.
- The list data is no longer stored in memory twice while the URL Catcher is open. Data handling is generally more efficient.
- The list entry context menu has been cleaned up, now showing only the actions applicable to individual entries.
- The list now automatically receives keyboard focus when switching to the URL Catcher tab.
- When saving the list to disk, the file dialog to pick the destination file will now ask before overwriting an existing file of the same name.
- The date and time in the header of a saved list file is now formatted according to the user's locale settings.
- Fixed a bug causing the opening of caught irc:// and ircs:// URLs not to work.
- Fixed a bug causing the "Date" column to sort alphabetically rather than chronologically.
- Fixed a bug causing the deletion of list entries not to work.
- Fixed a bug causing a 1px remnant of tree branch lines to be visible along the left edge of list entries.
- An unnecessary margin around the toolbar and the search line edit has been removed.
- Fixed a bug causing the URL Catcher tab to claim to be eligible to receive chat text messages that have the frontmost eligible tab as their recipient despite it not actually possessing the means to display them, resulting in a crash when such a message occurred.
- The Warning Dialogs system has been overhauled, with improved wording in the listing in the configuration dialog (which now also contains the previously missing warning when minimizing to the system tray) and further improvements to individual warning dialogs, such as the addition of previously missing Cancel buttons.
- Added a "Show/Hide Konversation" action that can be used to toggle the minimized state of the Konversation window or, if the tray icon is enabled, its visibility. Additionally, the window will always be moved to the current virtual desktop if shown using this action (if the window is already shown on another desktop, it will be moved to the current desktop rather than hidden).
- It's now possible to give the "Next Active Tab" shortcut a global keyboard shortcut, and when triggered the action will always show, raise and focus the Konversation window (as needed), regardless of whether it will also perform a tab switch. This allows "Next Active Tab" to double as a "get me the Konversation window and the tab that just caused my notifications to go off" global shortcut.
- Clicking the Insert button in the "Insert Character" dialog will no longer immediately close the dialog, making it easier to insert multiple characters in quick succession.
- Double-clicking a character in the "Insert Character" dialog will now insert it into the input line.
- The "Insert Character" dialog now sports a search line.
- The widths of the columns and the sort column and direction in the Channel Option dialog's ban list are now remembered across application restarts.
- The "Rejoin Channel" context menu action, shown when a channel could not be rejoined automatically on reconnect as well as after having been kicked from a channel, will now appear above the "Close Tab" action rather than at the end of the context menu, so "Close Tab" is always the last item.
- The "Ok" button in the "Edit Multiline Paste" editor has been renamed to "Send" to communicate more clearly that clicking it will send the editor contents to the server.
- Formatting control codes (e.g. for colors) in user real names are now filtered out before the names are shown in the nickname list when the "Show real names in nickname list" option is enabled.
- The layout of user information tooltips (shown e.g. when hovering a nick in the nickname list or the header area of a query tab) has been improved slightly.
- Fixed bugs causing the tooltip for the adjacent rather than the hovered item to be shown when hovering the mouse pointer near the upper or lower edges of an item in the nickname list or the listview version of the tab bar (tooltips are only shown on the latter when the listview is too narrow to fit its contents, to provide the unelided tab names).
- Fixed bug causing the IRC Color Chooser dialog to only show 15 colors instead of the available 16.
- Fixed a bug causing a very wide minimum window width when a query tab with very long user information in the header area was open.
- Fixed bug causing the opening of URLs via the "Open URL" sub-menu in the list entry context menu in Channel List tabs not to work.
- Fixed a bug causing actions that are meant to operate on the active tab (e.g. "Close Tab" invoked by the default shortcut Ctrl+W) to operate on a different tab after the "Join on Connect" action in that tab's context menu had been used.
- Fixed a bug causing the state of the Show/Hide Menubar action not to be updated correctly when hiding the menubar was canceled from the warning dialog.
- Fixed a bug causing the "Delete" button in the "Server List" dialog to incorrectly show a "Network needs to have at least one server." error dialog when trying to delete servers, even when the deletion would in fact leave the network with one or more servers.
- Fixed a bug causing the active tab's text label not to be greyed out when its IRC server connection is cut.
- Got rid of some too large margins in the "Edit Network" dialog.
- Added support for KDE Web Shortcuts when built against KDE Platform 4.5 or higher: The context menu for selected text in a chat text view then offers a submenu by which the selected text can be used in a web search with any of the enabled search providers. The resulting search URL is opened in the system's default wen browser after clicking on the search provider in the submenu.
- Added support for ircs:// URLs, the 's' standing for 'SSL'. It is supported both for opening and for bookmarking. If an ircs:// URL matches a server configured in the server list or refers to a network name instead of a specific server, the directive from the URL overrides the state of the SSL setting in the configuration.
- Detection of URLs and email addresses in chat text views to turn them into clickable links has been much improved. An incomplete overview of notable cases:
- Unicode characters in URLs are now handled properly, enabling support for example for international domain names.
- Protocol-less links not starting in "www.", such as the short URLs popular these days ("bit.ly/foo" and similar), are now recognized.
- Arbitrary protocols (e.g. "http://" or "message://") are now recognized; previously only a small hand-picked and insufficient set was.
- The check that avoids balanced a pair of parentheses around an URL becoming part of the link now works for more than one level of balanced parentheses.
- Aside from balanced pairs of parentheses, also square and other forms of brackets are now handled properly.
- Trailing question marks no longer become part of the link.
- URLs using uncommon schemas, e.g. Apple message:// URLs or Wolfram Alpha URLs, are now handled properly.
- Numerous improvements to email link handling: User names containing the plus sign are now handled correctly, opening email links from the URL Catcher works now and others.
- The URL detection for the "Open URL" sub-menu in the list entry context menu in Channel List tabs now uses the same infrastructure as link detection elsewhere rather than separate code, making it massively better compared to previous versions.
- Average speed of link detection has improved slightly.
- Added support for dragging web and email address links found in topic areas.
- IRC formatting markup (colors, bold, italic, etc.) support in chat text views and the topic editor has been improved significantly:
- Background colors are now supported.
- The reverse color formatting character is now supported.
- To emphasize usability, links are now consistently displayed using the link and background colors from the configuration dialog, regardless of preceding formatting markup or formatting markup located within the link.
- Formatting markup located within links in incoming messages no longer results in those links being broken.
- Fixed bugs resulting in incorrect display of messages containing multiple formatting characters.
- Improved robustness in the face of invalid color codes.
- Formatting markup in the topic editor's topic history listing is now shown in the human-readable format that is also used for entry, making it much easier to derive a new topic from an old one that contains formatting markup.
- Fixed a bug causing '/topic <channel>' to display the topic of <channel> with formatting markup stripped.
- Join/Part/Nick messages can now be selectively hidden based on whether the nickname the message is about has been active in the respective channel in the last 10 minutes, last hour, last day or last week. Previously it was all or nothing.
- Rewrote chat text view wallpaper image support to avoid rendering problems some users were experiencing.
- Fixed a bug causing some user hostmasks in chat text lines about channel topic author information to be treated as email addresses and thus turned into clickable links. They would also pollute the URL Catcher.
- The code backing the marker and remember lines has been rewritten to work around bugs in Qt that could cause crashes, especially when running Konversation against Qt v4.7.4 or newer (see QTBUG-20916 for more).
- Added a "Focus Input Box" action that puts keyboard focus on the input box. The default shortcut is the Escape key.
- The '(away)' label shown next to input lines when away now has a context menu with actions to change the away message or return from away state.
- Pressing the Tab key when the cursor is at the start of the input box now checks whether the remembered nickname is currently attending the channel before repeating the last successful completion.
- The syntax for the '/cycle' command is now '/CYCLE [-APP | -SERVER] [channel | nickname]'. Whereas '/cycle' previously only allowed you to cycle a channel from the input line of that same channel, you can now specify the target explicitly. '-app' will restart Konversation (as with the new 'Restart' action mentioned in the "Command line arguments" section, preservation of the command line arguments the app was started with requires KDE Platform 4.6 Alpha 1 or higher to work) and '--server' will close all tabs belonging to the current connection and then create a new connection with the same settings as the old one (plus it will attempt to rejoin all previously open channels). Both are new abilities for the command. A '/cycle' without parameters issued in server, channel and query tabs is equivalent to specifying '-server' or the current channel or query, respectively -- the ability to cycle a query is also new.
- The '/clear' command now supports a channel or query argument to clear, as well as an an -all parameter to clear all views.
- The '/notify' command now displays more useful output after adding and removing and when summarizing Watched Nicks.
- Fixed a bug causing adding of nicknames to the Watched Nicks Online list via the '/notify' command to fail.
- Added an optional '-showpath' parameter to the '/exec' command that shows the path at which the given script file was found in the chat text view, i.e. '/exec -showpath media'.
- Commands that accept parameters in the form "-foo" will now also understand "--foo".
- The '/dns' command used to block the UI while trying to resolve the parameter it was given, potentially causing an extended lock-up of the application when the system has serious DNS trouble. This has been resolved; '/dns' is now fully non-blocking.
- Trying to use the '/me' command from a tab that doesn't support it will now cause an appropriate error message to be displayed.
- Fixed a bug causing the '/kickban' command not use the default kick reason from the Identity settings if no reason was explicitly specified.
- Fixed a bug that could cause the '/list' command to open the Channel List tab for the wrong connection.
- Fixed a bug causing '/list <search pattern>' to close an existing Channel List tab (the intended behavior for a parameter-less '/list') rather than update the active filter and refresh the list.
Highlights and notifications:
- Added a new "Chat Windows" field to the Highlight configuration to optionally restrict the list of chat windows a given highlight event may be triggered in to those named in the field, separated by comma or semicolon.
- Resolved a conflict between the highlight system and the graphical emoticon support that was causing unintended highlights when the filesystem path to an emoticon image file shown in the chat text view matched any of the configured highlights.
- Fixed bugs in the highlight system caused by it mistakenly operating on the HTML markup used internally by the chat text views rather than the original text.
- Added a "Default away reason" field to the "Away" tab in the Identities dialog. The away reason entered there will be used when no away message is entered manually as an argument to the '/away' or '/aaway' commands, so for example when Global Away is enabled using the keyboard shortcut.
- "Away Messages" on the "Away" tab of the Identities dialog has been renamed to "Away Commands".
- Fixed a bug causing the Watched Nicks Online system to fail to start checking nickname online status for a network after adding an initial nick to its Watched Nicks list via the context menu actions or the '/notify' command (it worked fine via the WNO tab, however).
- Fixed a bug causing the bookmark address to be unusable (it would lack the network name) when bookmarking a tab and the name of the associated network contains a space or certain other special characters.
- Fixed a bug causing pipe symbols to appear in the date/time stamp and next to the nickname in backlog replay.
- Fixed a bug causing the chat text notification messages originating in the Watched Nicknames Online system to be logged in HTML format (and thus HTML source to be displayed e.g. in backlog replay).
- Fixed a bug causing a change of the buffer size setting on a log reader tab's toolbar not to immediately apply to new log reader tabs opened thereafter. Instead the buffer size for new tabs would be the size set on the toolbar of the last log reader tab that got closed, making it easy to unintentionally undo a change depending on the order in which log reader tabs were closed.
- Added a Color Picker tool to DCC WHITEBOARD, to select a color from the image.
- A better version of the information dialog for DCC file transfers is shown when Konversation is built against KDE Platform 4.5 or higher.
- Fixed a bug causing newly-added DCC file transfers to the list in the DCC Status tab not to be sorted when using Qt 4.7.
- The auto-join on connect feature will now skip over any configured channels that are invalid as per the IRC server's CHANTYPES rules when sending the join command(s) to the server, making sure that all valid channels are joined even on servers that stop parsing join commands on the first invalid channel. Previously, all configured channels were sent.
- Fixed a bug causing a channel the tab of which was closed while a connection was in disconnected mode to be rejoined upon reconnect.
- Fixed a (harmless) bug causing unnecessary trailing "." placeholder channel key segments to be added to the raw format auto-join command (or to the last of multiple such auto-join commands when the amount of auto-join channels requires multiple commands to be generated).
- Fixed a regression that could cause an endless loop of reconnection attempts when issuing a reconnect order to an established connection and the time needed to establish the new connection was longer than the configured reconnection delay. It would also cause confusing status messages to be shown in the connection status tab.
- Cancelling the dialog asking how to deal with SSL errors upon connecting is now treated as a deliberate disconnect on part of the user, i.e. Konversation will no longer try to automatically reconnect.
- A disconnect while waiting for user response to an SSL error dialog will no longer result in an automatic reconnection attempt. Instead, Konversation will wait for the outcome of the user interaction: If the user decides to ignore the SSL errors that have occurred, a reconnect will be initiated, otherwise the connection will remain disconnected.
- Fixed a bug causing a crash when the user chose to accept an invalid certificate in the SSL error dialog when the connection had timed out in the meantime.
- Fixed a bug causing the quit message to not always be supplied successfully to the server when disconnecting.
- Fixed a bug that could cause the "Server found" message to be shown in the connection status tab before the "Looking for server" message if the DNS response was already cached.
- Fixed bugs causing the automatic user information lookup, the periodic WHO-on-self and the periodic PING for a given connection not to be suspended properly after a disconnect, causing unnecessary wakeups and the potential for these messages to be sent at inappropriate times in the early phase of a reconnection attempt.
- Fixed a bug causing a connection failure to reset the lag meter in the status bar to "Unknown" even when the active tab is not related to the connection that failed.
- Solid network up/down notifications are now ignored for connections to localhost.
Scripting and bundled scripts:
- The 'cmd' script, used to run a shell command from within Konversation and send the output to the server, has been rewritten from scratch to provide the following improvements:
- Running a command that returns no output or only empty lines used to result in an error claiming the command does not exist. Now an info message is shown remarking that the command executed successfully but did not return any output or only whitespace.
- The script now also works when called from a server status tab - the command output will be shown to the user rather than sent to the server in that case.
- The command's error output (stderr) used to be ignored; now it is shown to the user in the active tab (but not sent to the server).
- Trailing whitespace is now stripped from command output.
- Output lines containing only whitespace are no longer forwarded to Konversation. As an aside, this also implicitly fixes a bug the old script used to suffer from that caused it to generate faulty D-Bus calls when trying to forward empty output lines.
- The bundled 'sysinfo' script now handles the way 'mount' reports bind mounts on certain newer Linux distributions by collapsing the repeated mentions of the same volume before calculating the disk space information.
- Scripts executed by Konversation can now access Konversation's current UI locale in the KONVERSATION_LANG environment variable.
- Konversation now installs an experimental Python scripting support package named 'konversation' into a subdirectory of its application data directory and appends all 'konversation/scripting_support/python' directories found in any KDE application data resource directories (i.e. within $KDEHOME, $KDEDIRS, etc.) to the PYTHONPATH environment variable available in the script execution context, thereby allowing Python scripts executed by Konversation to import the package. The package currently sports modules providing APIs for i18n support and D-Bus communication with Konversation.
- User-facing information and error message strings in the bundled 'cmd' and 'media' scripts now finally enjoy translation support, making use of the experimental new Python scripting support package described above.
- The 'media' script now requires Python 2.6 or higher and is compatible with Python 3.
- Added support for the 475 numeric (ERR_BADCHANNELKEY).
- Added support for the 482 numeric (ERR_CHANOPRIVSNEEDED).
- Added support for UnrealIRCd's 671 numeric.
- Incoming actions (i.e. "/me") without an argument are now handled properly.
- Fixed a number of crashes on illegal data from the server.
- Raw log tabs (/raw) now use percent-recording to depict non-ASCII characters in raw traffic for much improved usefulness and reliability in the multi-encoding world of IRC.
- Numeric 437 (ERR_UNAVAILRESOURCE) is now treated like numeric 433 (ERR_NICKNAMEINUSE) during early connection negotiation: The next nickname in the identity's nickname list is tried, or the user asked for a new one if necessary. Previously Konversation would just idle in this situation and allow the connection attempt to time out.
Command line arguments:
- Added '--restart' command line argument and a 'Restart' action that quits and restart Konversation. Notes: If not already running, the command line argument has no effect; startup will occur normally. Also, the preservation of command line arguments across restarts is only supported on KDE Platform 4.6 Alpha 1 and higher, as a required library feature is only available as of that version.
- Added a '--startupdelay <msec>' command line argument that causes the app to sleep for the specified amount of milliseconds early during the startup process, delaying D-Bus activity and UI creation.
- Konversation now also registers itself for the irc:// and ircs:// protocols using the way preferred by freedesktop.org's shared-mime technology rather than just the KDE-specific way.
- Fixed the tray icon always being in 'active' mode (and thus conflicting with the Plasma desktop tray's auto-hide behavior) when using the new (and, in this release, only supported) system tray protocol.
- A D-Bus method call to retrieve the list of channels a particular connection is currently attending has been added.
- Numerous updates and cleanup in the handbook.
- Fixed a bug causing the Help button in the Configure Konversation dialog not to open the handbook.
- Various small code cleanups inspired by cppcheck.
Build system and dependencies:
- Konversation now depends on KDE Platform v4.4.3 or higher and Qt v4.6.0 or higher.
- A Python installation is a recommended dependency due to optional but highly popular bundled scripts and an experimental Python scripting support package mentioned above.
- Fixed build with KDE4_ENABLE_FINAL.
- The section of the build system required to build user interface and handbook translations is now always present instead of being added manually to the tarball at release time, springing into action when the subdirectories containing the translation files are added to the source tree from KDE SVN, or remaining dormant otherwise.
- Konversation could crash during Diffie-Hellman key exchange or Blowfish encryption/decryption if the system's installation of the Qt Cryptographic Infrastructure (QCA) does not have the required features available (usually because the qca-ossl provider plugin is not installed). It will now fail gracefully instead and show helpful error messages in the active tab.
New git clone URLs (October 6th, 2010)
The repository layout on git.kde.org has been overhauled today, resulting in a small change to our clone URLs. Essentially, the konversation/ segment has been removed from them. Anonymous read-only access can now be had at:
(Cloning via HTTP is temporarily out of order, but should come back soon.)
Meanwhile, developers use the following for read-write access:
Note that you don't need to throw out your existing clones: You can use git remote set-url origin <new url> to update the URL for your origin remote, or just edit .git/config with a text editor directly.
Konversation 1.3.1 has been released! (July 1st, 2010)
Konversation 1.3.1 is a maintenance release that improves program behavior and fixes defects, the most serious of which is a regression that unfortunately suck into v1.3, which causes data corruption or even loss of Watched Nicknames Online lists on application quit. Behavioral improvements are found in the handling of aborting automatic reconnection attempts after connection failure and RFC 1459 PING/PONG exchanges. Further notable bugfixes have been made to the Edit Network dialog, the handling of system color schemes and using the ignore list feature to ignore certain CTCP events.
Changes from 1.3 to 1.3.1:
- In addition to the '/disconnect' command, the graphical 'Disconnect' action and the '/quit' command can now be used to cancel an in-progress automatic reconnect in the event of connection failure as well.
- The '/disconnect' and '/reconnect' commands now take optional quit message parameters.
- Fixed crashes when pressing the "Edit" buttons below the server or channel lists in the "New Network"/"Edit Network" dialogs after adding a new server or channel and there was no item selected before in the respective list.
- Fixed bugs causing the "Edit" buttons below the server or channel lists in the "New Network"/"Edit Network" dialogs to edit the previously selected list items rather than the ones shown as selected after adding a new server or channel.
- Fixed a bug that could cause outdated status information for nicks to be displayed in channel nickname lists after a reconnect.
- Efficiency improvements for channel join.
- Don't send PING in response to PONG if another PING is already scheduled to be sent in the future. This avoids getting kicked off a server for flooding when multiple clients are connected to a bouncer that forwards PONGs to all of them.
- Fixed numerous cases in which Konversation would incorrectly apply the KDE system color scheme to input lines, nickname lists and the listview version of the tab bar. This general overhaul of the relevant code also brought about minor efficiency and memory usage improvements.
- Fixed nickname lists not respecting the "Alternate Background" setting when set to use custom colors.
- Fixed the listview version of the tab bar not greying out disconnected tabs when set to use custom colors.
- Fixed a bug causing the processing of incoming CTCP CLIENTINFO and CTCP TIME requests not to take the ignore list into account.
- The "Insert IRC Color" dialog will now add a leading zero to colors which have single-digit numbers in the '%C...' string it inserts into the input line, to allow the text that follows to start with a digit rather than such a digit getting interpreted as part of the color number.
- Fixed a bug causing the Watched Nicknames Online nickname list for a network to be stored under the wrong network or lost entirely on application quit.
- Fixed a bug causing the order of the Quick Buttons below the nickname list in channel tabs to be flipped every time the config dialog was OK'd.
- Improved consistency of the filter fields in the URL Catcher and Channel List tabs with other KDE applications.
- Correct use of singular or plural unit suffixes for several numeric preferences in the configuration dialog.
- It is no longer possible to set the auto-way time to the nonsensical value of zero minutes. Rather, a minimum of one minute is now enforced.
Konversation's Git repository has moved (June 18th, 2010)
Back in December 2009, Konversation made the move from Subversion to Git as its version control solution. In the course of that, our source code moved from KDE's Subversion server to the Gitorious.org platform. Konversation was the second KDE project after Amarok to do so; the goal was to test the waters for the eventual migration of KDE as a whole.
Recently, however, KDE's Git migration has changed course a bit: Instead of moving to Gitorious.org, we have decided to host our Git repositories within our own infrastructure (you can read more about this decision and the details of the new setup here and here). For the projects that already moved to Gitorious.org - by now, more than a dozen - this means a second move, and again Amarok and Konversation have moved first to help prepare the ground.
Our wiki has already been updated, but let's go over the new URLs / commands right here:
- Repository browsing: http://projects.kde.org/projects/konversation/repository (using Redmine) and http://cgit.kde.org/konversation/konversation/ (using cgit)
- Read-only Git access: git clone git://git.kde.org/konversation/konversation.git
- Read-write Git access (for developers): git clone email@example.com:konversation/konversation.git
(Note: If you already have a clone, you don't have to clone again. Rather, you can use git remote set-url origin <new url> to switch over to the new URL.)
Commit access to the repository on Gitorious.org has been revoked, and once we've dealt with the in-flight merge requests still found there, the project on Gitorious.org will be deleted.
Konversation 1.3 has been released! (June 7th, 2010)
Konversation 1.3 debuts a major new feature in the area of Direct-Client-to-Client (DCC) support: An implementation of the DCC Whiteboard extension that brings collaborative drawing - think two-player Kolourpaint - to IRC. It also brings back the integration with KDE's SSL certificate store the KDE 3 version enjoyed and expands support for auto-away to the Windows and Mac OS X platforms thanks to both recent advances in the KDE 4 platform and new code in Konversation. Interface tweaks, new keyboard shortcuts and many bugfixes (including a number of new fixes since 1.3-beta1) round things out. Finally, Konversation now depends on KDE 4.3 and Qt 4.5.
Changes from 1.3-beta1 to 1.3:
- Fixed build with KDE 4.3.
- When opening an "Edit Network" dialog and adding a new item to one of the server or channel lists, provided they already contain at least one item and no selection is made before clicking "Add...", the "Move Down" button would be enabled afterwards despite no item being selected. Clicking the button at this point would crash the application. This has been fixed along with other potential problems in the code that updates the state of the list control buttons.
- After adding a new item to one of the server or channel lists in "Edit Network" dialogs, that item will now be selected.
- Fixed a bug causing the file dialog for selecting a new target directory and file name for an incoming DCC file transfer in the event that the default path is not writable to complain about being unable to find the file after clicking "OK" when no file of the chosen name at the chosen location exists already.
- Fixed a bug causing the file dialog for selecting a new target directory and file name for an incoming DCC file transfer in the event that the default path is not writable to lose the file name written in the "Location" field (by default, the original file name) when changing the current directory.
Konversation 1.3-beta1 has been released! (May 22nd, 2010)
Konversation 1.3-beta1 debuts a major new feature in the area of Direct Client-to-Client (DCC) support: An implementation of the DCC Whiteboard extension that brings collaborative drawing - think two-player Kolourpaint - to IRC. It also brings back the integration with KDE's SSL certificate store the KDE 3 version enjoyed and expands support for auto-away to the Windows and Mac OS X platforms thanks to both recent advances in the KDE 4 platform and new code in Konversation. Interface tweaks, new keyboard shortcuts and many bugfixes round things out. Finally, Konversation now depends on KDE 4.3 and Qt 4.5.
Changes from 1.2.3 to 1.3-beta1:
- Konversation now depends on Qt 4.5 and KDE 4.3.
- Added support for DCC WHITEBOARD, bringing collaborative drawing to IRC.
- When showing the dialog informing the user about the local target file for an incoming DCC file transfer already existing that dialog now includes the sizes of the local file and the file the sender is offering up.
- Fixed a bug causing either an empty line or a few characters of garbage to be placed in the clipboard in place of marker/remember lines when copying chat text containing such lines.
- Fixed a bug causing quotation marks, ampersands and angle brackets in chat messages to be displayed as HTML entities in the OSD.
- The "Clear All Windows" action will now also resets the notification state of all tabs (i.e. removes active new message or highlight notifications from the tab bar).
- Fixed a bug causing the server responses to background data gathering via WHO (to keep the app's idea of its own hostmask up to date, as well as optionally channel user info) to be displayed in tabs as if the user had made the requests manually after sending a '/who' command without parameters.
- Fixed a bug causing a crash when sending '/privmsg' without any parameters (did not apply to '/msg').
- In previous versions, channel tabs opened in the background (i.e. while "Focus new tabs" is disabled, as it is by default) would considerably increase the minimum width of the window due to particularities of the Qt layout system. After raising every channel tab at least once it would then be possible to make the window much narrower. This unintuitive behavior resulted in confusion as to why the minimum width of the Konversation window would sometimes vary greatly. This has been fixed in this version, i.e. it is no longer necessary to have raised every channel tab at least once to achieve a reasonable minimum width of the window. This also means that joining a new channel is now much less likely to resize the window.
- Fixed a bug causing the status bar to become multiple lines in height when hovering an URL containing percent-encoded line breaks in the chat text view.
- Fixed a bug making it impossible to scroll the Advanced Modes list in the Channel Settings dialog when the user doesn't have operator status in the channel.
- Fixed a crash when selecting more than one completed, failed or aborted outbound transfer in the "DCC Status" tab and clicking "Resend" in their context menu.
- Fixed a bug causing the human-readable mode descriptions used by default in channel chat text views as well as the Channel Settings dialog's Advanced Modes list not to be translated.
- When the display of human-readable mode descriptions is enabled (as it is by default), the Advanced Mode list in the Channel Settings dialog will now show the respective mode characters alongside them. Previously, only the description was shown. This makes the list useful as a utility to look up the meaning of obscure mode characters.
- Fixed a bug causing both the default email client and the default web browser to be invoked when clicking an email address link in the chat text view.
- Added a built-in '/sayversion' command that, as opposed to the bundled '/kdeversion' script, can show the version of both the KDE Konversation was built against and is running on. It also outputs the information in a single message instead of several.
- Fixed a bug that would cause the second and following segments of a text so long that it has to be split into multiple messages when it is sent to be encoded incorrectly.
- The ASCII 0x1d character is now used to denote italic formatting of text rather than 0x09, to avoid the conflict with the tab character that is frequently pasted e.g. from websites with tables.
- Fixed a bug causing the server response to '/whois <nick> <nick>' not to be displayed on many IRC servers when the nick in questions is not online at that time (this variant of the WHOIS command is also used by the GUI actions).
- Fixed a bug causing missing bans in the list in the Channel Settings dialog on certain (mostly older) IRC servers.
- The text in notification messages used to be wrapped every 50 characters, an old workaround for problems with KDE 3.x's bubble notifications. This has been removed now since it's no longer needed with modern notification frontends such as Plasma's, and produces rather ugly results there.
- Made it possible again to initate DCC file transfers to a query partner by dragging files or URLs onto the chat text area of the query.
- When building against the KDE Platform v4.4.3 libraries, the auto-away functionality will now make use of the new KIdleTime library to determine user activity and inactivity rather than use its own code, the primary advantage being that KIdleTime is supported on non-X11 platforms such as Windows and Mac OS X. In effect, this means auto-away is now supported on those platforms, depending on the implementation level in KIdleTime. (The use of KIdleTime can be explicitly disabled by passing '-DUSE_KIDLETIME=false' to 'cmake', in which case Konversation will fall back to using the original, X11-specific code and auto-away will only work decently on an X11 platform.)
- SSL support now integrates with KDE's certificate handling again, as it used to in the KDE 3 version, made possible by improvements in the libraries of the KDE Platform v4.3 (the minimum version supported in this release) and higher.
- Not reacting to an SSL certificat validation error dialog in a timely manner should no longer result in Konversation locking up.
- In-progress automatic reconnect in the event of connection failure can now be aborted by using the '/disconnect' command.
- Manually issueing a reconnect order to a connection currently inactive after having exceeded its maximum number of reconnection attempts used to result in a single connection attempt after which it would be announced that the maximum number of reconnection attempts had been exceeded again. This has been fixed: It will now make the number of attempts specified as the upper limit in the application settings.
- Fixed a bug that could cause the selection in the transfer list of the DCC Status tab to be lost when a new transfer was added to the list.
- Fixed a bug causing the information panel in the DCC Status tab to show information for a transfer other than the one selected in the transfer list after sending a file to oneself for the first time in a session.
- The frame that used to be around the main window's tab widget when the tab bar was located either at the bottom or top position has been removed.
- Improved compatibility with freedesktop.org-compliant notification frontends other than KDE's. Other frontends could previously show empty notification message contents due to non-standard content in the messages.
- Added an action to switch to the last focused tab, making it possible to quickly switch forth and back between two tabs. The default keyboard shortcut for this new action is Alt+Space.
- Added a "-local" parameter to the '/amsg' and '/ame' commands that limits their scope to the channel and query tabs associated with the same connection as the tab the command is issued in.
- Fixed a bug causing the order of networks in the server list dialog not to be preserved across application restarts.
The development history of Konversation visualized using gource (February 16th, 2010)
As a little change of pace from the usual release announcement postings, here's a short visual treat: The source code revision history of your favorite IRC client, visualized using a nifty tool called gource. Check out out on YouTube, or better yet fetch the high-quality Ogg Theora version from here (1280x720; 143 MB).