diff --git a/ChangeLog b/ChangeLog index 5e5c799a..5d3e5a3c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3612 +1,3612 @@ Changes from Konversation 1.7.4 to 1.7.5: Konversation v1.7.5 is a small bugfix release fixing the build with Qt 5.11. * Fixed building against Qt 5.11. Changes from Konversation 1.7.3 to 1.7.4: Konversation v1.7.4 is a small bugfix release addressing a font settings regression that crept into v1.7.3. * Fixed a bug causing the size of a custom chat text view font set via the configuration dialog to be ignored. A font size modification done - via the Enlarge/Decrease Font Size actions is now applied on top of + via the Enlarge/Shrink Font Size actions is now applied on top of the configured size (or the system default font size, respectively). Changes from Konversation 1.7.2 to 1.7.3: While the Konversation team is currently hard at work on the upcoming major version 2.0 (which will debut an all-new UI and Matrix support, and pave the way for mobile versions), we continue to support users of the stable version 1.7 with maintenance releases. Konversation v1.7.3 re-enables the lost channel mode buttons, adds minor UI refinements and includes fixes for several annoyances and crashes. Most notable in this regard are fixed color scheme handling for the treelist version of the tab bar, and crash fixes in IRC v3 extended-join and IRC color formatting code parsing. * Added a copy action to the context menu of nicknames in the chat text view. * Re-enabled channel mode buttons. * Reduced emission of Unicode directional control characters in the chat text view. Unnecessary control characters could sometimes cause problems with copying text from Konversation and pasting it into terminal applications, confusing them. * Fixed handling of nick and channel prefix characters potentially using the same set of symbols. * Removed redundant escaping of angle brackets in GECOS ("realname") field. * The nickname combobox will no longer change the nickname to the current value whenvever it loses focus. * Fixed color scheme handling in the treelist version on the tab bar, fixing an issue where the background and text color of the selected item would sometimes be the same, rendering the item unreadable. * Fixed handling of IRC URLs for channels starting with more than one #, addressing a percent-encoding problem with bookmarks of them. * Fixed custom chat text view font family reverting to system default font family upon using the increase/decrease font size actions. * Fixed chat text view font size adjusted via the increase/decrease font size actions reverting to configuration default when OK'ing the config dialog. * Fixed incorrect checkbox states in the Channel Invite dialog. * Fixed a crash in IRC v3 extended-join parsing. * Fixed a crash in parsing IRC color formatting codes. * Fixed a minor memory leak in the Join Channel dialog code. * Removed unnecessary nickname list debug message sent as warning. Changes from Konversation 1.7.1 to 1.7.2: Konversation v1.7.2 is a repackage of v1.7.1 with incomplete and badly maintained translations removed. They were accidentally included with the v1.7.1 release. There are no code changes in this release. Changes from Konversation 1.7 to 1.7.1: Konversation v1.7.1 is a maintenance release that addresses issues with some of the new features introduced in the last major release, such as SASL EXTERNAL and server-time support, along with other minor fixes. As per usual this maintenance release also ships the latest round of translation updates. * Fixed requesting the znc.in/server-time-iso capability from the server. * Fixed SASL EXTERNAL authentication without an account name set in the Identity settings. * Fixed clicking on nickname links containing the ` character. * Fixed the Highlight page in the Configure Konversation dialog not enabling/disabling the Apply button correctly. * Minor cleanups in application metadata setup code. Changes from Konversation 1.7-rc1 to 1.7: Konversation v1.7 is a major feature release focusing on greatly expanded protocol support, with newly-added support for many more IRC v3 extensions and the much-requested support for SASL EXTERNAL and 'server-time'. Many bugfixes and cleanups along with reinstated features initially lost in the first Frameworks 5-based release series v1.6.x are included as well. Finally, the handbook has been thoroughly refreshed in this release, and building and running on macOS and Windows have seen several fixes. * Two-finger scroll on the vertical channel list is now less sensitive. * Fixed execution of bundled scripts showing an error about locating translation files when running on a system without kde4-config installed. * Fixed a bug in executable command line parsing for passed URLs. * Fixed Konversation failing to start on Windows systems without D-Bus (it would previously exit if it failed to initialize its D-Bus service). * Ported from deprecated KDE Frameworks APIs to 5.24+ API (v1.7 requires Frameworks 5.25 or higher). Changes from Konversation 1.6.2 to 1.7-rc1: Konversation v1.7-rc1 is the first release candidate for the next major version of Konversation. The focus of the v1.7 release is on greatly expanded protocol support, with newly-added support for many more IRC v3 extensions and the much-requested support for SASL EXTERNAL and 'server-time'. Many bugfixes and cleanups along with reinstated features initially lost in the first Frameworks 5-based release series v1.6.x are included as well. Finally, the handbook has been thoroughly refreshed in this release and building on Mac and Windows has seen several fixes. * Improved support for CAP negotiation. * Output for CAP LS and CAP LIST is now shown in the server status view. * Added support for IRCv3 CAP MULTI-PREFIX. * Added support for IRCv3 CAP AWAY-NOTIFY. * Added support for IRCv3 CAP ACCOUNT-NOTIFY. * Added support for IRCv3 CAP EXTENDED-JOIN. * Added support for IRCv3 CAP USERHOST-IN-NAMES. * Added support for extended WHO. * Added support for server-time and message tags. * Added support for znc.in/server-time-iso, making buffer playback from ZNC much nicer. * Added support for the SASL EXTERNAL authentication mechanism, e.g. needed for using Tor with freenode. * Redesigned search bar in chat views. * Added support for font zooming to chat views. * Improved bi-di text handling in chat views. * The --restart command line argument works again. * Fixed command line argument parsing when Konversation is already running * Fixed tab completion not working when pressing tab after a full existing nickname as prefix. * Fixed the topic editor not updating when the topic changes. * Fixed nickname links including the pipe character. * Fixed the Invite dialog not closing on OK. * Fixed angle bracket display in OSD message bubbles. * Fixes to core protocol handling, e.g. in prefix parsing. * Fixed crash on close when the nick menu has been shown. * Fixed crash on quit. * Fixed crash when closing views. * Fixed crash in DCC resume dialogs without a Retry button. * Fixed incorrect icon for the global away action. * Minor UI layout cleanups, e.g. in the Behavior -> Chat Window settings page and fixes to tooltips. * Code cleanups, e.g. removal of unused settings and related code paths, porting away from deprecated API, and more. * Overhauled and corrected handbook & refreshed handbook screenshots to Frameworks 5 version. * Build fixes for Windows (MSVC compatibility and winsock linking). * The Windows and Mac builds now have app icons. * Improved code portability by using different byte swapping routines. * Updated AppStream metadata. * Konversation now depends on Qt 5.5+ and KDE Frameworks 5.25+. Changes from Konversation 1.6.1 to 1.6.2: Konversation 1.6.2 is a hotfix release that fixes an unfortunate severe crash condition that crept into 1.6.1. * Fixed a bug causing various operations on server list data to crash, e.g. pressing "Edit" on a server sub-item in the Server List dialog. * Translations for AppData metadata added in v1.6.1. Changes from Konversation 1.6 to 1.6.1: Konversation 1.6.1 is a maintenance release that contains various bug fixes for the stable KDE Frameworks 5-based version of Konversation. * Added an option to allow a server to bypass the global proxy settings. * Fixed a crash when changing the Qt style engine. * Fixed a crash when running "/exec -showpath" with no script name. * Fixed notification events for DCC Chats not working. * Fixed crash when closing the DCC Status tab. * Fixed crashes with the ISO-2022-JP encoding. * Fixed the "Close All Open Queries" action not working properly. * Minor UI polish, e.g. the margin under the nicklist when the Quick Button grid is disabled or emtpy. * Fixed missing icons on the Next/Previous buttons in the search bar. * On screens to small to fit Konversation's configuration dialog, the dialog will now show scrollbars around its content instead of the dialog buttons being forced off-screen. * Konversation now sets its window icon in a way that causes a hi-res icon to be available in window switchers such as Plasma's Alt+Tab UI. * Removed the spell checking language submenu from the context menu of the input bar - KDE Frameworks 5 now contains this upstream, leading to two submenus. * Fixed installing the Oxygen nickname list theme. * Fixed changes to the tab bar font's font weight being applied to the chat text area. * Minor changes to tooltips to support the Wayland windowing system better. * Fixed the Windows build. * Added KCrash (DrKonqi) support. * Improved support for the KDE Kiosk framework, fixing checks for the "shell_command" privilege. * Added AppData metadata for app stores. Changes from Konversation 1.6.1-beta1 to 1.6: Konversation 1.6 is the first stable release of Konversation built on the new KDE Frameworks 5 and Qt 5 library sets, improving integration into many desktop environments, including Plasma Desktop 5, and adding first support for hi-dpi scaling. In addition to porting and reworking things for hi-dpi scaling, a number of behavior improvements and bug fixes were implemented, particularly improved nickname selection behavior at connection time and better layout behavior for the channel topic area. Unfortunately the 1.6 release removes support for integrating with the KDE Address Book, as the interfaces Konversation was using to achieve this were dropped from KDE Frameworks. A replacement is in the works in the form of the new KPeople library, which we intend to use in a future release. Using KPeople, Konversation will then be able to tightly integrate with various contact management-related features in Plasma Desktop. * Improved support for character set aliases via KCharsets. * Improved behavior when reconnecting and Konversation had to use an alternate nickname for the previous connection because the preferred nickname was already in use: Konversation will now try harder to go back to nicknames sorted earlier in the identity's nickname list, instead of advancing down the list without checking whether earlier nicknames have become available again. * Konversation will no longer give up trying to connect when only a single nickname is configured and not available at connection time. Instead, it will do as many reconnection attempts as allowed by user configuration. * Fixed incorrect size calculations for the channel topic text label causing cut-off text and unwanted collapsing of the topic area. * Fixed a bug causing auto-connect not to connect to networks in the order they are listed in the Server List dialog. * Fixed a bug causing the main window not to be raised when an Konversation is started an additional time and the window is currently minimized. * The default tabs position is now 'Left', i.e. the treelist version of the tab bar. * Tabs can now be reordered by drag and drop again. * Fixed various rendering issues in the treelist version of the tab bar and made it high-DPI scaling-capable. * Fixed a bug causing Channel List tabs not to be sorted below the status tab of the server they belong to in the treelist version of the tab bar, and corrupt its contents. * Fixed margins in the Edit Network dialog. * Improved wording and correctness of several interface messages. * Fixed a bug causing some interface messages and labels not to use their translated versions when running with a language other than US English. * Fixed a bug causing Konversation not to generate default command aliases for installed scripts at startup anymore. * The bundled 'cmd' script now defaults to trying to decode command output as Utf-8 even when run on Python 2. * Fixed the bundled 'bug' script not working. * Fixed naming of bundled icons. * Konversation now opts into Qt's high-DPI pixmap handling. * Adjusted build system to use co-installable version of qca-qt5. * Fixed build failures on Windows. Changes from Konversation 1.5.1 to 1.6-beta1: Konversation 1.6-beta1 is the first release of Konversation built on the new KDE Frameworks 5 and Qt 5 library sets, and intended to allow you to help us test and shake out the remaining issues in the ported code. With stability despite many changes under the hood as the primary goal, the 1.6 release will not bring any new features, though Frameworks 5 and Qt 5 offer a host of efficiency improvements over the old stack and will enable us to support hi-dpi scaling and Wayland going forward. Known issues in this beta include a lack of addressbook integration support (the needed Frameworks dependencies have not yet been released), drag and drop support for tabs being disabled, and minor visual polish issues, including some visual assets not having been updated to match KDE's new "Breeze" visual identity yet. We expect to resolve these issues in upcoming releases. * Konversation now depends on KDE Frameworks v5.2.0 and Qt v5.3.0. * The default nickname list theme has been updated to KDE's new Breeze visual identity. * Notification events now have non-generic titles to prevent Plasma Desktop 5 from merging events from different sources. * Fixed a bug causing the "Focus Input Bar" action to be enabled/disabled at incorrect times. Changes from 1.5 to 1.5.1: Konversation 1.5.1 is a maintenance release containing only bug fixes. The included changes address several minor behavioral defects and a low-risk DoS security defect in the Blowfish ECB support. The KDE Platform version depen- dency has increased to v4.9.0 to gain access to newer Qt socket transport security flags. * Fixed a bug causing wildcards in command alias replacement patterns not to be expanded. * Fixed a bug causing auto-joining of channels not starting in # or & to some- times fail because the auto-join command was generated before we got the CHANTYPES pronouncement by the server. * Added a size sanity check for incoming Blowfish ECB blocks. The blind assumption of incoming blocks being the expected 12 bytes could lead to a crash or up to 11 byte information leak due to an out-of-bounds read. This fixes CVE-2014-8483. * Enabling SSL/TLS support for connections will now advertise the protocols Qt considers secure by default, instead of being hardcoded to TLSv1. * Fixed the bundled 'sysinfo' script not coping with empty lines in /etc/os-release. * Made disk space info in the bundled 'sysinfo' script more robust by forcing the C locale for 'df'. * Added an audio player type hint for Cantata to the bundled 'media' script. * Fixed some minor comparison logic errors turned up by static analysis. * Konversation now depends on KDE Platform v4.9.0 or higher. Changes from 1.5-rc2 to 1.5: Konversation 1.5 adds numerous major features over the previous stable release. Of particular note are support for SASL and client certificate authentication, all-new topic management UI, overhauled authentication UI in the Identities dialog, per-tab spell-checking language settings, user-configurable nick context menu entries, mouse spring-loading on tabs, all-new versions of major bundled scripts and improved Ignore and Watched Nicknames systems. Many under-the-hood changes to improve codec support and general performance, along with the usual slew of bug fixes all over, further sweeten the deal. Don't miss out on reading about various other new features and more fixes in the full changelogs since version 1.4, too! * Expanded interface translations. Changes from 1.5-rc1 to 1.5-rc2: After a (too) long wait, Konversation 1.5-rc2 is hopefully our final bid for your aid in assuring the quality of a now-impending final release. Quite a few gnarly bugs have fallen since rc1; some of them long-standing, others were introduced along with the features that made their debut in the preceding test release. Of particular interest to many users will be robustness improvements in the Watched Nicks system and the lifting of certain restrictions on Unicode support that had been in place as a by-product of supporting older, defective Qt versions. See the changelog for more details! * Fixed a bug that could cause the Watched Nicks system to report all nicknames as offline if the Watched Nicks tab had been opened prior to a reconnect, even if that was not the case. * Fixed a bug where a URL with IRC Color markups caused to show colors, even if 'Allow Colored Text in IRC Messages' was disabled. * Fixed a bug where spaces in the path to the pre-connect shell command were handled incorrectly. Tilde expansion now occurs as well. * Clicking a channel link starting with more than one # character would join a channel starting with one # too few; this has been fixed. * Fixed auto-replace not being applied to messages that are sent from the Large Paste Warning dialog. * Made the action to manually apply Auto Replace work in the Paste Editor as well. * Fixed irc(s):// URL support registration in KDE 4.9.3+ (kdelibs versions 4.9.3 and higher give precedence to .desktop file x-scheme-handler MIME type regis- tration over .protocol files installed by an app, but Konversation did not announce URL support via an %u expando in the Exec key). * Build fix for win32. * Added a workaround for a rare crash on Mac OS X due to bugs in the implementa- tion of Qt's font metrics calculation on that platform. * Fixed a bug causing changes of the 'a' user mode to set/remove Owner status on nickname list entries. * Minor UI cleanup in the Channel Settings dialog. * Enabled freedesktop.org Startup Notification support. * Recent releases of Konversation filtered all Unicode characters outside the Basic Multilingual Plane due to a confluence of grave bugs in the Utf-8 support in Qt. As fixed versions of Qt have now circulated for some time and are required to build Konversation, this restriction on Unicode support has now been lifted. * Fixed a bug that caused the desktop notification (KNotify) event for nicks on the Watched Nicknames list coming online or dropping offline not to fire when notifications for the associated connection's status tab were disabled. * Fixed the bundled 'sysinfo' script crashing on non-ascii characters in /etc/os-release when run on Python 2. * The bundled 'sysinfo' script now tries harder to determine the current CPU clock frequencies (it now looks at sys/.../cpufreq/scaling_cur_freq in addi- tion to /proc/cpuinfo). * Fixed a bug causing the flood fill tool in DCC Whiteboard tabs not to use the correct color after using the color picker tool to set it. * Launching the default browser when clicking on links now works properly again on Windows. * Fixed a bug causing certain combinations of sorting and filtering in Channel List tabs not to work correctly, leading to partially unsorted list entries. * Minor rewordings and cleanups in UI text and the handbook for clarity and correctness, e.g. the "Notify" notification event is now known as "Nick on- line". * More information sources are now taken into account to update Konversation's idea of whether a particular nick is identified with services or not (infor- mation from IRC numeric 330 was previously discarded). * Fixed a bug causing Konversation to attempt to PART a channel that's no longer actually joined when closing a channel tab after having been kicked from the channel. * Some included PNG image files were badly encoded, this has been addressed. * Fixed a bug causing the file URL for an authentication certificate in the Identities dialog to be forgotten across application restarts. * The warning about text in the topic editor exceeding the server-allowed limit now calculates the threshold more correctly, taking encoding and IRC formatting expandos into account. * Konversation now depends on KDE Platform v4.7.0 or higher and Qt v4.7.0 or higher. Changes from 1.4 to 1.5-rc1: 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. * 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 pre- served 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. ) 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. Changes from 1.4-beta1 to 1.4: 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 release 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 v1.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 since 1.4-beta1: * 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. Changes from 1.3.1 to 1.4-beta1: 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. 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 occurred. 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. Text views: * 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). Input lines: * 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. Commands: * 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 -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. Identities: * 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". Watched Nicknames: * 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). Bookmarking: * 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. Logging: * 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. DCC: * 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. Connection behavior: * 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. IRC Protocol: * 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. System integration: * 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. D-Bus interface: * A D-Bus method call to retrieve the list of channels a particular connection is currently attending has been added. Documentation: * Numerous updates and cleanup in the handbook. * Fixed a bug causing the Help button in the Configure Konversation dialog not to open the handbook. Misc: * 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. Changes from 1.3 to 1.3.1: Konversation 1.3.1 is a maintenance release that improves program behavior and fixes defects, the most serious of which is a regression that unfortu- nately 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 bug- fixes 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. * 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 re- spective list. * Fixed bugs causing the "Edit" buttons below the server or channel lists in the "New Network"/"Edit Network" dialogs to edit the previously selec- ted 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 net- work 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 pre- ferences 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. Changes from 1.3-beta1 to 1.3: 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. * 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 "Lo- cation" field (by default, the original file name) when changing the current directory. Changes from 1.2.3 to 1.3-beta1: 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 Kolour- paint - to IRC. It also brings back the integration with KDE's SSL certi- ficate 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, Konversa- tion now depends on KDE 4.3 and Qt 4.5. * 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 gar- bage 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 no- tifications from the tab bar). * Fixed a bug causing the server responses to background data gather- ing 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 pa- rameters (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 con- siderably increase the minimum width of the window due to particu- larities 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 "Re- send" 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 Set- tings dialog will now show the respective mode characters along- side 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 char- acters, an old workaround for problems with KDE 3.x's bubble notifi- cations. 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 issuing a reconnect order to a connection currently in- active 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 reconnect- ion 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 possi- ble 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. Changes from 1.2.2 to 1.2.3: Konversation 1.2.3 is a hotfix release that improves upon an earlier fix, originally included in Konversation 1.2.2, that increases the re- liability of Konversation's interaction with the D-Bus inter-process communication daemon. * Increased reliability of interactions with the D-Bus inter-process communication daemon. Changes from 1.2.1 to 1.2.2: Konversation 1.2.2 contains a number of new features, such as support for passive DCC chat and amarok:// URLs, and a large amount of user interface improvements to various tabs (e.g. Watched Nicknames Online and the URL Catcher) and dialogs (e.g. Join Channel). When used with KDE SC 4.4 it supports the new system tray icon API. A sizable list of bug fixes round things out; of particular note is a change address- ing the high CPU usage some users have experienced with Qt 4.6. * Added support for passive DCC chat. * Made it possible to accept/reject DCC chats like DCC file transfers. * Added an option to auto-accept DCC chats (previously it would always auto-accept). * Added a confirmation dialog for closing DCC chats, consistent with other conversation tabs. * Improved the sanity-checking code for the validity of ports used in DCC operations. * Fixed connection attempts possibly stalling when there is a problem with executing the associated identity's pre-shell command (provided it has one set at all), and Konversation crashing when it is quit while a connection attempt is stuck on trying to execute the pre- shell command. * Fixed /setkey, /delkey and /showkey treating their target arguments (i.e. a channel or a query) case-sensitive. * Fixed the encryption key for a query getting lost if the other end changes their nickname. * Added support for KStatusNotifierItem, the new system tray API in KDE. * Fixed a bug causing multiple auto-replacements in a single message not to work. * Made it possible to include syntax normally used to refer to a sub- group of the matching pattern as normal text in the replacement pat- tern of a regular expression auto-replace, by escaping it like this: %%1. * Fixed a bug causing an empty MODE message to be sent to the server preceding the correct one when using /op, /deop and the like. * Fixed a bug causing as many mode chars as target nicknames given to commands like /op, /deop etc. to be sent as part of every single re- sultant MODE messages sent to the server, despite one MODE message being generated for every group of three target nicknames. I.e. "/op foo foo foo foo" would result in "MODE +oooo foo foo foo" and "MODE +oooo foo", when it should only be "+ooo" and "+o", respectively. * Added support for amarok:// URLs in chat text views and channel to- pics. * Fixed a bug causing Konversation to treat "Page Up" and "Page Down" key events with any modifier (e.g. Ctrl) the same as without any mo- difier, making such combinations unavailable as shortcuts for other actions. * Fixed a bug causing the status bar to remain stuck displaying the description of a menu action if subsequently hovering other actions without a description set. * The Watched Nicknames Online, URL Catcher and Channel List tabs now use a toolbar at the top rather than a row of buttons at the bottom for their various actions, consistent with the Log Viewer and the (redesigned for 1.2) DCC Status tabs. Aside from a nicer UI this has the side benefit of reducing the minimum window width with any of these tabs open. * Further work on reducing the use of the qt3support/kde3support lib- raries throughout the codebase. * The design of the search bar has been made more consistent with the search bars found in other KDE applications (e.g. Konqueror, Konso- le and KWrite). * Added a "--noautoconnect" command line argument to disable auto-co- nnecting to any IRC networks on application startup. * The invite dialog now has a drop-down offering the options "Always ask", "Always join" and "Always ignore" for future default behavior, rather than just a "Don't ask again" checkbox that wasn't sufficient to cover all scenarios. * The "Hide Nicklist" action has been renamed "Show Nicklist" to com- ply with the KDE 4 HIG. * URLs are no longer decoded before being passed to the web browser, fixing the opening of some links from the chat text view. * Fixed a bug causing the application to crash when pressing the left or right arrow keys after selecting an active file transfer in the DCC Status tab's transfer list when using Qt 4.6. * Improved performance of the DCC Status tab's transfer list. * It's now possible to add nicknames to the Watched Nicknames Online list, as well as remove them, right from the tab rather than having to go to the config dialog. * Fixed a bug that would cause the "Choose Association" KDE address book integration action to create a new contact in the address book. * It's now possible to add a nickname to the watch list of all net- works in the Watched Nicknames Online tab at once. * Fixed a bug causing the opening of all bookmarks in a bookmark fol- der at once not to work. * The ban list interface has seen a facelift. The new way of working with the list makes it very easy to use an existing list entry as a starting point, modify it and then decide between replacing the original ban with the new version or adding it as an additional ban. * The topic history list in the Channel Settings dialog has seen a number of behavioral and reliability improvements. * Updated various dialog layouts to better comply with the alignment rules of the KDE 4 HIG. * The URL list in the URL catcher tab now sports a new Date column and can be sorted. The sorting settings are saved and restored across sessions. * Fixed a bug causing the vertical spacing inbetween the regular mode checkboxen on the "Modes" tab of the Channel Settings dialog to change when the display of the advanced mode list was toggled or the dialog was resized. * The Join Channel dialog now sports a combo box listing all open co- nnections (and the nicknames used on them, to be able to tell mul- tiple connections to the same network apart), with the connection owning the active tab automatically pre-selected. This allows one to pick the connection to join the channel on regardless of the active tab at the time the dialog is invoked (e.g. via the keyboard shortcut). Previously, the dialog would only operate on the connec- tion owning the active tab (and display it in a static label), possibly requiring one to switch to a suitable tab first. * Fixed a bug causing the "Clear History" item in the context menu of the channel combobox in the "Join Channel" dialog not to clear the history correctly; while it would be gone for as long as the dialog was open, it would be back when closing and reopening the dialog. * Fixed a bug causing a crash on Windows when middle-clicking the chat text view. * Fixed a bug causing the pasting of clipboard contents using keyboard shortcuts not to work when the chat text has keyboard focus. * Fixed a bug causing the setting or removing of a 'q' channel mode to be mistakenly announced as giving or taking channel owner privileges on networks where it's actually a type of ban. * Fixed a bug causing a crash when pressing the "Ok" button in the "Join Channel" dialog without entering anything in the dialog's "Channel:" input field beforehand. * More robust Unicode handling to make interaction with the D-Bus dae- mon more reliable. Changes from 1.2 to 1.2.1: This second release in the Konversation 1.2.x release series for KDE 4 adds a number of new features to the bookmarks system and support for reacting to changes in network availability as signaled by KDE's Solid, along with a number of fixes for bugs discovered since version 1.2 was released last month. * Fixed a crash when cancelling the warning dialog that is shown upon receiving two incoming DCC file transfer requests using the same file name. * Fixed a crash when using the "Clear Completed" action in the DCC Sta- tus tab after having previously used the "Clear" action to remove spe- cific transfers from the transfer list. * Fixed a crash when using the "Clear" or "Clear Completed" action in the DCC Status tab after creating a mixed selection of removable (e.g. com- pleted, or failed) and non-removable (e.g. sending) transfers and the last addition to the selection was a removable transfer. * Added a "Bookmark Tabs as Folder" feature. * Added the ability to open the contents of an entire bookmark folder at once (aka "Open Folder in Tabs"). * Made the default generated bookmark titles more verbose: The Format is now "Channel (Network-or-Server)". * Added support for reacting to changes in network availability as re- ported by KDE's Solid subsystem. If the network goes down, Konversa- tion will now no longer make futile attempts to reconnect the affect- ed connections. Instead, it will reconnect once the network comes back up. * Variable expansion (%B, %C, %I, etc.) is no longer done in text seg- ments recognized as URLs to avoid clashes with percent-encoded char- acters in URLs copied from web browsers, such as German umlauts. * Made tooltips for truncated labels in the listview version of the tab bar work again with newer versions of Qt. * Fixed a bug that caused the Watched Nicknames Online list to show the wrong or no tooltip when hovering a list item with the mouse pointer. * The default destination folder for incoming DCC file transfers is now the "Downloads paths" configured in System Settings or the equivalent in other desktop environments (under the hood, this is a shared XDG setting). * Making and then comitting unrelated changes in the Channel Settings dialog could cause unintentionally setting the channel's topic to an older version if someone else had changed the topic since the first time the dialog was opened or while the dialog was open, due to a bug in the code that avoids such external topic changes interfering with concurrent local editing of the topic. This has been fixed. * The contents of the topic edit field in the Channel Settings dialog will now reflect the selected item in the topic history list until the user starts editing. * Fixed a bug that could cause user mode changes occurring directly af- ter joining a channel not to be reflected by the channel's nickname list. * Fixed a bug causing the "Open File" context menu action for DCC file transfer items in the transfer list in the DCC Status tab not to work for incoming file transfers. * Added support for RPL_HOSTHIDDEN. Changes from 1.2-rc1 to 1.2: Konversation 1.2 is the first release of Konversation for the KDE 4 app- lication platform and desktop environment. In addition to preserving the full functionality of the KDE 3 version, this release offers a signifi- cant amount of new features and improvements to the user interface, per- formance, memory usage, energy efficiency, correctness and stability. Sum total, the changelog of all development releases since Konversation 1.1 and of this final release combined once again make for the longest changelog in Konversation's release history. Some of the highlights compared to Konversation 1.1 include support for SOCKS v5 and HTTP proxies, a redesigned DCC file transfer user interface (and much improved DCC code under the hood with several new features, such as support for IPv6 and DCC REJECT), support for UPnP for NAT tra- versal, rewritten and much improved support for Blowfish encryption (now supporting DH1080 key exchange, for example), a significantly better per- forming channel list, a rewrite of the channel nickname lists for better performance and improved battery-friendlyness, a new channel join invita- tion user interface, an improved auto-replace feature, expanded media player support and many improvements to the IRC protocol implementation. Enjoy! * When dragging a link from the chat text view, the drag object will now contain a plain text version in addition to the URL version. This allows dragging a link to places that don't accept URL drops, such as Konsole, the Konqueror address bar or Konversation's own input line. Changes from 1.2-beta1 to 1.2-rc1: After a pleasantly uneventful two weeks with beta1, this release candida- te for our first KDE 4 stable release brings a handful of bugfixes that, while definitely worth having, are fortunately none too scary. We thus ex- pect the final Konversation 1.2 release to follow in the very near future. * Fixed the scrollbar thumb not remaining at the bottom when the chat text view is resized (such as when the window is resized or the input bar in- creases in height after typing more than one line with auto-expand mode enabled). * Fixed a bug that could cause the progress bar for DCC file transfers not to be updated when "Fast DCC send" was enabled. * Fixed a bug that could cause a crash when resuming an incoming DCC file transfer. * Fixed characters that require the Alt Gr modifier to be typed (such as the '@' symbol in German keyboard layouts, for example) not causing key- board focus to move to the input line when typed while the chat text view has keyboard focus and thus not showing up in the input line. * Fixed a bug causing both the link and the marker or remember line to be selected when a line is appended directly after a link that has just been clicked. * Fixed a bug causing the automatic scroll-down not to work when more back- log is replayed than the viewport can show at once at channel join. * The "Advanced Modes" listing in the "Modes" tab of the Channel Settings dialog will now properly vertically expand as the dialog is resized even to a very large height. * Fixed a bug that could cause a crash while manipulating a channel's ban list. * Fixed a bug causing the moving of child tabs of a network tab in the treelist version of the tab bar not to work using the keyboard shortcuts, context menu actions or "Window" menu actions. Changes from 1.2-alpha6 to 1.2-beta1: Konversation 1.2-beta1 marks the departure from active feature development for Konversation 1.2 and the entrance into the much-vaunted halls of bug- fixing-until-the-final-release, which we expect to materialize in early October. Until then, you can enjoy what this beta has to offer: HTTP and SOCKS v5 proxy support, further redesign of the DCC Status tab (many of you will be happy to find the minimum window size with the DCC Status tab open much reduced now), the long-awaited return of marker and remember lines and the resurrection of link dragging from the text display widget are of particular note, but the changelog has the details on a variety of other additions, plus the usual assortment of bugfixes, as well. * Added a topic widget for Konsole windows and hooked it up to the KPart's setWindowCaption signal * Added tooltips to items in the new DCC transfer lists that describe the transfer's status more verbosely. * Fixed the OSD stealing focus when it appears on Windows. * Running DCC file transfers are now properly aborted on application quit. * Removed the 'ucs2' encoding from the encoding list, as it is is not sup- ported on IRC. This also resolves a crash when sending messages after selecting it (however the crashing codepath has been independently made more robust as well). * Fixed a crash when sending a message containing only spaces. * Added a "Manage Profiles" button to the information area above the ter- minal area in Konsole tabs. * Added SOCKS v5 and HTTP proxy support. Proxy credentials are stored in KWallet. * Moved the buttons in the DCC Status tab to a toolbar, similar to how things were already laid out in log viewer tabs. * Redesigned the DCC transfer info panel in the DCC Status tab to have a smaller minimum size. This should mean that less people will see their window size increase when a DCC transfer is initiated, as it reduces the minimum size of the window with the DCC Status tab open. * Added a "Clear Completed" item to the DCC Status tab's toolbar. * Fixed a crash on the processing of illegal lines sent by the server that contain only spaces (as sent by the buggy lidegw lide.cz gateway script). * Made DCC transfer speed reporting more reliable. * Fixed sorting the transfer list in the DCC Status tab by its "Started At" column. Previously, sorting by that column would sort alphabetically by the string value of the fields rather than properly by date. * Fixed the Channel Settings no longer disabling interface elements allow- ing the manipulation of channel properties when the user lacks the ne- cessary operator privileges in the channel. * The position of the splitter handle determining the size of the info pa- nel in the DCC Status tab is now saved across application restarts. * Fixed a crash when changing settings after the "Insert Character" dialog had been used. * When an attempt to set up a port forward via UPnP fails, an error message stating as much will now be shown in the currently active or last active tab for the associated IRC server connection. * Made the '/amsg' command work properly again. * Fixed two close icons (one on the left, one on the right) being shown on tabs when close buttons were enabled and the tabs were in top or bottom position. * Fixed incorrect colors in the listview version of the tab bar when ini- tially switching to it within a session. * Fixed a regression vs. the KDE 3 version that caused a failure to correct- ly parse shortened IPv6 addresses except when using RFC 2732-style bracket notation and explicitly stating a port to connect to. * Made the display of server address and port number in various connection- related chat view messages more consistent and IPv6-friendly (with the '<ip>:<port>' forward previously used, it could be hard to tell where the IP ended and the port began -- now it's '<ip> (port <port>)'). * Updated the scripting documentation to talk about D-Bus rather than DCOP. * The initial width of the nickname lists in channel tabs is now more sen- sible. * Added back the ability to drag links out of the chat view. * Resurrected the RTL text support in the chat view. * Fixed a crash during UPnP discovery when the router doesn't respond in the expected way. * Various actions that operate on the active tab (e.g. those found in the "Insert" menu) are now properly disabled when the last tab is closed. * Fixed a bug with Qt 4.5 where after closing a tab a tab adjacent to it would briefly be activated before subsequently activating the tab that was active before the just closed one (i.e. only noticable when 'a tab adjacent to the just closed tab' and 'the previously active tab' are not the same). * Marker lines and the remember line are back. * Fixed a bug that could cause queue flushing rates to be entered into the configuration that would prevent successfully connecting to Freenode and potentially other IRC networks. Changes from 1.2-alpha5 to 1.2-alpha6: Konversation 1.2-alpha6 is primarily a hotfix release addressing a serious DCC crash that we unfortunately only discovered after releasing alpha5. To sweeten the offer, however, it also includes a nicer DCC tranfer list that separates incoming and outgoing transfers into distinct categories, allows you to enable/disable individual columns and saves the sort column and di- rection across application restarts. Furthermore, Konsole tabs may now be renamed and there's also a fix for the handling of certain rare mode cha- racters. * The transfer list in the DCC Status tab now separates items into "Inco- ming Transfers" and "Outgoing Transfers" categories, using the same ca- tegory headers employed in System Settings and other places throughout KDE 4. * It's now possible to enable/disable the display of individual columns of the transfer list in the DCC Status tab. This is remembered across app- lication restarts. * The sort column and direction of the transfer list in the DCC Status tab is now remembered across application restarts when using Qt 4.5 or higher. * A "Rename Tab..." action has been added to the context menu of Konsole tabs. * Fixed a crash when the client observes channel modes being modified that carry a parameter when used as user modes. * Fixed a crash when an incoming active or outgoing passive DCC file trans- fer either timed out or was manually aborted while in "Connecting" state." Changes from 1.2-alpha4 to 1.2-alpha5: Konversation 1.2-alpha5 features significant performance and memory usage improvements in several areas of the application, such as channel nickname lists, backlog loading, Channel List tabs and the URL Catcher - the latter two have also seen a fair number of interface refinements, making them much more enjoyable to use. The DCC subsystem has seen the addition of IPv6 sup- port and a '/dcc get' command to accept an incoming file transfer from the input line. Various smaller additions and improvements have been made as well, including the usual share of bug fixes. * Added back "Do not ask again" checkbox missing in the rewritten invita- tion dialog that appeared in v1.2-alpha4. By implication, the dialog now also observes the "Automatically join channel on invite" option from the "Warning Dialogs" page in the configuration dialog again. * Fixed problems reconnecting an SSL-enabled connection using a self-sign- ed certificate. * Fixed a build problem with KDE trunk (i.e. what will one day be KDE 4.4). * Fixed loading and saving of the settings toggling the invitation and mul- ti-line paste warning dialogs in the "Warning Dialogs" page of the con- figuration dialog. * Improved wording of the description of the invitation dialog setting in the "Warning Dialogs" page of the configuration dialog to reflect that the dialog being disabled doesn't imply that the channel the user was invited to will be joined automatically, as the user might have rejec- ted the invitation when he got the dialog along with checking "Don't ask again". * Decreased memory usage (the objects created for every IRC user encounter- ed are lighter now). * Initializing Phonon is now delayed until it is actually needed, resulting in less memory usage for those not using highlight sound notifications and less work being done during application startup. * Fixed DCC file transfer problems with files larger than 4 GB on 32bit sys- tems, along with some other correctness improvements to the file transfer code. * Backlog loading is now more efficient. * Added IPv6 support for DCC file transfers. * The fallback default file name for unnamed files received via DCC now con- tains the date of when the file was received in ISO format. * Fixed a crash when trying to perform a tab completion with an empty nick- list (i.e. shortly after joining a big channel, before its nicklist has been filled in). * Channel nickname list updating is now more efficient and pleasant to look at. Rather than resorting the entire list after the addition of a new nick- name, the nickname is now inserted directly at the correct position (using a binary search), avoiding a lot of CPU-intensive comparisons between nick- names. The same optimization is also done for nickname and user status (as relevant in case "Sort by status" is enabled) changes - rather than trigger- ing full resorts, items are moved directly to new positions as necessary. Resorting after both new additions and changes was previously done only after a delay of one second (as part of a scheme to throttle the update rate to a maximum of once per second given how CPU-intensive it was), which meant that new nicknames would initially appear at the end of the list and move to the correct position only after one second, and that nickname and status changes were similarly reflected in the sorting only after one second - this delay has now been eliminated, making the nickname list much snappier in re- acting to what's going on. Note however that when more than ten events requiring an update to sorting occur within one second, a fallback to the old scheme of doing a full resort at a maximum rate of once per second, after an initial delay of one second, occurs, as this is believed to be more efficient in situations of very high activity (such as merges after netsplits). Thus the new scheme described above should be seen as an additional optimization for the common case. * In addition to the broad strokes optimization described above, other minor optimization work has been done on the nickname list updating code, impro- ving the efficiency of updates further. * Fixed topic label text color not reacting to system color scheme changes. * Added a '/dcc get [nick [file]]' command to accept an incoming DCC file transfer request. * Fixed a crash when using the 'Insert -> IRC Color...' menu item without there being any tabs. * Nickname changes of the discussion partner are now announced in query tabs, provided the information is available (i.e. when one shares a channel with the discussion parther, so the server informs Konversation of the nickname change). * Fixed building on OpenSolaris. * The channel item context menu in Channel List tabs now has a "Join Channel" action, and the list of URLs extracted from the channel topic has been mo- ved to a sub-menu. * Increased use of the IRC icons found in recent versions of the Oxygen icon set. * Fixed a bug causing the time a user went online not to be displayed in WHOIS information (provided the server reports it). * Fixed close button icons not immediately appearing on newly-added tabs when enabled (a preferences change would cause them to appear). * A significant revamp of the Channel List code, especially around the way the list data received from the server is being moved into the UI, has brought about significantly improved behavior. The application should now no longer be bogged down for extended periods of time while the list is being process- ed - in extreme cases, this could even lead to disconnects by timeout. * The "Apply Filter" button has been removed from the Channel List interface. Instead, the filter is (re)applied automatically as its settings are chang- ed, i.e. briefly after stopping to type into the "Filter pattern" field or after changing one of the spin- or checkboxes. * Fixed the display of human-readable mode descriptions in place of traditio- nal mode characters (toggled by the "Show raw mode characters" preference and only applicable when Konversation knows a description for a given mode char) being inconsistent between '/mode <channel> and '/mode <channel>/<user> +/-<mode>' - separate, unequal lists of mode descriptions were being used; this has been unified now. * Fixed the "Modes" tab of the Channel Settings dialog not using human-readable mode descriptions in place of traditional mode characters when the "Show raw mode characters" preference is disabled (as it is by default) and a descrip- tion for a given mode char is available. * Fixed the mode list shown by "Show Advanced Modes" in the "Modes" tab of the Channel Settings dialog not showing all modes announced as supported by the server. * The Channel List, when hovering a list item with the mouse pointer, now shows a tooltip with the entire topic of the channel when it doesn't fit the topic column's width. * Konversation will now display a warning dialog box when the user is trying to send a character not supported by the chosen encoding. * When a message containing characters not supported by the chosen encoding is sent, the chat view will now display the '?' replacements for those cha- racters that are sent to the IRC server and thus seen by other users. Pre- viously, the chat view would display the version of the message before this encoding step, and thus usually show the characters, as the Unicode character set normally used by KDE/Qt is considerably broader than many of the encodings that can be selected in Konversation. In other words, the chat view now accurately portrays what is sent to other users when a mes- sage contains characters not supported by the active encoding. * The URL Catcher should now open considerably faster with long lists of caught URLs and mail addresses. * The list items in the URL Catcher now have the same context menu as links in the chat view. Previously there was no context menu. * Caught mails and mail addresses not coming from an IRC user (an example would be links contained in a server's Message of the Day text) now have their "From" field filled in with the tab name instead of it being left blank in the URL Catcher. * Fixed a bug causing the DCC Status tab to sometimes prematurely claim a transfer status of 100%, as well as an unrealistic transfer speed, when sending a file to another user. The transfer would go on until actually finished; merely the information shown in the interface was defective. * Fixed log viewer tabs not observing the chat window background image setting. * Fixed log viewer tabs not reacting to changes to the chat window background color or font settings. * Fixed raw log tabs only applying the chat view background image setting on configuration changes, not when initially being opened. * The removal of the frame around the tab widget is now exclusive to KDE 4.3. We do it by way of enabling document mode for the tab widget (which is new in Qt 4.5), which renders badly in versions of the Oxygen style found in KDE versions earlier than 4.3, and the workaround we previously applied to make it work even with those older Oxygen versions had the unwelcome side- effect of breaking the application of color preferences to the input bar and nickname list. Changes from 1.2-alpha3 to 1.2-alpha4: Alpha 4 marks a significant milestone on the way to feature completeness for the v1.2 release of Konversation. New features in this release inclu- de UPnP NAT traversal support for DCC file transfers and chats, DH1080 key exchange support for Blowfish encryption and the ability to automati- cally split very long actions (i.e. usage of the '/me' command) into mul- tiple messages conforming to the maximum length of an IRC message (this was already supported for regular messages for some time). Many bugs have also been addressed, including an important fix for invita- tion dialogs causing disconnects by timeout if they were not dealt with quickly enough - and not only is the rewritten dialog non-blocking, it also allows for handling multiple outstanding invitations in a single dialog, rather than a new dialog being displayed for every additional invitation received. Other fixes include further interface polish and robustness and correctness improvements to Blowfish encryption, the Watched Nicks Online system and the storage of per-tab encoding preferences in the configuration file. A closing note for packagers: In this release we have replaced our cus- tom implementation of the Blowfish encryption algorithm with an optional dependency on the Qt Cryptographic Architecture (QCA) library in version 2 or higher. By implication, Blowfish encryption support is now optional: A QCA2-enabled build will have it; a build not using QCA2 will not. * Changed links to KDE's (and hence our) bug tracker throughout the code- base to use https://bugs.kde.org/ rather than http://bugs.kde.org/ * Fixed the "Show Menubar" item not getting removed from the chat view context view after showing the menubar again. Also added a separator after the item (only visible when it is present). * Switched the timestamps in log files to use KDE's locale settings for formatting the date and time, as the equivalent Qt API used previously seems to look at the value of LC_NUMERIC to detemine the format in Qt 4, which doesn't meet user expectations. * Fixed the "Date" column in the topic history of the Channel Options Dialog not using KDE's locale settings to format the value. * Fixed the "Date" column in the Channel Settings dialog's topic history sorting alphabetically rather than by date. * Improved Windows support in the bundled 'media' script. * Fixed the vertical alignment of the topic label when using Qt 4.5 (it's now top-aligned rather than vertically centered, i.e. making the topic area bigger than the topic by dragging the splitter down won't cause the topic to move down to stay in the vertical center anymore -- Qt 4.5 is needed because a method to retrieve the document margin from the chat view to use as the top margin for the topic label is new in that version). * Fixed various chat view messages containing date/time values (channel created, topic set, online since, ban info) not using KDE's locale set- tings for their display format. * Added support for using UPnP for NAT traversal for DCC file transfers (both active send and passive receive) and DCC chat. When UPnP is ena- bled in both Konversation and your router, Konversation now knows how to ask your router to set up the necessary port forward, and also how to to ask it to remove it later. * Added support for the KDE 4 version of JuK to the bundled 'media' script. * Fixed '/msg <channel> <message>' not displaying the resulting message in the target channel when the user is attending that channel. * Made the appearance of the line informing about the message being sent with '/msg <nick|channel> <message>' consistent between channel, query and status tabs (it now looks like in the former in the latter two as well). * Fixed the visualization of '/msg <nick|channel> <message>' (i.e. the '<-> target> message' line) being shown only after adding the resul- ting message to the target chat view (if present), causing an odd-look- ing order if the origin view and the target view are the same. * Watched Nicknames Online now generally operates on networks by their internal unique IDs rather than names, enabling it to handle multiple configured networks with identical names properly. * Konversation's custom implementation of Blowfish encryption has been replaced with an optional dependency on the Qt Cryptographic Architec- ture (QCA) library version 2. * The '/setkey [nick|channel] <key>' command now recognizes 'cbc:' (ci- pher-block chaining) and 'ecb:' (electronic codebook) prefixes in the key field to set a particular Blowfish block cipher mode of operation, defaulting to the value of a config dialog preference (Behavior -> Co- nnection-> Encryption -> Default Encryption Type, the default is Elec- tronic Codebook (ECB)) when no prefix is given. * Fixed crash when opening links with ' in them when the "Custom Browser" preference is enabled in Konversation's config dialog. * Improved consistency of link opening behavior between the chat view, the topic label and the URL catcher (all three now use the new-in-KDE-4 KTool- Invocation API to invoke the KDE default browser, whereas the topic label and the URL catcher were still using KRun until now). * Fixed a bug that could cause the state of the spell-checking setting for the input line to be lost across application restarts. * Added support for considering square brackets ([]) part of URLs. * Fixed the code producing multiple JOIN commands for auto-join as neces- sary to stay under the 512 byte limit for a single command to take the length of the commas in the commands into account when calculating the distribution of the channels among the multiple lines, as well as not to list channels falling at the boundary twice, once in the current and once in the following line. In English: Fixed auto-join with a massive amount of channels possibly not joining all channels correctly. * Fixed a bug causing re-joining of password-protected channels to fail on reconnects when those channels also had another mode with a parame- ter set. * Fixed a bug that caused query lines written by the user that are so long that they need to be split up into multiple messages not to display in the query text color. * Fixed a bug causing query lines written by the user that are so long they need to be split up into multiple messages for sending not to be displayed in the configured query text color. * Fixed the status bar showing HTML data when hovering the contents of the info label area at the top of query tabs. The data was actually supposed to be displayed as a tooltip (just like the nickname list item tooltips in channel tabs), and is now. * Fixed a bug causing the automatic away system to set the user away again on the next periodic activity check when no further mouse/keyboard acti- vity occurs after unlocking the screen/ending the screensaver. * Implemented splitting up of overly long actions (i.e. usage of the '/me' command) into multiple messages to stay under the 512 byte message length limit (in raw format) imposed by the IRC protocol. As with the normal message splitting, this is aware of how multi-byte/variable-width text encodings and sender hostmask length (which is part of the message on the receiving end) factor into the matter. Note that only the first message is actually sent as an action, the other messages are sent as normal messa- ges - intentionally, as this seemed to make the most sense formatting-wise. * Fixed the dialog box appearing upon receiving an invitation to join a chan- nel causing a disconnect by timeout when not being dealt with by the user swiftly enough. * Multiple invitations to join channels are now being handled by a single dialog box per connection, so that receiving many invitations in short order no longer means getting flooded with dialog boxes. * Implemented DH1080 key exchange support for Blowfish encryption. You can use the '/keyx' command to initiate a key exchange. * The raw log now shows encrypted incoming and outgoing messages in their encrypted form. Previously, incoming messages were being decrypted before being shown, and outgoing messages were being shown before encryption took place, thus not capturing what was actually coming from or going to the network socket as is the intent of the raw log. * Fixed a bug causing unrecognized channel mode characters being shown as their decimal value in the chat view messages announcing them having been set or removed. * Per-tab encoding settings for tabs belonging to a connection to a configu- red network (i.e. one found in the Server List dialog) now reference the unique ID rather than the name of the network in the config file, making things work reliably across restarts even when there are multiple identi- cally named networks. Encoding config file entries for tabs belonging to connections to servers that are not part of a configured network continue to reference the server hostnames. * Fixed the "(away)" label in front of the input line, indicating away sta- tus, not showing up in query tabs. Changes from 1.2-alpha2 to 1.2-alpha3: This third alpha fixes a fair amount of annoying bugs encountered in day-to-day usage, as well as a serious bug in handling NAMES messages from IRC servers. We've also made some UI changes that we'd like to get your feedback on: We've changed the default tab completion mode to "Cycle Nicklist", and we've removed the frame around the tab wid- get when using the listview version of the tab bar. * Worked around a Qt bug that has a text selection in the chat view that includes the last line in the view grow to include the new text when new text is appended to the view. * Fixed Konversation exposing various signals on D-Bus that it shouldn't have. * Fixed a regression causing '/names #channel' to end up duplicating the nickname list contents when already attending '#channel'. * When using Qt 4.5, Konversation no longer paints a frame around the UI elements of a view (e.g. a channel) when using the listview version of the tab bar. Feedback on this change is appreciated! * Fixed duplicated messages about DCC transfer failures in the chat view. * When the menu bar is hidden, the top-most item in the chat view context menu is now the option to unhide it again. * Fixed the OSD disappearing also cancelling the system tray blinking no- tification. * Fixed a crash on quit by D-Bus / by KDE session logout. * Fixed the tab completion nickname list sorting behavior for the "Shell- like" completion modes. The behavior now matches the "Cycle Nicklist" mode and the "Shell-like" modes of previous Konversation 1.x versions again: The last active nick for the given prefix is at the top of the list, with the rest of the list sorted alphabetically. * The default tab completion mode has been changed to "Cycle Nicklist". Feedback on this change is appreciated! * Changed the bundled 'bug' script to perform a quick search with the given parameter, rather than try to use it as a bug ID directly. The resulting behavior is unchanged for a numerical parameter, but with a string, much more useful. * The 'mail' script, which was disabled in the build system up until now, is now getting installed again. * Fixed a bug causing the "Set Encoding" menu not to work. * Fixed a bug causing the bundled 'media' script not to work when used to retrieve song information from Amarok 2 for a song which has any of the following meta data fields not set: title, artist or album. * Fixed the 'Self' field of the DCC transfer details panel not showing the port when available. * Fixed DCC transfers showing an average speed of 1 TB/s in their first second. Changes from 1.2-alpha1 to 1.2-alpha2: After just under a week's worth of adding back some missing functiona- lity, polishing the interface and, of course, of fixing bugs, we've de- cided to bring you Konversation 1.2-alpha2. While there were no major defects discovered in alpha1, this one should yield an overall more re- fined user experience, and brings us another good step closer to our first stable release for KDE 4. * Fixed nicknames in action messages using the message text color when nick coloring is disabled rather than the correct action text color as the rest of the message. * Added back the context menus for nicknames and channel links in the chat view. * Fixed the topic/info area in channels, queries and DCC chats, the nick- name list in channels and the listview variant of the tab bar not keep- ing their sizes when the window is resized. * Added missing actions ("Reconnect", "Disconnect", "Join channel ...") back to the context menu for server status tabs. * Improved the placement of the "Join on connect" channel tab context menu item (back under "Enable Notifications" as in v1.1). * Added the use of some of the new irc-* icons found in recent updates to the Oxygen icon theme. * Fixed crash when joining a channel after having been blocked from get- ting the topic for the channel. * Made the initial size of the "Edit Network" dialog more reasonable. * Improved vertical size of and text alignment inside the input line. * Added back support for drag and drop reordering of views to the list- view version of the tab bar. * Added back support for "surfing" in the listview version of the tab bar by pressing and holding the left mouse button on a view and moving the mouse up and down in the list view. * Fixed mouse handling for close buttons in the listview version of the tab bar. * Added back support for showing tooltips for truncated view items in the listview version of the tab bar. * Fixed crash when receiving lines terminated by LFCRLF from buggy IRC servers (such as the shroudBNC IRC proxy when it relays a private mes- sage received while no user was connected to it). * Worked around a Qt bug that has a text selection in the chat view that includes the last character in the view grow to include the new text when new text is appended to the view. * Sound notifications for highlights now reuse a single Phonon MediaObject by enqueuing notification sounds rather than instanciate a new one for every notification, improving resource efficiency and hopefully taking care of some high CPU usage reports that seemed to be linked to Konver- sation's Phonon usage. * Fixed the enabling/disabling of the "Find Previous" action. * Fixed several bugs in the Server List dialog (sort indicator disappear- ing while dragging items, stray pixel in the top-left corner of the list- view, hover decoration while dragging not always showing). * Improved handling in the Identity editor dialog: When Konversation com- plains about one or more required fields not being filled in, the dialog will now put focus on the field when it opens. * Fixed the 'Self' IP field of the DCC transfer details panel not showing a value when on the receiving end of a DCC file transfer. * Handle DCC REJECTs. A DCC SEND is now automatically aborted when the partner rejects it. * Fixed a bug causing the ordering of views to be partially reversed when switching from the listview version of the tab bar to the regular tab bar. * Improved consistency of the context menu for links between the topic area and the chat view. * Fixed repeated searches for the same search pattern (i.e. "Find Next") sometimes not working reliably with the chat view search bar. * Minor code cleanups and performance improvements. Changes from 1.1 to 1.2-alpha1: We're happy to bring you this first public release of the KDE 4 version of Konversation. Despite the "alpha" moniker we've settled on for this one, mostly due to not yet being feature-complete (see below), this port has already been used productively by a fair number of people for some time and should be stable enough for general usage. In fact, certain features, notably DCC file transfers and auto-replace, are expected to be more robust than in Konversation 1.1. While this version largely achieves feature parity with Konversation 1.1 (and adds several new features on top), notable exceptions are the lack of support for marker lines as well as nick and channel context menus in the chat view. These are pending the merge of a rewritten chat view and will make a return before the final Konversation 1.2 release. Other known issues in this version include a lack of KDE 4 HIG compliance in the con- figuration dialog and various minor interface polish problems; these will be addressed as well. Enjoy, and don't forget to report any bugs you encounter! * Ported to KDE 4 (KDE 4.1 or higher is required). * Enabled the (experimental, hackish) Amarok 2 support in the 'media' script. * Fixed a bug that could cause channel notifications to be lost across recon- nects. * Removed the code to recreate hidden-to-tray state across application re- starts. It was broken after the shutdown procedures were moved to a point in time after after the main window is hidden to cover quit-by-DCOP, and Konversation 1.1 features an explicit hidden startup option that fulfills user demands more accurately anyhow. This fixes a bug that made Konversa- tion always hide to tray on startup regardless of the aforementioned op- tion when the system tray icon was enabled. * Added a network settings lookup fallback to retrieving the key of a channel. Previously, this relied solely on the channel's mode map. Closes the brief gap between a channel join and the server's reply to MODE where possible, so that e.g. reconnecting directly after auto-joining a channel with a key doesn't result in a failed rejoin due to not having the key by way of the MODE reply yet. * Fixed opening URLs from the channel topic context menu in Channel List tabs. * When connecting to multiple selected unexpanded network items from the Ser- ver List, don't also try to connect to the hidden server sub-items selected by implication, avoiding unwanted connection duplicates. * Mask the password field in the Quick Connect dialog. * Fixed a bug causing passive DCC file transfers to stall at 99%. * Fixed "/leave" command in queries. * Fixed auto-replace rules containing commas in the pattern not being loaded correctly from the config file. * Fixed non-regex mode auto-replace rules containing regex special characters and character sequences not working correctly. * Improved performance of non-regex mode auto-replace rules. * Added option to open log files with the system text editor instead of the built-in log viewer. * Made the Oxygen nicklist icon theme the default nicklist icon theme. * Removed the bundled 'weather' script (it relied on a KDE 3 service no lon- ger present in KDE 4; a replacement will need to adopt a new approach). * Fix sending and receiving of files with names containing spaces * DCC Protocol adjustment to proper handle passive DCC resume/accept requests. (this breaks passive-resume compatibly with <konversation-1.2) * Send proper DCC reject commands when rejecting a queued receive. * Improved error recovery during dcc send. * Fix time left for transfers that finished in under 1 sec displaying infinite time left. * Increased default DCC buffer size to 16384 to reduce CPU load while sending or receiving files. * Added KNotify events for "Highlight triggered", "DCC transfer complete" and "DCC transfer error". * Fixed Automatic User Information Look Up not being started upon channel join on some IRC servers (namely those that don't send RPL_CHANNELCREATED after joining a channel, such at those used by IRCnet). * Updated the server hostname for the pre-configured Freenode network to the one given on their website these days, 'chat.freenode.net'. * Added support for browsing the input line history by using the mouse wheel. * Fixed problems the bundled 'tinyurl' script had with certain URLs by conver- ting it to use the TinyURL API rather than screen scraping. * Added initial support for the MODES parameter of RPL_ISUPPORT. When giving or taking op, half-op or voice to/from multiple people at once, Konversa- tion will now combine as many of them into a single MODE command as the server advertises it supports (as long as it advertises an actual value; the value-less unlimited MODES case is not supported yet as it requires more work on limiting MODE commands to the 512 byte IRC message buffer limit for extreme cases). If MODES is not given at all by the server, the fallback is an RFC1459-compliant value of 3. * Added support for formatting variable expansion in the replacement part of auto-replace rules. * Rewrote multi-line paste editor, improving handling and appearance. * Added button to intelligently replace line breaks with spaces to the multi- line paste editor. Changes from 1.0.1 to 1.1: We are extremely pleased to announce Konversation's newest major release, v1.1. Konversation 1.1 is a special release for us in multiple ways: It's our farewell to KDE 3, by way of being the last major release built upon that venerable platform. It's also our biggest release yet, in terms of the number and magnitude of the changes. The additions and improvements in this release are both user-visible and under the hood. Some of the highlights are rewritten connection handling (robustness and correctness improvements, better support for IRC URLs, bookmarking and more), redone DCC with better UI and Passive/Reverse DCC support, a redone away system with the addition of auto-away support, redone and much more useful remember / marker line support, a new outbound traffic scheduler that is capable of aggressive throttling to avoid flooding while smartly reordering messages to improve latencies, great convenience additions like a "Next Active Tab" shortcut, and much, much more, along with a large number of bugfixes and tweaks to round things out. Note: All fixes made since RC1 are marked with a "[New since RC1]" label in the changelog. We're confident that this release is the best and most robust version of Konversation published so far, and upgrading comes highly recommended to all users. Enjoy! Text views * Added an option to hide the scrollbar in chat windows. * Don't scroll to bottom if the view was scrolled up before resizing. * Fixed chat views occassionally not being scrolled to the bottom at their inception with long backlog appends. * Fixed an off-by-one error in scrollback culling. * Fixed a bug that lead to single leading whitespace characters in lines being omitted from display in chat windows. * Now preserving trailing whitespace in raw log tabs. * Fixed display of '<' and '>' in backlog lines. * Fixed copy/paste with shortcuts other than the default Ctrl+C/V ones. * Fixed onotice display. * Fixed middle-click-to-open-in-new-tab on chat window URLs when Konqueror wasn't running. * Fixed superfluous closing parenthesis being inserted after links in lines which contain multiple links followed by closing parentheses. * Fixed URLs with encoded hash mark %23 being incorrectly passed off to handler. * Fixed variable expansion causing certain URLs to be corrupted when pasted. * Added a "Save Link As" item to the context menu of links in the chat window. * Have the "Save as..." dialog suggest a file name. * Implemented Shift+Click to "Save as..." URLs.. * Made the channel links context menu work in server status views. * Fixed nickname links in chat view messages created as a result of '/msg <nick> <message>' commands erroneously prepending '->' to nicknames. * Fixed operations on nicknames containing "\" characters from the nickname context menu. * Fixed query view context menus operating on the wrong nickname under certain circumstances. * Fixed a bug that caused the "Send File..." action in the generic query context menu to pick the wrong recipient after hovering the user's own nick in the chat display. * Fixed date display not using the locale's date format. * Fixed IRC color parsing so that the colors gets reset to default if no color numbers were given. * Fixed a bug that could cause the text selection in a chat window to be messed up when new text was appended. Marker/Remember Lines * Konversation now distinguishes between manually and automatically inserted marker lines, making the "show line in all chat windows" preference less confusing. * The automatically inserted remember lines when chat windows are hidden are now "sliding", i.e. there is only one per chat window, and it moves. * Automatically inserted remember lines will now optionally only be inserted when there's actually new text being appended to the chat window (enabled by default). * The automatic remember line will now also be inserted when the window has lost focus. * Added an action to clear all marker lines in a chat window. * Improved marker lines-related preferences and terminology. * Improved the appearance of marker lines in the chat window. * Made the (marker line-related and other) identity default settings consistent between the initial identity and additional newly created identities. * Fixed hidden join/part/quit events marking tabs as dirty, allowing multiple consecutive remember lines to appear. * Fixed crash when minimizing or closing the application window prior to any tab switch when the auto-insertion of remember lines is enabled. Input line * Fixed input line contents rather than actual sent text being appended to the input history upon a multi-line paste edit. * Special characters and IRC color codes will now be inserted at the cursor position rather than the end of the input line contents. Nickname list * Implemented an additional "Sort by activity" nicklist sorting mode. * Added Oxygen nicklist icon theme by Nuno Pinheiro. * The list of nickname list themes is now sorted alphabetically. * Fixed race condition when removing a nicklist theme (listview would be repopulated before deletion was complete). * Fixed using the wrong palette for the disabled text color in the nickname list. * Fixed moving back from the custom alternate background color to system colors in the channel nickname listviews when disabling the "Use custom colors for lists, [...]" preference. * Cleanups in the nicklist item code. Tab bar / Tree list * Added option to add and remove a channel from its network's auto-join list from the tab context menu. * Added option to close tabs using middle-mouse. * Slightly sped up tab switching by eliminating some redundant UI action state updates. * Channel tabs will no longer close when kicked, but rather grey out on the tab bar and offer context menu actions to rejoin. * Channel and query tabs will now grey out on the tab bar when disconnected and no higher priority notification is present. Channel tabs will only ungrey if and when the channel is successfully rejoined after reconnect; query tabs ungrey immediately once reconnected. * Display tooltips for truncated treelist items. * Fixed forwarding keyboard events received by the treelist to Konsole widgets and focus adjustment thereafter as well as generally after switching to Konsole tabs by other means. * Fixed treelist scrollbar not picking up on new palette when the KDE color scheme changes. * Fixed a bug that could cause a crash when the view treelist would receive keypress events during application shutdown. * [New since RC1] Fixed a corner case where a server status item could become a child item of another server status item when dragging it below an special application pane item such as DCC Status or Watched Nicks Online. * [New since RC1] Fixed a crash when using the mouse wheel on the list within ~150ms of a drag and drop operation. System Tray icon * Remember and recreate minimized-to-tray state across sessions. * Added option for hidden-to-tray startup. * Reload tray icons when the icon theme changes at runtime. * Added option to not blink the systray icon, but just light it up. Channel Settings Dialog * Added a search line to the ban list. * Fixed sorting the ban list by time set. * Made the ban list's "Time Set" column use KDE locale settings for the date format. * Fixed OK'ing/Cancel'ing/closing the Channel Settings Dialog not dealing with open ban list in-line edits correctly. * Reset topic editbox when the channel options dialog has been dismissed with cancel. * Fixed incorrect time display in the topic history list in the Channel Settings dialog. Server List Dialogs * Moved the "Show at application startup" option for the Server List dialog to the dialog itself. * Auto-correct hostnames and passwords entered with preceding or trailing spaces in the Server List dialog. * Don't allow impossible ports to be set for servers. * Sensible default focus in the server list dialog. * Fixed unresponsive, defective Server List dialog window appearing at application startup using the Beryl or Compiz compositing window managers. Interface Misc * Added a "Next Active Tab" keyboard shortcut to jump to the next active tab with the highest priority notification. * Added a Find Previous standard action. * Have the "Insert Character" dialog pick up on text view font changes. * Show correct number of colors in the color chooser dialog. * Made "Alternate Background" colorchooser disable when unneeded. * Fixed crash when changing the KDE color scheme while a non-chat tab is open. * The encoding selection now allows returning to the used identity's default encoding setting. * Update actions on charset changes. * Added Notifications Toggle and Encoding sub-menu to the window menu. * Moved "Hide Nicklist" menu action from Edit to Settings. * Fixed the "Automatically join channel on invite" setting not to show an inquiring dialog anyway. * Fixed saving the state of the invitation dialog option in the Warning Dialogs preferences. * Added a warning dialog for quitting with active DCC file transfers. * Return focus to the text display widget after closing the search bar in a log reader view. * Made pressing Return or Enter in the Log File Viewer's size spinbox apply the setting, just as pressing the Return button. * Fixed a bug where the SSL padlock icon would be shown on a non-SSL connection (and clicking would cause a crash). * Empty topic labels will no longer show empty tooltips, but rather none at all. * Added a sample 12-hour clock format string to the timestamp format combobox. * Timestamp format list is no longer localized. * Robustness improvements and less UI quirks around channel password handling. * Improved general layout and consistency of tab, chat view, query and topic context menus. Added some missing icons. * Fixed some bugs of UI actions not being appropriately as their context changes. * Fixed enabled state of "Close All Open Queries" action not being updated correctly when queries are closed by way of closing a status view tab. * The window caption is now properly being reset when the last tab is closed. * Made units in spinboxen in the identity and app preferences UI more consistent. * Minor fixes to accelerators and tabbing order in various dialogs. Commands * Support command aliases in network connect commands. * Turned parameter-less '/away' into a toggle: Sets away state with default message initially, and unsets away state if already away. * Added an '/aunaway' command to complement '/aaway' (previously, there was only '/aback'). * Added support for '/kill'. * A '/join' command for an already-joined channel will now focus it. * Added an '/encoding' command as an alias to '/charset'. * '/charset' and '/encoding' now accept 'latin-1' as an alias for 'iso-8859-1'. * Improved messages for the '/charset' and '/encoding' commands. * Rewrote /me parsing to be less hackish and display usage info with an empty parameter. * '/msg <nick>' is no longer treated as equivalent to '/query <nick>'. * '/msg <nick>' will now error out when lacking a message parameter. * '/query <recipient> [message]' will now error out when recipient is a channel. * Added a '/queuetuner' command to bring up the outbound traffic scheduler's tuning/debug pane. Notifications * Seperated query messages and messages containing the user's nickname into two distinct KNotify events. * Made the tab notification color of private messages configurable independently from normal messages. * Don't highlight own nick on topic created by messages. * Fixed disabling notifications for a tab not cancelling highlight sounds. * Fixed a race condition where a highlight's autotext reply would outrun the original line's tab notification. * Fixed actions in queries and DCC chats producing message notification events (rather than the correct private message ones). * Changed the OSD screensaver check logic to work in KDE 4. * [New since RC1] Fixed on screen display occassionally reverting to the default position when using the settings dialog to change unrelated settings. Connection handling * Improved behavior with regard to reusing existing connections in connection attempts that provide an initial channel to join, such as command line arguments, the DCOP interface, the bookmark system or irc:// links). Previously, the application would have inconsistently either reused an existing or created a new connection. * Better dialog messages in the interactive variant of the decision to either reuse or create a new connection (from the Server List dialog and the Quick Connect dialog). * Improved and more consistent display of connection names (i.e. network or server host name) throughout the application. * Much improved irc:// URL support for connection intanciation, with support added for IPv6 host names and many of the features proposed by the Mirashi specification. * Eliminated redundant irc:// URL parsing codepaths in favor of a single one. * Added support for irc:// URLs to the chat views. * Removed "konversationircprotocolhandler" shell script. The Konversation executable now understands irc:// URLs directly. * Initiating connections from command line arguments and options now works also when the application is already running. * Fixed a bug that would cause a connection initiated from command line options not to get past the identity validation stage when the configuration file was unitialized and empty. * The server list dialog will now always be closed when starting Konversation with command line arguments to initiate a connection, consistent with the configuration-based auto-connect behavior. * Providing a channel in the creation of a new connection (i.e. via command line arguments, the DCOP interface, the Quick Connect dialog, the bookmark system or irc:// links) now consistently pre-empts the stored auto-join channel list if the target of the connection is a network or the hostname is found to be part of a configured network. Previously, this would only work for Quick Connect and the bookmark system (which caused the infamous Sabayon user flood in #kde due to their "Get Support" desktop link connecting to Freenode, which in an unconfigured Konversation has #kde in its auto-join list). * Connections now have globally unique IDs. * The DCOP interface now understands connection IDs in addition to host names. * The scripting systems now uses globally unique connection IDs rather than server host names to refer to connections, fixing a bug where scripted responses were being handed to all connections sharing a hostname (which was actually intentional in the absence of connection IDs, but undesirable for users). * Improved iteration behavior over a network's server list on connection losses. * The "Reconnect" action now works also when Konversation doesn't consider the connection to be in a disconnected state. * Improved the server status view messages related to reconnection attempts. * Consistently apply the "Reconnect delay" setting (previously confusingly named "Reconnect timeout"), which wasn't done before. * Fixed a bug that could cause the connection process to claim that a DNS lookup was successful when it actually wasn't. * Fixed opening bookmarks with spaces in the target address name (which may be a network name, and networks may have spaces in their name). * Properly update the state of the "Add/Remove to Watched Nicknames" nickname context menu actions when the connection isn't to a config-backed network, in which case there's no way to store and make use of those list entries. * Fixed a crash when quitting the application with a resident connection that disconnected due to an SSL error. * Fixed crashes in the DCOP interface if no connection was present. * Make the "Reconnect" action available even while ostensibly in the process of connecting. * Fix possible crash when closing all views and subsequently creating a new connection. * Fixed crash upon auto-connect at application startup. * Improved the naming of preferences related to automatic reconnection attempts to be less confusing. * Made it possible to set the number of automatic reconnection attempts to unlimited. * Provided better default values to the preferences related to automatic reconnection attempts. * Fixed crash when opening a Konsole tab and Konsole was not installed. * Fixed allowing the user to create an infinite loop of showing the SSL connection details dialog upon being presented with the invalid certificate multiple choice dialog at connection time by checking "Do not ask again" and then clicking "Details". Identities * Made it possible to set a Quit message independently from the Part message. * Saving a newly-created identity is no longer allowed without entering a real name. * Apply switching the identity in the identity dialog as opened from the network dialog to the network's settings. * Have the Edit/Delete/Up/Down buttons for the nickname list of an Identity correctly change state according to the selection Away system * Added per-identity support for automatic away on a configurable amount of user desktop inactivity and/or screensaver activation, along with support for automatic return on activity. * Fixed the "Global Away" toggle to make sense and update its state properly. * Turned parameter-less '/away' into a toggle: Sets away state with default message initially, and unsets away state if already away. * Added an '/aunaway' command to complement '/aaway' (previously, there was only '/aback'). * Broadly rewrote away management related code for improved robustness and less duplication and hacks (e.g. no more abuse of multiServerCommand for global away). DCC * Massive DCC refactoring and improved reliability. * Passive DCC support (Reverse DCC RECV, SEND). * Replaced the DCC Transfer Details dialog with a retractable transfer details pane directly in the DCC Status tab. * Added DCC transfer average speed reading to the DCC transfer details panel. * The DCC Status tab now remembers its column widths across sessions. * Fixed duplicated quotation marks around file names in DCC transfer status messages. * Fixed "Open File" DCC dialog remembering the last viewed location incorrectly. * Added an "Open Folder" button to the DCC transfer details panel. * Added check for whether the URL is well-formed before initiating a DCC send. Fixes a bug of dragging a nickname link in the chat view onto the query chat view drop target starting a DCC transfer that cannot succeed. * Ported the DCC code away from relying on server group IDs to refer to connections, made it use connection IDs instead. Fixes potential bugs with multiple concurrent connections to the same network. * Fixed queued DCC transfer items not picking up on download destination directory changes. * Fixed bug leading to crash upon initiating DCC Chat when "Focus new tabs" was enabled. * [New since RC1] New transfer items added to the DCC panel's transfer list are no longer automatically selected, meaning work on other items in the list occuring at the same time no longer gets interrupted. * [New since RC1] The "Filename:" line in the DCC panel's detailed info pane is now using text squeezing to avoid an increase in minimum window width with long file names. * [New since RC1] Failed receives now longer show 833TB/s as their transfer speed. Blowfish support * Fixed FiSH-style +p prefix to send clear text to channel despite an encryption key being set. * Text encoding is now being applied to the cleartext, rather than the ciphertext. This fixes using characters outside the ASCII range with blowfish encryption. * Fixed CTCP (and thus DCC) requests to nicknames for whom an encryption key is set. * Added support for encrypted topics. * If an encryption key is set, a lock icon will now be shown next to the input box. * Added a '/showkey <channel|query>' command to show the encryption key for the target in a popup dialog. Auto-replace * Improved auto-replace behavior with multiple matches in one line (fixes multiple Wikipedia links). * Fixed bug that could cause auto-replace to replace the wrong group of the matching string. * Auto-replace is now case-sensitive in regular expression mode. * Added regular expression editor button to auto-replace preferences. * Fixed conditional enabling of the RegExpEditor button in the auto-replace preferences page. Ignore * Fixed being asked twice whether to close a query upon ignoring the opponent. * Fixed crash when opting to close a query upon chosing to ignore the opponent from the context menu of his nickname. Watched Nicknames * Improved robustness of the Watched Nicknames Online system. * The "Offline" branches in the "Watched Nicks Online" list will now be omitted when there are no offline nicks for the respective network. * Fixed display of WHOIS spam prompted by the Watch List's WHOIS activity. * Connections to non-config-backed targets no longer show in Watched Nicks Online. * [New since RC1] Actually honor the preference to enable/disable the Watched Nicknames Online system, and apply it at runtime. * [New since RC1] Make sure the periodic Watched Nicknames Online check actually starts running within the same session after adding the first nickname to the list. * [New since RC1] Fixed a crash on quit with the Watched Nicks Online tab open and there being an open connection to a network that nicks are being watched for. Channel List * IRC markup is now removed from content in the Channel List view. * Speed improvements in Channel List views. * Fixed keyboard accelerator collisions in Channel List views. * Allow higher values than 99 in the min/max users filter spin boxes in Channel List views. Under the Hood / Protocol * Rewrote the outbound queue scheduling system to be smart enough to reorder outbound traffic to reduce interactive latency while aggressively throttling the rate to prevent flooding. Use '/queuetuner' to tweak. * Rearranged when and how auto-who is triggered upon channel join a bit, to avoid excessive flooding on multiple concurrent joins in some cases. * Auto-Who reliability improvements. * Fixed auto-join with very many channels (the auto-join command would exceed the maximum buffer length; it is now split into multiple commands as needed). * Fixed bugs around rejoining channels after reconnects related to the cause of the disconnect, channel passwords and picking the actual list of joined channels over the network's auto-join list. * Improved behavioral consistency in situations where the auto-join list is preempted by a transitory auto-join channel (bookmarks, etc.). * Fixed bug that caused the topic state not to be cleared properly prior to rejoining channels during reconnects. * Fixed onotice payload being cut off after the first word. * Changed RPL_WHOISOPERATOR handling to internationalize the common case ("is an IRC Operator") and otherwise passthrough the string sent by the server. * Fixed parsing of alternate invite format on Asuka ircds (QuakeNet). * Added support for PRIVMSG from the server. * Support RPL_UMODEIS. * Announce 'k' channel mode (i.e. channel key) changes in non-raw mode as well. * The command part of CTCP requests is now always converted to uppercase before sending, as some clients don't like lower- or mixed-case commands as the user may have entered them. * Display mode for your nick and channels you're not in. * Fixed per-channel encoding settings for the channels of a network being lost when the network is renamed. * Fixed crash when receiving actions for channels the client is not attending. * Made newline handling in the DCOP interface more robust, fixing a potential security problem (CVE-2007-4400). * A few speed optimizations and memory leak fixes. * [New since RC1] Fixed a crash on quit during KDE logout or when quitting by DCOP. Included scripts * Support for KMPlayer in the 'media' script (based on the window caption, as KMPlayer has no proper appropriate DCOP interface). * Added KPlayer support to the 'media' script (also caption-based). * Added support for Audacious to the 'media' script. * Fixed problems in disk space calculation in the 'sysinfo' script caused by wrapped df(1) output. * Added KDE 4 support to the 'sysinfo' script. * Removed some bashisms from the 'sysinfo' script. * Rewrote 'weather' script for increased reliability in error handling and better readability. * Removed broken 'qurl' script in favor of new 'tinyurl' one. * Fixed the 'fortune' script not working properly when variable expansion is turned off in the preferences. * [New since RC1] Fixed a bug in the 'media' script that caused it to break when querying Audacious with audtool not being available. Packaging * [New since RC1] Standards compliancy fixes in the application .desktop file and the nicklist icon theme .desktop files. Build * Fixed build with --enable-final. ------------------------------------------------------------------------------- Changes from 1.0 to 1.0.1 We are pleased to announce the immediate availability of Konversation 1.0.1, a maintenance release featuring notable improvements for users of right-to- left languages (including new Arabic and Hebrew translations), further re- finement of the user interface and application functionality, and fixes for minor defects found in the previous release. * A bug that caused left-to-right text contained in lines determined to be right-to-left text to appear reversed has been fixed. * Whether a line is treated as right-to-left vs. left-to-right text is now determined by the amount of each type of character in the line, improving the user experience in chats involving bi-directional text considerably. * The "Edit Network" dialog has been refined for clarity and ease of use. * A warning dialog to prevent accidentally quitting Konversation has been added. * The Auto Replace list can now be sorted. * The '/media' script command now sports improved player recognition, enhan- ced and easier configurability, the ability to distinguish between audio and video media as well as newly added support for kdetv. New '/audio' and '/video' command aliases have been added to expose these new abilities. * The lower boundary of the default DCC port range has been raised from 1025 to 1026 to avoid conflicts with the commonly blocked Windows RPC port 1025. * Dismissing an OSD notification by clicking on it will now also cancel the systray notification flash. * A new configuration file option [OSD]OSDCheckDesktopLock has been added, allowing to manually disable the screensaver check in non-KDE environments that do not support it, causing the OSD not to be displayed. * A bug that could lead to the "Switch to" sub-menu in the context menus of tabs not to be updated properly upon switching tabs has been fixed. * A bug that caused the 'irc setBack' DCOP call not to function has been fixed. * A bug that caused ampersands in the names of tabs not to be displayed and an immediately following character to be used as keyboard accelerator has been fixed. * A bug that caused ignoring nicknames with '[' or ']' characters in them to fail has been fixed. * Command aliases containing regular expression syntax can no longer cause built-in commands not to function. * A bug that caused the Konversation irc:// protocol handler not to function has been fixed. Its compatibility with systems that do not use the GNU bash shell as default shell has been improved. * A notable number of code quality improvements suggested by KDEs automated quality control service EBN have been implemented. ------------------------------------------------------------------------------- Changes from 0.19 to 1.0 We are extremely pleased to announce the immediate availability of Konversation 1.0, a significant milestone in the lifetime of the Konversation project. This release includes major new functionality as well as a large amount of improvements to existing functionality, with an emphasis on user interface polish and overall reliability. Notable new features include a vertical treelist of tabs as an alternative to the traditional tab bar, auto-replacement of words in incoming and outgoing messages, an improved Channel Settings dialog now featuring a ban list, an optional expanding input box and many improvements to both DCC file transfers and DCC chats. Enjoy! User Interface * It is now possible to place the tabs on the left side of the application window. This has been implemented as a treelist of tabs. The treelist supports all of the cosmetic and interactive properties of the original horizontal tab bar, including colored notifications, LED icons, (hover) close buttons with delayed activation, reordering, drag'n'drop and mouse wheel cruising. And a few tricks of its own. * Connection status tabs now feature specific context menu entries to disconnect and reconnect, as well as to join a channel on that connection. * The automatic resizing of tabs in the tab bar first implemented in version 0.19 is now optional. * The grouping behavior of Channel List and Raw Log tabs in the tab bar has been improved. * Disabling notification for a tab will now unset the active notification. * The enabled/disabled state of the notifications for connection status tabs will now be remembered across sessions for configured networks. * The speed of switching tabs in quick succession with the auto-spellchecking preference enabled has been improved. * Using custom fonts in the user interface is now optional. The font used by the tab bar is now configurable. * Events in the connection status tabs are now logged into separate logfiles. * The Channel Settings dialog now includes a Ban List tab that allows viewing, adding and removing bans in a channel. The dialog can now be opened from the menu bar and chat window context menu in addition to the button in the topic area. * Mode and topic handling in the Channel Settings dialog and the channel mode buttons have been overhauled to make them more robust and reliable. * The number of Quick Buttons to show below the nickname list in channel tabs is now configurable. Additional buttons may be added or existing buttons removed. * Konversation now supports auto-replacing words in incoming and outgoing messages. Regular expressions are supported. The auto-replace configuration can be found in the preferences dialog. The static Wiki link feature found in older versions has been retired in favor of an auto-replace rule. * The search bar has been redesigned to provide a better user experience. * The "Find Next" action will now open the search bar when there is no active search, matching the behavior of Konqueror and other KDE applications. * The sorting of the nick completion list has been improved to put the last active user for a given completion prefix at the beginning of the list. * The tab completion of the user's own nickname has been reenabled. * The nick completion feature has been significantly cleaned up and made more reliable. A bug that could lead to an application crash during nick completion has been fixed. * An option to expand the vertical size of the input box automatically when the text entered grows beyond the length of a single line has been added. * The behavior of the input box on pasting text including leading or trailing newline characters has been improved never to cause lines being sent without user acknowledgement. * The input box of connection status, channel and query tabs will now be disabled and the nickname list of channel tabs cleared when the respective server connection is closed. * Konversation can now optionally insert a remember line whenever a tab is hidden, either by switching to a different tab or minimizing the window. * Multiple consecutive remember lines will no longer be inserted. * Remember lines can now also be inserted into the chat windows of connection status and DCC Chat tabs. * The Colored Nicknames feature will now always assign the same color to the same nickname. * The number of backlog lines to show in the chat window is now configurable. * The recognition of URLs in the chat window has been improved to cope better with URLs containing or being surrounded by parentheses and to exclude trailing dots and commas. * Channel links following mode characters or surrounded by interpunctuation are now properly recognized in the chat window. * The context menus for URLs and channel links in the topic area now match the context menus in the chat window. * Multiple ignore or unignore actions ordered at the same time will no longer be shown on separate lines in the chat window. * The nickname context menus in the chat window, topic are and the nickname list will now show "Ignore", "Unignore" and "Add to Watched Nicknames" entries as applicable. * A bug that could lead to the chat window nickname context menu actions ceasing to function after the targeted user left the channel has been fixed. * The Server List dialog now allows connecting to a specific server in a network even when a connection to that network has been previously established. If that connection is active, a dialog box will verify whether to disconnect from the current server and connect to the chosen one instead, otherwise the connection will simply be reestablished using the newly chosen server. * The Quick Connect feature will now properly warn when the identity to be used in the connection attempt is not set up properly. * The appearance and behavior of the warning about an incorrectly set-up identity have been improved. A prior connection attempt will now be automatically resumed after the identity settings have been corrected. * Many of the pages in the Konversation preferences dialog have been redesigned and rewritten for improved consistency, reliability and clarity. The general layout of the dialog has been improved as well. * The naming of certain actions in the Configure Shortcuts dialog has been improved to make them easier to recognize outside of their normal context in the application interface. * Numerous improvements to keyboard navigation have been made. * The nickname list now longer allows drag'n'drop of channel or user links from the chat window onto list entries, as a DCC transfer of those data sources cannot succeed. * The preference to show or hide the real names of users in the nickname list will now be applied immediately. * The columns of the nickname list will no longer resize erratically when the preferences to show or hide real names and hostmasks are changed at runtime. * A bug that could lead to nicknames being sent as messages when double-clicking a selection of multiple nicknames in the nickname list has been fixed. * The placement of actions in the application menus has been improved. * The shown/hidden state of the application menubar will now be remembered across sessions. When the menubar is hidden, a menu action to show it again will now be added to the chat window context menu. * The "Close All Open Queries" menu action is now be disabled properly when there are no open queries. * A bug that could lead to the "Close All Open Queries" menu action failing to properly close all open queries has been fixed. * A bug that could lead to an application crash when closing the tab after choosing to ignore someone in a query has been fixed. * The "Hide Nicklist" menu action will now be disabled properly when the tab shown does not have a nickname list has been fixed. * The actions in the "Insert" menu will now be disabled properly when the current tab does not support them. * The default double-click action in the "Watched Nicks Online" tab is now to open a query to the respective contact. * The sorting in the Watched Nicks Online tab has been improved: Offline users are now always sorted at the bottom. * Several bugs in the "Watched Nicknames Online" tab that could lead to application crashes have been fixed. * Several errors in the chat window status messages produced by the Watched Nicks Online system have been corrected. * A bug that could lead to the columns in the "Watched Nicks Online" list resizing erratically has been fixed. * A bug that could lead to the status bar not being cleared properly when the last tab was closed or the application window lost focus after a link was launched from the chat window has been fixed. * The display of temporary and static info texts in the status bar has been improved not to interfere with each other and provide more useful information. Also, the status bar lag info section is now updated more consistently to avoid jumping around of the other status bar sections. * A bug that could lead to a wrong nickname count being shown in the status bar of channel tabs has been fixed. * Repeated triggering of the "Open URL Catcher" menu action will now properly show and hide the URL Catcher tab. * The warning about pasting text with multiple lines can now be properly disabled and reenabled from the Warning Dialogs preferences page. * A bug that could lead to IRC bookmarks showing up as actions in the Configure Shortcuts dialog has been fixed. * A bug that could lead to changes of the global KDE icon set not being applied to the tab bar close buttons immediately has been fixed. * A bug that caused the application window to change its horizontal size after opening a Query to a user with a very long hostmask has been fixed. The DCC Chat and query tabs now use the same heading style as channel tabs. * A bug that could lead to the topic and nickname list areas not keeping their size properly across tab switches has been fixed. * A bug that could lead to certain types of KNotify event notifications not being executed properly when the system tray icon was enabled has been fixed. * A bug that could lead to ampersands in network names being shown as underscores in the menu under certain circumstances has been fixed. * A bug that could lead to an application crash when trying to access non-existing tabs via the Alt+number keyboard shortcuts has been fixed. * A bug that could lead to the toolbar being hidden after it was edited has been fixed. * A bug that could lead to the chat window context menu not being cancelled properly when clicking outside of it has been fixed. * A bug that could lead to heavy disk seeking when the splitters separating the topic area and the nickname list from the chat window were moved has been fixed. * The option to only show the application in the system tray at all times has been retired in favor of the standard KDE mechanic of minimizing into the system tray. Commands * The 'Now Playing' script invoked via the /media command alias now features support for XMMS and KSCD as well as improved support for untagged media files playing in Amarok. Support for non-ASCII encodings in file names and meta tags has been improved as well. * New "/hop" and "/dehop" commands to grant or remove half-op status from a user have been added. * A new "/devoice" command has been added. * A new "/kickban" command to ban and immediately kick a user has been added. It supports the same parameters as the "/ban" command plus an additional "kickban reason" parameter. * Commands to grant or remove status for users will now be applied to the user's own nickname when no nickname parameter is given. * The "/unignore" command now supports the same simple nickname-only format as the "/ignore" command. * If given no parameter, the "/away" command will now set the away state with the default away message. The "/back" and "/unaway" commands can be used to unset the away state. * You may now use "%nick" as a placeholder for your own nickname in the auto- connect commands for a network. * A bug that could lead to the auto-connect commands for a network not being executed correctly has been fixed. DCC * DCC file transfers now support file names containing spaces on send, receive and resume. The automatic replacement of spaces with underscores in file names can now be optionally disabled in the DCC preferences. * File names are no longer being needlessly lower-cased during DCC transfers. * The DCC file transfer and DCC Chat info messages shown in the chat window have been significantly improved to provide more useful information while being less excessively verbose. * DCC Chats will now be logged properly. * It is now possible to select multiple files in the DCC Status tab. * The default size of the buffer used in DCC transfers has been increased to 8192kb for improved DCC performance. * The DCC Status tab will no longer show a speed of '?' for completed, failed or aborted transfers. * Bugs that could lead to the IP used for DCC transfers not being retrieved from the server correctly upon reconnect or in general on certain servers have been fixed. * A bug that could lead to the progress bar of a transfer in the DCC Status tab being rendered at a wrong position has been fixed. * A bug that could lead to Konversation's CPU usage spiking to 100% after a DCC Chat was closed from the remote side has been fixed. * Several bugs that could lead to application crashes in DCC Chat tabs after the server connection from which the DCC Chat originated was closed have been fixed. Technology * Konversation will now properly split up very long lines into multiple messages by calculating the length of the message preamble and the number of bytes of the text payload. Encodings that use multiple or variable numbers of bytes per character are accounted for. * The Disconnect and Reconnect menu actions and the respective input box commands have been rewritten for increased reliability. Their state will now be updated properly, and they will quit the IRC server in the correct manner. * A previous away state will now be recreated upon reconnection to a server. * The Quick Connect feature will now no longer join the auto-join channels of the configured network that the quick connect server was recognized as being a part of. * The "Konversation" and "KonvDCOPIdentity" DCOP objects have been renamed to "irc" and "identity", respectively. Several bugs in the DCOP API have been fixed, and deprecated interfaces removed. * Processing of the user lists of newly joined channels has been rewritten to fix several bugs, including improved compatibility with the Bip IRC proxy and other servers. * The lag calculation and timeout handling code has been rewritten for improved reliability and performance. * Recognition of the half-op user status has been improved. * The detection of text being typed into the input box to prevent focussing new tabs at inconvenient times has been improved to work correctly with non-ASCII characters. * The handling of channel user limits in the Channel Settings dialog is now more reliable. * Support for mode flags encountered on UnrealIRCD servers has been improved. * Support for RPL_DATASTR on UnrealIRCD servers has been improved. * A bug that could lead to the mode flags displayed for users not being updated properly after they were kicked from a channel has been fixed. * A bug that could lead to iterating over a configured network's servers failing after a connection failure has been fixed. * A bug that could lead to Konversation connecting to the wrong server in a network when choosing to connect to a specific server from the Server List dialog has been fixed. * A dialog will now ask the user for an additional nickname when all nicknames configured in the identity where tried unsuccessfully during a connection attempt. This replaces the previous behavior of repeatedly appending underscores to the last nickname, which eventually ran into the nickname length limit on the server. * A bug that could lead to unnecessary nick changes immediately after connecting to a server has been fixed. * A bug that could lead to Konversation trying to auto-identify multiple times upon connect on certain servers has been fixed. * A bug that could lead to Konversation not picking up on users leaving a channel without providing a part or quit message on UnrealIRCD servers has been fixed. * Changes to the list of auto-join channels for a network will now be applied immediately. * The auto-reconnect preference will now be properly applied at runtime. * Konversation will no longer enable IDENTIFY-MSG mode on servers that support it, but continues to be able to process messages with IDENTIFY-MSG prefixes in case an involved IRC proxy chose to enable IDENTIFY-MSG mode. * The broken default for the Custom Web Browser preference has been fixed. * Konversation will no longer allow Konsole tabs to be opened in KDE environments in which the use of terminals is prohibited by the KIOSK framework. * A bug that could lead to an application crash when a Konsole tab was closed from the Konsole component's context menu has been fixed. * A bug that could lead to an application crash when a channel was joined while the application window was hidden has been fixed. ------------------------------------------------------------------------------- Changes from 0.18 to 0.19 We are extremely pleased to announce the immediate release of Konversation 0.19. The focus of this release is on extending and improving upon established functionality. Most notable in this regard are significantly improved management of IRC networks and servers all across the application, a redesigned tab bar and better support for common IRC commands. A long list of further additions and improvements has us confident of this being the best version of Konversation yet. Enjoy! User Interface * The Server List dialog has been rewritten to allow direct manipulation of a network's servers and features more intelligent sorting behavior. Reordering networks via drag and drop is now possible. A behavioral audit of all actions in the dialog resulted in numerous improvements. * A redesigned tab bar sports highly configurable text- and LED icon-based notifications as well as more intelligent scaling behavior under space-critical conditions. * Tabs are now intelligently grouped around their respective connection status tab. * Status tab labels now display the user-configured network name where appropriate. * The Find Text dialog has been replaced by a search bar that no longer interrupts your workflow. * Channel links in the chat area now feature a context menu for quick access to common actions. * Usage of the status bar has been extended to show context-relevant information as the cursor passes over various interface elements. The lag information segment is now only shown where appropriate. * A channel's topic can now be cleared by setting an empty text in the Channel Options dialog. * The Channel Options dialog has been redesigned to allow editing the current topic while browsing a channel's topic history. * The Watched Nicknames interface has been fully integrated with network management. * Pressing the Arrow Down key in the input line now preserves any input entered by adding it to the history. * Commands may now be sent as regular messages by typing Ctrl+Enter. * The multi-line paste editor window now highlights whitespace characters and prepends the existing content of the input line. * The Colored Nicknames feature has been improved to better handle nickname changes and immediately apply any changes to the color palette. * Some previously not configurable notification events have been made configurable. * Users leaving a server will now be announced in any query you have open with them. * Query tab labels will now update when a user you have a query open with changes his/her name. * The DCC file transfer dialogs have seen a number of cosmetic improvements. Among other things, in the event of a file being renamed on save, the local file name is now shown across the application. * Various status and error messages have been rewritten for improved consistency and clarity. * The KDE standard text font will now be correctly set as initial default chat font. * It is now possible to skip displaying a server's MOTD on connect. * If the application is set to display a server's MOTD in a fixed-width font and the previously configured default chat font is already a fixed-width font, the chat font will now be used rather than the global KDE default fixed-width font. * The state of the automatic spell checking functionality is now remembered across sessions and set for all tabs. * Networks no longer lose their channel history when their settings are changed. * The Server List dialog will no longer close when a connection attempt fails due to the identity not being set up correctly. * After changing your nickname using the optional drop-down menu to the left of the input line, focus will now be returned to the input line. * The configuration dialog has been rewritten to correctly update the button state of its primary actions and improve consistency with the KDE style guide. * The vertical and horizontal splitters in channel tabs now behave better when the application window is resized and correctly retain their positions across sessions. * The OSD preview in the OSD settings page is now always shown correctly. * The OSD will no longer be shown when the desktop is locked. * A bug that prevented copying text from the chat area under certain circumstances has been fixed. * Keyboard search in the channel nickname list has been fixed. * A number of issues affecting nickname context menus in the chat area have been fixed. * A bug leading to a wrong operator count in the status bar has been fixed. * It is no longer possible to add nameless networks or hostless servers in the respon- sible management dialogs. * Bugs that led to parts of the interface not reacting to KDE color scheme changes have been fixed. * The status bar now correctly reacts to KDE font size changes. * A bug that led to the application window resizing on overly long status bar contents has been fixed. * A bug that led to multiple remember lines being inserted into the frontmost tab when away mode was activated has been fixed. * A bug that led to wrong link addresses being opened from the chat area has been fixed. * Bugs that led to wrong URLs being produced by dragging a link from the chat area to the input line have been fixed. * Channel names are now better recognized as such by the chat area. Bookmarking * Bookmark titles now default to the channel name. * Bookmarks now store the network name rather than the server address where available. * Bookmarks now support IPv6 addresses. Commands * The '/server' command now recognizes a greater variety of address notations including network names. * The '/names' command now always succeeds in returning the user list of a channel. * The '/topic' command now always succeeds in returning the topic of a channel. * A '/dns' command has been added that facilitates resolving the host name of a user on the server as well as generic host names. Reverse resolve is supported on KDE 3.5.1+. * An '/unignore' command has been added. * A '/disconnect' command has been added. * A '/reconnect' command has been added that disconnects and then reconnects the respec- tive server. * A '/setkey' command has been added to set the Blowfish encryption/decryption key for the respective context. * The '/list' command now correctly opens the Channel List tab. * A bug in parsing the arguments of the '/join' command has been fixed. * Usage information and error reporting for various commands has been rewritten for improved consistency and clarity. * A bug that led to a 'clear' command being sent to the server when using the '/clear' command to clear the contents of a query tab has been fixed. Miscellaneous * The 'media' script has been rewritten and now features improved compatibility with common character sets, greatly enhanced support for the Kaffeine media player and newly added support for the Yammi media player. * The 'sysinfo' script has been rewritten to produce more concise output and better handle a variety of storage scenarios. * The convenience feature expanding [[term]] into a Wikipedia link is now localizable and generates a link that performs an intelligent lookup for the term in the Wiki- pedia rather than assume a correct direct link. Technology * Konversation now depends on KDE 3.4+. * The preferences storage system has been rewritten to facilitate easier maintenance and faster development in future release cycles. * Localized support for a long list of IRC protocol primitives has been added. * The application will now correctly iterate over a network's servers on successive failed connection attempts. * When the '/server' command or the Quick Connect dialog is used to connect to a server that has previously been added to a network in the Server List dialog, it will be recognized as being part of the network and the respective identity settings will be applied. * The automated reply to a highlight event can now reference the groups of the matched pattern by the identifiers %1-%9 and the entire match by the identifier %0. * The CABAP IDENTIFY-MSG technology is now supported. * Compatibility with the Unreal IRC server has been improved. * Initial support for Blowfish encryption (compatible with mIRCryption and FiSH) has been added. Note that Diffie-Hellman key exchange (DHX) is not yet supported. * The Watched Nicknames reporting has been made more reliable. * Socket handling in the DCC file transfer feature has been improved. * Alpha-blending of icons in the channel nickname list has been fixed. * Support for the iso-2022-jp encoding has been enhanced. * The custom web browser feature will now automatically append the URL as a parameter to the specified command when the %u identifier is missing. * Channel modes are now correctly cleared and updated in the internal representation on rejoin. * A bug that led to an infinite loop during a connection attempt when all nicknames configured in the identity were in use has been fixed. * A bug that could lead to a crash when opening the log file for a closed connection has been fixed. ------------------------------------------------------------------------------- Changes from 0.17 to 0.18 - All nicks were blue when colored nicks are disabled with some setups - /cycle now works as expected - /gauge script was not working correctly when given a bigger than 100 argument - /mail script has been added - Button to invoke Regular Expression Editor (if installed) in Settings -> Highlight. - Complete command line argument system for connection - An option to disable clickable nicks . Add ClickableNicks=false to konversationrc to disable it. - Fixed a big memory leak in message processing - Nicklist slider now correctly resizes in all channels when its resized and correctly restores on startup - [[foo]] is now a link to http://en.wikipedia.org/wiki/foo . We will expand this to local wikipedia's in a later release [Update: Now fixed in 0.19] Changes from 0.16 to 0.17 - Add an option to hide realnames in nicklist - Show away users as disabled ala Xchat - Remove sort by away status - Fix whois replies for normal users on safe channels ( IRCNet alike ) - Fix whois replies from ircd-hybrid ( Efnet alike ) - Better handling of quiet bans ( especially Freenode ) - KDE color scheme is now honered in topic widget - Enable clickable nicks even if colored nicks are off - Per identity pre-shell command support with a GUI - Bookmarking support - Detect Japanese encoding correctly while trying to auto-detect Unicode Changes from 0.15 to 0.16 - Dropping URLs onto nick on nicklist or onto query initiates DCC send - You can now do SSL connections from Quick Connect Dialog - Nicklist Icon Themes - New topic widget - Added a channel dialog - Made the nickname box optional - Fix DCC resume when its set to auto-accept - Calculate DCC CPS more accurately - Colored nicks support - Added dcop functions to set away and added alt+a shortcut to toggle away - Clicking nicks in channel text will now open a query and similarly, clicking #foo will now join channel #foo - Nicks in channel view now have a context menu as in nicklistview - Tab at begining of line inserts last completed nick - A media script added to replace amarok,juk,noatun,kaffeine scripts. Use /media instead of using /amarok,/juk etc. - Links can now be dragged & dropped from channels - Midde clicking urls now opens them in new tab in konqueror ( if konqueror is used for links ) - Improved unicode detection - Fix unicode detection for strings containing color markup - /omsg,/onotice support - Added an option to use an IPv4 interface for IPv6 dcc sends - A new /google script added to search Google using Google SOAP api - Redesigned settings page - A new application icon - Lots of optimizations all around Changes from 0.14 to 0.15 - Ported socket code to KNetwork. Weird connection problems should be gone now - Get default username/ident information from system - Support for bouncer prefixes in nick completion - Dcc port range support - Scripts now works with /script or /exec script - Improved bidi support. - Cleaned up settings dialog - Added an option how to get own IP for DCC send/chat - "Open Watched Nicks Online panel on startup" option - Support encoding settings per channel - SSL Support - KIO-fied local I/O on DCC send/receive - OSD Positioning Support - New network based server settings - Added an option to stay in systray all the time - Full irc:/ url support (channel name & password now supported in url) - /charset support - auto /WHO support - display away status of nicks in nick list Changes from 0.13 to 0.14 - Added irc "pseudo" command /prefs for changing settings without settings dialog. - Measure away time and make it available via placeholder (%t) - (Very much) Improved OSD. - New application icons by luciash d' being <luci@sh.ground.cz>. Thanks! - Added /server command for connecting to a server. - After the connection is lost and the old nickname is still in use, the nickbutton in the channelwindows is updated to the new nick. - Now you can read utf8 encoded messages even if your locale is not unicode - "Do not show this dialog again" preferences now works correctly - Added an "Insert Remember Line" feature. The user can mark the position in the channel where he stopped reading(because he is away for a short time). When he comes back, he can scroll back to this mark and read what he missed. - Added the possibility to execute commands on server connection(for authentication and such things). Can be configured in the "Edit Server" dialog. - Added further timestamps for am/pm (BR 79612) - Added QuickConnect dialog by Michael Goettsche. (Thanks once again) - Properly receive a logout/shutdown request and terminate konversation, instead of minimizing to the systray. - Make OSD switchable on/off via DCOP. Thanks to Michael Goettsche! (BR 75870) - Dates can now be shown, next to the timestamp. Patch by Michael Goettsche (BR 82785) (thanks!) - Added DCC auto-resume feature by Michael Goettsche (BR 81740) (thanks!) - Added systray notification - Added shell like nick completion mode (aka uga mode) - Implemented a cleaner way of handling tab shortcuts - Implemented DCC Chat - Hilight mailto: links - Topic line can now be hidden - Added an away nickname - Added /aaway, /ame and /amsg - Added "Open URL" context menu to channel list entries - Implemented slower / faster blinking of tabs for more / less important events - Less important events like Join, Part and Nickchanges can now be hidden - Custom CTCP Version Reply Support - Added a shortcut to close all open queries - Added a patch by Thomas Nagy to cycle tabs with mouse scroll wheel (thanks!) - Added logfile reader - Added patch by Gary Cramblitt to enhance DCC panel (thanks!) - Added patch by Gary Cramblitt to select custom web browser command (thanks!) - When the server goes offline, now all associated tabs get crossed out - Added a multi line pasting editor - Nicks Online is now a tabbed panel, rather than separate window. - Added sound support to the highlight list - Added regular expression support to the highlight list^ - Follow the style guide when the tray icon is enabled by minimizing to tray when the close button is clicked. - Auto text feature on highlight events - DCC resume offers to rename a transfer now - Added patch by Ruud Nabben to enable hiding of IRC colors (thanks!) - Various small fixes and additions Changes from 0.12 to 0.13 - Added an option to hide hostmasks in channel nick lists - Autojoin on invite with user interaction implemented - Added URL catcher interface - Added user interface for "don't show again" dialogs - Added slovenian translation by Barko (thanks!) - Added korean translation by Hye-Shik Chang (thanks!) - Added option to place tabs on top - Color configuration is now in preferences dialog - Quick buttons configuration is now in preferences dialog - Notify list is now in preferences dialog - Option for a background image added - Added /quote command for raw server messages - Added Copy URL into clipboard for URL catcher - Added option for reconnect on too long lag - Added "Server list" menu entry to "File" menu - Applied a patch by Peter Simonsson (thanks!) - Patch added Color picker, IRC colors and KNotify events - Added support for command aliases - Encodings are now on per-identity basis - Added indicator to show own away state - Added system tray icon patch by Frauke Oster (thanks!) - Channel list update is now more CPU friendly - Tell the user why the channel list could not be opened - Channel list now sorts correctly when number column is clicked - Applied a patch by Christian Muehlhaeuser to enable bigger mode changes (thanks) - Applied a patch by Christian Muehlhaeuser to right-align close widgets (thanks) - Info button on dcc panel now works - Added /unban command - Applied a patch by Christian Muehlhaeuser for OSD functions (thanks) - Applied a patch by Sascha Cunz for extended user modes beyond @ and + (thanks) - Applied a patch by Steve Wollkind to close visible tab via shortcut (thanks) Changes from 0.11 to 0.12 - Now handles multi server mode in one single window - Fixed the wrong Ops counter - Added /notify command and respective dcop calls - Added support for /oper command - Implemented /ban command and menu items - Added shortcut (F3) for search dialog - History does not get cleared on cursor up/down anymore - Added context menu to copy URLs immediately - Added paragraph spacing - Added hostmask column to nick list - Implemented background hostmask scanning - Recognises now who set the first topic - Added nickname sorting options - Sorting now has up/down arrows - Added channel list panel - Added russian translation by Stanislav Karchebny (thanks!) - Applied some patches by Stanislav Karchebny - Added PgUp/PgDown support to Channels, Queries and Status views - Added rename button to identity page to overcome QComboBox limitations - Tabs now blink in the last highlight color to indicate important text - Tabs don't get to front anymore while the user is typing in an input line - Added shortcut editor dialog - Added konsole panel (thanks to Mickael Marchand) Changes from 0.10 to 0.11 - Added a patch by Bart Verwilst to provide automatic service registration (thanks!) - Added "Hide Menu" function - Improved server connection code to stop konversation freezes at startup - Server lag calculation after reconnect fixed - Implemented own async lookup class to throw out broken QDns - Added prelimnary application icons - Send File in dcc panel now works - Added Send File context menu item in text views - Added dialog for Resume / Overwrite DCC Get files - Added large paste warning dialog - Close Buttons on tabs are now an option - Added context menu on tabs with close item - Added ALT+1 - ALT+9 for switching tabs - Applied a big patch by Alex Zepeda. Thanks! - First working DCOP implementation - Implemented a simple search dialog - Added a raw log pane Changes from 0.9 to 0.10 - Font encodings are now set via KCharsets - Implemented different identities - Added double click actions to nick list and notify list - Added support for ASCII-BEL - Added custom spacing and margin - Added close buttons for the tabs - Redesign of the color configuration dialog - Switched to kapp->config() to properly remember dialog status - Color code parsing now works with QRegExp - CTCP-Ping now works - Removed files that are no longer needed - Updated German translation Changes from 0.8 to 0.9 - Added strikeout support (untested yet) - Added Swedish translation, done by Karolina Lindqvist (thanks!) - Added optional timestamps to chat windows - Quick Buttons and Channel Mode Buttons can now be hidden - Added support for multi channel joins - Added #include "sourcefile.moc" to all Q_OBJECTS to speed up compiles - Added support for autoconnect to server - Inserted a QSplitter between channel text and nick list - Added support for background colors - Reduced flickering on blinking tabs - Added experimental support for foreign language characters - Added ignore list functionality - Added away / unaway messages - DCC folder can now be selected vial GUI - Applied a patch by Barak Bloch to fix foreign character set behaviour (thanks!) - Updated German translation Changes from 0.7 to 0.8: - DCCs can now be opened (started) using the 'open' button - DCCs can now be aborted using the 'abort' button - Added support for /users reply - Added support for /invite and 341 reply - Added support for 401 error reply - Added /smsg for "silent messages" - Text and Nicklist-Fonts can now be selected via GUI - Changed server ping response again to make dalnet ircd happy - Fixed nicklist sorting in channels - Switched to kdevelop 2.1.4 to hopefully fix some compile problems - Made Notices appear a bit different - DCC recipient list now gets sorted - Made text widget not scroll when scroll bar isn't completely down - Parsed WHOIS messages into human readable form - Pasting multiline text into input lines now behaves as expected - Hilights now honor the sending nick, too (patch by Suran. Thanks!) - You can now hilight all your own lines independently - Fixed the problem in the appearance dialog with font names - Added DCC error dialogs - Quit/Nickchange/Kicks are now only reported in channels where the nick actually is in - Fixed bug with lockups on defective logfiles - Added support for EUR currency symbol - Added keyboard handling to navigate between pages - Code cleanup in nick list - Added first support for custom colors in nick list - Added application dsescription for the 'About' dialog - Major restructuring of the server status panel diff --git a/doc/index.docbook b/doc/index.docbook index 98af3508..c4e1c612 100644 --- a/doc/index.docbook +++ b/doc/index.docbook @@ -1,3443 +1,3443 @@ <?xml version="1.0" ?> <!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.5-Based Variant V1.1//EN" "dtd/kdedbx45.dtd" [ <!-- Define an entity for your application if it is not part of KDE CVS --> <!ENTITY irc "<acronym>IRC</acronym>"> <!ENTITY CTCP "<acronym>CTCP</acronym>"> <!ENTITY i18n-nickname "<acronym>nickname</acronym>"> <!ENTITY i18n-Nickname "<acronym>Nickname</acronym>"> <!ENTITY led "<acronym>LED</acronym>"> <!ENTITY osd "<acronym>OSD</acronym>"> <!ENTITY konviwebsite "http://konversation.kde.org"> <!ENTITY % addindex "IGNORE"> <!ENTITY % English "INCLUDE"> <!-- ONLY If you are writing non-English original documentation, change the language here --> <!-- Do not define any other entities; instead, use the entities from entities/general.entities and $LANG/user.entities. --> ]> <!-- ................................................................ --> <!-- The language must NOT be changed here. --> <!-- If you are writing original documentation in a language other --> <!-- than English, change the language above ONLY, not here --> <book id="konversation" lang="&language;"> <!-- This header contains all of the meta-information for the document such as Authors, publish date, the abstract, and Keywords --> <bookinfo> <title>The &konversation; Handbook Gary R. Cramblitt garycramblitt@comcast.net 2003-2005 Gary R. Cramblitt &FDLNotice; 2016-11-29 &konversation; 1.6 &konversation; is a user-friendly &irc; client built on &Qt; and &kf5-full;. KDE extragear Konversation irc internet relay chat chat communications Introduction &konversation; is an &irc; client built on &Qt; and &kf5-full;. It offers the following features: SSL support. User-friendly tabbed interface. Customizable Quick Buttons for often-used commands. Automatic reconnect and rejoin. DCC send and receive. &i18n-Nickname; watch list. Visual and auditory notifications for a wide variety of events, such as messages containing your &i18n-nickname;, or &i18n-nickname;s on your watch list going online or offline. Customizable highlighting of messages by &i18n-nickname; or regular expression pattern. &i18n-Nickname; completion. Capture and save all &URL;s appearing in messages. On-screen display of messages, even when minimized. &i18n-Nickname; ignore list. Automatic logging and log management. Marking of lines in logs. Scripting. The &konversation; website is &konviwebsite;. Further information like a FAQ and tips and tricks you find in the &konversation; UserBase page. Developers for &konversation; can often be contacted via &irc; at irc.freenode.net channel #konversation. Using &konversation; If you haven't used &irc; before... Simply put, &irc; is a chat protocol, defined by official Internet standards, and capable of stealing many hours of your life. To use &irc;, you must connect to a server, and then join a channel (equivalent to a chat room) or just engage in private conversations. To connect to a server and channel, open &konversation;. The Server List screen appears. Server List Server List The list of configured &irc; Networks are listed here. An &irc; network is a collection of cooperating servers. You need only connect to one of the servers in the network to be connected to the entire &irc; network. Once connected, &konversation; will automatically join the Channels shown. When &konversation; is started for the first time, the Freenode network and #kde channel are already entered for you. Click on a network to select it. Click here to define a new Network, including the server to connect to, and the Channels to automatically join once connected. See Defining new networks, servers, and auto join channels for more information. Click here to connect to the selected &irc; network and channel. When you click the Connect button the first time you open &konversation;, you may see the following message, telling you that your default identity is not set up correctly. Check Identities Check Identities The first time you open &konversation; it obtains information about the current user from the operating system and fills in defaults for the Identity. If the operating system user information is not complete, for example, no Full Name is defined, you may see the message above. To correct this problem, click Edit Identity... and see Setting your identity for more information. The Main screen will be displayed showing the messages sent by the server to the client. (If &konversation; will not connect to the server, see Questions and Answers.) When the server messages have finished scrolling past, &konversation; will join the channel or channels chosen. Channel. Channel This is called the Input Line. To send a message to everyone in the channel, type the message here and press &Enter;. Your message, as well as everyone else's messages appear in the channel scroll above. Each message is preceded by the time and user's &i18n-nickname;. You may join additional servers and channels. Each server, channel, channel list, and other screen gets a separate tab here. To display a list of available channels, see Listing available channels. To join a channel, type: /join #channelname in the Input Line. (The # is required.) You may also type /j as a shorthand to /join. To leave a channel, just type /part. To switch the display to a different server or channel, click the corresponding tab. This is called the Nick Panel. It lists the &i18n-nickname;s of all the users who have joined the channel, including yourself. That's the basics, for more detailed information, read on... Setting your identity Before you start using &konversation; regularly, you should set how you will be identified on the network. Click Settings Identities on the main menu. The Identities screen will appear. You can also display the Identities screen by clicking the Edit button on the Edit Network or New Network screen. Identities (General tab) Identities (General tab) Click here to select an Identity to edit. Use these buttons to Add, Duplicate, Rename, or Remove an Identity. Enter your real name here. &irc; is not intended to keep you hidden from your friends or enemies. Keep this in mind if you are tempted to behave maliciously. A fake "real name" can be a good way to mask your gender from all the nerds out there, but the PC you use can always be traced so you will never be truly anonymous. Use these buttons to Add or Remove a &i18n-nickname;. This is your list of &i18n-nickname;s. A &i18n-nickname; is the name that other users will know you by. You may use any name you desire. The first character must be a letter. Other characters may be letters, numbers, or the special characters -[]\`_^{}|. Since &i18n-nickname;s must be unique across an entire &irc; network, your desired name may be rejected by the server because someone else is already using that &i18n-nickname;. Enter alternate &i18n-nickname;s for yourself. If your first choice is rejected by the server, &konversation; will try the alternate &i18n-nickname;s. According to RFC 2812, the maximum &i18n-nickname; length is 9, but this is actually determined by the server. To determine the maximum for a server, connect to the server. In the Server Messages tab, look for a [Support] message. For example: [18:51] *Eisfuchs* [21:45] [Support] Eisfuchs MODES=4 MAXCHANNELS=20 NICKLEN=16 USERLEN=10 HOSTLEN=63 TOPICLEN=450 KICKLEN=450 CHANNELLEN=30 KEYLEN=23 CHANTYPES=# PREFIX=@+ CASEMAPPING=ascii CAPAB IRCD=dancer The NICKLEN parameter specifies the maximum &i18n-nickname; length. Use these buttons to change the order of the &i18n-nickname;s. The top &i18n-nickname; is tried first, then the next &i18n-nickname;, and so on. If you have registered your &i18n-nickname; with the &irc; network, enter the service and password to authenticate your &i18n-nickname;. When &konversation; connects, it will automatically send /msg service IDENTIFY password to the server. If you don't know what this is, leave these boxes blank. Click the Away tab. Identities (Away tab) Identities (Away tab) Enter a &i18n-nickname; that indicates you are away. Whenever you perform an /away msg command in any channel joined with this Identity, &konversation; will automatically change your &i18n-nickname; to the Away nickname. Other users will be able to tell you are away from your computer. Whenever you perform an /away command in any channel in which you are away, &konversation; will automatically change your &i18n-nickname; back to the original. If you do not wish to automatically change your &i18n-nickname; when going away, leave blank. If you check this box, whenever you perform an /away command, a horizontal line will appear in the channel, marking the point where you went away. Other &irc; users do not see this horizontal line. If you check this box, &konversation; will automatically send the Away command to all channels joined with this Identity. %s is replaced with msg. Whenever you perform an /away command, the Return command will be displayed in all channels joined with this Identity. Away messages are often considered annoying by other users. Use this option carefully, with consideration for your fellow &irc; users. Click the Advanced tab. Identities (Advanced tab) Identities (Advanced tab) You can enter a command here that will be executed before connecting to the server. If this identity is used for more than one server, the command will be executed for each server. This setting affects how characters you type are encoded for sending to the server. It also affects how messages are displayed. When you first open &konversation;, it automatically retrieves this setting from the operating system. If you seem to be having trouble seeing other user's messages correctly, try changing this setting. When you connect, many servers query your computer for an IDENT response. If you computer is not running an IDENT server, this response is sent by &konversation;. No spaces are allowed. Your first name is suggested. Whenever you leave a channel, this message is sent to the channel. Whenever you are kicked from a channel (usually by an &irc; operator), this message is sent to the channel. Click to apply your changes. In order for all the changes to take effect, you must disconnect from the server and re-connect. The easiest way to do that is to quit &konversation; and restart. Defining new networks, servers and auto join channels The Server List screen appears when you open the &konversation; program. It also appears when you choose File Server List on the main menu. The Server List screen lists your existing defined &irc; Networks, listed by group. An &irc; network is a collection of cooperating servers. When you connect to any server in a network, you have access to all the channels of the network. Examples of &irc; networks are Freenode and Undernet. Server List Server List Your existing defined Networks are listed here along with the Identity used to connect to the network, and the Channels automatically joined when connected. If you have specified a group for your networks, networks are listed indented under the group. Click on a network to select it. Use these buttons to Add a new network, Edit a highlighted network, or Delete a highlighted network. Click this button to connect to the highlighted Network and close the Server List screen. You may highlight more than one network if you wish, which will connect to all the highlighted networks. Clicking this button does not discard the changes you have made. It merely means you do not wish to connect to any networks at this time. When you click the New button, the New Network screen appears. New Network New Network Enter the Network name here. You may create as many entries in the Server List screen with the same Network as you like. Choose an existing Identity or click the Edit button to add a new Identity or edit an existing one. The Identity will identify you and determine your &i18n-nickname; when you connect to the network. Optional. This command will be sent to the server after connecting. Example: /msg NickServ IDENTIFY konvirocks. This example is for the freenode network, which requires users to register their &i18n-nickname; with a password and login when connecting. konvirocks is the password for the &i18n-nickname; given in Identity. You may enter more than one command by separating them with semicolons. Check here if you want &konversation; to automatically connect to this network whenever you open &konversation;. This is a list of &irc; Servers in the network. When connecting to the network, &konversation; will attempt to connect to the top server first. If this fails, it will attempt the second server. If this fails, it will attempt the third, and so on. At least one server must be specified. Click a server to highlight it. Use these buttons to Add a server, Edit a highlighted server, or Delete a highlighted server. You can also adjust the order of the server list and therefore the order of connection attempts. Optional. This is a list of the channels that will be automatically joined once &konversation; has connected to a server. You may leave this blank if you wish to not automatically join any channels. Use these buttons to Add a channel, Edit a highlighted channel, or Delete a highlighted channel. You may also change the order the channels are joined. Avoid mixing servers on different &irc; networks under the same Network. Avoid entering the same server under two different Networks. Otherwise, monitoring of online &i18n-nickname;s will not function correctly. When you click the Add button in the Servers frame, the Add Server screen appears. Add Server Add Server The name or IP number of the server. irchelp.org maintains a list of servers. Enter the port number required to connect to the server. For most servers, this should be 6667. If the server requires a password in order to connect, enter it here, otherwise leave blank. Check if you want to use Secure Socket Layer (SSL) protocol to communicate with the server. This protects the privacy of your communications between your computer and the &irc; server. The server must support SSL protocol for this to work. In most cases, if the server does not support SSL, the connection will fail. When you click the Add button in the Auto Join Channels frame, the Add Channel screen appears. Add Channel Add Channel Enter a channel name. Do not forget leading #. If the channel requires a password in order to join, enter it, otherwise leave blank. Listing available channels To display a list of available channels, choose Window Channel List on the main menu. After a warning screen, a new tab is created called the Channel List. The Channel List tab. The Channel List tab. Enter a filter string here. You can limit the channel list to those channels with a minimum or maximum number of users here. Choosing No Limit disables the respective criteria. Click here to retrieve the list of channels from the server and apply the filter. The filtered list of channels is displayed here. Notice that if you don't use regular expressions, &konversation; lists any channel whose name contains the filter string you entered. The channel name does not have to start with the string you entered. Select a channel you want to join by clicking on it. Right click on the channel to get a list of all web addresses mentioned in the channel's topic. Click here to join the channel. A new tab is created for the channel. Sometimes there are "secret" channels on servers. Such channels are not listed in the Channel List. You can still join these channels if you know their name. In any Input Line, type: /join #channelname. (The # is required.) A new tab is created for the channel. If you join a channel and the Nick Panel lists only your &i18n-nickname;, it means that the channel did not exist before. The server created the channel and you are the operator. In this case, you probably want to close the channel by typing: /part. A tour of the main screen Let's learn more about the Main screen. The screen is shown below with a channel tab selected. The Main screen. The Main screen This is called the Input Line. It appears only when the current tab is a channel. To send a message to everyone in the channel, type the message here and press &Enter;. Your message, as well as everyone else's messages appear in the channel scroll above. Each message is preceded by the time and user's &i18n-nickname;. You can also paste text from the clipboard. If the pasted text has more than one line (newlines), a dialog box appears. Edit the text as desired and click OK. If the pasted text is longer than 256 characters, or it contains more than one line, a warning message appears advising you that large postings can cause connection resets and flooding. You can still proceed with the input, but doing so is a bad idea, as flooding will annoy other users in the channel, or you may be disconnected from the server. It is better to send the message in shorter chunks. A convention used in many channels is to precede messages directed at one user with their &i18n-nickname;. &konversation; provides a convenient &i18n-nickname; completion feature. Start typing the user's &i18n-nickname;, then press . &konversation; will complete the rest of the user's &i18n-nickname; followed by a colon. To customize the completion feature, choose Settings Configure Konversation from the main menu, expand Behavior, click on General, and select a Completion mode. You can also enter an &irc; command here by first typing / followed by a valid &irc; command. See Frequently-used &irc; commands. On some servers, you can type /help for a list of available commands, or type /help command for help on a specific command. You may join additional servers and channels. Each server and each channel gets a separate tab here. To display a list of available channels, see Listing available channels. To join a channel, type: /join #channelname in the Input Line. (The # is required.) To leave a channel, just type /part. Tabs also appear here if you open a Channel List, participate in a private conversation (query), open the &URL; Catcher, or open one or more Konsoles. To switch the display to a different screen, click the corresponding tab, or use the mouse wheel to cycle through the tabs. To set other options for tabs, choose Settings Configure Konversation from the main menu, expand Interface, click on Tabs or expand Notifications and click on Tabs. These &led;s will blink when there is something you haven't seen in that tab. The &led; will blink slower when the only unseen messages are join, part, quit, or &i18n-nickname; changes. They blink faster if there are unseen regular messages. The colors are as follows: Channel Server Messages, Channel List, or &URL; catcher. Konsole or DCC Status. Private Message (Query). Click here to close the current tab. Closing a Channel tab will leave the channel. Closing a Server Messages tab will leave all channels you've joined, close all open queries at that server and disconnect from the server. Click this button to change your own &i18n-nickname;. It appears only when the current tab is a channel. To hide this button, choose Settings Configure Konversation from the main menu, expand Interface, click on Chat Window, and uncheck Show box to change own nickname box. The channel topic is displayed here. Hover the mouse over the topic to see long topics. You can change the topic by clicking the button to the left of the topic. To hide channel topics, choose Settings Configure Konversation from the main menu, expand Interface, click on Chat Window, and uncheck the Show channel topic box. These buttons display the current state of channel modes. A button is down if that mode is on. If you have the correct privileges, you can also change channel modes by clicking on these buttons, or click the button to the left of the topic. To hide channel mode buttons, choose Settings Configure Konversation from the main menu, expand Interface, click on Chat Window, and uncheck the Show channel mode buttons box. This is called the Nick Panel. It is displayed whenever the current tab is a channel. It lists the &i18n-nickname;s of all the users who have joined the channel, including yourself. Hover the mouse pointer over a &i18n-nickname; to display additional information about the user. You may change how the icons are displayed next to each &i18n-nickname; by changing the &i18n-nickname; icon theme. See Configuring &i18n-nickname; themes for more information. The Default Theme, as shown in the screen above, uses the following icons: normal user voiced user. User may talk in a moderated channel. channel halfop channel operator channel owner channel admin In addition, if a user is away, a small clock will be drawn in the corner of the icon. Click with the &RMB; on any &i18n-nickname; to display a context menu of operations you can perform with that &i18n-nickname;. For example, you can send a file to the &i18n-nickname;. To hide the Nick Panel, choose Settings Show Nicklist from the main menu. These are called the Quick Buttons. By default, they are not shown. To display them, see Configuring Quick Buttons. You can customize their definitions to whatever commands you wish. You can control how messages are displayed in the message scroll of channel and query tabs. For example, you can change the color of messages, play a sound when a message containing a string is received, or automatically reply to messages. See Message highlighting for more information. Channel names sometimes begin with &, +, or !. The first character of a channel name determines the type of channel (RFC 2811) as follows: # - Regular channels. ! - Regular channels. & - Local. Channels that can only be joined from the server hosting the channel. All other channels can be joined from any server in the network. + - Channels that do not support channel modes. This means that all the modes are unset, with the exception of the 't' channel flag which is set. Channel names are up to 50 characters long and may contain any characters except for space, comma, and Ctrl-G (^G or ASCII 7). Quick Connect Sometimes you want to connect to a server without going through the trouble of creating a new server in the Server List. Choose File Quick Connect on the main menu. The Quick Connect screen will appear. The Quick Connect screen. The Quick Connect screen Enter the server address in the Server host box, your desired &i18n-nickname; in the Nick box, and click the Connect button. When &konversation; has connected to the server, enter command /join #channelname to join a channel. Frequently-used &irc; commands The following is a short list of frequently-used &irc; commands. See RFC 2812 for a complete list of all commands, or visit irchelp.org. For a list of commands treated specially by &konversation;, see &konversation; commands. /help Lists commands available on the current server. Not supported by all servers. /help cmd Provides help for cmd. Not supported by all servers. /join #channel Joins #channel. If the channel does not already exist, it is created and you are the channel operator. /part Leaves the current channel and closes the channel tab. /part #channel Leaves #channel and closes the corresponding channel tab. Synonym for /leave /me msg Sends msg to the channel preceded by your &i18n-nickname;. For example, if your &i18n-nickname; were Tux, typing /me brews a cup a tea. displays the message Tux brews a cup of tea. Unless they've filtered against these types of messages, all users see it. This kind of message is typically used to convey non-verbal information, such as your current emotional state, or what you are physically doing. If you are leaving your workstation for a short time, use the /away command instead. /away msg If anyone tries to send you a private message or invite you to a channel, they will be told that you are away from your workstation with msg. /away Cancels an /away msg command. /query nick Creates a new tab with the user's nick for private conversation, commonly known on &irc; as a Query. Everything written here is only visible to you and your query partner. /msg nick msg Sends msg to the user with &i18n-nickname; nick. Only nick sees the message. Use /query for longer conversations. /invite nick Invites the user with &i18n-nickname; nick to join a channel. This command is especially useful if the channel is invite-only. Private conversations (queries) A private conversation is one that only you and one other person can see. Private conversations are called "queries" in &konversation;. To initiate a private conversation, type /query nick in any input line, where nick is the &i18n-nickname; of the person you want to talk with. You can also click with the &RMB; on the person's &i18n-nickname; in the Nick Panel and choose Open Query . A new tab will be created. Announce yourself by sending a message. Queries are just like channels, except that only you and the other person can participate in the channel. To leave the query, just close the tab. Note however, that if the other person sends you another message in the query, the tab will open again. To leave all queries, choose Window Close All Open Queries on the main menu, or press F11 key. When someone else initiates a query with you, &konversation; creates a new tab with their &i18n-nickname;. If you don't wish to talk with the person, close the tab. Setting notifications Notifications are actions that &konversation; will perform whenever an event occurs. Suppose you have &konversation; running, but minimized or hidden behind other application windows on your desktop. If someone wants to communicate with you, or your buddy joins a channel, you'd like to be alerted. Notifications will accomplish this. To configure notifications, choose Settings Configure Notifications on the main menu. The Notification Settings screen will appear. The Notification Settings screen. The Notification Settings screen Click here to select an event. Check the types of notifications you'd like to happen when the event occurs. (Mark taskbar entry causes the entry in the taskbar to flash when the event occurs.) Repeat by selecting another event and checking the notifications desired. When you've configured all the desired notifications, click the OK button. Once you've set up your notifications, you can enable or disable all notifications using Window Enable Notifications on the main menu. You can also alert yourself when someone mentions your &i18n-nickname; in a message using &konversation;'s highlighting feature. Monitoring who is online &konversation; will keep you informed when your buddies are connected to the &irc; network or not. The &irc; network is recorded because &i18n-nickname;s are unique across a single &irc; network. The &i18n-nickname; in two different &irc; networks is not necessarily the same person, but the same &i18n-nickname; on two different servers within the same &irc; network generally is the same person. This is why it is important to use the same Network for all servers in the same &irc; network, when defining networks, servers, and auto join channels. To activate the &i18n-nickname; watching feature, choose Window Watched Nicks on the main menu. The Watched Nicks screen will appear. Watched Nicks. Watched Nicks The &i18n-nickname;s in your watch list are listed here. They are listed under their associated &irc; network. If no &i18n-nickname;s are listed, either you haven't specified any &i18n-nickname;s to watch, or you need to activate the &i18n-nickname; watching feature (see below). Expand each online &i18n-nickname; to see a list of channels the &i18n-nickname; has joined. The icons next to each channel are the same as the icons that appear in the Nick Panel in the channel screens. The information known about the &i18n-nickname; is displayed here. When the Watched Nicks screen is first displayed, this information is sparse. Every 20 seconds, one WHOIS command is automatically sent to the server to request information for &i18n-nickname;s that do not have any information. This continues until all &i18n-nickname;s have information. To add a single &i18n-nickname; to watch, open the context menu in the Nick List by clicking with the &RMB; on a &i18n-nickname; and select Add to Watched Nicks. If you want to add several &i18n-nickname;s choose Settings Configure Konversation from the main menu, expand Notifications and click on Watched Nicknames. The Watched Nicknames screen appears. Watched Nicknames Watched Nicknames Check this box to activate the &i18n-nickname; watcher feature. If you want the Watched Nicks screen to automatically display when you open &konversation;, check this box. In the Watched Nicks screen, you may double click on any &i18n-nickname; and this command will be sent to the server. %u will be replaced with the &i18n-nickname;. The %n is required at the end of the command. The Watched Nicks feature works by periodically polling the server. This box sets how often that occurs. Avoid numbers less than 20 seconds because it places excessive load on the server. Click the OK button when you have finished adding or removing &i18n-nickname;s. Note: Whenever you display the Watched Nicks screen, it may take a while before any &i18n-nickname;s are displayed until &konversation; has polled the server. Normally, you leave the Watched Nicks screen running. &konversation; also displays a message in all the channels whenever a user in your Watched Nicknames list connects or disconnects from the server. The message looks like this: [17:52] [Notify] psn is online (irc.kde.org). Message highlighting You can control how messages are displayed in channel and query screens. To activate the highlighting feature, choose Settings Configure &konversation; on the main menu. The Configure screen will appear. The Highlighting screen. The Highlighting screen Click here to select the Highlight screen. Click here to add a new item to the Highlight list. When an item in the list is selected, you may edit it in the panel below. Enter a string pattern here. Any message received that matches this pattern, anywhere in the message, will activate the highlighting for the message. If the pattern is found in a message, the entire message will be displayed in the color you select here. If you wish, &konversation; will play a sound when the pattern is matched. Click the button to choose an audio file to be played. Click the test button to hear the sound. If you'd like for &konversation; to automatically send a reply message when the pattern is matched, enter the message here. Use this feature with caution, as you may annoy &irc; users with too much chatter if not careful. You can also enter &irc; or &konversation; commands here. If you have configured sounds for any of your highlights, you can disable all of them by unchecking this box. This highlight will only be searched for in chat windows listed here by name, or in all chat windows if the field is left empty. Multiple names have to be separated by commas. If you check this box, whenever someone mentions your &i18n-nickname; in a message, the message will be displayed in the color you choose at the right. Normally, highlighting does not apply to messages you type. If you wish to highlight the messages you type, check this box and choose a color at the right. Configuring On Screen Display (&osd;) On Screen Display (&osd;) is a unique feature of &konversation;. With &osd; turned on, channel messages will appear on your desktop screen, even if &konversation; is minimized. Here's an example of &osd; in action. The message in the upper lefthand part of the screen is from &konversation;, which is running minimized in the system tray. Example of On Screen Display Example of On Screen Display To activate &osd;, choose Settings Configure &konversation; on the main menu. The Configure screen will appear. The On Screen Display screen. The On Screen Display screen Click here to expand the Notification item. Click here to select the On Screen Display screen. Check this box to activate &osd;. Click this button to choose a font for &osd;. (Note: Not all fonts work. Luxi Sans 22 and Impact 22 are known to work.) Check the boxes here to select the types of messages you'd like to appear on screen. Drag the &osd; Preview to your desired position, then click the Apply button. Sending colorful messages You can add color to the messages you send in any channel. In the Input Line of any channel, start typing your message. Click the Insert &irc; Color Button &irc; Color button or choose Insert &irc; Color on the main menu. The &irc; Color Chooser screen will appear. The &irc; Color Chooser screen. The &irc; Color Chooser screen Choose a color and click OK. Continue typing your message in the Input Line. To change the color again, click the &irc; Color button. Choose a different color and click OK. Configuring &i18n-nickname; themes You can change the icons displayed next to &i18n-nickname;s in the Nick Panel of channel tabs. To change the &i18n-nickname; theme, choose Settings Configure Konversation on the main menu. The Configure screen will appear. Click Interface to expand it, then click Nicklist Themes to display the Nicklist Themes screen. The Themes screen. The Themes screen Click here to select the Nicklist Themes screen. Select a theme. Sample icons are displayed here in the chosen theme. If you have downloaded a nick theme from elsewhere, click to install it. Configuring Quick Buttons You can enable a feature to display Quick Buttons on the Main screen, eight Quick Buttons appear. To display the Quick Buttons, choose Settings Configure Konversation on the main menu. The Configure screen will appear. Click Interface to expand it, then click Chat Window. Check the Show quick buttons box and click OK. The buttons may be customized to your liking for performing often-used &irc; commands. To customize the Quick Buttons, choose Settings Configure Konversation on the main menu. The Configure screen will appear. Click Interface to expand it, then click Quick Buttons to display the Quick Buttons screen. The Quick Buttons screen The Quick Buttons screen There are 8 default Quick Buttons. Click on an entry to change it or use the buttons at the right side of the list to add or remove Quick Buttons. The Button Name column is the name that will appear on the button in the Main screen. Keep the names short. The Button Action column is the action that will be performed when you click the Quick Button. Tips for creating actions are given on the screen. Click OK to complete the changes. Example: Button Name: Msg Button Action: Msg %u (there is a space after %u) To use this button in the Main screen, click on a &i18n-nickname; in the Nick Panel, then click the button. /MSG will appear in the Input Line followed by the chosen &i18n-nickname;. Type a message you want to send to that person and press &Enter;. The message will be sent to the user. Only that user will see the message. Sending and receiving files You may send files via &irc; to other users online, or they may send you files. WARNING: Never open a file someone sends you unless they are a trusted source. It could be a virus. To send a file to someone in a channel, click with the &RMB; on the &i18n-nickname; of the person in the Nick Panel of the Main screen. Choose Send File . A dialog appears for you to choose a file to send. Next, a new DCC Status tab appears. DCC Status tab DCC Status tab The &i18n-nickname; of the recipient and file name appear here. The Status column indicates the status of the file send or receive as follows: Preparing A receiving transfer is checking for resumable files or a sending transfer is acquiring the data to send. Connecting &konversation; is trying to establish a connection with the other end. Sending &konversation; is sending the file to the other end. Receiving &konversation; is receiving the file from the other end. Done The file has been successfully transferred. Pending The transfer is waiting for the partner to accept or reject it. Aborted Either you clicked the Abort button, or the other person aborted the transfer. Failed An error occurred and the transfer was not successful. Queued Transfer is waiting for you to accept or reject it. Resuming When a transfer begins but the file already exists on the user's system, the user will be prompted File already exists. Resume transfer? This status indicates the user resumed the transfer. When someone wants to send you a file, the DCC Status tab will be created (if not already created). Click the DCC Status tab to display it. Click the file to select it, then click this button to accept the file and the transfer will begin. Note: You may configure &konversation; to automatically accept sends from other people by choosing Settings Configure Konversation on the main menu. Click Behavior to expand it, then click DCC to display the DCC screen. If you have trouble sending or receiving files, your firewall or router may be blocking DCC ports. See Questions and Answers. Capturing &URL;s from messages In any channel, users sometimes post the &URL;s of interesting websites or other resources on the web. You can double-click any such &URL; and &konversation; will launch the application associated with the &URL;. The application launched depends upon the &MIME; type of the &URL;. For example, a &URL; beginning with http: will activate your default web browser and display the web page. (You can also specify the web browser to use.) If the &URL; scrolls off the screen, you might have trouble finding it again. &konversation; can keep a convenient list of all &URL;s for you. To activate this feature, choose Window &URL; Catcher on the main menu. A new tab called &URL; Catcher is created. The &URL; Catcher tab. The &URL; Catcher tab. This is the list of &URL;s seen since you started &konversation;. The From column is the &i18n-nickname; of the person who posted the &URL; or the name of the channel or server, where the &URL; was posted. (&URL;s appearing in join and leave messages are not listed.) Click on a &URL; to select it. Click here to activate the application associated with the selected &URL;. The application launched depends upon the &MIME; type of the &URL;. For example, a &URL; beginning with http: will activate your default web browser and display the web page. For web pages, you can also specify the web browser to use. Click here to copy the selected &URL; to the clipboard. Click here to delete the selected &URL; from the list. Click here to save the list of &URL;s to a file. Click here to clear the list. Setting your preferred web browser When you click on a highlighted &URL; anywhere in &konversation;, it will launch the default application associated with the &MIME; type of the &URL;. For example, when clicking on a &URL; beginning with http, &konqueror; is launched to display the web page. You can specify an application different from the Default Applications module of the &systemsettings;. For example, you can use Firefox instead. To choose a different web browser from &konversation; app, choose Settings Configure &konversation; on the main menu. The Configure screen will appear. The General screen The General screen Click here to display the General screen. Click here to specify that you want to use a custom web browser. Enter the command to launch your desired web browser. When you click on a &URL; %u will be replaced with the &URL;. Note: The web browser setting does not apply to mailto: &URL;s. mailto: &URL;s always launch the default mailer. Click Apply to save your changes. You must reconnect to each server and channel for the changes to take effect. The easiest way to do this is to quit and restart &konversation;. Marking Channel and Query Logs You can insert a marker into channel and query screens to help you quickly locate information. To do this, choose Insert Marker Line on the main menu, or press &Ctrl;R. A line will appear at the bottom of the text on the screen. The line will scroll with the rest of the text in the screen. To make the Maker Line be inserted in all channels and queries at once, choose Settings Configure Konversation from the main menu, expand Behavior, click on Chat Window, and check the Show manually inserted lines in all chat windows box. To make &konversation; automatically insert a Marker Line whenever you do an /away msg command, see Setting your identity. Logging If logging is enabled, &konversation; keeps a log of each Server, Channel, and Private conversation (query) session. Each session is stored in a log file on disk. When you open the same session again, &konversation; appends to the log. Whenever you open a session again, approximately the last 1024 characters of the previous session are read from the tail of the log and shown on the screen. As your session continues, messages scroll off the top of the display. You can scroll backwards to view these messages. Eventually, in order to conserve memory, the oldest messages are discarded from the scroll. This is called the Scrollback limit. Messages that disappear from the display because of the Scrollback limit are still available in the log file, if logging is enabled. To view the logfile for a session, click the tab for the session to make it the current session and choose Window Open Logfile from the main menu. A new tab appears displaying the log file. Logfile Logfile The messages in the log file are displayed here. The oldest messages are at the top and the most recent are at the bottom. Click this button to save the log file to another file. Click to refresh the log file display. While you are viewing a log file, newer messages in the corresponding session are not automatically added to the log file display. Use this button to view the most recent messages. Click to erase the log file display and the log file on disk. Use this box to set the maximum size of the scroll. This setting does take effect only for newly opened log tabs. The last changed value of the scroll size will be used on &konversation;'s next start. Each log file may have a separate setting. The Scrollback limit can be changed by choosing Settings Configure &konversation; on the main menu, then expand Behavior and click on Chat Window. The Scrollback limit box appears on this screen. If you set it to Unlimited (&ie; zero), messages are not discarded from the scroll. You can enable or disable logging and set other logging options, by choosing Settings Configure &konversation; on the main menu, then expand Behavior and click on Logging. &konversation; commands The following commands are interpreted by &konversation; and may differ from standard &irc; commands. Items inside square brackets are optional. Items separated by bar (|) are alternate forms of the command. Commands not listed here are sent to the server as entered. /me msg Sends msg to the channel preceded by your &i18n-nickname;. For example, if your &i18n-nickname; were Tux, typing /me brews a cup a tea. displays the message Tux brews a cup of tea. Unless they've filtered against these types of messages, all users see it. This kind of message is typically used to convey non-verbal information, such as your current emotional state, or what you are physically doing. If you are leaving your workstation for a short time, use the /away command instead. /ame msg Like the /me command above except that the message is sent to all the channels and queries you have open on all the servers you have connected in &konversation;. /join channel [pwd] Joins channel. If the server permits it, and if the channel does not already exist, it is created and you are the channel operator. If the channel requires a password in order to join, specify as pwd. Most channel names begin with #. /j channel [pwd] Same as /join above. /part [channel] [reason] Leaves channel with reason and closes the corresponding channel tab. Within a &konversation; channel or query tab, you can just enter /part which closes that channel or query with your default reason as given in the Settings. /leave [channel] [reason] Same as /part above. /quit When entered in any channel, query, or DCC tab, disconnects from the corresponding server and closes all channel, query, or DCC tabs open on that server. /notice nick|channel msg Sends msg to the user with &i18n-nickname; nick or to everyone in channel. The following is an example of what appears to you in the channel tab [17:14] [Notice] Sending notice "I think I understand" to #konversation And this is what the recipients see [17:15] [Notice] -Eisfuchs- I think I understand /query nick Creates a new tab with the user's nick for private conversation, commonly known on &irc; as a Query. Everything written here is only visible to you and your query partner. You may enter more than one &i18n-nickname; separated by spaces and a query tab will be opened for each &i18n-nickname;. Each such query tab will be private between you and the query partner. /msg nick|channel message Sends a private message to the user with &i18n-nickname; nick or to all users in channel. Unlike /query, does not open a new tab. If message begins with /me , the message is formatted in the same manner as a /me command. Examples /msg Eisfuchs I need some help with the msg command /msg #konversation New version of Konvi is online! /msg Eisfuchs /me is compiling the Handbook right now. /smsg nick|channel message Same as /msg except the message is not displayed on your screen. This is useful for preventing passwords and other sensitive information from remaining exposed on your screen or being logged. /amsg nick|channel message Like the /msg command above except that the message is sent to all the channels and queries you have open on all the servers you have connected in &konversation;. /op nick When entered into a channel tab, attempts to give nick operator privilege for the channel. May not work if you lack sufficient privilege in the channel (you must be a channel operator yourself). You may enter more than one &i18n-nickname; separated by spaces. /deop nick When entered into a channel tab, takes away channel operator privilege from nick. You may enter more than one &i18n-nickname; separated by spaces. /oper [nick] Grants the user with &i18n-nickname; nick &irc;-Op (Administrator) privilege. This only works if the &i18n-nickname; is listed in the server's O: line. &irc;-Ops have the privilege to /kill &i18n-nickname;s, /connect servers to the &irc; network, and more. If nick is not entered, attempts to grant yourself &irc;-Op privilege. You will be prompted for your &irc;-Op user name and password in either case. /voice nick In certain channels (with +m flag), users cannot send messages unless they have voice privilege. This command attempts to give nick voice privilege. You must have channel operator privilege to execute this command. This command is mostly used when you are an operator for a moderated channel. /unvoice nick Takes away voice privilege from nick in the channel. /topic [channel] [message] Attempts to set the topic of channel to message. When entered in a channel tab, channel may be omitted and defaults to the channel active in the tab. If message is omitted, displays the current topic of the channel. Changing a channel topic may fail if you lack sufficient privilege. /away reason If anyone tries to send you a private message or invite you to a channel, they will be told that you are away from your workstation for reason. To change your state back to normal, enter /away without a reason. /aaway reason Like the /away command above except that the command is sent to all the servers you have connected in &konversation;. /invite nick [channel] Invites the user with &i18n-nickname; nick to join channel. This command is especially useful if the channel is invite-only. When entered in a channel tab, channel may be omitted. /exec script [parameters] Executes the &konversation;-compatible shell script named script, passing it parameters. See Scripting for more information on using and writing scripts. Examples: /sayversion Sends your system's &konversation;, &Qt;, &kf5; and &plasma; version numbers to the channel. /exec cmd uname -a Sends your &Linux; version string (the output of uname -a) to the channel. /notify [nick] Adds or removes nick from your Watched Nicks list. If the &i18n-nickname; is already in the list, it is removed. If it is not in the list, it is added. If nick is omitted, displays the current list of watched &i18n-nickname;s. /kick nick reason When entered in a channel tab, attempts to kick the user with &i18n-nickname; nick from the channel with reason. If reason is not entered, defaults to the reason in the Settings. This command may only be used in a channel tab. /ban [-host|-domain| -userhost|-userdomain] [channel] user|mask Attempts to ban the user or mask from channel. When entered in a channel tab, channel may be omitted. For more information on hosts, domains, and masks, see the documents at irchelp.org. To get the current ban list for a channel, enter /mode channel b. /unban [channel] pattern Reverts a previous banning from a channel. When entered in a channel tab, channel may be omitted. /ignore [-all] nick Adds nick to your Ignore list. You may specify more than one &i18n-nickname; separated by spaces. Channel messages from users on your Ignore list are not displayed. In addition, if you enter -all, all message types (queries, notices, &CTCP;, DCC, and Exceptions) from the user are ignored as well as channel messages. /quote cmd Sends cmd to the server. /say msg When entered in a channel tab, sends msg to the channel. This is the same as entering msg in the channel Input Line. Useful for sending &irc; commands when you don't want to execute the command. Two command characters (//) in a row does the same thing as /say. Also used by scripts to send messages. /raw [open|close] Places the server log in raw mode (open) or stops raw mode (close). If neither open or close is entered, defaults to open. In raw mode, the log displays every message received from the server in native &irc; format. /konsole Opens a new tab running a &konsole;. /server [url] [pwd] Connects to the server at address url. If url is omitted, connects to the server associated with the tab where you enter the command. This is useful for re-connecting to a server when disconnected. If the server requires a password in order to connect to it, enter it for pwd. If the server requires a port number other than the default (6667), enter the url like this: irc.kde.org:6665. /dcc SEND nick [filename] Sends filename to the user with &i18n-nickname; nick. If filename is omitted, a dialog appears for you to select a file. /dcc Opens the DCC Status tab. /ctcp nick|channel ping Sends a PING message to nick or channel. This is useful for determining if someone you are talking with has a high network lag, or (when sent to a channel) if your system has a high lag. /ctcp nick|channel msg Sends a message to nick or all users in channel. This is similar to the /msg command above, except that the message is sent using the &CTCP; protocol. The response on the other end depends on the &irc; client program the user is running. For example, when conversing with another &konversation; user, /ctcp Eisfuchs TIME will return the system time on Eisfuch's computer. /ctcp Eisfuchs VERSION will return the &konversation; version number from Eisfuch's computer. Scripting &konversation; comes with some handy scripts you can run from the program. To run a script, in a channel, query, DCC, or server tab, type a command of the form /exec script [parameters] which executes the script named script passing it (optional) parameters. For example, type the following command in a channel tab /sayversion to send your &konversation;, &Qt;, &kf5; and &plasma; version numbers to the channel. /exec cmd uname -a executes the cmd script, passing it uname -a. This sends your &Linux; version string to the channel. To learn more about the scripts installed with &konversation; please see the Script Reference Guide To get a list of all available scripts, type the following command in a &konversation; screen. /exec --showpath media Then browse to folder from the output to see the list. You can write your own scripts. Scripts are shell scripts and can be written in any shell language, such as bash, perl, or python. When &konversation; runs a script, the first two parameters sent to the script are: The address of the server. The channel name. Here is a sample shell script (cmd). #!/bin/sh # Executes a command and prints the output into Konversation. SERVER=$1; TARGET=$2; shift;shift; $@ | while read line; do qdbus org.kde.konversation /irc say $SERVER "$TARGET" "$@: $line"; done Notice that the script uses qdbus to communicate with &konversation;. The say command causes the output to be sent to the channel as a normal message. To display something in the tab without sending it to other users, use info instead. Look at the existing script files for more examples of writing scripts. To be able to run a script you have written, you must install it by copying it to $(qtpaths --paths GenericDataLocation)/konversation/scripts. You must also give the file execute privilege, for example chmod a+x myscript. Script Reference Guide &konversation; comes with several scripts installed by default, please refer to this guide to learn how to use them. /exec bug [Bug Number|Search String] This script is used to open your browser to search for the given string or bug number on &kde;'s Bugzilla. Example: To open your browser to search for bug 123456 /exec bug 123456 Sample action: The default browser in your &systemsettings; should open to http://bugs.kde.org/show_bug.cgi?id=123456 /exec cmd [command line arguments] This script is used to have the output of the command line arguments to be written to your current channel. Example: To show everyone in your current channel what version of &konversation; you have installed. /exec cmd konversation --version Sample output: Konversation: 1.6 WARNING! The output of the entire command is posted to everyone in the current channel tab! Please use with care. /exec fortune This script when run will output a Random Fortune. Example: To output a random fortune to your current channel tab. /exec fortune Sample output: Random Fortune: Never make any mistaeks. -- Anonymous, in a mail discussion about to a kernel bug report /exec gauge [percentage] This script shows a simple text based progress bar for the given percentage. Example: To output a progress bar with 50% completion to the current channel tab. /exec gauge 50 Sample output: Beer load [ | ] 50% /exec media [audio|video|{player}] This is a Now Playing script for various media players. It also features a method to show Now Playing information for only audio players, or only video players via the optional command arguments audio and video. Additionally, it's possible to specify the media player you wish to query. The following media players are supported: Amarok (audio), JuK (audio), Kaffeine (video, audio), KMPlayer (video, audio), KPlayer (video, audio), kdetv (video), Yammi (audio), Audacious (audio), MPD (audio). Example: To output your currently playing song in Amarok. /exec media amarok Sample output: * user is listening to You Give Love A Bad Name by Bon Jovi on Slippery When Wet [Amarok] /exec sysinfo This script outputs some detailed information about your system by combining the outputs of several commands and formatting them appropriately. Example: To output some information about your system to the current channel tab. /exec sysinfo Sample output: Sysinfo for 'user-desktop': Running inside KDE Plasma 5.6.5 on Ubuntu 16.04.1 LTS (Xenial Xerus) powered by Linux 4.4.0-47-generic, CPU: Intel(R) Core(TM) i7-4910MQ CPU @ 2.90GHz at 2996-3338/3900 MHz, RAM: 15795/15967 MB, Storage: 1591/2281 GB, 406 procs, 47.59h up /exec tinyurl [Link Address] This script uses Tinyurl's api to turn the given link into a tinyurl that is then sent to the current channel tab. Example: To give someone a short link to http://konversation.kde.org /exec tinyurl http://konversation.kde.org Sample output: http://tinyurl.com/n3pdum /exec uptime This script outputs the result of the command "uptime" and formats it appropriately. Example: To show off your rock solid 98 day uptime. /exec uptime Sample output: Uptime: 98 days, 15 hours and 2 minutes All these scripts have predefined command aliases. In &konversation;'s settings dialog select Behavior Command Aliases to view, add, remove or edit command aliases. For more information about scripting please read the Userbase Scripting guide Command Reference The main &konversation; window The File Menu F2 File Server List Displays the list of servers and channels. F7 File Quick Connect Displays the Quick Connect screen for connecting to a server. File Disconnect Disconnects from all servers. File Reconnect Reconnects to all servers that were disconnected by a network error or other problem. &Ctrl;J File Join Channel Displays a dialog for you to enter the name of a channel to join. Does the same thing as entering /join #channelname in a channel or server tab. &Ctrl; &Shift;A File Global Away Changes your &i18n-nickname; status to away in all channels. &Ctrl;Q File Quit Quits &konversation;. The Edit Menu &Ctrl;F Edit Find Text... Searches for text strings in the current screen. F3 Edit Find Next Searches again for text strings in the current screen using the previous search string. &Ctrl;L Edit Clear Window Clears the current screen. &Ctrl; &Shift;L Edit Clear All Windows Clears all screens. The Insert Menu &Ctrl;K Insert &irc; Color... See Sending colorful messages. &Ctrl;R Insert Marker Line See Marking Channel and Query Logs. &Alt; &Shift;C Insert Special Character... Used to enter special characters, such as foreign characters. The Bookmarks Menu &Ctrl;B Bookmarks Add Bookmark Bookmarks current network & channel. Bookmarks Bookmark Tabs as Folder... Adds all channels to a new menu item at the end of the bookmarks menu. Bookmarks New Bookmark Folder... Creates a new bookmark folder. Bookmarks Edit Bookmarks... Opens bookmark editor. The Settings Menu &Ctrl;H Settings Show Nicklist Hides (or displays) the panel of &i18n-nickname;s in channel tabs. F8 Settings Identities... Displays the Identities screen for setting your identification information. The Window Menu &Ctrl;, Window Previous Tab Displays the screen corresponding to the previous tab. &Ctrl;. Window Next Tab Displays the screen corresponding to the next tab. &Ctrl;W Window Close Tab Closes the current screen. If closing a channel, leaves the channel. If closing a Server Messages tab, closes all open channels on that server and disconnects from the server. F11 Window Close All Open Queries Closes all Private conversations (queries). F4 Window Watched Nicks Displays the Watched Nicks screen. See Monitoring who is online. F6 Window &URL; Catcher Displays the &URL; Catcher screen. F9 Window DCC Status Displays the DCC Status tab with information about file transfers. Window New Konsole Displays a terminal screen. You may open as many Konsole tabs as you like. F5 Window Channel List for Displays a list of channels available on the server. &Ctrl;O Window Open Logfile for Displays a screen with the log of messages from the current tab. Only works for Channel, Server Messages, and Query tabs. Logging must be enabled in Settings Configure Konversation Behavior Logging on the main menu. The Help Menu &konversation; has the common &kde; Help menu item, for more information read the section about the Help Menu of the &kde; Fundamentals. Questions and Answers When I start &konversation;, I'd like to connect to a server without joining any channels. How do I do that? In the Edit Server screen, leave the Channels frame empty. &konversation; won't connect to any servers. What is wrong? There are several things that could be wrong. Make sure that you have entered the correct Server name and the correct Port in the Add Server screen. Check the output in the Server Messages screen for any error messages. Did the server reject the connection because of a bad password? Did the server reject the connection because it requires IDENTD and your computer did not respond to the IDENT request? Did you check the SSL protocol box but the server does not support SSL? If you are behind a firewall, make sure the correct ports are enabled. &konversation; needs the following ports enabled: Outgoing TCP 6667 (or the port of the server you connect to) Incoming TCP 113 (if the server requires IDENTD) For more information on &irc; connection problems, see irchelp.org. When I go to Window Channel List , I cannot select it. Why is that? The Window Channel List menu entry will be grayed-out if a non-channel tab, ⪚ Watched Nicks, is currently being viewed. To make it selectable again go back to a channel tab or the server tab. How do I have &konversation; automatically mark me as away after a period of inactivity? Auto-away messages are configured on a per-identity basis. To enable auto-away select SettingsIdentities. Choose the identity for which you want to enable auto-away from the drop down list at the top of the dialog and go to the Away tab. Check the Automatic Away option. How to avoid the Auto Replace feature of the Input Line? Use &Ctrl;&Enter; instead of just &Enter; to avoid parsing and automatically replacing the text in the Input Line according to the options in the settings dialog page Behavior Auto Replace. Where can I find the scripts included with &konversation;? Run this command in &konversation;'s input line (using the media script as an example, since it comes with any &konversation; installation): /exec --showpath media Sample output: The script file 'media' was found at: /usr/share/konversation/scripts/media How do I make my text bold/italicized/underlined? Example: This is my %Bbold%B text. Output: Example: This is my %Iitalicized%I text. Output: Example: This is my %Uunderlined%U text. Output: Example: This is my %Sstruck-out%S text. Output: Credits and License &konversation; Program copyright 2002-2005 by the &konversation; team. &konviwebsite; Contributors: Dario Abatianni eisfuchs@tigress.com Peter Simonsson psn@linux.se Christian Muehlhaeuser chris@chris.de John Tapsel john@geola.geo.uk Ismail Donmez ismail.donmez@boun.edu.tr Shintaro Matsuoka shin@shoegazed.org Gary Cramblitt garycramblitt@comcast.net Matthias Gierlings gismore@users.sourceforge.net &Alex.Zepeda; garbanzo@hooked.net Stanislav Karchebny berkus@users.sourceforge.net Mickael Marchand marchand@kde.org Thanks to: Michael Goettsche michael.goettsche@kdemail.net Benjamin Meyer ben+konversation@kdemail.net Jacub Stachowski qbast@go2.pl Sabastian Sariego segfault@kde.cl Olivier Bedard www.konversation.org hosting Frauke Oster frauke@frsv.de Lucijan Busch lucijan@kde.org Sascha Cunz mail@sacu.de Steve Wollkind steve@njord.org Thomas Nagy thomas.nagy@eleve.emn.fr Tobias Olry tobias.olry@web.de Ruud Nabben r.nabben@gawab.com Documentation Copyright © 2003-2005 Gary R. Cramblitt garycramblitt@comcast.net &underFDL; &underGPL; &documentation.index; diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index a703e35d..0708ae01 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -1,925 +1,925 @@ /* This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. */ /* Copyright (C) 2002 Dario Abatianni Copyright (C) 2005 Ismail Donmez Copyright (C) 2005 Peter Simonsson Copyright (C) 2005 John Tapsell Copyright (C) 2005-2008 Eike Hein */ #include "mainwindow.h" #include "application.h" #include "settingsdialog.h" #include "viewcontainer.h" #include "statusbar.h" #include "bookmarkhandler.h" #include "trayicon.h" #include "serverlistdialog.h" #include "identitydialog.h" #include "notificationhandler.h" #include "irccharsets.h" #include "connectionmanager.h" #include "awaymanager.h" #include "transfermanager.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include MainWindow::MainWindow() : KXmlGuiWindow(nullptr) { m_hasDirtySettings = false; m_closeApp = false; m_serverListDialog = nullptr; m_trayIcon = nullptr; m_settingsDialog = nullptr; m_viewContainer = new ViewContainer(this); setCentralWidget(m_viewContainer->getWidget()); //used for event compression. See header file for resetHasDirtySettings() connect(Application::instance(), &Application::appearanceChanged, this, &MainWindow::resetHasDirtySettings); connect(Application::instance(), &Application::appearanceChanged, this, &MainWindow::updateTrayIcon); // Set up view container connect(Application::instance(), &Application::appearanceChanged, m_viewContainer, &ViewContainer::updateAppearance); connect(Application::instance(), SIGNAL(serverGroupsChanged(Konversation::ServerGroupSettingsPtr)), m_viewContainer, SLOT(updateViews(Konversation::ServerGroupSettingsPtr))); connect(m_viewContainer, SIGNAL(autoJoinToggled(Konversation::ServerGroupSettingsPtr)), Application::instance(), SIGNAL(serverGroupsChanged(Konversation::ServerGroupSettingsPtr))); connect(m_viewContainer, SIGNAL(autoConnectOnStartupToggled(Konversation::ServerGroupSettingsPtr)), Application::instance(), SIGNAL(serverGroupsChanged(Konversation::ServerGroupSettingsPtr))); connect(m_viewContainer, SIGNAL(setWindowCaption(QString)), this, SLOT(setCaption(QString))); connect(Application::instance()->getConnectionManager(), &ConnectionManager::connectionChangedState, m_viewContainer, &ViewContainer::connectionStateChanged); connect(this, &MainWindow::triggerRememberLine, m_viewContainer, &ViewContainer::insertRememberLine); connect(this, &MainWindow::triggerRememberLines, m_viewContainer, &ViewContainer::insertRememberLines); connect(this, &MainWindow::cancelRememberLine, m_viewContainer, &ViewContainer::cancelRememberLine); connect(this, &MainWindow::insertMarkerLine, m_viewContainer, &ViewContainer::insertMarkerLine); // Set up status bar m_statusBar = new Konversation::StatusBar(this); connect(Application::instance(), &Application::appearanceChanged, m_statusBar, &Konversation::StatusBar::updateAppearance); createStandardStatusBarAction(); connect(m_viewContainer, &ViewContainer::resetStatusBar, m_statusBar, &Konversation::StatusBar::resetStatusBar); connect(m_viewContainer, &ViewContainer::setStatusBarTempText, m_statusBar, &Konversation::StatusBar::setMainLabelTempText); connect(m_viewContainer, &ViewContainer::clearStatusBarTempText, m_statusBar, &Konversation::StatusBar::clearMainLabelTempText); connect(m_viewContainer, &ViewContainer::setStatusBarInfoLabel, m_statusBar, &Konversation::StatusBar::updateInfoLabel); connect(m_viewContainer, &ViewContainer::clearStatusBarInfoLabel, m_statusBar, &Konversation::StatusBar::clearInfoLabel); connect(m_viewContainer, &ViewContainer::setStatusBarLagLabelShown, m_statusBar, &Konversation::StatusBar::setLagLabelShown); connect(m_viewContainer, &ViewContainer::updateStatusBarLagLabel, m_statusBar, &Konversation::StatusBar::updateLagLabel); connect(m_viewContainer, &ViewContainer::resetStatusBarLagLabel, m_statusBar, &Konversation::StatusBar::resetLagLabel); connect(m_viewContainer, &ViewContainer::setStatusBarLagLabelTooLongLag, m_statusBar, &Konversation::StatusBar::setTooLongLag); connect(m_viewContainer, &ViewContainer::updateStatusBarSSLLabel, m_statusBar, &Konversation::StatusBar::updateSSLLabel); connect(m_viewContainer, &ViewContainer::removeStatusBarSSLLabel, m_statusBar, &Konversation::StatusBar::removeSSLLabel); // Actions KStandardAction::quit(this,SLOT(quitProgram()),actionCollection()); m_showMenuBarAction = KStandardAction::showMenubar(this, SLOT(toggleMenubar()), actionCollection()); setStandardToolBarMenuEnabled(true); KStandardAction::configureToolbars(this, SLOT(configureToolbars()), actionCollection()); KStandardAction::keyBindings(this, SLOT(openKeyBindings()), actionCollection()); KStandardAction::preferences(this, SLOT(openPrefsDialog()), actionCollection()); KStandardAction::configureNotifications(this, SLOT(openNotifications()), actionCollection()); QAction* action; action=new QAction(this); action->setText(i18n("Restart")); action->setIcon(QIcon::fromTheme(QStringLiteral("system-reboot"))); action->setStatusTip(i18n("Quit and restart the application")); connect(action, &QAction::triggered, Application::instance(), &Application::restart); actionCollection()->addAction(QStringLiteral("restart"), action); action=new QAction(this); action->setText(i18n("&Server List...")); action->setIcon(QIcon::fromTheme(QStringLiteral("network-server"))); actionCollection()->setDefaultShortcut(action, QKeySequence(QStringLiteral("F2"))); action->setStatusTip(i18n("Manage networks and servers")); connect(action, &QAction::triggered, this, &MainWindow::openServerList); actionCollection()->addAction(QStringLiteral("open_server_list"), action); action=new QAction(this); action->setText(i18n("Quick &Connect...")); action->setIcon(QIcon::fromTheme(QStringLiteral("network-connect"))); actionCollection()->setDefaultShortcut(action,QKeySequence(QStringLiteral("F7"))); action->setStatusTip(i18n("Type in the address of a new IRC server to connect to")); connect(action, &QAction::triggered, this, &MainWindow::openQuickConnectDialog); actionCollection()->addAction(QStringLiteral("quick_connect_dialog"), action); action=new QAction(this); action->setText(i18n("&Reconnect")); action->setIcon(QIcon::fromTheme(QStringLiteral("view-refresh"))); action->setEnabled(false); action->setStatusTip(i18n("Reconnect to the current server.")); connect(action, &QAction::triggered, m_viewContainer, &ViewContainer::reconnectFrontServer); actionCollection()->addAction(QStringLiteral("reconnect_server"), action); action=new QAction(this); action->setText(i18n("&Disconnect")); action->setIcon(QIcon::fromTheme(QStringLiteral("network-disconnect"))); action->setEnabled(false); action->setStatusTip(i18n("Disconnect from the current server.")); connect(action, &QAction::triggered, m_viewContainer, &ViewContainer::disconnectFrontServer); actionCollection()->addAction(QStringLiteral("disconnect_server"), action); action=new QAction(this); action->setText(i18n("&Identities...")); action->setIcon(QIcon::fromTheme(QStringLiteral("user-identity"))); actionCollection()->setDefaultShortcut(action,QKeySequence(QStringLiteral("F8"))); action->setStatusTip(i18n("Manage your nick, away and other identity settings")); connect(action, &QAction::triggered, this, &MainWindow::openIdentitiesDialog); actionCollection()->addAction(QStringLiteral("identities_dialog"), action); action=new KToggleAction(this); action->setText(i18n("&Watched Nicks")); action->setIcon(QIcon::fromTheme(QStringLiteral("im-user"))); actionCollection()->setDefaultShortcut(action,QKeySequence(QStringLiteral("F4"))); connect(action, &QAction::triggered, m_viewContainer, &ViewContainer::openNicksOnlinePanel); actionCollection()->addAction(QStringLiteral("open_nicksonline_window"), action); action=new KToggleAction(this); action->setText(i18n("&DCC Status")); action->setIcon(QIcon::fromTheme(QStringLiteral("arrow-right-double"))); actionCollection()->setDefaultShortcut(action,QKeySequence(QStringLiteral("F9"))); connect(action, &QAction::triggered, m_viewContainer, &ViewContainer::toggleDccPanel); actionCollection()->addAction(QStringLiteral("open_dccstatus_window"), action); action=new QAction(this); action->setText(i18n("&Open Logfile")); action->setIcon(QIcon::fromTheme(QStringLiteral("view-history"))); actionCollection()->setDefaultShortcut(action,QKeySequence(QStringLiteral("Ctrl+O"))); action->setEnabled(false); action->setStatusTip(i18n("Open the known history for this channel in a new tab")); connect(action, SIGNAL(triggered()), m_viewContainer, SLOT(openLogFile())); actionCollection()->addAction(QStringLiteral("open_logfile"), action); action=new QAction(this); action->setText(i18n("&Channel Settings...")); action->setIcon(QIcon::fromTheme(QStringLiteral("configure"))); action->setEnabled(false); action->setStatusTip(i18n("Open the channel settings dialog for this tab")); connect(action, &QAction::triggered, m_viewContainer, &ViewContainer::openChannelSettings); actionCollection()->addAction(QStringLiteral("channel_settings"), action); action=new KToggleAction(this); action->setText(i18n("Channel &List")); action->setIcon(QIcon::fromTheme(QStringLiteral("view-list-text"))); actionCollection()->setDefaultShortcut(action,QKeySequence(QStringLiteral("F5"))); action->setEnabled(false); action->setStatusTip(i18n("Show a list of all the known channels on this server")); connect(action, SIGNAL(triggered()), m_viewContainer, SLOT(openChannelList())); actionCollection()->addAction(QStringLiteral("open_channel_list"), action); action=new KToggleAction(this); action->setText(i18n("&URL Catcher")); action->setIcon(QIcon::fromTheme(QStringLiteral("text-html"))); actionCollection()->setDefaultShortcut(action, QKeySequence(QStringLiteral("F6"))); action->setStatusTip(i18n("List all URLs that have been mentioned recently in a new tab")); connect(action, &QAction::triggered, m_viewContainer, &ViewContainer::addUrlCatcher); actionCollection()->addAction(QStringLiteral("open_url_catcher"), action); if (KAuthorized::authorize(QStringLiteral("shell_access"))) { action=new QAction(this); action->setText(i18n("New &Konsole")); action->setIcon(QIcon::fromTheme(QStringLiteral("utilities-terminal"))); action->setStatusTip(i18n("Open a terminal in a new tab")); connect(action, &QAction::triggered, m_viewContainer, &ViewContainer::addKonsolePanel); actionCollection()->addAction(QStringLiteral("open_konsole"), action); } // Actions to navigate through the different pages QList nextShortcut = KStandardShortcut::tabNext(); QList prevShortcut = KStandardShortcut::tabPrev(); QString nextIcon, prevIcon; if (QApplication::isRightToLeft()) { prevShortcut.append(QKeySequence(QStringLiteral("Alt+Right"))); nextShortcut.append(QKeySequence(QStringLiteral("Alt+Left"))); nextIcon=QStringLiteral("go-previous-view"); prevIcon=QStringLiteral("go-next-view"); } else { nextShortcut.append(QKeySequence(QStringLiteral("Alt+Right"))); prevShortcut.append(QKeySequence(QStringLiteral("Alt+Left"))); nextIcon=QStringLiteral("go-next-view"); prevIcon=QStringLiteral("go-previous-view"); } action=new QAction(this); action->setText(i18n("&Next Tab")); action->setIcon(QIcon::fromTheme(nextIcon)); actionCollection()->setDefaultShortcuts(action,nextShortcut); action->setEnabled(false); connect(action, &QAction::triggered, m_viewContainer, &ViewContainer::showNextView); actionCollection()->addAction(QStringLiteral("next_tab"), action); action=new QAction(this); action->setText(i18n("&Previous Tab")); action->setIcon(QIcon::fromTheme(prevIcon)); actionCollection()->setDefaultShortcuts(action, prevShortcut); action->setEnabled(false); connect(action, &QAction::triggered, m_viewContainer, &ViewContainer::showPreviousView); actionCollection()->addAction(QStringLiteral("previous_tab"), action); action=new QAction(this); action->setText(i18n("Close &Tab")); action->setIcon(QIcon::fromTheme(QStringLiteral("tab-close-other"))); actionCollection()->setDefaultShortcut(action,QKeySequence(QStringLiteral("Ctrl+w"))); action->setEnabled(false); connect(action, &QAction::triggered, m_viewContainer, &ViewContainer::closeCurrentView); actionCollection()->addAction(QStringLiteral("close_tab"), action); action=new QAction(this); action->setText(i18n("Last Focused Tab")); actionCollection()->setDefaultShortcut(action,QKeySequence(QStringLiteral("Alt+Space"))); action->setEnabled(false); connect(action, &QAction::triggered, m_viewContainer, &ViewContainer::showLastFocusedView); actionCollection()->addAction(QStringLiteral("last_focused_tab"), action); action=new QAction(this); action->setText(i18n("Next Active Tab")); actionCollection()->setDefaultShortcut(action,QKeySequence(QStringLiteral("Ctrl+Alt+Space"))); action->setEnabled(false); connect(action, &QAction::triggered, m_viewContainer, &ViewContainer::showNextActiveView); actionCollection()->addAction(QStringLiteral("next_active_tab"), action); KGlobalAccel::setGlobalShortcut(action, QList()); if (Preferences::self()->tabPlacement()==Preferences::Left) { action=new QAction(this); action->setText(i18n("Move Tab Up")); action->setIcon(QIcon::fromTheme(QStringLiteral("arrow-up"))); actionCollection()->setDefaultShortcut(action,QKeySequence(QStringLiteral("Alt+Shift+Left"))); action->setEnabled(false); action->setStatusTip(i18n("Move this tab")); connect(action, &QAction::triggered, m_viewContainer, &ViewContainer::moveViewLeft); actionCollection()->addAction(QStringLiteral("move_tab_left"), action); action->setEnabled(false); action->setStatusTip(i18n("Move this tab")); action=new QAction(this); action->setText(i18n("Move Tab Down")); action->setIcon(QIcon::fromTheme(QStringLiteral("arrow-down"))); actionCollection()->setDefaultShortcut(action, QKeySequence(QStringLiteral("Alt+Shift+Right"))); connect(action, &QAction::triggered, m_viewContainer, &ViewContainer::moveViewRight); actionCollection()->addAction(QStringLiteral("move_tab_right"), action); } else { if (QApplication::isRightToLeft()) { action=new QAction(this); action->setText(i18n("Move Tab Right")); action->setIcon(QIcon::fromTheme(QStringLiteral("arrow-right"))); actionCollection()->setDefaultShortcut(action, QKeySequence(QStringLiteral("Alt+Shift+Right"))); action->setEnabled(false); action->setStatusTip(i18n("Move this tab")); connect(action, &QAction::triggered, m_viewContainer, &ViewContainer::moveViewLeft); actionCollection()->addAction(QStringLiteral("move_tab_left"), action); action=new QAction(this); action->setText(i18n("Move Tab Left")); action->setIcon(QIcon::fromTheme(QStringLiteral("arrow-left"))); actionCollection()->setDefaultShortcut(action, QKeySequence(QStringLiteral("Alt+Shift+Left"))); action->setEnabled(false); action->setStatusTip(i18n("Move this tab")); connect(action, &QAction::triggered, m_viewContainer, &ViewContainer::moveViewRight); actionCollection()->addAction(QStringLiteral("move_tab_right"), action); } else { action=new QAction(this); action->setText(i18n("Move Tab Left")); action->setIcon(QIcon::fromTheme(QStringLiteral("arrow-left"))); actionCollection()->setDefaultShortcut(action, QKeySequence(QStringLiteral("Alt+Shift+Left"))); action->setEnabled(false); action->setStatusTip(i18n("Move this tab")); connect(action, &QAction::triggered, m_viewContainer, &ViewContainer::moveViewLeft); actionCollection()->addAction(QStringLiteral("move_tab_left"), action); action=new QAction(this); action->setText(i18n("Move Tab Right")); action->setIcon(QIcon::fromTheme(QStringLiteral("arrow-right"))); actionCollection()->setDefaultShortcut(action, QKeySequence(QStringLiteral("Alt+Shift+Right"))); action->setEnabled(false); action->setStatusTip(i18n("Move this tab")); connect(action, &QAction::triggered, m_viewContainer, &ViewContainer::moveViewRight); actionCollection()->addAction(QStringLiteral("move_tab_right"), action); } } action->setEnabled(false); action=new QAction(this); action->setText(i18n("Rejoin Channel")); connect(action, &QAction::triggered, m_viewContainer, &ViewContainer::rejoinChannel); actionCollection()->addAction(QStringLiteral("rejoin_channel"), action); action->setEnabled(false); action=new KToggleAction(this); action->setText(i18n("Enable Notifications")); connect(action, &QAction::triggered, m_viewContainer, &ViewContainer::toggleViewNotifications); actionCollection()->addAction(QStringLiteral("tab_notifications"), action); action->setEnabled(false); action=new KToggleAction(this); action->setText(i18n("Join on Connect")); connect(action, &QAction::triggered, m_viewContainer, &ViewContainer::toggleAutoJoin); actionCollection()->addAction(QStringLiteral("tab_autojoin"), action); action=new KToggleAction(this); action->setText(i18n("Connect at Startup")); connect(action, &QAction::triggered, m_viewContainer, &ViewContainer::toggleConnectOnStartup); actionCollection()->addAction(QStringLiteral("tab_autoconnect"), action); QStringList encodingDescs = Konversation::IRCCharsets::self()->availableEncodingDescriptiveNames(); encodingDescs.prepend(i18n("Default")); KSelectAction* selectAction = new KSelectAction(this); selectAction->setEditable(false); selectAction->setItems(encodingDescs); selectAction->setEnabled(false); selectAction->setText(i18n("Set Encoding")); selectAction->setIcon(QIcon::fromTheme(QStringLiteral("character-set"))); connect(selectAction, SIGNAL(triggered(int)), m_viewContainer, SLOT(changeViewCharset(int))); actionCollection()->addAction(QStringLiteral("tab_encoding"), selectAction); for (uint i = 1; i <= 10; ++i) { action=new QAction(this); action->setText(i18n("Go to Tab %1",i)); actionCollection()->setDefaultShortcut(action,QKeySequence(QString(QStringLiteral("Alt+%1")).arg(i%10))); connect(action, &QAction::triggered, [=] { m_viewContainer->goToView(static_cast(i - 1)); }); actionCollection()->addAction(QString(QStringLiteral("go_to_tab_%1")).arg(i), action); } action=new QAction(this); action->setText(i18n("Clear &Marker Lines")); actionCollection()->setDefaultShortcut(action,QKeySequence(QStringLiteral("Ctrl+Shift+R"))); action->setEnabled(false); action->setStatusTip(i18n("Clear marker lines in the current tab")); connect(action, &QAction::triggered, m_viewContainer, &ViewContainer::clearViewLines); actionCollection()->addAction(QStringLiteral("clear_lines"), action); action=new QAction(this); action->setText(i18n("Enlarge Font Size")); actionCollection()->setDefaultShortcuts(action, KStandardShortcut::zoomIn()); action->setEnabled(false); action->setIcon(QIcon::fromTheme(QStringLiteral("zoom-in"))); action->setStatusTip(i18n("Increase the current font size")); connect(action, &QAction::triggered, m_viewContainer, &ViewContainer::zoomIn); actionCollection()->addAction(QStringLiteral("increase_font"), action); action=new QAction(this); action->setText(i18n("Reset Font Size")); actionCollection()->setDefaultShortcut(action, QKeySequence(QStringLiteral("Ctrl+0"))); action->setEnabled(false); action->setIcon(QIcon::fromTheme(QStringLiteral("zoom-original"))); action->setStatusTip(i18n("Reset the current font size to settings values")); connect(action, &QAction::triggered, m_viewContainer, &ViewContainer::resetFont); actionCollection()->addAction(QStringLiteral("reset_font"), action); action=new QAction(this); - action->setText(i18n("Decrease Font Size")); + action->setText(i18n("Shrink Font Size")); actionCollection()->setDefaultShortcuts(action, KStandardShortcut::zoomOut()); action->setEnabled(false); action->setIcon(QIcon::fromTheme(QStringLiteral("zoom-out"))); action->setStatusTip(i18n("Decrease the current font size")); connect(action, &QAction::triggered, m_viewContainer, &ViewContainer::zoomOut); actionCollection()->addAction(QStringLiteral("shrink_font"), action); action=new QAction(this); action->setText(i18n("&Clear Window")); actionCollection()->setDefaultShortcut(action,QKeySequence(QStringLiteral("Ctrl+L"))); action->setEnabled(false); action->setStatusTip(i18n("Clear the contents of the current tab")); connect(action, &QAction::triggered, m_viewContainer, &ViewContainer::clearView); actionCollection()->addAction(QStringLiteral("clear_window"), action); action=new QAction(this); action->setText(i18n("Clear &All Windows")); actionCollection()->setDefaultShortcut(action,QKeySequence(QStringLiteral("Ctrl+Shift+L"))); action->setEnabled(false); action->setStatusTip(i18n("Clear the contents of all open tabs")); connect(action, &QAction::triggered, m_viewContainer, &ViewContainer::clearAllViews); actionCollection()->addAction(QStringLiteral("clear_tabs"), action); KToggleAction* awayAction = new KToggleAction(this); awayAction->setText(i18n("Global Away")); actionCollection()->setDefaultShortcut(awayAction,QKeySequence(QStringLiteral("Ctrl+Shift+A"))); awayAction->setEnabled(false); awayAction->setIcon(QIcon::fromTheme(QStringLiteral("im-user-away"))); connect(awayAction, &QAction::triggered, Application::instance()->getAwayManager(), &AwayManager::setGlobalAway); actionCollection()->addAction(QStringLiteral("toggle_away"), awayAction); action=new QAction(this); action->setText(i18n("&Join Channel...")); action->setIcon(QIcon::fromTheme(QStringLiteral("irc-join-channel"))); actionCollection()->setDefaultShortcut(action,QKeySequence(QStringLiteral("Ctrl+J"))); action->setEnabled(false); action->setStatusTip(i18n("Join a new channel on this server")); connect(action, &QAction::triggered, m_viewContainer, &ViewContainer::showJoinChannelDialog); actionCollection()->addAction(QStringLiteral("join_channel"), action); action = KStandardAction::find(m_viewContainer, SLOT(findText()), actionCollection()); action->setEnabled(false); action = KStandardAction::findNext(m_viewContainer, SLOT(findNextText()), actionCollection()); action->setEnabled(false); action = KStandardAction::findPrev(m_viewContainer, SLOT(findPrevText()), actionCollection()); action->setEnabled(false); action=new QAction(this); action->setText(i18n("&IRC Color...")); action->setIcon(QIcon::fromTheme(QStringLiteral("format-text-color"))); actionCollection()->setDefaultShortcut(action,QKeySequence(QStringLiteral("Ctrl+K"))); action->setEnabled(false); action->setStatusTip(i18n("Set the color of your current IRC message")); connect(action, &QAction::triggered, m_viewContainer, &ViewContainer::insertIRCColor); actionCollection()->addAction(QStringLiteral("irc_colors"), action); action=new QAction(this); action->setText(i18n("&Marker Line")); actionCollection()->setDefaultShortcut(action,QKeySequence(QStringLiteral("Ctrl+R"))); action->setEnabled(false); action->setStatusTip(i18n("Insert a horizontal line into the current tab that only you can see")); connect(action, &QAction::triggered, m_viewContainer, &ViewContainer::insertMarkerLine); actionCollection()->addAction(QStringLiteral("insert_marker_line"), action); action=new QAction(this); action->setText(i18n("Special &Character...")); action->setIcon(QIcon::fromTheme(QStringLiteral("character-set"))); actionCollection()->setDefaultShortcut(action,QKeySequence(QStringLiteral("Alt+Shift+C"))); action->setEnabled(false); action->setStatusTip(i18n("Insert any character into your current IRC message")); connect(action, &QAction::triggered, m_viewContainer, &ViewContainer::insertCharacter); actionCollection()->addAction(QStringLiteral("insert_character"), action); action=new QAction(this); action->setText(i18n("Auto Replace")); action->setEnabled(false); connect(action, &QAction::triggered, m_viewContainer, &ViewContainer::doAutoReplace); actionCollection()->addAction(QStringLiteral("auto_replace"), action); action=new QAction(this); action->setText(i18n("Focus Input Box")); actionCollection()->setDefaultShortcut(action,QKeySequence(Qt::Key_Escape)); action->setEnabled(false); connect(action, &QAction::triggered, m_viewContainer, &ViewContainer::focusInputBox); actionCollection()->addAction(QStringLiteral("focus_input_box"), action); action=new QAction(this); action->setText(i18n("Close &All Open Queries")); actionCollection()->setDefaultShortcut(action,QKeySequence(QStringLiteral("F11"))); action->setEnabled(false); connect(action, &QAction::triggered, m_viewContainer, &ViewContainer::closeQueries); actionCollection()->addAction(QStringLiteral("close_queries"), action); KToggleAction* toggleChannelNickListsAction = new KToggleAction(this); if (Preferences::self()->showNickList()) toggleChannelNickListsAction->setChecked(true); toggleChannelNickListsAction->setText(i18n("Show Nicklist")); actionCollection()->setDefaultShortcut(toggleChannelNickListsAction, QKeySequence(QStringLiteral("Ctrl+H"))); connect(toggleChannelNickListsAction, &QAction::triggered, m_viewContainer, &ViewContainer::toggleChannelNicklists); actionCollection()->addAction(QStringLiteral("hide_nicknamelist"), toggleChannelNickListsAction); action=new QAction(this); action->setText(i18n("Show/Hide Konversation")); connect(action, &QAction::triggered, this, &MainWindow::toggleVisibility); actionCollection()->addAction(QStringLiteral("toggle_mainwindow_visibility"), action); KGlobalAccel::setGlobalShortcut(action, QList()); action=new KToggleAction(this); action->setEnabled(true); action->setChecked(Preferences::self()->useOSD()); action->setText(i18n("Enable On Screen Display")); action->setIcon(QIcon::fromTheme(QStringLiteral("video-display"))); connect(action, SIGNAL(triggered(bool)), Preferences::self(), SLOT(slotSetUseOSD(bool))); actionCollection()->addAction(QStringLiteral("toggle_osd"), action); // Bookmarks action=new QAction(this); action->setText(i18n("Bookmarks")); QMenu *menu = new QMenu(this); action->setMenu(menu); new KonviBookmarkHandler(menu, this); actionCollection()->addAction(QStringLiteral("bookmarks") , action); // decide whether to show the tray icon or not updateTrayIcon(); createGUI(); setAutoSaveSettings(); // Apply menubar show/hide pref m_showMenuBarAction->setChecked(Preferences::self()->showMenuBar()); toggleMenubar(true); if (Preferences::self()->useNotify() && Preferences::self()->openWatchedNicksAtStartup()) m_viewContainer->openNicksOnlinePanel(); } MainWindow::~MainWindow() { } QSize MainWindow::sizeHint() const { return QSize(700, 500); // Give the app a sane default size } int MainWindow::confirmQuit() { Application* konvApp = Application::instance(); if (konvApp->getConnectionManager()->connectionCount() == 0) return KMessageBox::Continue; int result = KMessageBox::Cancel; if (!KMessageBox::shouldBeShownContinue(QStringLiteral("systemtrayquitKonversation")) && konvApp->getDccTransferManager()->hasActiveTransfers()) { result = KMessageBox::warningContinueCancel( this, i18n("You have active DCC file transfers. Are you sure you want to quit Konversation?"), i18n("Confirm Quit"), KStandardGuiItem::quit(), KStandardGuiItem::cancel(), QStringLiteral("QuitWithActiveDccTransfers")); } else { result = KMessageBox::warningContinueCancel( this, i18n("Are you sure you want to quit Konversation?"), i18n("Confirm Quit"), KStandardGuiItem::quit(), KStandardGuiItem::cancel(), QStringLiteral("systemtrayquitKonversation")); } if (result != KMessageBox::Continue) konvApp->abortScheduledRestart(); return result; } void MainWindow::activateAndRaiseWindow() { if (isMinimized()) KWindowSystem::unminimizeWindow(winId()); else if (Preferences::self()->showTrayIcon() && !isVisible()) m_trayIcon->restore(); KWindowSystem::setOnDesktop(winId(), KWindowSystem::currentDesktop()); KWindowSystem::activateWindow(winId()); } void MainWindow::quitProgram() { if (Preferences::self()->showTrayIcon() && sender() != m_trayIcon && confirmQuit() == KMessageBox::Cancel) return; // will call queryClose() m_closeApp = true; close(); } bool MainWindow::queryClose() { Application* konvApp = Application::instance(); if (!konvApp->isSavingSession()) { if (sender() == m_trayIcon) m_closeApp = true; if (Preferences::self()->showTrayIcon() && !m_closeApp) { bool doit = KMessageBox::warningContinueCancel(this, i18n("

Closing the main window will keep Konversation running in the system tray. " "Use Quit from the Konversation menu to quit the application.

"), i18n("Docking in System Tray"), KStandardGuiItem::cont(), KStandardGuiItem::cancel(), QStringLiteral("HideOnCloseInfo")) == KMessageBox::Continue; if (doit) hide(); return false; } if (!Preferences::self()->showTrayIcon() && confirmQuit() == KMessageBox::Cancel) return false; } konvApp->prepareShutdown(); return true; } void MainWindow::hideEvent(QHideEvent *e) { emit triggerRememberLine(); m_statusBar->clearMainLabelTempText(); KXmlGuiWindow::hideEvent(e); } void MainWindow::showEvent(QShowEvent *e) { emit cancelRememberLine(); KXmlGuiWindow::showEvent(e); } void MainWindow::leaveEvent(QEvent* e) { m_statusBar->clearMainLabelTempText(); KXmlGuiWindow::leaveEvent(e); } bool MainWindow::event(QEvent* e) { if (e->type() == QEvent::StyleChange) { QMetaObject::invokeMethod(Application::instance(), "appearanceChanged"); } else if (e->type() == QEvent::WindowActivate) { emit endNotification(); emit cancelRememberLine(); } else if(e->type() == QEvent::WindowDeactivate) { m_statusBar->clearMainLabelTempText(); if (qApp->activeModalWidget() == nullptr) emit triggerRememberLine(); } return KXmlGuiWindow::event(e); } void MainWindow::settingsChangedSlot() { // This is for compressing the events. m_hasDirtySettings is set to true // when the settings have changed, then set to false when the app reacts to it // via the appearanceChanged signal. This prevents a series of settingsChanged signals // causing the app expensively rereading its settings many times. // The appearanceChanged signal is connected to resetHasDirtySettings to reset this bool if (!m_hasDirtySettings) { QTimer::singleShot(0, Application::instance(), &Application::appearanceChanged); m_hasDirtySettings = true; } } void MainWindow::resetHasDirtySettings() { m_hasDirtySettings = false; } void MainWindow::updateTrayIcon() { if (Preferences::self()->showTrayIcon()) { if (!m_trayIcon) { // set up system tray m_trayIcon = new Konversation::TrayIcon(this); connect(this, &MainWindow::endNotification, m_trayIcon, &Konversation::TrayIcon::endNotification); connect(KIconLoader::global(), &KIconLoader::iconChanged, m_trayIcon, &Konversation::TrayIcon::updateAppearance); QMenu *trayMenu = qobject_cast(m_trayIcon->contextMenu()); trayMenu->addAction(actionCollection()->action(QLatin1String(KStandardAction::name(KStandardAction::Preferences)))); trayMenu->addAction(actionCollection()->action(QLatin1String(KStandardAction::name(KStandardAction::ConfigureNotifications)))); trayMenu->addAction(actionCollection()->action(QStringLiteral("toggle_away"))); } m_trayIcon->setNotificationEnabled(Preferences::self()->trayNotify()); } else { delete m_trayIcon; m_trayIcon = nullptr; } } void MainWindow::toggleMenubar(bool dontShowWarning) { if (m_showMenuBarAction->isChecked()) menuBar()->show(); else { bool doit = true; if (!dontShowWarning) { QString accel = m_showMenuBarAction->shortcut().toString(); doit = KMessageBox::warningContinueCancel(this, i18n("This will hide the menu bar completely. You can show it again by typing %1.", accel), i18n("Hide menu bar"), KStandardGuiItem::cont(), KStandardGuiItem::cancel(), QStringLiteral("HideMenuBarWarning")) == KMessageBox::Continue; } if (doit) menuBar()->hide(); else m_showMenuBarAction->setChecked (true); } Preferences::self()->setShowMenuBar(m_showMenuBarAction->isChecked()); } void MainWindow::focusAndShowErrorMessage(const QString &errorMsg) { show(); KWindowSystem::demandAttention(winId()); KWindowSystem::activateWindow(winId()); KMessageBox::error(this, errorMsg); } void MainWindow::openPrefsDialog() { //An instance of your dialog could be already created and could be cached, //in which case you want to display the cached dialog instead of creating //another one if (!m_settingsDialog) { m_settingsDialog = new KonviSettingsDialog(this); //User edited the configuration - update your local copies of the //configuration data connect(m_settingsDialog, &ConfigDialog::settingsChanged, this, &MainWindow::settingsChangedSlot); } m_settingsDialog->show(); } void MainWindow::openKeyBindings() { // Change a number of action names to make them friendlier for the shortcut list. actionCollection()->action(QStringLiteral("tab_notifications"))->setText(i18n("Toggle Notifications")); actionCollection()->action(QStringLiteral("toggle_away"))->setText(i18n("Toggle Away Globally")); actionCollection()->action(QStringLiteral("irc_colors"))->setText(i18n("Insert &IRC Color...")); actionCollection()->action(QStringLiteral("insert_character"))->setText(i18n("Insert Special &Character...")); actionCollection()->action(QStringLiteral("insert_marker_line"))->setText(i18n("Insert &Marker Line")); QString openChannelListString = actionCollection()->action(QStringLiteral("open_channel_list"))->text(); actionCollection()->action(QStringLiteral("open_channel_list"))->setText(i18n("&Channel List")); QString openLogFileString = actionCollection()->action(QStringLiteral("open_logfile"))->text(); actionCollection()->action(QStringLiteral("open_logfile"))->setText(i18n("&Open Logfile")); // Open shortcut configuration dialog. KShortcutsDialog::configure(actionCollection()); // Reset action names. actionCollection()->action(QStringLiteral("tab_notifications"))->setText(i18n("Enable Notifications")); actionCollection()->action(QStringLiteral("toggle_away"))->setText(i18n("Set &Away Globally")); actionCollection()->action(QStringLiteral("irc_colors"))->setText(i18n("&IRC Color...")); actionCollection()->action(QStringLiteral("insert_character"))->setText(i18n("Special &Character...")); actionCollection()->action(QStringLiteral("insert_marker_line"))->setText(i18n("&Marker Line")); actionCollection()->action(QStringLiteral("open_channel_list"))->setText(openChannelListString); actionCollection()->action(QStringLiteral("open_logfile"))->setText(openLogFileString); } void MainWindow::openServerList() { if (!m_serverListDialog) { m_serverListDialog = new Konversation::ServerListDialog(i18n("Server List"), this); Application* konvApp = Application::instance(); connect(m_serverListDialog, SIGNAL(serverGroupsChanged(Konversation::ServerGroupSettingsPtr)), konvApp, SIGNAL(serverGroupsChanged(Konversation::ServerGroupSettingsPtr))); connect(konvApp, &Application::serverGroupsChanged, m_serverListDialog, &Konversation::ServerListDialog::updateServerList); connect(m_serverListDialog, SIGNAL(connectTo(Konversation::ConnectionFlag,int)), konvApp->getConnectionManager(), SLOT(connectTo(Konversation::ConnectionFlag,int))); connect(m_serverListDialog, SIGNAL(connectTo(Konversation::ConnectionFlag,ConnectionSettings)), konvApp->getConnectionManager(), SLOT(connectTo(Konversation::ConnectionFlag,ConnectionSettings))); connect(konvApp->getConnectionManager(), &ConnectionManager::closeServerList, m_serverListDialog, &QDialog::reject); } m_serverListDialog->show(); } void MainWindow::openQuickConnectDialog() { emit showQuickConnectDialog(); } void MainWindow::openIdentitiesDialog() { QPointer dlg = new Konversation::IdentityDialog(this); if (dlg->exec() == QDialog::Accepted) { if (m_serverListDialog) m_serverListDialog->updateServerList(); m_viewContainer->updateViewEncoding(m_viewContainer->getFrontView()); } delete dlg; } IdentityPtr MainWindow::editIdentity(const IdentityPtr &identity) { IdentityPtr newIdentity; QPointer dlg = new Konversation::IdentityDialog(this); newIdentity = dlg->setCurrentIdentity(identity); if ((dlg->exec() == QDialog::Accepted) && m_serverListDialog) { m_serverListDialog->updateServerList(); delete dlg; return newIdentity; } else { delete dlg; return IdentityPtr(); } } void MainWindow::openNotifications() { (void) KNotifyConfigWidget::configure(this); } void MainWindow::notifyAction(int connectionId, const QString& nick) { Application* konvApp = Application::instance(); Server* server = konvApp->getConnectionManager()->getServerByConnectionId(connectionId); if (server) server->notifyAction(nick); } // TODO: Let an own class handle notify things void MainWindow::setOnlineList(Server* notifyServer,const QStringList& /*list*/, bool /*changed*/) { emit nicksNowOnline(notifyServer); // FIXME if (changed && nicksOnlinePanel) newText(nicksOnlinePanel, QString(), true); } void MainWindow::toggleVisibility() { if (isActiveWindow()) { if (Preferences::self()->showTrayIcon()) hide(); else KWindowSystem::minimizeWindow(winId()); } else { activateAndRaiseWindow(); } }