cmake: avoid de-duplication of user's CXXFLAGS
[quassel.git] / ChangeLog
1 ChangeLog for Quassel IRC
2 =========================
3 This is not a full ChangeLog, but rather an end-user FeatureLog that is supposed
4 to provide a list of new features between Quassel versions. As such, it only
5 contains end-user visible, mostly major new features. It does not contain (most)
6 bugfixes, nor is it guaranteed to be complete or up-to-date at all. Also, it does
7 start at 0.3.0 only, since this was the first version widely available.
8
9 Please have a look at <https://bugs.quassel-irc.org/projects/quassel-irc/roadmap> for a
10 list of closed bug/feature reports (which still does not cover bugs we have
11 fixed but which were never reported, of course), and for a full list of
12 changes, the git history at <https://git.quassel-irc.org> is your friend.
13
14 Without further ado, let's start:
15
16 Version 0.14.0 (Unreleased)
17 ===========================
18
19 NOTE:  Database schema format change, no downgrade possible!
20
21 * New baseline for minimum build requirements and dependencies: Ubuntu 16.04 "Xenial Xerus"
22   - GCC 5 or Clang 3.4
23   - CMake 3.5
24   - Qt 5.5.0
25 * New dependencies:
26   - Boost (v1.54 or later, build-time only)
27   - zlib (bundled miniz has been removed)
28 * Support building against Qt 5.15 (and all prior versions down to and including Qt 5.5)
29 * Remove support for building against Qt4/KDE4
30 * Require SSL support in Qt
31 * Don't silently fall back to unencrypted client/core communication if certificate cannot be loaded
32 * Properly escape LDAP usernames to prevent injection or bypassing authentication
33 * Strip format codes in ignore list rules (this might affect pre-existing rules)
34 * Support many more features of IRCv3
35 * Improve window handling under Wayland
36 * Support the HAProxy protocol
37 * Provide a daemon providing Prometheus metrics
38 * Deprecate local highlight settings (prefer synced ones instead)
39 * Improve configuration of SASL PLAIN and EXTERNAL
40 * Add button for strike-through format
41 * Allow choosing the account to connect to via command-line option
42 * Make database schema migration more robust
43 * Make backlog fetch more efficient, allow for fetch-on-demand
44 * Make syncing and other aspects of the core/client protocol more efficient
45 * Make RPC implementation more efficient
46 * Improve log output
47 * Clean up and modernize large parts of the code base
48   - Replace the Qt 4 string-based connect syntax by function pointers
49   - Fix many clang-tidy findings
50   - Reformat ALL the code using clang-format instead of Uncrustify, with some style changes
51 * Modernize build system
52 * Support building shared libraries via the ENABLE_SHARED CMake option (defaults to on)
53 * Introduce support for (and a small selection of) unit tests via the BUILD_TESTING CMake option
54 * Use Github Actions as CI system, replacing Travis and Appveyor
55 * Revamp bundle/DMG creation on macOS
56 * Many smaller fixes
57 * Improve documentation and UI help
58 * Update translations
59 * Update bundled iconsets and application icons
60 * Update default network and documentation to point to our new home Libera IRC (since Freenode killed itself)
61
62 Version 0.13.1 (2019-02-15)
63 ===========================
64
65 * Fix backlog message fetching that was broken when using Qt4
66 * Improve output to syslog
67 * Make upgrading the database schema more robust in case of interruption
68 * Fix alignment of buttons in the input widget
69 * Fix bug where the nicklist would be hidden on first start
70 * Allow configuring the listen addresses for the built-in identd (--ident-listen)
71 * Honor core options even if it was just configured via environment variables
72 * Fix syncing of auto reconnect retries in network settings
73 * Update translations
74
75 Version 0.13.0 (2018-11-17)
76 ===========================
77
78 NOTE:  Database schema and settings format change, no downgrade possible!
79 NOTEĀ²: Database migration may take a long time (hours for big databases),
80        and temporarily require double the disk space until migration is
81        complete!
82
83 * Use Qt 5 by default (this will be the last feature release still supporting Qt4)
84 * New branding (application icon)
85 * UI improvements
86   - Improve ChatView color settings
87   - Improve default sender colors, and make configurable by palette in QSS
88   - Fix font weight parsing and other issues in QSS
89   - Settings dialog improvements (tree width, changed state for several pages)
90   - Chat list filter/search
91   - Shortcuts for formatting options
92   - Sender colors by default (and optionally for ACTION messages)
93   - Add context menu option in ChatView for enabling the menubar
94   - Optionally hide brackets around sender/timestamp
95   - Make /list open the channel list dialog, including advanced search for channels
96   - Spell checking via Sonnet if KDE Frameworks integration is enabled
97   - Support $i:ident, $i:identd, and $i:account in aliases
98   - Use system locale for date/time formatting
99   - Many other UI improvements and polish (tooltips, tool bars, menus...)
100 * Completely revamp icon theme support
101   - Fix icon loading on many platforms (requires newer Qt)
102   - Fix tray icons with StatusNotifier
103   - Allow selecting a fallback for incomplete system icon themes
104   - Ship Quassel-specific icons
105   - Add Breeze and Breeze Dark icon themes, use Breeze by default
106 * Notification improvements
107   - New configuration options for tray icon notification
108   - Use Plasma notification sounds by default (rather than KDE4's)
109   - QtMultimedia notification backend (deprecates Phonon support with Qt 5)
110 * IRC-related improvements
111   - Support for many IRCv3 features, improved capability negotiation
112   - Improve handling of user modes
113   - Store sender prefixes (@+v...) in database, and optionally show in UI
114   - Add support for ZNC self-messages
115   - Support twitch.tv's membership capability
116   - Support rendering of extended mIRC colors, hex colors, reverse and strikethrough
117   - Make IRC rate limits configurable
118   - Use UTF-8 server encoding by default (instead of ISO-8859-1, changeable via network settings)
119   - Internal identd (may require port forwarding rules)
120   - Strict ident mode (always sends user name)
121   - Provide CTCP timestamps in ISO 8601 format
122   - AutoWho-related fixes, properly support away-notify (removes workaround for non-compliant servers)
123   - Command line debug options for showing raw IRC messages
124 * Security improvements
125   - Improved SSL certificate handling
126   - Add command line options for SSL certificate/key paths
127   - Use SHA-512 to store the core certificate digest
128   - Persist blowfish keys for encrypted channels
129   - Use CBC by default, like other clients (instead of ECB)
130 * Move functionality core side (useful for mobile clients)
131   - Handle buffer activity, highlights, ignore rules core-side
132   - Improved ignore rule support
133   - Core-side (synced) highlight rules (in addition to local highlight rules)
134 * Core/client connection
135   - Extended core/client feature negotiation, including diagnostic output
136   - System proxy support for the client
137   - Allow disconnecting other clients via "Core Info" dialog (if supported by client)
138   - LDAP authentication backend for core users (--select-authenticator)
139 * Regular expressions
140   - Unify regex handling (may affect old ignore rules, see release announcement for details)
141   - Cache many frequently used regexes to improve performance
142 * Database changes
143   - Use 64 bit timestamps to avoid the Y2038 problem, use millisecond precision
144   - Use 64 bit message IDs to support giant backlogs (requires 0.13+ core and client)
145   - Store real names and avatar URLs in database (for now, only used by Quasseldroid)
146   - Improve database performance
147   - Make database upgrades more robust
148 * Containerization improvements
149   - Store core settings in database
150   - Allow configuring the core via environment variables
151 * Logging improvements
152   - Allow to configure the log level also for (monolithic or not) client
153   - Make debug log window more useful
154   - Catch early log messages
155   - Slightly reformat console output so it's better readable
156 * Settings versioning (allows upgrading from older versions, too)
157 * Multithread the monolithic client, to keep UI responsive even under load
158 * Properly shutdown client and core on exit
159 * Fix POSIX signal handling, support console events on Windows
160 * Build system improvements
161 * Code fixes for issues found in static analysis
162 * Many smaller fixes and quality-of-life improvements
163 * Update inxi script to 3.0.18 (now requires Perl to be installed)
164 * Translation updates
165
166 Version 0.12.5 (2018-04-24)
167 ===========================
168
169 * Make "/ " use the rest of the message as a literal
170 * Use commit date instead of build date to support reproducible builds
171 * Support Qt 5.6 through Qt 5.10
172 * Automated OSX builds (via Travis)
173 * Update deployment and CI settings for OSX and Windows
174 * Better HIDPI support with recent Qt 5 versions
175 * Snapcraft packaging support
176 * Inxi version bump
177 * Prioritization of PING/PONG messages to prevent timeouts
178 * Improved touch screen support (scrolling etc.)
179 * WebEngine support for URL previews (deprecates WebKit support with Qt 5)
180 * Disable WebKit by default due to it being unmaintained and a security risk
181 * Strip format codes when checking for highlights
182 * Properly disconnect from networks when shutting down
183 * Reload SSL certificates on signal SIGHUP
184 * Add AppData metadata for quassel and quasselclient
185 * Allow channel buffer merges
186 * Improve dock and tray handling on OSX
187 * Split user messages on newlines, as per the RFC
188 * Join channels on double-click in platforms other than OSX and Windows
189 * Support Elliptic Curve keys for client<->core connections on Qt 5.5+
190 * Add sanity checks for QDataStream deserialization (e.g. for size)
191 * Prevent clients from trying to login to an unconfigured core, avoiding a crash
192 * Various bugfixes
193 * Some code cleanups
194 * Translation updates
195
196 Version 0.12.4 (2016-04-24)
197 ===========================
198
199 * Handle STATUSMSG messages (recently abused for query spam)
200 * Link previews are enabled again in Windows builds
201 * Fix core crash caused by clients sending invalid handshake data
202 * Fix session management with Qt 5
203 * Fix connection issues with non-compliant ircds
204 * Translation updates
205
206 Version 0.12.3 (2016-02-09)
207 ===========================
208
209 * Fix activity filters when selecting buffers in custom ChatViews
210 * Fix default shortcuts when integrated with KDE Frameworks
211 * Introduce support for Appveyor CI (automated Windows builds)
212 * Support SnoreNotify 0.7
213 * Various cleanups and performance improvements
214 * Various build system fixes
215 * Channel keys are again remembered between syncs
216 * Support for Qt 5.5
217 * Network (re)connection fixes
218 * Fix possible message loss when running multiple core users on a psql database
219 * Command line option for specifying SSL certificates and keys
220 * Many smaller fixes
221
222 Version 0.12.2 (2015-04-23)
223 ===========================
224
225 * Fix PostgreSQL not re-initializing after reconnect (raising CVE-2013-4422 from the dead)
226 * Remove warning on startup due to a change in Kdelibs4ConfigMigrator
227
228 Version 0.12.1 (2015-04-21)
229 ===========================
230
231 * Emergency fix for behavior change in Qt5's psql driver regarding timezones
232
233 Version 0.12.0 (2015-04-15)
234 ===========================
235
236 * Full support for KDE Frameworks
237 * Properly split messages with multi-byte encodings and/or encryption
238 * Improve core password hashing algorithm
239   NOTE: This upgrades the database schema, so no downgrades are possible!
240 * Remote password change
241 * Core connection improvements
242 * Build system improvements
243 * PostgreSQL connection improvements
244 * Improve Qt 5 support
245 * Qt 4.8+ or Qt 5.2+ now required
246 * Several tweaks and fixes
247 * Translation updates
248
249 Version 0.11.0 (2014-09-23)
250 ===========================
251
252 * New build requirements:
253   - C++11 capable compiler (gcc 4.7+, clang 3.3+, MSVC 2013+)
254   - cmake 2.8.9+
255 * Full support for Qt 5.2+ in addition to Qt 4.6+
256 * Completely revamp the build system, making use of "new" CMake features
257
258 Version 0.10.1 (2014-09-23)
259 ===========================
260
261 * Fix buffer hotlist sorting
262 * Split CTCP messages if they're too long
263 * Make database problems more obvious
264 * Fix backlog loading for QuasselDroid
265 * Properly save the toolbar state on Mac OSX
266 * Fix a crash with KDE's network detection
267 * Various other fixes
268
269 Version 0.10.0 (2014-03-25)
270 ===========================
271
272 * Refactor lots of the protocol and connection code
273 * Introduce connection probing for reliably negotiating protocol features
274 * Introduce the new DataStream protocol with streaming compression
275 * Option for forcing the core to only accept SSL connections
276 * Support for the Snore notification backend
277 * Allow searching the web for selected text
278 * Connection-related fixes
279 * Allow for hiding inactive networks
280 * Enable line wrap in the input field
281 * Show backlog messages in the Chat Monitor
282 * Remove SSL protocol selection, always use auto-negotiation for best results
283 * Highlight rules are now case-insensitive by default
284 * New and updated translations
285 * Bump inxi version (for /sysinfo)
286 * Use the raster rendering engine by default on OSX (should improve performance)
287
288 Version 0.9.3 (2014-03-25)
289 ==========================
290
291 * Notification fixes
292 * Improve reliability of SSL connections
293 * Save toolbar state properly on Mac
294 * Prevent user interaction with the web preview
295 * Fix fullscreen mode
296 * Fix spurious crash caused by shaky ircd connections
297 * Fix adding an unneeded colon to custom commands
298 * Avoid Qt's DNS cache to properly handle round-robin DNS records
299
300 Version 0.9.2 (2013-11-26)
301 ==========================
302
303 * Don't crash if /topic contains newlines
304 * Fix SSL-related issues
305 * Fix Phonon notifications not playing sound
306 * Pingout if connection drops during SASL auth phase
307 * Prevent messages from being sent to status buffers
308 * Make sure manipulated/buggy clients cannot access backlog of other core users
309 * Fix context menu issues
310
311 Version 0.9.1 (2013-10-11)
312 ==========================
313
314 * Fix security issue with Qt 4.8.5 and PostgreSQL
315 * Phonon notifications for Mac OS X
316 * Convert tabs in messages into 8 spaces
317 * Silence superfluous QCA warnings
318 * Various key- and encryption-related fixes
319 * Ignore formatting in clickables
320 * Enable warnings when compiling with Clang
321 * Updated translations
322 * Various other small fixes and improvements
323
324 Version 0.9.0 (2013-04-16)
325 ==========================
326
327 * Halfop support
328 * Channel-specific highlights
329 * Support for intermediate CA certificates
330 * Support the DockManager interface
331 * OSX Notification Center support
332 * DH1080 key exchange
333 * SASL EXTERNAL support
334 * Improvements for Retina displays on OSX
335 * Supporting to start minimized to tray
336 * Rudimentary support for Qt5 (obsolete again because upstream changed too much)
337 * Refactor of SignalProxy, network and protocol code
338 * First pieces of the coming protocol abstraction
339 * Build system improvements
340 * Various bugfixes
341 * New and updated translations
342 * Reformatted ALL the source code
343
344 Version 0.8.0 (2012-03-20)
345 ==========================
346
347 * Make tab completion key configurable
348 * Syslog support for the core
349 * Make the core more robust against random invalid input
350 * oidentd support
351 * Build system improvements
352 * Many new and updated translations
353 * Various bugfixes
354
355 Version 0.7.4 (2012-03-20)
356 --------------------------
357
358 * Improve keyboard navigation
359 * Bump Oxygen icons
360 * Conform with icon naming spec
361 * Remove JS support from webpreview
362 * Fix support for Qt 4.8
363 * Several bugfixes and cleanups
364
365 Version 0.7.3 (2011-09-08)
366 --------------------------
367
368 * Fix a core crash
369
370 Version 0.7.2 (2011-03-24)
371 --------------------------
372
373 * PostgreSQL improvements
374 * Various bugfixes
375
376 Version 0.7.1 (2010-09-21)
377 --------------------------
378
379 * Critical fixes for CTCP and connection handshake
380
381 Version 0.7.0 (2010-09-14)
382 ==========================
383
384 * Improved DE integration, support for dbusmenu
385 * Bump Qt dependency: we need Qt 4.6 for client and monolithic now
386 * Fullscreen mode (F11)
387 * CTCP CLIENTINFO support
388 * Shortcuts for navigation between chats (Alt+Left/Right/Up/Down)
389 * Add blowfish encryption (/setkey and /delkey; needs QCA2)
390 * Shortcut editing for all platforms (!KDE)
391 * Improved handling of invites
392 * New tray icon for highlights
393 * Global away
394 * Emacs-style keybindings for the input line
395 * Improved markerline behavior
396   - Allow manual setting (Ctrl+R)
397   - Provide shortcut for jumping to the markerline (Ctrl+K)
398 * New languages: el, gl, ja
399 * Many bugfixes
400
401 Version 0.6.1 (2010-04-16)
402 --------------------------
403
404 * Critical bugfixes
405
406 Version 0.6.0 (2010-04-14)
407 ==========================
408
409 * New languages: en_GB, es, nl, oc, pt, pt_BR, sq, sv, uk, zh_CN
410 * Updated existing languages
411 * Restore last selected buffer on restart
412 * Optional per-chat history
413 * SASL authentication support (e.g. supported by Freenode)
414 * Allow inputting formatted (colored/bold/...) text in the inputline
415 * Support the StatusNotifierItem DBus spec
416   - Replace old-style tray icon where supported (currently KDE >= 4.4)
417   - Integrate freedesktop notifications support (libnotify or knotify)
418 * Systemtray refactoring
419   - Replace animation by blinking icon
420   - Properly handle notifications and mainwindow toggle
421 * Improved URL detection
422 * Sender column is now clickable (double click opens query)
423 * Improved notification handling
424 * ChatView performance improvements
425 * Many buildsystem fixes
426   - Improved handling of icons
427   - Updated cmake macros
428   - Support building with MinGW
429   - Support KDE on non-X11 platforms
430   - Better handling of SSL libraries
431 * Solid network state detection support (with KDE)
432 * Settingspage refactoring
433 * Improved handling of SSL certificates
434 * Completely reworked the client/core connection
435   - New settingspage for managing core accounts
436   - Streamlined login/sync process
437   - Configurable timeout
438   - Automatic reconnect to core
439 * Send unknown commands to server
440 * New stylesheets
441 * Use gettext for translations
442
443 Version 0.5.2 (2010-01-18)
444 --------------------------
445
446 * CTCP ignore
447 * Buildsystem fixes
448
449 Version 0.5.1 (2009-11-21)
450 --------------------------
451
452 * Many Bugfixes
453 * Updated translations
454 * Fix issues with Qt >= 4.6
455
456 Version 0.5.0 (2009-10-14)
457 ==========================
458
459 * Tons of bugfixes
460 * Many translation updates
461 * Use DrKonqi/Apport to provide backtraces in case of a crash
462 * Support for Ayatana's Message Indicator (libindicate; *buntu specific feature for now)
463 * Fix wordwrap issues
464 * Improved notification behavior (highlighted channels can now be cycled)
465 * Improved icon packaging (don't install them if KDE is available and current enough)
466 * Menubar can now be hidden (Ctrl+M to toggle)
467 * Ignore list support
468 * Vast performance improvements in the handling of synced objects
469   - Core startup/shutdown now almost instant
470   - Joining/leaving large channels much more efficient
471 * Netsplit detection
472 * New topic widget dynamically resizes to show all of the topic
473 * Usability tweaks
474   - Reworked configuration dialogs
475   - Renamed "Buffer" to "Chat" throughout in all user-visible strings
476 * Introduce stylesheet-based (QSS) styling for ChatView and the whole application
477 * Allow configuration of ping timeouts and auto-WHO
478 * Make toolbars configurable in KDE
479 * Alt+A shortcut for jumping to cycle through active buffers
480 * Properly remember the mainwindow state on shutdown/restart
481 * Multiline input support
482 * Improved systray notifications
483 * Lazy backlog fetching for hidden buffers
484 * Improved flood control
485 * Spell check support (requires KDE integration)
486 * /exec support for executing external scripts/programs
487 * CLI interface for managing core users with quasselcore rather than a script
488 * Improved ping timeout detection
489 * PostgreSQL database backend support
490 * Smart nickname completion (most recently active)
491
492 Version 0.4.3 (2009-08-26)
493 --------------------------
494
495 * Bugfixes and translation updates
496
497 Version 0.4.2 (2009-05-20)
498 --------------------------
499
500 * Bugfixes and translation updates
501
502 Version 0.4.1 (2009-03-18)
503 --------------------------
504
505 * Bugfixes and translation updates
506
507 Version 0.4.0 (2009-02-17)
508 ==========================
509
510 * Buffer view font can now be changed
511 * Colored nicknames
512 * Wizard for setting up identity and networks on first run
513 * Paste protection warns if you try to paste many lines
514 * Use login name and real name for default identity
515 * Add toolbar to main window
516 * Away log window showing highlighted messages while you're away
517 * Settings dialog streamlining
518 * Animated system tray icon
519 * Shiny new Oxygen icons all over the place, including our new app icon
520 * Build system improvements
521 * Put all config and data files in one location and make that configurable
522 * Allow presetting networks and a list of channels to join on first start
523 * Change and improve CLI argument handling
524 * All buffer views are now customizable
525 * Streamlined monolithic client
526 * Many usability improvements
527 * Method for easily hiding and unhiding buffers in buffer views
528 * Renaming and merging of query buffers
529 * Improved SSL certificate handling
530 * Optional support for KDE4
531   - KNotify support
532   - KDE icon and color theme support
533   - Editable shortcuts
534 * Core now supports a proxy for connections to IRC
535 * Core supports SSL certs and keys for IRC connections
536 * Chat Monitor configuration dialog
537 * Audio notifications
538 * Clickable channel names in ChatView
539 * Context menus in ChatView and BufferViews
540 * Respect the separate clipboards (Ctrl+C / X11 selection) on X11
541 * Improved mouse handling:
542   - Double/triple click selections
543   - Drag'n'Drop
544
545 Version 0.3.1 (2008-11-20)
546 --------------------------
547
548 * Nick changes and day change messages can now be hidden
549 * Web previews and status icons can be disabled
550 * Icons for Online/Away/Offline status of queries
551 * Load Qt's default translations
552 * Add new settings for proper message redirection
553 * Add context menu to links
554 * Automatic backtraces on Windows
555 * Add russian translation
556 * Cut off the sender column on the left in ChatView
557 * Enable away on detach
558 * Backlog amount (initial and dynamic) can now be configured
559 * Shift Up/Down scrolls the ChatView
560 * Page Up/Down scrolls the ChatView
561 * ChatView Zoom with Ctrl + / Ctrl -
562 * Join/Part/Quit... events can now be hidden in ChatView
563 * Monolithic build features zero configuration: Click'n'Run
564 * Monolithic build now uses a proper (socket-less) internal connection
565 * Ctrl+L focuses input line
566 * Improve notification handling, use proper D-Bus notifications
567 * Day change messages in ChatView
568 * Web Preview on hovering over a link (requires QtWebkit)
569 * Allow icons to be installed externally, optionally use system Oxygen theme
570 * Improve URL handling in ChatView (underline, single-click invocation)
571
572 Version 0.3.0 (2008-08-27)
573 ==========================
574 The first widely available release of Quassel IRC.