Unreleased Version 2.3.0-pre

2025-10-18 Version 2.3.0-beta.4
 * Fix: Unpremultiply alpha values when exporting to animated WEBP so that partially transparent pixels come out looking correct.
 * Fix: Make the preferences menu item on macOS open the preferences again.
 * Fix: Make mouse wheel to adjust brush sizes not skip over small values on wheels that make big steps. Thanks Meiren for reporting.
 * Fix: Make zoom tool detect clicks properly, rather than detecting tiny motions as a rectangle to zoom into. Thanks Scruff for reporting.
 * Fix: Make freehand tool icon appear again if starting up with the eraser selected. Thanks Meiren for reporting.
 * Fix: Make software renderers handle canvas sizes with dimensions beyond 32767 pixels properly. Thanks Ben for reporting.
 * Fix: Open ORA files with width or height greater than 32767 pixels. Thanks Nimono for reporting.
 * Feature: Make true /roll messages in chat have a blue tint to make cheating more difficult. They're also translatable now, rather than always being in English. Thanks KosmonautKat, lambda20xx and Potete for suggesting.
 * Feature: Allow "blocking" of layers. It works like censoring a layer, but the censor is only visible to you. It lets you hide stuff you don't want to see, but still be aware that it's there so you don't draw over other people's art.
 * Fix: Make layer clipping onto pass-through groups work the same as it does in other programs (that is, make it not clip.)
 * Feature: Anti-overflow fill for brushes. Thanks Ausjamcian, Axocrat and Null for suggesting.
 * Feature: Exit Drawpile when the last window is closed on macOS, like on all other systems. You can reenable this behavior in the user interface preferences if you want it back.
 * Fix: Make clicking with touchpad not trigger touch color picker.
 * Fix: Properly enable or disable session permission boxes and sliders according to compatibility mode and operator status.
 * Fix: Make key frame visibility attributes work properly in compatibility mode.
 * Server Feature: Fast reconnects. Clients now remember the state of the history when they got disconnected and skip ahead in the catchup sequence if possible. Thanks Bluestrings for testing.
 * Server Fix: Don't restrict binary (.dprec) templates to the current version.
 * Fix: Disable native message boxes, they're broken on macOS Tahoe and don't add anything except an inconsistent appearance.
 * Fix: Make start, login, invite and numerous other dialogs have proper title bars on macOS, rather than being those weird sheets. Thanks Axocrat for reporting.
 * Fix: Don't show duplicate full screen action in view menu on macOS.
 * Fix: Make window maximized when leaving full screen on macOS, rather than crumpling it down to a small size and messing up the docks arrangement.
 * Feature: Allow closing modal dialogs on macOS using Command+Q. Thanks Axocrat for suggesting.
 * Feature: Increase/decrease key frame exposure actions for all visible tracks, bound to Ctrl+Shift+Alt+Plus/Minus by default. This lets you shift frames on multiple frames at once, rather than having to move each track individually.
 * Removed Server Feature: Socket activation. Attempting to pass sockets via systemd now just raises an error and tells you to uninstall drawpile-srv.socket. This was a pretty obscure feature that apparently wasn't working properly anyway and only ever seems to get used unintentionally. Thanks Bluestrings for reporting.
 * Feature: Binary interpolation mode for transforms. Works like Bilinear, but tries to keep the opacity of pixels the same so that you can scale stuff drawn with a binary brush without making it all blurry. Thanks TGS for suggesting.
 * Fix: Properly reconnect to sessions when using an invite code, rather than asking for a password the second time around.
 * Fix: Properly reconnect when using a WebSocket URL, rather than replacing the path inappropriately.
 * Fix: Don't incorrectly redo already gone undone commands after a series of undos and redos. Thanks Sinamer for reporting.
 * Feature: Don't ask for login method, username and password again when reconnecting. Thanks Meru for reporting.
 * Feature: Don't show chat until connecting to a session and remember the size of it even when it was hidden.
 * Feature: Send button in chat, for virtual keyboards where hitting return is inconvenient.
 * Feature: Make drawpile-timelapse command-line tool fill the background with the canvas background color instead of black.
 * Server Fix: Apply archive and size limit setting immediately, not only when a session is started.
 * Server Feature: Allow toggling archive mode on individual sessions instead of using server default. Thanks Bluestrings for suggesting.
 * Server Fix: Properly treat autoreset threshold with zero value as no autoreset.
 * Server Feature: Add server setting for a minimum autoreset threshold, to avoid users setting it to a too low value and causing excessive resets. Thanks Bluestrings for suggesting.
 * Server Feature: Allow overriding session size limit for individual sessions. Thanks Bluestrings for suggesting.
 * Fix: Properly check for session reset size so that oversized resets don't end up in disconnects.
 * Fix: Show a proper error message when a manual reset fails, rather than claiming that an auto-reset failed.
 * Fix: Handle reordering of layers with large ids properly. This was only a problem in the UI, it does not cause desync. Thanks Bluesflying for reporting.
 * Fix: Remove accessibility features, because they cause crashes on macOS and possibly also other operating systems even though Drawpile doesn't use them. This is a patch to Qt. Thanks kal^-^ for reporting.
 * Feature: Long-press to open context menus. Enabled by default on Android and in the browser. Can be toggled in the user interface preferences.
 * Fix: Make sliders less annoying: double-clicking now starts editing instead of clicking and holding, hitting Escape now unfocuses the slider and sliders now no longer block shortcuts keys that wouldn't have any effect on them. Thanks Blozzom and incoheart for reporting.
 * Fix: Make drawpile-cmd actually write to stdout when passing "-" as the output file, like the help claims. Thanks incoheart for reporting.
 * Feature: Higher-quality zoom using the hardware renderer. Thanks cromachina for contributing.
 * Fix: Allow right-clicking on the lasso fill and gradient tools to cancel them even if right-click is bound to a canvas shortcut. Thanks Blozzom for reporting.
 * Feature: Allow for fractional framerates instead of only allowing whole numbers.
 * Fix: Reset flipbook crop, speed nad frame range when a different canvas is loaded.
 * Feature: Make the timeline use a frame range instead of always strictly constraining it from 1 to the maximum frame count and chomping away any frames beyond the end.
 * Fix: Clear layer selection when selecting a blank frame. Thanks Pumpkin for reporting.
 * Fix: Properly persist changes to blend, alpha preserve and erase modes when they're changed on the brush dock. Thanks cromachina for reporting.
 * Fix: Don't disconnect brush shortcuts when changing other shortcuts. Thanks cromachina for reporting.
 * Feature: Allow double-clicking on empty timeline frames to create key frames and on the header to edit the framerate and frame range. Thanks Greendyno for suggesting.
 * Feature: Start blank canvases with a single timeline track pre-created, similar to how it works with layers.
 * Feature: Allow joining sessions if there's only a minor protocol incompatibility. An outdated client like this won't handle any new features and therefore their canvas may desynchronize, so they can't reset or compress it.
 * Feature: Make compiling Drawpile with WebSocket support mandatory. This avoids accidentally ending up with an application that's unable to connect to certain servers.
 * Fix: Properly disable join button when an empty address is entered.
 * Feature: Allow explicitly picking between WebSockets and TCP sockets in the join, browser and host pages of the start dialog.
 * Feature: Prefer connecting via WebSockets, fall back to TCP if it fails or takes too long. Connections to localhost or IP addresses continue to use TCP by default. Thanks Bluestrings for suggesting.
 * Feature: Show connection socket type in the net status field in the bottom-right corner.
 * Fix: Make deselect work on identity transforms. Previously it would cancel the transform, but not actually deselect.
 * Feature: Selection and transform action bar. Shows up when a selection or transform is active to give quick access to common operations, such as deselecting or applying the transform. Thanks CosmosX007 and Geese for suggesting, Blozzom for testing.
 * Feature: Add buttons to the lock notice to unlock the canvas, reset the session when it's out of space or uncensor layers. Thanks Phoneme for suggesting.
 * Feature: Indicate whether a non-normal view mode is active and give a way to get out of it in the lock notice. Can be disabled in the user interface preferences. Thanks Geese for suggesting.
 * Feature: Show lock message even when it doesn't affect the current tool (without actually locking anything.)
 * Feature: Allow detaching the chat but keeping it on top of the main window or all other windows. Thanks Bluestrings and Blozzom for suggesting.
 * Fix: Properly autoselect default layer on join. Thanks Bluestrings for reporting.
 * Feature: Automatically switch to frame view mode when the animation timeline is sufficiently fiddled with.
 * Fix: Make chat recognize user as operator even when they are for some rason not in the user list. Thanks Bluestrings for reporting.
 * Fix: Properly restore chat size when reattaching.
 * Fix: Properly save accounts on the web when asked when the server doesn't support browser authentication. Thanks Bluestrings and Evil Sonic for reporting.
 * Fix: Don't hang when quickly switching tools while strokes with smudge sync are in progress. Thanks D'mitri for reporting and helping find this.

2025-08-14 Version 2.3.0-beta.3
 * Fix: Allow putting labels on a blank brush thumbnail. Thanks hipofiz for reporting.
 * Feature: Pixel art input for pixel brushes, turns off all smoothing and makes the inputs apply immediately. Thanks Ben, dAVePAGE and Nilifin for reporting.
 * Fix: Remove alpha lock and erase toggle buttons when using the eraser tool.
 * Fix: Disable the "modern" WASAPI audio backend, because on some devices it causes crashes in the depths of Windows, makes drag and drop stop working or other strange effects. Thanks Ben, CrustStuff, dAVePAGE and Momo for reporting various different incarnations of this problem.

2025-08-08 Version 2.3.0-beta.2
 * Fix: Make start dialog not flicker briefly on some systems.
 * Removed Feature: Use the same logo for the application, too distracting evidently.
 * Fix: Make hosting session with a password work, it did not get picked up sometimes. Thanks Bluestrings for reporting.

2025-08-07 Version 2.3.0-beta.1
 * Removed Feature: Compatibility with the old 2.1 versions, which was originally released 6 years ago. 2.3 is compatible with 2.2 instead.
 * Feature: Add Edit > Lightness/Darkness to Alpha action. Thanks Ben for suggesting.
 * Feature: Allow switching annotation rendering between vector, smooth and pixel fonts. Thanks cvrsoiioo4 for suggesting.
 * Feature: "Clip to layer below" toggle on layers, for people used to that way of alpha preserving. Will be loaded from and saved to PSD files.
 * Fix: Change the dptxt recording format to use JSON to represent message bodies instead of a bespoke format that sometimes doesn't round-trip properly.
 * Feature: "Inherit alpha" toggle on layers and "preserve alpha" toggle on tools, for people used to that way of alpha preserving from Krita. You can toggle automatic alpha preserverance in the user interface preferences. Thanks Bubble for testing.
 * Feature: "Greater Density" blend mode, which will only draw where it will increase opacity. Works like "Greater" in Krita and "Compare Density" in CSP, minus the glitches when you use different colors. Thanks Annoy suggesting.
 * Feature: "Marker" blend mode, which will only increase opacity, but always change the color. Works like the marker in SAI and sorta similar to "Alpha Darken" in Krita, minus the glitches for different colors again. Thanks cromachina for suggesting.
 * Fix: Make indirect wash mode actually work like it's supposed to, without causing weird effects for soft brushes. The previous mode is now available as a separate paint mode.
 * Feature: Bring back the indirect normal mode from Drawpile 2.1 as another paint mode option.
 * Feature: Allow using blend modes with MyPaint brushes, rather than restricting them to normal, recolor and erase.
 * Feature: Allow using MyPaint brush color dynamics in indirect mode.
 * Feature: Remember who changed tiles across session resets and compressing the canvas. Thanks Bluestrings for suggesting and callaa for originally implementing it before it fell off again for compatibility.
 * Fix: Don't displace annotations when resizing the canvas to the left or top.
 * Feature: Make the Shine (SAI) blend mode work exactly like in SAI, even with alpha preserve off. Thanks cromachina for providing the logic for this.
 * Feature: Implement more blend modes: Vivid Light, Pin Light, Difference, Darker Color, Lighter Color, Shade (SAI), Shade/Shine (SAI), Burn (SAI), Dodge (SAI), Burn/Dodge (SAI), Hard Mix (SAI) and Difference (SAI). Thanks cromachina for providing the logic for the SAI blend modes.
 * Feature: Increase maximum brush size to 1000. Session operators can limit this and the default limit for non-operators is 255. Thanks ariqhadiyan and TGS for suggesting.
 * Fix: Make MyPaint brush outline more accurate to the actual maximum size of the brush (although it still can't account for crazier brushes.)
 * Feature: Pigment blend mode, which allows for more realistic color mixing. Session operators can restrict this mode and by default it's only enabled for operators, since it's very performance-intensive. Thanks chaitae for suggesting, username and xxx for testing.
 * Feature: Increase maximum layer count to 32767 per user, up from the previous 256. Operators can also now limit the layer count in the session settings. Thanks haxekhaex2 for suggesting.
 * Feature: Allow drawing on selections via Selection → Draw on Selection.
 * Feature: Allow changing the color of the selection mask via View → Set Selection Mask Color.
 * Feature: Make selections mask brush strokes. Can be toggled via Selection → Mask Brush Strokes With Selection. Thanks Bluestrings for testing.
 * Feature: Switch pixel compression algorithm to zstd, which is many times faster than the old gzip. Thanks Bonbli for suggesting a way to get better compression with this.
 * Feature: Don't require paste permission for transforms that modify the opacity or blend mode.
 * Feature: Allow alpha locking layers. This basically works the same as enabling alpha lock on the tool you're using, it's just there for people that are used to doing it this way from other programs.
 * Feature: Allow locking layer properties to avoid accidentally changing e.g. the blend mode.
 * Feature: Allow locking layer positions to avoid accidentally moving them. Thanks Athena for suggesting.
 * Feature: Increase canvas size limit to up to 1 million pixels as long as the total canvas size doesn't exceed 1073676289 pixels (32767 squared). Previously each dimension was limited to 32767 instead. Thanks johannesCmayer and yvantot for suggesting and MajorCooke for testing.
 * Feature: A Drawpile 2.2 compatibility mode, allowing you to join sessions hosted with the previous version. Thanks lambda20xx for testing.
 * Feature: Add shortcuts that switch tools and deselect in a single action. Thanks Bonbli for suggesting.
 * Feature: New .dpcs canvas file format that's much faster and in most cases also leads to smaller sizes. Thanks Bonbli for suggesting an optimization to this; CosmosX007, Fanshen and hpar for reporting issues.
 * Feature: A gradient tool, which works inside of selections. Thanks ChristianJohnsten, lambda20x, Malrn and Maffi for suggesting.
 * Feature: Preview brushes with fixed X and Y offsets with an offset outline. Thanks Phoneme for suggesting.
 * Fix: Don't mark the canvas as having unsaved changes from just making a selection on it. Thanks MachKerman for reporting.
 * Fix: Don't include credentials in the URL when opening a new window on reconnect, they're only for use in the same window. Thanks MachKerman for reporting.
 * Fix: Save and restore smudge minimum value properly instead of resetting it to zero.
 * Feature: Add jitter setting for classic brushes, available in the brush settings. This setting offsets the dabs from the center of the stroke, useful for pencil, charcoal or spraycan brushes.
 * Feature: Show the time it took to open, save and export files in the status bar.
 * Fix: Don't disconnect when receiving an unknown message from user 0. Thanks Blozzom and unsername for reporting.
 * Fix: Compensate jagged curves in when using the lasso select tool. Thanks Blozzom for reporting.
 * Feature: Make arrow keys navigate the animation timeline when it has focus. Thanks MorrowShore for suggesting.
 * Feature: Add support for opening and exporting images in Quite Okay Image Format (QOI).
 * Feature: Add -B/--background-color option to drawpile-timelapse command to set an override background color. Thanks Bluestrings for suggesting.
 * Feature: Add a "synchronize smudging" brush setting. This will make the brush stroke wait for itself before smudging, which is slower, but required for some smudge brushes to work properly when making fast strokes. Thanks Donatello and xxxx for reporting.
 * Feature: Allow classic brushes to smudge with transparency. This can be toggled in the brush settings. The old mode now calls itself "blending" instead to be able to tell it apart. Thanks xxxx for suggesting and lambda20xx for testing.
 * Feature: A lasso fill tool, bound to Shift+F by default. Thanks EvilKitty3, Fallen, Geese, MorrowShore and Juzeror for suggesting, Blozzom and Bonbli for suggesting additions to it.
 * Feature: Allow pressing Escape (or whatever you bound "cancel action" to) to deselect. Can be disabled in the tool preferences. Thanks RannyBergamotte for suggesting.
 * Feature: Upscale small animations by whole numbers to fill the flipbook view. Can be toggled using the zoom button at the bottom. Thanks Ian700ng for suggesting.
 * Fix: Properly stop flood fills at selection boundaries. Thanks Bluestrings for reporting.
 * Feature: Allow assigning keyboard shirtcuts to tool blend modes. Thanks Izzy and Meru for suggesting.
 * Fix: Don't reattach detached brushes when switching slots. Thanks MachKerman for reporting.
 * Feature: Show tooltips of tool buttons immediately, so that you can tell better what they do without having to wait for them.
 * Fix: Don't switch away from a detached brush when only right-clicking, just like it works when you disable brush detaching altogether. Thanks MachKerman for reporting.
 * Feature: Harmony swatches, showing color harmonies for the current color to make palettes or shade with. Can be enabled and configured through the hamburger by right-click menu on the color wheel. Thanks tiar for suggesting.
 * Fix: Don't allow toggling toolbars in small screen mode, since they will just reappear again. Thanks CosmosX007 for reporting.
 * Feature: Add View → Always Show Side/Bottom Toolbar actions to let you choose whether to always show those toolbars in small screen mode or only when something is folded out using the tabs on the side. Thanks CosmosX007 for suggesting.
 * Fix: Add some space to the sides of the bottom toolbar in small-screen mode so that the undo and record buttons don't get eaten by rounded corners. Thanks March for reporting.
 * Feature: Allow reordering and toggling which drawing tools are visible in the toolbar, via e.g. Tools → Configure drawing toolbar. Thanks MorrowShore for suggesting.
 * Feature: Add OKLAB blend mode for layers and brushes. Thanks Bonbli for contributing.
 * Fix: Detect eraser pen tip on Android, since the eraser doesn't report it's in proximity until it hits the surface, similar to the browser. Thanks CosmosX007 for reporting.
 * Feature: Auto-correct attempts to host on http(s) sites by extracting the host portion from them. Thanks Charmandrigo for suggesting.
 * Feature: Add shortcuts to change brush opacity and hardness. Thanks justanotatest for suggesting.
 * Feature: Allow defining a separate pressure curve for the stylus eraser tip in the tablet preferences. Thanks CosmosX007 for suggesting.
 * Feature: Allow turning off system file dialogs on Windows, in case they somehow cause trouble. Thanks CrustStuff for suggesting.
 * Fix: Remember loops field in animation export dialog during a single run, instead of resetting it to 1 every time.
 * Feature: Allow swapping the sides of docks, toolbars and on-canvas buttons via View → Left-Handed Mode in small screen mode. Thanks yoossy for suggesting.
 * Feature: Redirect handling in the client, allowing servers to forward connections to other servers, with the option of only accepting signed redirects.
 * Server Feature: Session thumbnail generation, by requesting the client to generate one. Currently only through the web admin API, thumbnails are not displayed anywhere or generated automatically yet.
 * Feature: Add pixel-perfect option for pixel brushes, available in the brush editor and under the paint mode dropdown. Thanks Meru and Squishy for suggesting, lan700ng for testing.
 * Feature: Use the canvas background color or the color behind the canvas as the background color for the annotation editor, depending on where the annotation is placed. Thanks Blozzom for suggesting.
 * Feature: Add a build for Windows on ARM. Thanks fizbin for testing.

Unreleased Version 2.2.3-pre
 * Fix: Disable audio playback under 32 bit Windows, since it just crashes.
 * Fix: Clear text in the annotation tool when deselecting, since it makes it seem like you can still type in there.
 * Feature: Allow setting hostaddress, hostpass, username and userpass URL parameters in the browser, as a workaround for when you can't type anything into the text fields. Thanks N8theGr8 for bringing this up.
 * Server Fix: Properly prefer users with better OS, net quality or ping for autoresets, even if they responded first. Thanks Blozzom for reporting.
 * Fix: Don't reselect default layer after picking a layer from the canvas or via the timeline. Thanks Meru for reporting.
 * Fix: Properly snap pixel brush outlines in the correct spot and don't snap soft brush outlines at all. Thanks Meru for reporting.
 * Fix: Disable color wheel preview on macOS, since it breaks dragging on the wheel like it does on Android. Thanks Millie for reporting.
 * Feature: Let operators create annotations beyond the 256 per-user maximum. Like with layers, this will use annotations of user 0 first, then 255, 254 etc. Thanks to Devil Like Me for reporting.
 * Server Feature: Add settings to filter disallowed user and session names. Thanks Bluestrings for suggesting.
 * Server Feature: Allow marking individual sessions as unlisted, as well as a setting to automatically unlist all or browser-hosted sessions. Thanks Bluestrings for suggesting.
 * Server Feature: Allow adding server log entries via API. Thanks Bluestrings for suggesting.
 * Server Feature: Add a "browser" flag to the API, to be able to tell whether a user is connected via web browser.
 * Feature: Assigning colors to layers and key frames. Thanks MorrowShore and hpar respectively for suggesting.
 * Fix: Don't crash on some systems when selecting multiple layers and merging them. Thanks cromachina for reporting.
 * Fix: A rare crash when faced with a lot of identically-named brushes assigned to the same shortcut. Thanks Blozzom for reporting.
 * Fix: Allow changing the background color when you have background permissions, previously it checked for canvas resize permission instead.
 * Fix: Make fill tool apply to the layer it was executed on when "edit pending fills" is disabled. Thanks Greendyno for reporting.
 * Fix: Don't set a 0% opacity layer to 1% opacity when switching it out of sketch mode. Thanks Meru for reporting.
 * Fix: Properly reset layer visibility when creating a layer with the same ID as a previously hidden layer when you have a high-ish ping. Thanks MachKerman for reporting.
 * Fix: Don't start a kinetic scroll of the surrounding view when trying to adjust curve or slider. Thanks 3rd_EFNO for reporting.
 * Fix: Make MyPaint brushes not pick up transparency from outside of the canvas. Thanks Meiren and yvantot for reporting.
 * Fix: Properly render sketch mode layers when the actual layer opacity is zero.
 * Feature: Smoothing for touch panning, zooming and rotation. Can be configured and disabled in the touch preferences. Thanks Jay-Man for suggesting, 3rd_EFNO and lan700ng for testing.
 * Fix: Remove warning about Firefox on Android not supporting pressure sensitivity, since it does now. Thanks tiar for reporting.
 * Feature: Make Drawpile build on the Haiku operating system again. Thanks Begasus for contributing.
 * Server Fix: Interpret the connection quality setting sent by clients correctly when choosing who to pick for autoresets. Thanks Blozzom and grimsley for reporting.
 * Fix: Correct warning about Firefox on Linux not supporting pressure sensitivity, since it does work on some systems. Thanks Kuuuube for reporting.
 * Feature: Add pressure tester to browser startup page. Thanks Shivani for contributing.
 * Feature: Add language selector to browser startup page.
 * Feature: Add a brush setting to disallow others in a session to use it. This does not prevent them from replicating the brush in other ways, but this setting is there if you feel strongly about not making it easy. Thanks Blozzom for suggesting.
 * Fix: Don't crash on macOS when inputting an invalid session address to join. Thanks Charmandrigo for reporting and Axocrat for testing.
 * Fix: Restore normal layer view mode when loading a canvas into the same window.
 * Fix: Replace the notification sound playback backend, which should make it work on Android, the Linux AppImage and on 32 bit Windows. It should hopefully also no longer have occasional crashes on some Linux and Windows systems.
 * Server Fix: The server now checks whether it can actually start with a GUI if you run it without arguments on Linux and other non-macOS Unix systems, rather than trying it and crashing because you don't have a graphical environment. Thanks Epiglottal Axolotl for reporting.
 * Server Feature: Add a --no-gui option to explicitly run the server without a graphical shell.
 * Feature: Bind deselect to both Ctrl+Shift+A and Ctrl+D by default, since other software is inconsistent in this regard. Thanks Geese for suggesting.
 * Fix: Make click detection more sensitive, to avoid accidentally creating tiny selections when trying to just click to deselect. Thanks Bluestrings for reporting.
 * Feature: Donation and feedback links. They don't cause any extra pop-ups, but if they annoy you regardless, they can be summarily disabled in the preferences.
 * Fix: Make the hardware renderer work on macOS.
 * Feature: Clean up the Mac menu. Menu items that were missing when no window were added, items that went into the application menu are now also in the place where they are on every other system and newly opened windows don't start with a missing canvas.
 * Fix: Don't crash on Android when toggling MyPaint brush parameters via touch. Thanks Manuart for reporting.
 * Fix: Work around iPads and iPhones refusing to let you pick ORA, PSD and other file types that it doesn't know by just allowing you to pick all file types. Thanks DevonJP for reporting, Axocrat and Scruff for testing.

2025-03-26 Version 2.2.2
 * Fix: Make annotations not cause glitches when moving them around when using the software renderer. Thanks Meru for reporting.
 * Feature: Add -u/--users parameter to dprectool, which will print out a table of user statistics along with names and ids.
 * Feature: Add --include-user-ids parameter to dprectool, allowing to pass a comma-separated list of user ids to only include visual changes from.
 * Fix: Work around WebKit bug 284752 that prevents Drawpile from working on Safari 18. Thanks grimsley for reporting.
 * Fix: Correct weird letter spacing in the font rendering on Windows. Thanks Sinamer for reporting.
 * Feature: Make reset images a bit smaller and much faster. This speeds up manual session resets, canvas compression, hosting and joins in the builtin server. Thanks mukihyena for reporting.
 * Fix: Generate the catchup image in the background when hosting on the builtin server, rather than hanging the client. Thanks mukihyena for reporting.
 * Server Fix: Additional checks and logging to avoid and diagnose temporary failures in streamed resets. Thanks Will for reporting.
 * Fix: Slightly delay restoring dock layouts after the window is resized to avoid a crash on macOS. Thanks Axocrat for reporting.
 * Fix: Properly update the checkbox on View > Full Screen if the OS forces the application out of it. Thanks Sinamer for reporting.
 * Fix: Restore window maximized after exiting the application from full screen mode. Thanks Sinamer for reporting.
 * Fix: Only remember dock sizes when the window is maximized or full screen on operating systems where that's possible to tell. Thanks Meiren for reporting.
 * Fix: Make tablet positions work on Cintiqs under Windows Ink with UI scaling and when it's not set to be the primary monitor. The old behavior is available via Edit > Tablet Driver > Windows Ink Non-Native, in case this breaks something else. Thanks Axocrat and Liz for reporting, Weenifer for reporting and testing, Maffi for reporting additional issues.
 * Fix: Remove the "KisTablet" prefix from the tablet driver names in Windows, it's a technical name that doesn't add anything useful.
 * Feature: Indicate when you have no layer selected so that it doesn't seem like you can draw but nothing happens.
 * Server Fix: Remove browser users when a session's password is removed and the server only allows browsers in passworded sessions. Thanks Bluestrings for reporting.
 * Server Feature: Add a separate permission for hosting via browser and whether to take this permission from ext-auth. This also fixes the issue where it would ask you to log in when trying to host from the browser, just to then tell you that you're not allowed to do so anyway. Thanks Bluestrings for suggesting.
 * Removed Feature: Username lists in external session announcements. They were never used.
 * Fix: Show current tier in the layer permissions menu again. Thanks Meiren for reporting.
 * Fix: Reduce selection outline resolution instead of punting to the blue selection mask when it gets too large. Thanks Meru, MorrowShore and Shane for reporting.
 * Server Feature: Invite codes, allowing inviting people with revokable links that override regular session restrictions. Thanks Bluestrings and Liz for suggesting.
 * Removed Feature: Toggling between web and direct links in the invite dialog. Drawpile will translate the web link if you paste it into the join dialog anyway, so the distinction was pointless.
 * Fix: Change temporary tool switch setting text to say that only the primary shortcut will cause it. This was unintentional, but it's useful. Thanks 3rd_EFNO for reporting.
 * Fix: Use proper background images in Windows installer instead of those ugly red discs. Thanks evilTriangle for reporting.
 * Fix: Correct intermittent errors when connecting, reconnecting or otherwise opening a new main view in the browser that could hang the application.
 * Feature: Allow hiding the color history swatches on individual color docks. Thanks Stickly for suggesting.
 * Fix: Make pan, zoom, inspector and color picker tools not get locked by the session catching up or resetting. Thanks Greendyno for reporting.
 * Fix: Don't show canvas during catchup when using software renderer.
 * Fix: Fix keyboard shortcuts, enter and backspace not reacting on some devices in the browser. Thanks Greendyno for reporting.
 * Fix: Keep leading spaces and zeroes the same when creating or duplicating a layer. Thanks Greendyno for reporting.
 * Feature: Allow making the application full-screen in the browser, using View > Full Screen. Thanks Windy for suggesting.
 * Fix: Make user markers not leave streaks in the software renderer when fractional UI scaling is involved. Thanks lambda20xx for reporting.
 * Feature: Add constrain and center buttons to the transform tool, for the equivalent of holding Shift and Alt when you don't have a keyboard. Thanks MachKerman for suggesting.
 * Fix: Don't crash on invalid certificates when connecting via WebSocket. Thanks IZUHU for reporting.
 * Feature: Set user agent header when connecting via WebSocket using the client. Thanks Meru for suggesting.
 * Feature: Allow adding a "w" query parameter to session URLs to connect via WebSocket instead. Thanks IZUHU for suggesting.
 * Fix: Remember whether a host was connected to via WebSocket by adding the "w" query parameter to it.
 * Server Feature: Add a "prefer WebSockets" option. Clients will generate appropriate invite links and announcements will contain this preference.
 * Server Fix: Allow refreshing external bans even when the section is locked. Thanks Bluestrings for reporting.
 * Feature: Add -i/--image option to the drawpile-cmd command, to allow e.g. converting an ORA to a PNG file or similar on the command line.
 * Feature: Add PSD and WEBP format support to the drawpile-cmd command.
 * Fix: Don't reset reference dock position when toggling dock visibility. Thanks izzy for reporting.
 * Fix: Remove language selection in the web version for now, since it doesn't do anything. Thanks Albano Battistella for reporting.
 * Feature: Allow setting the language in the web version using a query parameter. Many languages don't work properly, but this allows setting it before starting the thing and then having to change it.
 * Fix: Show and select existing track title when renaming it. Thanks Greendyno for reporting.
 * Fix: Properly resize login dialog on Android when showing session listings so that you can actually read something.
 * Fix: Don't make kinetic touch scrolling jerk around when moving the finger over the scroll bar.
 * Fix: Properly linkify URLs with an @ in the path.
 * Fix: Default kinetic scroll on Android and the browser to left-click, since that works better and also covers touch.
 * Fix: Allow dragging layers and sliding across the checkboxes in the layer list even when kinetic scrolling with left-click or touch is enabled by making the left and right areas not react to scroll. This is a patch to Qt.
 * Fix: Work around a crash on Windows when toggling kinetic scroll settings.
 * Fix: Properly show current layout on first layouts dialog run. Thanks Dib for reporting.
 * Fix: Disable image reader limit in command-line tools under Qt6.
 * Fix: Deduplicate brush and tag names when exporting brushes. Thanks Blozzom for reporting.
 * Fix: Don't crash under Windows 7 when attempting to play two sounds once. Thanks pachuco for reporting.
 * Server Feature: Allow configuring filter regular expressions for usernames and session titles. One expression to remove allow-listed parts and one to block disallowed ones.
 * Fix: Work around a rare crash when reordering layers on Windows. Thanks Momo for reporting.

2025-02-12 Version 2.2.2-beta.5
 * Feature: Color circle dock with gamut masks, available through View > Docks > Color Circle. Similar to Krita's Artistic Color Selector and MyPaint's HSV/HCY Wheel.
 * Fix: Make temporary tool switches by holding a key down work again. Thanks 3rd_EFNO and bunnie for reporting.
 * Fix: Disregard hidden layers when layer picking in frame view.
 * Feature: Add a search bar to the key frame properties dialog.
 * Fix: Reset locale to "C" after Qt messes it up on startup. Thanks Meru for reporting.
 * Fix: Don't use bilinear interpolation in transforms unnecessarily.
 * Feature: Add canvas shortcuts for changing color hue, saturation/chroma and value/lightness/luminosity. Thanks Dann DeCairns for suggesting.
 * Feature: Make size adjustment canvas shortcut depend on the speed of the drag. Thanks MorrowShore for suggesting.
 * Fix: Remove pointless permissions on Android that Qt includes by default but aren't actually used.
 * Fix: Don't default Android to fingerpaint when a pen is present.
 * Fix: Work around a crash on Android that sometimes occurs when putting your palm on the screen, which somehow leads to touch events with zero contact points. Thanks Mav for reporting.
 * Fix: Uncap aspect ratio on older Android versions. Thanks Molderche for reporting.
 * Fix: Work around modifier keys not registering when using a tablet on Wayland. Thanks Absolute Goober for reporting.
 * Server Fix: Don't pointlessly reload server certificates if they didn't change. Thanks Liz for reporting.
 * Server Fix: Work around too many authenticated users in a session, which could cause a crash. Thanks Liz for reporting.
 * Fix: Don't crash when filling with feathering and a canvas-filling selection. Thanks Meru for reporting.
 * Fix: Don't carry over HUD button presses to dock UI in small screen mode. Thanks Meru for reporting.
 * Feature: Make list action buttons in settings dialog clearer, adding an edit button for canvas shortcuts. Thanks Maffi for suggesting.
 * Fix: Work around broken transparency when copying images between canvases on Wayland. Thanks Absolute Goober for reporting.
 * Fix: Properly ignore system tablet events when using KisTablet drivers on Windows. Thanks Doc for reporting.
 * Feature: Warn when an action will close a relevant window on Android and in the browser. Thanks 3rd_EFNO for suggesting.
 * Fix: When enabling a dock and it gets put into a tab, that tab now gets activated.
 * Feature: Show icons on dock tabs by default, rather than text that gets squashed. In desktop mode, this can be toggled via View > Docks > Show Icons on Tabs.
 * Feature: Replace "hold shift to arrange" with View > Docks > Arrange Docks, which doesn't require a keyboard. Thanks 3rd_EFNO for suggesting.
 * Feature: Allow configuring temporary tool switch hold time. Thanks 3rd_EFNO and pachuco for suggesting.
 * Fix: Properly pass tilt and barrel rotation values to MyPaint brushes. Thanks MorrowShore for reporting.
 * Feature: Tilt support on Android. Thanks MorrowShore and Verdrusk for suggesting.
 * Server Feature: Allow two-way chat in web admin, letting admins talk to sessions without having to intrude on them. Thanks Bluestrings for suggesting.
 * Server Fix: Don't transmit ban lists and logs to non-operators. Thanks Ryngtail for reporting.
 * Fix: Always show color dialogs in HSV color space, since they don't behave correctly in other spaces. Thanks Meru for reporting.
 * Fix: Apply pending fills when manipulating layers. Thanks MorrowShore for reporting.
 * Server Feature: Show better messages when a session reset happens, specifying if it's compressing, reverting or replacing the canvas. Thanks MorrowShore for suggesting.
 * Feature: Reference image dock. Allows opening images in a separate dock and picking colors from them. Thanks 3rd_EFNO and leandro2222 for suggesting parts of this.
 * Fix: Make clicking and dragging fill and magic wand tools work at all zoom levels and drag speeds.
 * Feature: Make the canvas resize dialog fit to a floating transform, if present. This allows you to paste an image larger than the canvas and then resize to fit. Thanks Meru for suggesting.
 * Server Fix: Don't filter out feature access messages when loading session templates, so that permissions can actually get set properly from them.
 * Feature: Add --pass/-p option to dprectool, to allow configuring which messages are passed through when converting. The default is to pass all messages through, rather than just messages relevant for the client.
 * Server Feature: Treat invalid password and opword hashes in session templates as plain passwords. This still issues a warning, since those kinds of passwords should really be specified by prefixing them with "plain;".
 * Server Fix: Make template sessions not appear with a blank title and settings when first joining them.
 * Server Fix: Properly include web socket allowance in template session listings.
 * Server Feature: Allow authOnly option in session templates.
 * Server Fix: Allow joining a non-instantiated templated session via a direct link to its alias, rather than telling the user that the session isn't up.
 * Server Fix: Properly start recordings for sessions instantiated from a template.
 * Fix: Try to retain dock arrangements after resizing the window, the Windows on-screen keyboard squashing the application or rotating a device/monitor. They should no longer remain squished to a smaller size after resizing the window back. Thanks vipperz for reporting.
 * Fix: Work around Android devices reporting way too huge motions when panning with two fingers. Thanks quandaledingle44 for reporting.
 * Feature: Right-clicking outside of a transform now applies it. Thanks MorrowShore for suggesting.
 * Feature: Allow dragging selections to quickly move their contents without having to double-click to deselect and dragging the edge to move the selection itself without its contents. Thanks Blozzom, Lungy, MorrowShore, SadColor and Zheida for suggesting and testing.
 * Fix: Don't mark the canvas as saved if it was only exported.
 * Fix: Round colors to 8 bits in fill and magic wand tools so that they don't get snagged on color differences too small to see on screen. Thanks vipperz for reporting.
 * Feature: Add -I/--interpolation option to the drawpile-cmd and drawpile-timelapse commands, to allow using better scaling than bilinear if appropriate. Thanks Saphiros for causing this.
 * Fix: Don't add blank filenames to recent files list. Thanks Aries Raenidaez for reporting.
 * Fix: Don't reset zoom and rotation when lifting and replacing one of two fingers in a pinch or twist operation. Thanks Partack for reporting.
 * Fix: Stop tap-and-hold color picking when another finger is added.
 * Fix: Use Normal blending in Layer View and Group View modes. Thanks Meru for reporting.
 * Feature: Show different cursors for selection replace, unite, exclude and intersect operations. Thanks MorrowShore for suggesting.
 * Fix: Take canvas rotation, mirror and flip into account with regards to pen tilt inputs.
 * Fix: Adjust minimum resolution for desktop-screen mode to be a bit larger, to avoid getting a cut-off desktop UI on some phones.
 * Fix: Don't cut off the bottom of dialogs on some Android phones. Thanks Anonymous, Bluestrings and Molderche for reporting.
 * Fix: Work around Gaomon tablets reporting pen buttons as mouse inputs. They were getting ignored because of an earlier Huion bug workaround.
 * Fix: Replace sound playback implementation on Windows to avoid mysterious crashes on some systems. Thanks Anonymous for reporting.
 * Fix: Properly put an undo point before layer property changes. Thanks Maffi for reporting.
 * Feature: Raise default undo limit to 60 instead of 30.
 * Feature: Expand the Host tab in the start dialog, allowing setting up sessions in advance and separating personal from public sessions better.
 * Feature: Remember background color as well when using per-slot colors.
 * Fix: Scroll to the brush in question when creating or overwriting one.
 * Feature: Allow editing brush names, descriptions and thumbnails when using detached slots.
 * Fix: Make next/previous brush and tag shortcuts work when using detached slots.
 * Server Feature: Inform clients of session password changes so that they can update their invite links.
 * Fix: Work around the web browser receiving messages while the application is handling messages already. This could cause nonsensical errors like "incompatible server" or "invalid state" or outright crashes during login.
 * Server Feature: Allow filtering server logs via the web admin API. Thanks Bluestrings for suggesting.
 * Fix: Properly save background color of annotations in ORA files.
 * Feature: Allow toggling a "sketch mode" on layers, which will change the opacity and/or tint the layer locally. The exact look of this can be configured in the layer properties. Thanks abrasivetroop and leandro2222 for suggesting.
 * Feature: Use the sketch mode tinting for onion skins as well, since it gives better results when there's colored areas involved.
 * Fix: Properly update rotation when choosing an angle from the drop-down in the status bar when the angle is fractionally off the chosen angle. Thanks annoy for reporting.
 * Server Feature: Allow locking admin API sections to prevent changes on them, optionally with a password that needs to be entered to unlock them.
 * Server Feature: Only treat WebSocket connections from browsers (based on the presence of an Origin header) as requiring extra permissions, to allow desktop and mobile clients to connect via WebSockets without being subjected to extra restrictions.
 * Server Feature: Allow hosting passworded sessions via the browser if password-dependent sessions are enabled, rather than refusing hosting altogether.
 * Server Feature: Allow restricting connections to the correct host name as passed with --local-host. Enabling this requires an updated client, since older ones don't transmit the hostname.
 * Fix: When setting the canvas background color, the dialog now properly previews colors with alpha instead of showing them as opaque.
 * Feature: Add File > Export Again to let you export to the same file without showing a file picker. Thanks gerroon for suggesting.
 * Fix: Properly save flipbook crop for when cropping multiple times without resetting in-between. Thanks BornIncompetence for reporting.
 * Feature: Allow selecting and then moving, grouping, deleting etc. of multiple layers at once. To select multiple layers, hold Shift or Ctrl while making a selection or use the boxes on the right. Thanks MorrowShore for suggesting parts of this.
 * Feature: Allow dragging across the layer icons to hide the visibility of multiple layers in a row, rather than having to click each one. Thanks MorrowShore for suggesting.
 * Feature: The fill and magic wand tools now always at least fill the initial pixel if gap closing or shrinking would up with a blank result. Thanks MorrowShore for suggesting.
 * Fix: Properly apply transforms if the only thing you change is the opacity or blend mode. Thanks Blozzom for reporting.
 * Feature: Add Blue Apatite, Indigo, Ocean Deep, Pool Table, Rose Quartz, Rust and Watermelon color schemes. Thanks Weenifer for contributing.
 * Fix: Use the Fusion style by default on macOS because the System style has crashing bugs when using it with Sidecar. Thanks Axocrat for reporting.
 * Fix: Make the software renderer not create errant dark lines when moving the cursor when fractional scaling is involved. Thanks lambda20xx for reporting.
 * Fix: Remove nonsensical license page from Windows installer, Drawpile isn't under the kind of license that requires the user to accept it.
 * Fix: Properly open ORA, PSD and brush pack ZIP files when dragging them over the window. Thanks MorrowShore for reporting.
 * Fix: Don't show laser trails while catching up. Thanks MorrowShore for reporting.

2024-11-06 Version 2.2.2-beta.4
 * Fix: Solve rendering glitches with selection outlines that happen on some systems. Thanks xxxx for reporting.
 * Feature: Allow scaling animation exports. Thanks Hopfel for animating across a giant canvas.
 * Fix: Allow disabling the application proxy in the network preferences and automatically detect bad proxy configurations that can't actually make connections. Thanks FishEggsThe for reporting.
 * Fix: Improve socket error messages, listing the error code and adding extra information on what to do if a proxy error occurs. Thanks FishEggsThe for reporting.
 * Fix: Center soft brushes on the cursor better, they got offset to the top-left from correcting for size discontinuity before. Thanks Meiren for reporting.
 * Fix: Don't mess up gridmap settings when opening brush settings dialog and initially changing a value in it. Thanks Blozzom for reporting.
 * Fix: Default "confirm action" to both the regular enter key as well as the one on the numpad. Thanks MachKerman for reporting.
 * Feature: Add settings button to color wheel, sliders and palette at the top-left of the dock. For the wheel, this allows changing the settings here now instead of having to go into the preferences. For the sliders, you can now toggle the color space here and decide whether to show all sliders and the hex input. For the palette, this just moves the menu button that used to be in the row below. Thanks MachKerman for suggesting.
 * Feature: Allow aligning the color wheel to the top of the dock instead of the center. Can be toggled in the dock's menu. Thanks MorrowShore for suggesting.
 * Fix: Scale outer color wheel ring with the size of the widget. Thanks MorrowShore for reporting.
 * Feature: Preview selected color on the color wheel. Can be toggled in the dock's menu. Thanks MorrowShore for suggesting.
 * Fix: Allow pressing the numpad enter key to apply an action and Ctrl+Equal in addition to Ctrl+Plus to zoom in. Thanks MachKerman and Sinamer for reporting.
 * Fix: Prevent artifacts around brush cursor when the canvas is rotated in software renderer mode. Thanks Sinamer for reporting.
 * Fix: Don't consider the flood fill's own preview when filling the merged image. Thanks Meru for reporting.
 * Server Feature: Streamed autoresets that don't interrupt the session to bring it down to a smaller size, instead the compressed state is built up in the background and replaced on the fly.
 * Fix: Make joining through a direct link not put the desktop client into single-session mode. Thanks Bluestrings for reporting.
 * Fix: Work around Huion tablets emitting mouse clicks every few pen presses and causing full-pressure strokes to be started. Thanks Blozzom, DT and and Dumb Dog Disease for reporting.
 * Feature: Toggle layer visibility action, available in the Layer menu. Mostly useful to let assign a keyboard shortcut to it. Thanks incoheart for suggesting.
 * Feature: Remember ranges set for MyPaint brushes in the settings editor, rather than implicitly fitting them to the curve. Thanks Verdrusk for suggesting.
 * Server Feature: Provide more session status information for administrators, such as the autoreset state.
 * Feature: Allow importing MyPaint brushes in old version formats instead of saying they contain invalid JSON. Thanks bunnie for suggesting.
 * Feature: Attach brushes to slots, showing which brush you selected and remembering changes to them. This attachment can be disabled in the tool preferences.
 * Feature: Allow configuring the number of brush slots in the tool settings, from 1 to 9, in addition to the everpresent eraser slot. Thanks vipperz for suggesting.
 * Fix: Clamp palette swatch sizes to more reasonable bounds. Thanks MachKerman for reporting.
 * Server Feature: Allow checking session, operator and server account passwords via the API. This can be used to password-protect recordings or similar. Thanks Meru for contributing.
 * Fix: Correct some UI scaling problems with brush outlines, canvas centering, dock toggling, pixel grid and transform handles. Thanks annoy for reporting.
 * Feature: Extended touch tap gestures, among them two-finger tap to undo, three-finger tap to redo and tap-and-hold to summon the color picker. Can be configured in the preferences under the Touch tab. Thanks InconsolableCellist and many others for suggesting.
 * Feature: Snap canvas rotation around 0° by default. If you don't want this, you can set the canvas shortcut or touch rotation to "free rotate canvas" instead.
 * Feature: Show a color preview when picking a color from the canvas. Can be toggled in the tool preferences.
 * Fix: In layer view mode, render the layer truly in isolation instead of applying opacities, visibilities or alpha preserve to it. Thanks MachKerman and incoheart for reporting.
 * Feature: Add Layer > Group View to show the parent group of the current layer in isolation. Thanks Rylan for suggesting.
 * Fix: Save and export images according to the current view mode. Thanks incoheart for reporting.
 * Server Fix: Don't get announcement refreshes stuck in an infinite loop. Thanks Meru for reporting.
 * Fix: Make MyPaint brushes not ignore the first stroke made with them. This would also sometimes lead to a blank preview.
 * Feature: Allow choosing between a round and square expansion/shrinking kernel in flood fill, magic wand and when altering a selection. The latter is particularly useful for pixel art. Thanks Bigcheese and MorrowShore for suggesting.
 * Fix: Don't ignore double-clicks when toggling layer visibility or check state. Thanks Chryssabliss for reporting.
 * Feature: Put all shortcuts onto a single settings page, showing conflicts between them better. Allow searching for shortcuts by name and keybinding, as well as filtering out only conflicts. Thanks MajorCooke for suggesting parts of this.
 * Feature: Allow assigning keyboard shortcuts to brushes. Assigning the same shortcut to multiple brushes will toggle through them. Thanks annoy for suggesting.
 * Server Feature: Integrate with systemd watchdog.
 * Fix: Make user interface scaling not round to multiple of 100% anymore. Thanks blau, Buch, Chryssabliss and ShotgunnerFox for reporting.
 * Fix: Don't use system message boxes on Android, since they behave in various broken and nonsensical ways, like showing you a yes button three times.  Thanks Hopfel for reporting.
 * Feature: Use hardware renderer on Android by default.
 * Fix: Don't unnecessarily scale full-canvas animations by a single pixel.
 * Feature: Replace GIF export with ffmpeg's libraries, since they are also used for videos. It's way faster, generates much better palettes and supports transparent backgrounds. Thanks dAVePAGE and JJ for reporting issues in this regard.
 * Fix: Constrain aspect ratio of transform scaling properly, it was getting offset by the distance between the clicked point and the actual corner. Thanks Blozzom for reporting.
 * Feature: Allow configuring flood fill preview and confirmation behavior, defaulting to the simplest mode similar to single-user software, but still previewing fills locally first. The magic wand always works this way for now, since selections are local only anyway.
 * Feature: Show resize dialog when expanding canvas, to avoid accidental resizes and improve performance by doing the expansions all in one step. The keyboard shortcuts to expand the canvas work in this dialog now and also auto-repeat if you hold them down. Thanks Bluestrings and tobiasBora for suggesting things in this regard.
 * Fix: Indicate denied permissions by showing a message to that effect, rather than just disabling the actions and leaving you guessing. Thanks Venesio for reporting.
 * Fix: Clicking off of an annotation will no longer instantly create a new one in that spot. It will instead only deselect the annotation that was selected.
 * Fix: The Delete Empty Annotations can now be undone without undoing what happened before it as well.
 * Feature: Empty annotations are now automatically deleted when you deselect them, to avoid the common clutter of stray empty annotations across the canvas. If you really did want an empty annotation, you can hit undo and it will return.
 * Server Feature: Setting a minimum protocol version of dp:4.24.0 now tells clients that they're using a Drawpile version too old for this server, rather than leaving them sitting at a session list where they can join no sessions.
 * Feature: Allow clicking and dragging the fill and magic wand tools to adjust the tolerance.
 * Fix: Make mouse click canvas shortcuts not override key canvas shortcuts. Thanks incoheart for reporting.
 * Server Feature: Always allow server admins, moderators and users with the new PERSIST flag to toggle session persistence. The global persistence setting still allows anyone to toggle this. Thanks Bluestrings for suggesting.
 * Server Feature: Allow admins to specify a linger time for empty sessions, which will let even non-persistent sessions live on for that time to allow people a chance to reconnect.
 * Server Feature: Add API endpoints to get and create session listings. Thanks Meru for contributing.
 * Fix: Make login dialog not spill off-screen on mobile devices.

2024-08-09 Version 2.2.2-beta.3
 * Fix: Use more accurate timers for performance profiles if the platform supports it.
 * Fix: Don't try to update the roles list before becoming an operator, which could lead to a crash. Thanks Bluestrings for reporting.
 * Fix: Don't update sessions that were just added to the session browser, since that can lead to a crash because of what is probably a bug in Qt's filtering and sorting. Thanks Bluestrings for reporting.
 * Feature: Turn too large transforms into cut and paste operations instead of cancelling them outright.
 * Fix: Make frame import not create a track with an invalid ID that messes up the UI. Thanks BulletPepper and greendyno for reporting.

2024-08-04 Version 2.2.2-beta.2
 * Feature: Allow choosing a different cursor for erase and alpha locked brushes. Thanks Hipofiz and Rylan for suggesting.
 * Server Fix: Properly sever connections on read, write and timeout errors.
 * Fix: Load annotations from ORA files saved by Drawpile 2.1 properly. Thanks RyanMolyneux for reporting.
 * Feature: Ignore inputs with invalid pressure during strokes. Thanks Lunalatte for reporting.
 * Server Fix: Handle sessions running out of space better, they should no longer end up in an unrecoverable state. The messages in chat are also now translatable, more informative and don't get spammed for every command. Thanks Bluestrings and Charmandrigo for reporting.
 * Feature: Lock canvas when the session is out of space, showing an appropriate message in the corner, rather than letting you continue drawing. The server needs to be updated for this to be available.
 * Server Fix: Make catchup not take pointlessly long when the session is out of space.
 * Feature: Add a message to the reset dialog that you need to be an operator to reset the session, since it's not too clear why the button is disabled otherwise.
 * Feature: Make fill source selection a set of buttons for merged image, merged without background and layer, using the dropdown only for the latter thereof. The checked button will be remembered. Thanks Blozzom, Bluestrings and Meru for suggesting.
 * Feature: Default redo to both Ctrl+Y and Ctrl+Shift+Z on Windows, Linux and the browser. Thanks Crow for suggesting.
 * Fix: Brighten up transparency checkerboard to be a bit easier on the eyes. Thanks Crow for suggesting.
 * Server Feature: Allow registered users to replace themselves when rejoining a session, rather than telling them that their own name is in use. Avoids having to wait for their old self to time out if their internet flakes. Thanks Crow for suggesting.
 * Fix: Don't fail server compilation when turning off webadmin or WebSockets. Thanks leegean for reporting.
 * Fix: Save and load annotation vertical alignment to and from ORA files.
 * Fix: Put a transparent background behind flat images, rather than using white. Thanks lungy for reporting.
 * Fix: Make pasting images from Drawpile into other applications retain transparency on Windows. This is really a bug in those other programs, they pick the wrong format by default, but whatever. Thanks lungy for reporting.
 * Feature: Allow configuring the transparency checkerboard colors in the user interface preferences. Thanks lungy for suggesting.
 * Fix: Don't reselect and scroll back to default layer after interacting with the layer list by picking a layer or toggling visibility. Thanks MachKerman and Ben for reporting.
 * Fix: Load PNGs even when they have corrupt checksums. Thanks xxxx for reporting.
 * Feature: Allow copying multiple entries from the event log. Thanks Bluestrings for reporting.
 * Feature: Allow toggling vertical sync in the user interface preferences. Default is off, because it can cause input lag.
 * Feature: Web browser support for the client.
 * Feature: New hardware and software canvas renderers. The hardware renderer is much faster than the old one, especially in the browser. Uses Direct3D on Windows, WebGL in the browser and OpenGL on all other platforms. The software renderer is slightly faster than the old one, useful for cursed hardware or drivers that cause input lag or visual glitches. This is an experimental feature and can be enabled in the General preferences under Renderer.
 * Feature: Add system information dialog under Tools > Developer Tools > System Information.
 * Feature: Hide user pointers when they get close to your cursor. Can be toggled under View > User Pointers > Hide From Cursor. Thanks Crowley for suggesting.
 * Feature: Allow filling non-continuous areas. Thanks Ben for suggesting.
 * Fix: Make rotation via View > Rotation > Rotate Canvas (Counter-)Clockwise work properly when it's mirrored or flipped. Thanks Ragged for reporting.
 * Feature: Allow disabling the zoom, rotation, mirror and flip on-canvas notices in the User Interface preferences. Thanks Partack for suggesting.
 * Feature: Allow configuring user pointer stay time through View → User Pointers → Stay Time. Thanks johannesCmayer for suggesting.
 * Feature: Allow prompting for layer properties when creating a layer. Can be turned on in the User Interface preferences. Thanks Ben for suggesting.
 * Fix: Focus existing layer properties dialog if one exists for the layer that properties are requested for.
 * Feature: Name layers after the username of the creator by default.
 * Fix: Don't use bilinear interpolation when selection is only moved, rotated by a multiple of 90 degrees, flipped or mirrored, to avoid unnecessary blurring. Thanks lungy for reporting.
 * Feature: Don't require restarting the application when changing kinetic scrolling settings.
 * Fix: Change default canvas size to 2000x2000, because 800x600 is a bit outdated. Thanks MorrowShore for for contributing.
 * Feature: Don't require restarting the application to switch between desktop and small screen mode. There's also a "dynamic" option now, which will change the mode based on the size of the window, enabled by default on Android and in the browser.
 * Feature: Pan or "hand" tool. Lets you move the canvas around by clicking. Thanks DeeJii for suggesting.
 * Fix: Don't move view position when pressing side buttons in small screen mode.
 * Feature: Show a proper explanation when you can't join a session.
 * Fix: Make autosave interval actually be in minutes, not in seconds because that's ridiculous. Thanks D'mitri for reporting.
 * Feature: Add -U/--uncensor parameter to drawpile-timelapse to allow revealing censored layers.
 * Fix: Reduce contrast on censor tile stripes to make them less annoying to look at.
 * Server Feature: When you pass an option that's not compiled in, the error message will not inform you of that fact, rather than just saying you passed an unknown option with no further information.
 * Feature: On Windows and Linux, new windows now open in a separate process, since that's more efficient and resilient. Can be disabled by setting the DRAWPILE_SINGLE_PROCESS environment variable. Thanks Bluestrings for suggesting.
 * Fix: The main window should now properly restore to its previous position even when that's on a secondary screen. Thanks Moe for reporting.
 * Removed Feature: Roomcodes. They are a vestige from a time where Drawpile only had a single, central listing server. Nowadays nobody uses these anymore, invite links are the replacement.
 * Feature: Disable global smoothing for mouse drawing by default, since that really only make sense for tablets and touch. Can be toggled in the input preferences. Thanks nililfin for suggesting.
 * Feature: Always show drawing tools toolbar in small screen mode. Thanks Blozzom for suggesting.
 * Fix: Increase contrast on depressed buttons in dark themes. This is a patch to Qt. Thanks MorrowShore for reporting.
 * Fix: Switch out the icon for the extension buttons on squashed menus and toolbars so that they're actually visible in dark themes. This is a patch to Qt.
 * Feature: Make canvas zoom slider use the same increments as the mouse wheel and zoom in/out actions, since stepping by 1% is not useful. Thanks zheida for suggesting.
 * Fix: Work around a crash on Linux that happens when hosting with busted versions of Qt 6.6+. Thanks Vanska for reporting.
 * Fix: Allow tabbing the main window on macOS again, for some reason Qt disabled it. This is a patch to Qt. Thanks mira for reporting.
 * Feature: Pixel ruler, available under View > Show Rulers. Thanks fluttershydev for contributing.
 * Fix: Ignore mouse clicks caused by briefly touching the canvas on some devices on Windows. Thanks sfin for reporting.
 * Feature: Translate links copied out of the browser version of Drawpile into something that can be joined when they are pasted into the join page.
 * Feature: Better small-screen mode handling. The toggle items now no longer overlap, dialogs get maximized if appropriate, the start and settings dialogs get arranged horizontally.
 * Feature: Rework selections and transforms entirely. They're now distinct operations. Selections participate in the undo stack.
 * Feature: Allow toggling between accurate and fast transform previews. The former is the current kind of preview that actually gets previewed on the layer, the latter is like in Drawpile 2.1, where it's just a vector image drawn on top of everything.
 * Feature: Allow picking blend modes and opacity when pasting, stamping and transforming. Thanks blurymind for suggesting.
 * Feature: Show layouts action in dock menus. Thanks Elisa for suggesting.
 * Fix: Set TCP_NODELAY on sockets to reduce unnecessary latency.
 * Feature: Build option -DPROXY_STYLE=ON to fix the bad contrast in dark themes when not building a patched version of Qt yourself.
 * Fix: Disable the image memory limit when using Qt 6, because that breaks the loading large files. Thanks LiterallyMe for reporting.
 * Feature: Indicate fill source in layer list.
 * Fix: Make canvas lock and layers not lock tools that don't actually act on them.
 * Feature: Allow transforming multiple layers at once.
 * Feature: Make creating a key frame layer copy the layer structure of the closest frame if that's assigned to a layer group. Thanks Ausjamcian for suggesting.
 * Fix: Don't overwrite last file on save after resetting the canvas to an external image. Thanks Bluestrings for reporting.
 * Fix: Ignore bogus mouse clicks emitted by some tablets after briefly tapping the pen on them. Thanks Ausjamcian for reporting.
 * Fix: Make the window fit itself to the screen harder in the browser and on Android. There's also an option under View -> Fit to Screen now to manually force it to do so. Thanks Sidca for reporting and Meru for testing.
 * Feature: Allow importing animation frames from multiple files and as layers from PSD files, to be found under File -> Import. Thanks Meru, BulletPepper, Ben and RubberRoss for suggesting.
 * Feature: Extend animation export to be a dialog where you pick the format. You can now export frames to a ZIP, allowing Android and the browser to save a series of frames as well. Exporting to MP4 and WEBM videos as well as animated WEBP is also implemented via ffmpeg's libraries.
 * Feature: Magic wand select tool. Basically a fill tool, but for selections. Thanks ChristianJohnsten for suggesting.
 * Fix: Properly remember NSFM setting in host dialog. Thanks Bluestrings and cupcake for reporting.
 * Fix: Properly check NSFM setting in host dialog based on title if that is configured in the parental controls preferences. Thanks Bluestrings for reporting.
 * Fix: Behind blend mode now does opacity math correctly. Thanks Blozzom for reporting.
 * Fix: Allow cancelling fill tool with right-click even when that's bound to something else. Thanks SadColor for reporting.
 * Feature: The fill tool now previews fills instead of doing them immediately, allowing cancelling and changing layers before applying it. You can also pick more blend modes, change the opacity and fill the entire selection with it now.
 * Fix: Make layer picking work properly in frame mode, it picked the bottom-most instead of the top-most one.
 * Feature: Add View > Show Selection Mask, which lets you view selections as a solid mask instead of an outline. This lets you see opacity properly.
 * Removed Feature: Zeroconf support, an obscure LAN-only discovery thing that wasn't working anymore anyway.
 * Fix: Make the fill tool not feather along canvas edge. Thanks Meru for reporting.
 * Server Feature: Allow specifying idleOverride and allowWeb in session templates. Thanks MorrowShore for suggesting.
 * Feature: Allow shrinking fills and magic wand selections. Thanks Meru for suggesting.
 * Feature: New dialog Selection > Expand/Shrink/Feather Selection that alters selections accordingly. Thanks MorrowShore for suggesting.
 * Feature: Zooming with keyboard shortcuts now zooms in on the cursor when it's pointing at the canvas. If you don't like this, there's new shortcuts that always zoom on the center, which you can bind in the preferences. Thanks Chryssabliss for suggesting.
 * Feature: Make header and footer buttons on docks stretch further if there's empty space, making them easier to hit. Thanks MorrowShore for suggesting.
 * Fix: Properly truncate files when writing them on Android to avoid corruption from leftover junk at the end.
 * Feature: Allow cropping in the drawpile-timelapse command-line tool using -x/--crop.
 * Fix: Compensate for discontinuity in the classic soft brush radius to make the transition look less bumpy. Thanks BulletPepper for reporting.
 * Feature: Make color sliders dock smaller by showing only one set of sliders at a time and add an input field for a hex color name. Thanks Kawaxte and MorrowShore for suggesting.
 * Fix: Don't switch tools while typing into text fields in some situations. Thanks leopardheart982 for reporting.
 * Fix: Give color wheel, color palette and navigator docks a minimum size so that they can't be shrunken into nonexistence. Thanks vipperz for reporting.
 * Fix: Don't remove layer censors when resetting sessions hosted on the builtin server. Thanks O_O for reporting.
 * Server Feature: Allow changing session founder names through the admin API.
 * Feature: Don't pop open chat for session auto-resets, just show a note in the corner of the canvas. Needs both client and server to be updated.
 * Feature: Support reading and writing WEBP files.
 * Feature: Enable high-DPI scaling by default on all platforms except Android. Can be disabled in the user interface preferences if needed.
 * Fix: Default kinetic scrolling on Android to touch instead of left click, since the latter conflicts with stuff like dragging layers.
 * Fix: Allow importing role lists larger than 100 entries, since public sessions have those. Thanks kale for reporting.

2024-02-25 Version 2.2.2-beta.1
 * Server Feature: Allow adding a message when kicking someone through the admin API.
 * Fix: Don't mess up strokes when hitting undo while still actively drawing them. Thanks Sinamer for reporting.
 * Fix: Properly reset angle when undoing a point with the curve tool.
 * Server Feature: Log more a more detailed reason when a client is disconnected, since something like a login error can have many causes.
 * Feature: Indicate the difference between self-signed and "real" server certificates.
 * Fix: Rename "trusted hosts" to "pinned certificates", because that's what they are.
 * Fix: Make floating docks stay on top of the main window on macOS. Thanks 6ix for reporting and testing.
 * Feature: Add a dual color button, showing the foreground and background color, with the ability to set, swap and reset them.
 * Feature: Add "merged without background" as a source for the flood fill tool.
 * Server Fix: Include allow web flag when listing a session.
 * Server Fix: Update active drawing users when refreshing a session listing.
 * Fix: Make WebSockets compile under Qt < 6.5. Thanks kiroma for reporting.
 * Server Fix: Properly start extbans checks when running via systemd. Thanks Bluestrings for reporting.
 * Server Feature: Warn if a command-line argument was ignored due to systemd sockets being used instead.
 * Fix: Show web join allowance checkbox in session settings properly, it didn't show up if disabled before.
 * Server Feature: Allow making joining via the browser dependent on if the session has a password or not.

2024-02-18 Version 2.2.1
 * Fix: Default to previous directory when saving a fresh file. Thanks Crow for reporting.
 * Feature: Allow toggling performance-related canvas view settings, since some systems get slowdowns. Thanks DevonJP for reporting.
 * Fix: Don't force TLS socket algorithms, since ECDSA certs seem to not like them. Thanks Bluestrings for reporting.
 * Fix: Log message queue read, write and timeout errors properly. Thanks Pepper for reporting.
 * Feature: Implement WebSocket support in the server, available with the --websocket-port and --websocket-listen options.
 * Feature: Send keepalive messages from the server, if the client indicates support for it. Avoids them disconnecting when too busy uploading to send a ping.
 * Feature: Active user counts for sessions. A user counts as active if they drew in the last five minutes.
 * Feature: Make invite links indicated web client capability and NSFM-ness of sessions so that the invite page can show a "join in the browser" button and an appropriate notice respectively. Thanks Blozzom for suggesting the latter.
 * Fix: Properly handle cancelling a connection while it's being established. Thanks Fox for reporting.
 * Server Fix: When hosting without an account is enabled, also allow it for anyone *with* an account. Thanks ahaven for finding this.
 * Fix: Don't resize brush settings unnecessarily larger when switching between brush types. Thanks Meiren for reporting.
 * Fix: Try to handle switching between tablet pen and eraser more consistently. Thanks Daystream for reporting.
 * Feature: Add next and previous key frame actions, allowing skipping between key frames in the current track. Thanks BulletPepper for reporting.
 * Fix: Properly refer to "layer" and "layer group" in layer actions depending on what is selected. Thanks Momo for reporting.
 * Fix: Save censored layers into PSDs properly. Thanks Blozzom for reporting.
 * Fix: Don't allow copying, cutting and color picking from censored layers.
 * Fix: Rotate brush and fill outline along with the canvas. Thanks Bluestrings for reporting and xxxx for helping solve some issues with it.
 * Feature: Add experimental support for high-DPI interface scaling.
 * Fix: Don't reset opacity multiply inputs to default when loading a brush that doesn't have it set. Thanks Blozzom for reporting.
 * Fix: Limit MyPaint brush dab counts to more sensible values, since the defaults from MyPaint are pointlessly high and can cause chugging. Thanks Blozzom for reporting.
 * Fix: Don't blink last user cursors again when making a selection.
 * Fix: Make user cursors trail MyPaint brush strokes better, only smoothing it out when there's jitter. Thanks Blozzom for reporting.
 * Feature: Show latency in the status message, next to the session size and cursor coordinates. Thanks Meiren for suggesting.
 * Feature: Add action to pick color from screen, default shortcut is Shift+I. Thanks Meru for suggesting.
 * Feature: Allow switching the current brush to erase mode when using the tablet pen eraser instead of switching to the eraser tool slot. The setting for this is in the Input settings.
 * Feature: Make the Windows installer put a shortcut on the desktop.
 * Fix: Widen the stripes of the censor pattern so that it's easier on the eyes. Thanks Ben for reporting.
 * Fix: Don't remember uncensor layers across restarts, to avoid being exposed to things you didn't want to just because you forgot to toggle it back off.
 * Fix: Properly show censored layers in the list even when they are revealed.
 * Server Fix: Allow reading users' trusted status through the API, because it's something you can write through it.
 * Server Feature: Allow limiting the maximum number of users per session. Moderators and administrators can override this.
 * Server Fix: Time out clients that take too long to disconnect gracefully. Thanks Bluestrings for reporting.
 * Fix: Properly apply layer properties if the layer changed since opening them.
 * Feature: Show last joined address in join dialog.
 * Fix: Hide disconnection banner after establishing connection to a session.
 * Fix: Make censoring layer groups actually have an effect.
 * Fix: Don't use 64 bit stuff in 32 bit Windows installer.
 * Fix: Don't break pinned start menue shortcuts when updating on Windows. Thanks Bluestrings and anonymous for reporting.
 * Server Fix: Don't report temporary server bans as permanent. Thanks Bluestrings for reporting.
 * Server Fix: Properly convert between IPv4 and IPv6 when checking IP bans. Thanks Bluestrings for reporting.
 * Fix: Use proper measurements to decide on how much painting to do in a single step, hopefully preventing chugging caused by certain brushes.
 * Server Fix: Save catchup keys to file-backed sessions so that the counter doesn't reset upon a server restart.
 * Fix: Don't show user cursors while catchup dialog is open.
 * Feature: Add some bulk permission commands for (un)trusting and setting layer tiers, explanation available through /modhelp. Thanks Bluestrings for suggesting.
 * Fix: Don't gray out layer ACL tier settings when a layer is assigned to users exclusively, since those settings are not exclusive.
 * Fix: Don't include stuff from before session reset when restarting a recording because of one. Thanks Meiren for reporting.
 * Fix: Don't overwrite recordings on Windows if the file names contain non-ASCII symbols. Thanks Meiren for reporting.
 * Fix: Make log file on Windows log non-ASCII symbols properly.
 * Fix: Don't reorder listing servers when sorting by title in the browse tab.
 * Feature: Remember last sorting on the browse page. Thanks Bluestrings and Meiren for suggesting.
 * Fix: Only ask for confirmation when a self-signed TLS certificate changes, not when a "real" one renews. Thanks Bluestrings and Pepper for reporting.
 * Feature: Fill background for copying the merged image with a non-rectangular selection. Thanks Bluestrings for suggesting.
 * Fix: Make bezier curve tool generate smooth curves at small sizes, rather than getting jaggy. Thanks Crow for reporting.
 * Server Feature: Allow server owners to kick users not connected to a session.
 * Fix: Make navigator slider not eat keyboard inputs when navigator is undocked. Thanks anonymousduck for reporting.
 * Fix: Disregard hidden frames when rendering animations. Thanks Etide for reporting.
 * Server Feature: Log when a wrong password is entered for server accounts and sessions, disconnect the user after too many wrong tries.
 * Server Fix: Log client host and join attempts even when unsuccessful. Thanks Bluestrings for reporting.
 * Fix: Load default settings values after the program has initialized, avoiding crashes that can happen on Windows when building in debug mode. Thanks kiroma for reporting and testing.
 * Feature: Optimize classic brush calculation, making them a good chunk faster. Thanks kiroma for contributing.

2024-01-13 Version 2.2.0
 * Server Fix: Add --ssl-key-algorithm parameter to allow non-RSA SSL keys, defaulting to guessing the most common formats RSA and EC. Thanks Bluestrings for reporting.
 * Fix: Make pressure-less mode work with pens on Android. Thanks molluscdotgov for reporting.
 * Fix: Don't start dragging keyframes when they're moved only a minuscule amount. Thanks Meru for reporting.
 * Fix: Remove duplicate port from displayed network address when hosting under a non-default port. Thanks SadColor for reporting.
 * Fix: Keep focus on brush sliders when typing into them. Thanks MachKerman for reporting.
 * Server Feature: Allow setting web admin auth through DRAWPILESRV_WEB_ADMIN_AUTH environment variable. The --web-admin-auth parameter takes precedence.
 * Fix: Show the fill tool size limit rectangle even when the outline width is set to zero pixels. Thanks Blozzom for reporting.
 * Server Fix: Show an error message if listing on a certain server is not allowed.
 * Fix: Unlist sessions more reliably when terminating sessions hosted "on this computer". Thanks to Buch for helping figure this out.
 * Fix: Don't select a newly created layer when there's a default layer.
 * Fix: Give the timeline dock a sensible minimum height. Thanks Kink for reporting.
 * Fix: Don't exit the program in the pathological case of initiating a quit, being prompted to save, cancelling the save dialog and then saving again.
 * Fix: Properly update current layer fill source when switching layers.
 * Fix: Cap the number of threads used for parallel processing, because 128 core CPUs exist.
 * Fix: Move back button in login dialog to the left side. Thanks Blozzom for reporting.
 * Fix: Properly forget password when editing account and unchecking the "remember password" box. Thanks Meru for reporting, as well as Bluestrings and Blozzom for finding issues with the fix.
 * Fix: Apply chosen interpolation to pasted images. Thanks Deovise and Hipofiz for reporting.
 * Fix: Properly disable Session > Reset option when there's no canvas present that could be reset.
 * Fix: Allow opening PSD files and importing Drawpile 2.1 animations on Android. Thanks ariqhadiyan for reporting.
 * Server Fix: Prevent users from being assigned permission flags they're denied by the server configuration, which could lead to a weird superposition of being flagged as a moderator, but not actually having moderator permissions. Thanks Bluestrings for reporting.
 * Fix: Don't act like the user entered incorrect account credentials if a session unexpectedly requires a password. This only happened with either amazingly bad timing or in the superposition described above. Thanks Bluestrings for reporting.
 * Fix: Don't leave one-finger touch setting blank when "do nothing" is selected. Thanks BornIncompetence for reporting.
 * Fix: Shorten and normalize debounce delay to be 250 milliseconds for the layer opacity/blend mode, onion skins and timeline controls, rather than being a bunch of different values. Thanks robotto for reporting.
 * Fix: Remember invite link type setting properly. Thanks Bluestrings for reporting.
 * Fix: Try to keep the start dialog behind other dialogs it spawns harder. Thanks Bluestrings and shablagoo for reporting and Buch for finding issues with the fix.
 * Fix: Use a single palette in GIF export to prevent flickering. The palette is generated from the merged image. Thanks Hopfel and Bluestrings for reporting.
 * Feature: Allow configuring the eraser tip to switch the current brush to erase mode, rather than switching to the eraser tool. Thanks Seeksie for causing this.

2023-12-08 Version 2.2.0-beta.11
 * Server Fix: No longer show "cannot look up one session and then join another" when joining a session with an ID alias. Thanks Kink and Fabian for finding this.
 * Fix: Actually disable brush taking in 2.1 sessions, last attempt didn't stick. Thanks again Blozzom for reporting.
 * Fix: Also show mute notifications action when right-clicking the chat. Thanks Blozzom for reporting.
 * Fix: Make brush palette less immensely slow. Thanks lowontrash for reporting.
 * Fix: Show kick and ban messages in the correct order, without duplicates. Thanks xxxx for reporting.
 * Fix: Force the canvas to refresh on resize even harder because some systems still get artifacts. Thanks xxxx for reporting.
 * Fix: Default the mouse wheel to pan the canvas on macOS instead of zooming it, since that makes more sense for its two-dimensional scroll wheels. Thanks Charmandrigo for reporting.
 * Fix: Make Apple Magic Trackpad and hopefully other touch pads work. Thanks Charmandrigo for reporting and helping figure this out.
 * Fix: Add a close button to the tablet tester, playback, event log and flipbook dialogs so that it can be closed on Android and other systems without window decorations without having to press some button or key combination.
 * Fix: Enable fingerpainting on Android by default if the device doesn't have a stylus.
 * Fix: Prefer versioned lconvert executable over unversioned one to make things work on Fedora. Thanks lowontrash for reporting.
 * Fix: Look in source directory for assets when building, making running from the build directory possible. Can be turned off with -DSOURCE_ASSETS=OFF. Thanks Meru, lowontrash and probably others for running into issues with this.
 * Fix: Make large circles and curves drawn with the circle and curve tool not look all jaggy.
 * Fix: Make large rectangles close properly with MyPaint brushes. Thanks haxekhaex2 for reporting.
 * Fix: Allow horizontal scrolling in the preferences dialog so the close button doesn't get thrown off-screen on mobile. Thanks Xkower for reporting.
 * Fix: Allow scrolling of preferences and start dialog sidebar.
 * Fix: Move preferences dialog sidebar to the top on macOS and to the bottom on Android, to fit better with how those systems work. Thanks Snover and Xkower.
 * Fix: Make copying and pasting work on Android. Thanks ariqhadiyan for reporting.
 * Fix: Open files in the background to avoid "not responding" warnings. Thanks ariqhadiyan for reporting.
 * Fix: Force main window to fit screen on Android whenever the docks change, to avoid spills beyond the edge of the screen. Thanks Xkower for reporting.
 * Fix: Don't load ORA files in parallel on Android. This is slower, but avoids the application getting terminated for using too much memory. Thanks ariqhadiyan for reporting.
 * Fix: Make keyboard modifiers work better on Android. Thanks ariqhadiyan for reporting.
 * Fix: Default Export Image option to export as PNG instead of ORA, because that's what that option is for. Thanks SadColor for reporting.
 * Feature: Add libera.chat link to start dialog.
 * Fix: Properly restore avatar again when reconnecting to a session on a 2.1 server. Thanks xxxx for reporting.
 * Fix: Make kinetic scrolling work in brush editor categories list.
 * Fix: Make canvas rendering not get stuck when switching frames really quickly. Thanks Kink and Hopfel for reporting.
 * Fix: Update color swatch when using fill selection, recolor selection and color erase selection.
 * Fix: Only update color swatch when using tools that actually put those colors on the canvas.
 * Fix: Make color palette swatch select last used color so that it doesn't get stuck when switching brush slots. Thanks Meru for reporting.
 * Fix: Make Copy Merged and Copy Without Background from a floating selection work again. Thanks Meru for reporting.
 * Fix: Make Export Selection, Copy Merged and Copy Without Background adhere to current view mode. Thanks Bovy for reporting.
 * Fix: Make fill tool adhere to current view mode (minus onion skins) when using Merged Image as the source. Thanks Meru for reporting.
 * Fix: Don't crash when changing saturation in color dialog when using HSL or LCH color models. Thanks Meru for reporting.
 * Fix: Don't deadlock when saving and clearing password fallback.
 * Feature: Shortcut login flow on servers that only support guest and internal account logins.
 * Feature: Allow changing tablet driver through Edit menu on Windows.
 * Fix: Reset floating selection when filling it to avoid weird effects if the fill is inside the originally selected area. Thanks Meru for reporting.
 * Fix: Properly load annotations and timeline from ORA files without a background. Thanks MyaThingoss for reporting.
 * Feature: Add a Tablet Setup link in the start dialog.
 * Fix: Don't hide dock titlebars when pressing shift when a text field is in focus, since that might hide a field you're currently typing in. Thanks Trite for reporting.
 * Fix: Disable Hold Shift to Arrange by default, since it's not needed most of the time.
 * Fix: Don't claim every username is taken when connecting to a server with the old login flow doesn't allow guest logins, instead tell the user that they need an account. Thanks Meru for reporting.
 * Fix: Give checkbox outlines more contrast, since they're virtually invisible in most themes. This is a patch to Qt.
 * Fix: Change italic to bold text, since the former is not readable in Chinese script.
 * Fix: Make keep aspect ratio checkbox in resize dialog keep the current aspect ratio, not the original one.
 * Fix: Don't act like keep aspect ratio is checked when resizing from a selection. Thanks Meru for reporting.
 * Fix: Make onion skin color partially transparent by default so that they don't turn into solid blocks on colored stuff. Thanks BulletPepper for reporting.
 * Fix: Clarify the host dialog by adding additional messages that explain common sources of confusion, such as the title being required, disallowing invite links as the title, the password being necessary to host a private session and "host on this computer" requiring port forwarding.
 * Fix: Prevent jittering pixels on the canvas at certain zooms and rotations. Thanks Bluestrings, Meru and taiyu for reporting this. Also thanks Meru for actually finding the solution and contributing this fix.
 * Fix: Don't reset brush mode when clicking on the freehand tool button from a different tool. Thanks Big Piston for reporting.
 * Fix: Render annotations when saving to PNG and JPEG. Thanks chrystalclear and Rykuta for reporting.
 * Fix: Don't reset annotation settings to weird values when there's no text. Thanks Blozzom for reporting.
 * Fix: When hiding a layer group, indicate that all containing layers are hidden too. Thanks Missile for reporting.
 * Fix: Take scroll into account when reordering tracks. Thanks Meru for reporting.
 * Fix: Show proper ext-auth URL when prompting for a login. Thanks xxxx for reporting.
 * Fix: Properly show server info URL as a clickable link when prompting for a login.
 * Feature: Focus the input field on the Join page when switching to it so that you can immediately paste a link without having to click it.
 * Fix: Handle view mode changes (frame view, onion skins etc.) properly in drawpile-cmd and drawpile-timelapse tools.

2023-11-12 Version 2.2.0-beta.10
 * Fix: Don't deadlock on first startup. Thanks to Hail, lowontrash, FARBOL234, Dorokinyo and hamlin for reporting.
 * Fix: Disable brush taking in 2.1 sessions. Thanks Blozzom for reporting.

2023-11-11 Version 2.2.0-beta.9
 * Fix: Make Android build work again. Thanks Tetriser for reporting.
 * Fix: Allow indirect mode in 2.1 sessions when opacity dynamics are disabled. Thanks to Blozzom for reporting.
 * Fix: Make LCH color wheel circle not look so bright and discontinuous.
 * Fix: Refresh canvas view harder on resize to avoid artifacts on some systems. Thanks xxxx for reporting.
 * Fix: Use proper background color in resize dialog. Thanks xxxx for reporting.
 * Fix: Correct a rounding error when converting pixels for display. This corrects both the visuals and the color picker when picking from the merged image. Thanks deovise and hipofiz for reporting.
 * Fix: Don't crash when a new user joins when using the builtin server and a local fork is present. Thanks to Kink for reporting.
 * Feature: Interpolate inputs that are far away from each other to compensate against fast strokes producing jagged curves. Can be disabled in the input preferences.
 * Fix: Make build directories outside of the source directory work again. Thanks Aquargent for reporting.
 * Fix: Properly handle modifier key releases for keyboard canvas shortcuts. Thanks Daystream for reporting.
 * Server Feature: Implement a shared bans system, letting owners of multiple servers manage a single list instead of having to keep them in sync manually. Thanks Bluestrings for suggesting.
 * Server Feature: Allow exempting users from ban ranges, to help alleviate false positives.
 * Fix: Make IPv6 addresses work in invite links.
 * Fix: Properly add drawpile:// in front of direct invite links when hosting "on this computer".
 * Feature: Support reading and writing Photoshop Document (PSD) files. Thanks pachuco, onyx, Geese and probably others for suggesting. Thanks xxxx for helping getting it compatible with other software.
 * Fix: Make MyPaint brush permission not deny drawing with classic brushes. Thanks xxxx for reporting.
 * Fix: Offer to crop all avatars, not just non-square ones. Thanks Bluestrings for reporting.
 * Feature: Allow adding labels onto brush preset thumbnails. Thanks Paris Green for causing this.
 * Fix: Don't restore flipbook to previous location and size if that would put it outside of any available screen. Thanks Ausjamcian for reporting.
 * Server Feature: Allow exporting and importing session bans. They are encrypted with a per-server key by default. Thanks tincancrab for suggesting.
 * Fix: Prevent banning yourself from sessions.
 * Server Feature: Allow moderators to exempt sessions from the idle timeout. This ability can be disabled by server owners. Thanks Bluestrings for suggesting.
 * Fix: Show proper reasons when a session is terminated, rather than always claiming the server is shutting down.
 * Server Feature: Allow specifying a reason when terminating a session manually.
 * Fix: Squash whitespace in session listings to prevent funky display. Thanks yeen for reporting.
 * Server Fix: Error out when invalid --extauth parameter is given to drawpile-srv. Previously it would just keep going and simply not work without any indication as to why. Thanks RAINTARD for running into this.
 * Feature: Allow exporting images, which saves them without setting the current file or warning about the image being merged together.
 * Feature: Disable selection-dependent menu items (Deselect, Fill Selection etc.) when no selection is present.
 * Server Feature: Add Roles tab to session settings to allow changing operator and trusted status of registered users not currently online, as well as allowing importing and exporting this list of users. Thanks tincancrab for suggesting.
 * Feature: In addition to sounds, allow configuring popup bubbles and task bar flashing in notification preferences. Thanks MagicaJaphet and Bluestrings for suggesting.
 * Feature: Add a notification for unexpected disconnects.
 * Fix: Play back sounds in a different way that should fix the issues with chugging or wrong output devices that some systems have. Thanks Blozzom and Snover for reporting.
 * Feature: Allow configuring notifications for private messages separately from regular chat messages. Mentions can be configured to use these notifications, allowing silencing of regular chat, but still being notified or stuff directed at you. Thanks leandro2222 for suggesting.
 * Fix: Replace the terrifying notification sound effects with stuff from KDE's Ocean Sound Theme.
 * Fix: Don't delay own laser trails as if it were a stroke from another user. Thanks matt for reporting.
 * Fix: Properly update avatar on user markers when they reconnect with a different one. Thanks xxxx for reporting.
 * Fix: Show own user marker again when using the laser pointer.
 * Fix: Use previous avatar when using the reconnect button after a disconnect.
 * Fix: Don't trigger a cacophony of notifications after joining a session, just play a single notification once catchup is done instead.
 * Feature: Store alpha preserve state of layers in ORA files for better Krita compatibility (requires Krita 5.2.1 or newer.)
 * Feature: Allow onion skins to wrap around the timeline, toggleable in the onion skins dock. Thanks Hopfel for suggesting.
 * Feature: Fill the brush slots with nicer default values on first startup, rather than them all being the same pixel brush.
 * Fix: Don't lock tool slots when using the eraser tool, to avoid accidentally getting stuck in it.
 * Feature: Translate a single-colored bottom layer into background color when loading ORA and PSD files.
 * Fix: Make Alt+Space canvas shortcut sorta work in Windows. Thanks Bovy and xxxx for reporting.
 * Feature: Drawpile 2.1 animation import.
 * Server Fix: Don't boot user when they enter an incorrect password, let them try again.
 * Server Feature: Allow the user to pick how they want to log in, to avoid the common issue of wanting to join as a guest but picking a username that's taken.
 * Fix: Nudge catchup if it gets stuck without any messages received for a while.
 * Feature: Remember accounts, not just passwords. Should reduce the clicks and typing needed to log in even if you use multiple accounts.
 * Feature: Allow toggling whole tile marking in the inspector, since it makes some things easier to see.
 * Feature: Render flipbook frames in the background and indicate that fact with a loading spinner. It no longer lags the UI and gets done faster because of multithreading.
 * Feature: Crop flipbook when a selection is present upon opening it.
 * Feature: Make the flipbook UI clearer. The buttons now look like buttons, the uncrop button has a better icon and only shows while the view is cropped and the speed slider shows how many FPS you're actually running at.
 * Fix: Allow saving and loading files in weird Android folders that chew up the file names internally.
 * Server Feature: Allow servers to have a rules text that users are prompted to accept upon connecting. Clients remember that they accepted the rules and won't prompt again unless they changed since last time.
 * Feature: Add velocity and distance dynamics to classic brushes. Similar to how they worked for the input settings before, but more flexible than just a pressure mapping.
 * Feature: Allow grabbing the current brush settings of another user.
 * Fix: Relax transform size restrictions so that transforms of layers that cover the whole canvas don't always get cancelled.
 * Server Feature: Allow servers to set a minimum protocol version for sessions being hosted.
 * Server Feature: Let clients know at the beginning of the login if the session they're trying to join is nonexistent. Thanks Meru for suggesting.
 * Server Feature: Allow server owners to make sessions only joinable through direct links. Thanks Meru for suggesting.
 * Feature: Add touch tester, available under the Help menu.
 * Fix: Actually put the link that's being joined into the address input when using a web link, rather than leaving it blank.
 * Fix: Make Recolor (alpha locked) mode way faster.
 * Fix: Allow using gestures instead of touch screen controls, hopefully making zooming on touch pads work again.

2023-09-30 Version 2.2.0-beta.8
 * Fix: Apply color wheel direction to color dialogs too. Thanks Blozzom for reporting.
 * Fix: Don't smoothe the canvas view when at 100% zoom with the canvas rotated at a right angle, since that just blurs it for no reason. Thanks SadColor for reporting.
 * Fix: Make flipbook shortcut work while the flipbook is in focus, causing it to refresh its view.
 * Fix: Cap flipbook range properly, rather than letting you set a range beyond the last frame.
 * Fix: Remove the useless "?" button from dialogs in Windows. Thanks vipperz for reporting.
 * Fix: Turn off input event compression, which causes jaggy lines on slow devices.
 * Feature: Draw a hatching pattern on frames in the timeline that are the same as the currently visible one, making it easier to figure out if it's being re-used.
 * Fix: Make flipbook extend the playback range if it was on the last frame and new ones are added to the timeline.
 * Feature: Bring back dprectool, the command-line tool that converts Drawpile recordings. It should work mostly the same as it did in Drawpile 2.1.
 * Feature: Apply parent folder opacity to frames within it, useful for sketch tracks. Thanks to TeaLord9000 for suggesting.
 * Feature: Add a "small screen" mode, which should make the application usable on phones. Thanks to Verdrusk for suggesting.
 * Feature: Allow changing the application font size, rather than using the system default that may be garbage, especially on Android. Also Verdrusk's fault.
 * Feature: Locking docks now also locks toolbars, rather than still allowing you to move them around on accident.
 * Feature: Kinetic scrolling. This lets you click/tap/touch scrollable stuff and fling it around instead of using the scroll bars or wheel. Configurable in the preferences. Thanks again Verdrusk.
 * Fix: Make two-finger zoom and rotation not go completely crazy when the canvas is mirrored or flipped. Thanks BoyOnion for reporting.
 * Fix: Don't crash when picking a brush preset on Android. Thanks to zetalambo and VeeBeeArt for reporting.
 * Fix: Selections finally no longer sometimes disappear when transforming them. Thanks to Spuzzy, Xan and xxxx for reporting.
 * Feature: Capture volume rocker on Android and bind it to undo and redo by default. Thanks to cl for suggesting.
 * Feature: Add compatibility for Drawpile 2.1's broken indirect mode.
 * Fix: Make the receive delay not delay your own undos.
 * Feature: Add a setting for the background color behind the canvas. Thanks to Nightshade for suggesting.
 * Feature: Let operators create layers beyond the 256 per-user maximum. They will use layers of user 0 first, then 255, 254 etc. Thanks to haxekhaex2 for reporting.
 * Fix: Make Drawpile 2.1 binary (dprec) recordings play back properly. Text (dptxt) recordings are not supported.
 * Fix: Synchronize rendering during recording playback properly.
 * Feature: Bring back drawpile-cmd, the command-line tool that renders Drawpile recordings to images. Should also mostly work like it did in Drawpile 2.1.
 * Feature: Implement drawpile-timelapse, a new command-line tool that turns Drawpile recordings into timelapse videos.
 * Server Feature: Add --web-admin-allowed-origin option, to set the Access-Control-Allow-Origin header to the given value. Particularly useful for development, where you don't particularly want to set up an nginx to make CORS happy. Thanks Chem for reporting.
 * Server Feature: Update the server to use the 2.2 protocol.
 * Server Fix: Fix up some invalid casts and thread ownership issues. Not sure if they actually caused issues in practice, but especially on Windows they might have.
 * Feature: Bring back the builtin server, allowing you to host "on this computer" again.
 * Fix: Don't duplicate local fork on soft reset or undo depth change.
 * Fix: Make Erase, Divide and Subtract layer modes in ORA files compatible with Krita.
 * Feature: Stick ID alias and listing hosting options behind an advanced options checkbox, since they keep causing confusion.
 * Fix: Make host page in the start dialog work properly on Arabic and other right-to-left languages.
 * Feature: Allow choosing ffmpeg path on Windows. Thanks xxxx for suggesting.
 * Fix: Move brushes to the proper place in MediBang-esque layout. Thanks xxxx for reporting.
 * Fix: Replace the reset notice dialog with less disruptive on-canvas messages. If you continue drawing, the notice about saving the previous state will dismiss itself. Thanks to Blozzom, vipperz, xxxx, zheida and probably others for reporting.
 * Feature: Allow the client to translate server messages, rather than having them always be in English.
 * Fix: Make preferences dialog not use custom layouts anymore. Fixes the dialog getting stuck at an unusably tiny size on Windows, makes it work with Arabic and other right-to-left languages and allows resizing the dialog as well as scrolling its contents.
 * Fix: Drag-zooming (Ctrl+Middle Click by default) now zooms on the initial click location, rather than the center of the canvas. Thanks to Valaek for reporting.
 * Fix: Don't select layer when toggling its visibility.
 * Fix: Show a crossed-out folder icon for hidden layer groups, rather than switching to the layer icon for them. Thanks to Blozzom for reporting.
 * Fix: Make catchup explicit. Solves both the "stuck at 99%" problem during session resets and the canvas too be unlocked too early.
 * Fix: Give erase mode its own icon so that it doesn't get confused for the eraser slot. Thanks Geese for reporting.
 * Feature: Show if the current brush is in erase or alpha lock mode in the toolbar and allow resetting it via a click. Thanks Geese for suggesting.
 * Feature: Paste in center of the canvas (instead of the center of the view) when the pasted image size is equal to or larger than the canvas size. Thanks Meru for suggesting.
 * Fix: Single-pixel offset when pasting with an existing selection present. Thanks Meru for reporting.

2023-08-26 Version 2.2.0-beta.7
 * Fix: Make classic brushes not go brighter when smudging into transparency. Thanks to cada for reporting.
 * Feature: "Ratchet" canvas rotation shortcut, using Alt+Shift by default. Rotates the canvas in 15° increments. Thanks to Kvothen for suggesting.
 * Fix: Don't filter out undo depth messages when playing back recordings.
 * Fix: Make floating docks restore properly again. Thanks SnazComic for reporting.
 * Fix: Don't show tag options when right-clicking on a brush preset. Thanks Blozzom for reporting.
 * Fix: Properly disable blend mode combo box in layer properties dialog. Thanks xxxx for reporting.
 * Fix: Move chat status bar button into a legal position. Thanks Flz for reporting.
 * Fix: Correct various errors in text recording reading and writing.
 * Fix: Don't keep locally forked canvas states around. This reduces memory usage by a bunch, especially when drawing locally.
 * Feature: Add layer on current key frame button is now in the top bar of the timeline, next to the other key frame buttons. Thanks FallenArts for suggesting.
 * Feature: Show a notice when there's no tracks yet, rather than just showing an empty timeline grid.
 * Fix: Actually pick color when adding a color to the color picker through the color dialog.
 * Feature: Mark window when a chat message is received. On Windows, this makes the icon in the task bar orange. On macOS, it supposedly bounces an icon somewhere. On other platforms it probably does something similar, indicating which window is the one that got a message ready. Thanks Radio for suggesting.
 * Fix: Don't add current color to the palette when creating it. Thanks xxxx for reporting.
 * Fix: Make exported palettes not start using the exported location to save changes to. Thanks xxxx for reporting.
 * Feature: Allow muting notifications for a window. Thanks Blozzom for suggesting.
 * Fix: Enable the lock session menu option properly, it remained stuck disabled in some cases before.
 * Feature: Allow selecting and copying text from the pinned message (through the context menu, it doesn't take keyboard shortcuts.) Thanks Bluestrings for suggesting.
 * Fix: Don't claim that a layer is locked when it's just not visible in the current frame.
 * Feature: Make canvas rendering and preview painting asynchronous. This should make the UI much more responsive when e.g. changing layer visibility or transforming a large selection.
 * Fix: Properly handle canvas resizes while transforming a selection, it now no longer causes the source of the transform to get offset.
 * Fix: Show the current color properly on program startup.
 * Feature: Make the color wheel innards go from least to most saturated, putting it in line with how most other software presents it. This can be toggled in the preferences.
 * Feature: Holding Shift while moving a selection now keeps it along the closest axis. Thanks Kvothen for suggesting.
 * Feature: Implement brush export and make the brush import also understand classic brushes.
 * Fix: Make erasing with MyPaint brushes in indirect mode actually work.
 * Feature: Make sliders adhere to the chosen color space. Thanks to leandro2222 for suggesting.
 * Feature: Increase font size on emoji posted into chat. Thanks to leandro2222 for suggesting.
 * Feature: Allow adding an avatar from the login dialog.
 * Fix: Show main window maximized by default, because who wants a drawing program in a tiny window.
 * Fix: Give docks sensible initial sizes. Thanks to xxxx for reporting.
 * Fix: Don't tabify the now invisible-by-default timeline and onion skins by default. Thanks Ben for finding.
 * Fix: Make the flipbook remember your last crop, frame range and playback speed for the current window. Thanks Ben for finding.
 * Fix: Don't mark guests as registered. Thanks to xxxx for reporting.
 * Fix: Allow assigning a shortcut to open the Layouts dialog (F9 by default) and to the entries in the Help menu (nothing by default.)
 * Fix: Make reloading the last brush preset slot-specific, since it's nonsense to clobber your current slot with the last preset you set in another one.
 * Feature: Allow increasing and decreasing key frame exposure. Thanks Tabuley for suggesting.
 * Fix: Properly update the view when the canvas size changes, rather than leaving stale areas outside of the canvas.
 * Feature: Add shortcuts to swap the contents of brush slots to allow for a kind of toggling behavior using a single shortcut. Thanks xxxx for suggesting.
 * Fix: Make drawpile:// URL handling actually work on Windows. Thanks Sal for reporting.
 * Fix: Don't draw the curves for MyPaint brushes in the brush editor with the same color as the background grid.
 * Feature: Allow exporting animations from the Flipbook, using the cropping, frame range and speed set in it.
 * Fix: Pre-fill image saving file dialogs with the current filename, rather than the previously opened or saved one. Thanks xxxx for reporting.
 * Fix: Make filling transparent areas work better, rather than different surrounding colors making it behave differently.
 * Fix: Make layer folders work as sources for flood filling.

2023-07-31 Version 2.2.0-beta.6
 * Fix: Don't forget account password when entering a wrong session password.
 * Fix: Smoothe out the timing of strokes received over the network to not make them appear jerky because of the paint engine drawing them too fast.
 * Fix: Lock timeline controls when the canvas or user is locked.
 * Feature: Allow adding key frames and an associated layer or group with a single action.
 * Feature: Allow duplicating key frames along with their contents.
 * Fix: Put changing the timeline frame count behind a button, since it might get mixed up with the current frame on accident.
 * Fix: Slow down user markers only for MyPaint brushes and snappy for classic brushes as well as when a new line is started.
 * Feature: Add a flipbook button to the timeline dock.
 * Feature: Hide the indirect mode button in the brush dock instead of just disabling it, since it's hard to tell the difference otherwise.
 * Fix: Fixed a crash when resizing the canvas while an indirect stroke is in progress.
 * Feature: Allow viewing tile and draw context memory usage in the statistics dialog.
 * Server Fix: Make the server GUI exist again, it got lost in the build scripts.
 * Fix: Put unpinning behind operator permissions too, just like pinning.
 * Feature: Improved canvas view. It now allows scrolling further beyond the edges, has more sensible zoom steps and shows messages about locks and canvas transformations.
 * Fix: Make the canvas view not jigger anymore when you zoom it out at certain sizes.
 * Fix: Lock drawing when the user is locked.
 * Fix: Make KisTablet Windows Ink the default tablet driver on Windows, because the Qt one is pretty busted.
 * Fix: Re-synchronize the canvas when local desynchronization is detected, rather than just keeping going with a broken state for ages.
 * Fix: Don't reset the layer properties dialog when someone else changes a layer. This would cause renames to get reverted to the original name, for example, which is really annoying.
 * Fix: Make default layer actually select itself when joining a canvas.
 * Fix: Move notifications to their own preferences page, since the network page was out of room and squashed some controls.
 * Fix: Make preference notes larger so that they work better in non-Latin writing systems.
 * Fix: Make the password page of the login dialog not so annoyingly large.
 * Feature: Clarify when asking for a session password versus an account password.
 * Fix: Handle duplicated shortcuts by complaining about it, rather than doing nothing.
 * Feature: Add shortcuts to move the canvas around, for people who want to do it with something other than the arrow keys.
 * Feature: Enable auto-repeat for shortcuts where it's sensible, such as zooming, moving the canvas, undo, redo or switching between layers, frames and tracks.
 * Feature: Allow clicking and dragging the inspector around, so that it's easier to hit small sections.
 * Fix: Don't fire an assertion when moving a selection out of bounds. This is not an error.
 * Fix: Default color wheel to HSV mode, not HSL.
 * Fix: Stretch columns of the ban list so they don't look so weirdly cut off.
 * Fix: Don't revert settings with a default value that have an old version of some other value.
 * Server Feature: Relay listing errors to the client, rather than leaving them in silence.
 * Server Feature: Add maximum user count and closed state to listings.
 * Server Feature: Expedite listing refreshes when something important changes, like the NSFMness, title or closedness of a session.
 * Server Fix: Make the server GUI compatible with Qt6.
 * Fix: Make layer picking and the inspector pay attention to the layer view mode, so that picking layers when animating works properly.
 * Fix: Allow pixel brushes to have a minimum of zero pixels, rather than treating both 0 and 1 as 1.
 * Fix: Make chat line not scroll into oblivion when dragging over it.
 * Fix: Make the UI not mess up the sizes of docks and chat when starting it on Windows.
 * Fix: Make brush outline update even when docks are hidden.
 * Feature: Make Linux AppImage more compatible with older Linuxes.
 * Fix: Make secure connections work in the Linux AppImage.
 * Feature: Automatically join a session when given a URL on startup, rather than waiting for another button press.
 * Feature: Allow including session passwords into URL.
 * Feature: Implement an invite dialog, to make it easier to directly let people join a session without listing it publicly.
 * Feature: Show a warning when joining an NSFM session, since it might not be obvious to new users what they're in for.
 * Fix: Make newlines show up properly when the chat is in context mode.
 * Fix: Handle key presses and releases while dragging the canvas, since some people start the drag before pressing the key and would like their inputs to not be ignored.
 * Fix: Wrap server title in the login dialog to make it not stretch the window into eternity.
 * Fix: Allow opening links in the server title. They were turned into links, but those couldn't actually be clicked.
 * Feature: Implement a start dialog instead of dumping the user into a blank canvas and making them pick through the menu at the top. Replaces the join, host, new and update dialogs, unifying them into a single one instead that should reduce the number of clicks required to do pretty much anything.
 * Fix: Properly disable the NSFM session setting when it can't be changed.
 * Fix: Make the color palette work properly again, it was broken in various ways. Also makes the color picker look like it used to in 2.1.
 * Feature: Add a button to the color picker to pick from the screen.
 * Feature: Allow focusing the canvas by double-tapping the Alt key, as well as an assignable shortcut for it, which is Ctrl+Tab by default.
 * Feature: Show coordinates in the view status bar.
 * Fix: Put resize arrows at the corners of the selection, rather than offset on the far ends.
 * Fix: Don't displace selection by some subpixel amount when moving it around.
 * Fix: Prioritize sending of pings and pongs so that a lot of queued messages don't cause a disconnect.
 * Fix: Make filtering closed sessions actually work.
 * Feature: Make the server browser columns resizable.
 * Feature: Allow filtering duplicates in the server browser.
 * Fix: Make pinned messages persist again even when chat recording is turned off.
 * Fix: Don't grab colors from way too far away when using classic brushes.
 * Fix: Avoid colors tending toward black when smudging.
 * Fix: Make the cursors for the line, rectangle, ellipse and curve tools look less skrunkly.
 * Fix: Prefer Drawpile's own icons over system icons, to avoid nonsensical icons being used on Linux.
 * Translation: German, Italian, Portuguese (Brazil), Portuguese (Portugal), Russian, Simplified Chinese, Spanish, Turkish.

2023-06-21 Version 2.2.0-beta.5
 * Made the new default theme *actually* the default theme, don't sync it with the theme from Drawpile 2.1.
 * Fixed saving and loading settings even when Drawpile 2.1 corrupted them.
 * Fixed saving of shortcuts and probably also some other settings that didn't let you clear stuff anymore.
 * Allowed ordering of list servers in the preferences again.
 * Made chat pins work properly again.
 * Allowed color picking when using the selection tool again.
 * Brought back the old averaging smoothing, as another option in addition to the new time-based stabilizer.
 * Miscellaneous fixes and prettifications in the settings dialog.
 * Fixed stabilizer settings being forgotten when closing the program.
 * Non-floating selections now stick around after hitting Delete, since you might want to delete on multiple layers.
 * Fixed some crashes when closing the window when it's in a funky state.
 * Made settings only save to disk when you're not doing anything in the program, to avoid causing chugging on slow disks.
 * Fixed Copy Merged to actually work and not just copy a blank rectangle.
 * Fixed floating docks not being resizable on macOS.
 * Fixed pasting images with weird color formats.
 * Added an NSFM option to the host dialog, letting you turn that on right from the get-go.
 * Called NSFM the same everywhere in the program, instead of mixing up "NSFM", "NSFW" and "age-restricted" in different places.
 * Added a context menu to the join dialog, if you want to copy stuff out of there.
 * Made popup messages ("Connecting..." and such) work on Wayland.
 * Made nearest-neighbor transform actually work, it ended up being forced to bilinear every time.
 * Made the stabilizer not run at a really low framerate on Windows.
 * Split Shortcuts and Canvas Shortcuts into two settings pages again.
 * Fixed shortcuts not getting assigned when closing the preferences without clicking somewhere else first.
 * Made conflicting shortcuts actually show errors instead of silently doing nothing.
 * Fixed tool slots swizzling their colors when multiple windows were open.
 * Allow holding left-click on the timeline frames and scrubbing left and right for a quick preview.
 * Pick better layers when switching animation frames and tracks, so that you don't end up stuck on layers that aren't actually in your current frame.
 * Fixed a really stupid bug that caused sessions to seemingly revert to 2.1 mode.
 * You can now add keyboard shortcuts for a whole lot more stuff, such as swatch colors, dock visibility and pretty much all actions you can pick from the menu that inexplicably didn't let you assign shortcuts to them before.
 * Fixed the authentication dialog messages looking wonky.
 * Made the session password dialog look less squashed.
 * Made links in server messages clickable.
 * Brought back the version check in a way that should work also for  beta versions, on all platforms and in other languages.
 * Allowed saving the log file on Android, since you can't view it directly.
 * Made alert chat message backgrounds less bright.
 * Updated Chinese, German and Portuguese translations.

2023-06-14 Version 2.2.0-beta.4
 * Android support
 * New paint engine again (Drawdance)
 * More themes, nicer default theme
 * Improved animation support, with a timeline, tracks and keyframes
 * Adjustible undo limit
 * Local canvas backgrounds
 * Better canvas shortcuts
 * Real stabilizer, based on Krita's
 * Indirect mode for MyPaint brushes
 * Full-fledged brush editor
 * Better MyPaint brush import
 * Saving and loading of application layouts
 * Changed default layout that works better on small screens
 * Tablet-friendly sliders, taken from Krita
 * Fill tool gap-filling, feathering and improved size limiting
 * Nearest-neighbor transform option
 * Compatibility with 2.1 sessions
 * Docks now have a menu instead of a close and undock button
 * Docks can now be made undockable, if you want to keep them floating
 * Top and bottom regions of the window are now dockable
 * Docks can now be nested
 * Vertical tabs option for side-mounted docks
 * Holding shift gives you rearrange mode by default
 * More and more useful brush presets by default
 * Chat now has multiline support
 * Preferences tidied up a bunch, internal settings system reworked
 * Tablet drivers on Windows can now be switched without restarting the program
 * Reset snapshot interval and amount can now be adjusted
 * Parental controls can be hidden when locked
 * forceNsfm option for the server
 * Messages from server GUI will now be alerts
 * Indirect drawing mode now works properly
 * Hiding docks no longer jiggers them around
 * Transforms now preview on the target layer
 * Session resets no longer cause the view to jerk around or a layer switch
 * Session resets now prompt for a save
 * Layer opacity and blend mode controls are back in the layer list dock
 * Recording and recording indexes now handle undos properly
 * Recordings can be played back at fast speeds again
 * (De-)selecting layer groups no longer makes a clicking noise
 * You now have to be operator to pin a chat message
 * Moving your own layer into your own group no longer requires omnipotence
 * Switching away from the annotation tool no longer conjures a blank annotation
 * Linux and macOS now properly focus the canvas when it's interacted with
 * Massively improved development and release infrastructure with CI and such
 * Weblate integration
 * Development tools, like tablet event logging, debug dumps etc.

2022-08-20 Version 2.2.0-beta.3
 * Added support for MyPaint brushes
 * MyPaint style 15 bit color channels
 * Removed popup notifications for join and leave events
 * Fixed skew when scaling a selection from the top-right handle
 * Fixed mouse droppings when for large brush outline widths
 * Fixed laser trail persistence selection
 * Split color wheel, sliders and palette into separate docks
 * Fixed "no guest logins" checkbox eanbled state
 * Fixed session snapshot missing the timeline
 * Enable timeline editor only when given permission
 * Active layer is now shown in the timeline editor
 * Next/previous frame action also autoselects layer

2022-08-11 Version 2.2.0-beta.2
 * Fixed smudge color sampling mask offset
 * Fixed annotation loading
 * Added support for `/alert` chat command in private chats
 * Fixed crash if a group layer was moved by layer deletion
 * Fixed layer lock status updating
 * Fixed preserved chat mode
 * Annotation creator name is now shown in the dock titlebar
 * Restored palette write-protect feature
 * Fixed brush slider limit preferences
 * Layers hidden in frame/onionskin mode are now grayed out in the layer box
 * Modifying the timeline now updates the view immediately
 * New identicon style

2022-08-03 Version 2.2.0-beta.1
 * New paint engine written in Rust
 * Added support for layer groups
 * Added animation timeline editor
 * Added screen blend mode
 * Disabled built-in server pending rewrite
 * Added `/alert` chat command

2021-09-12 Version 2.1.20
 * Updated Portugese translations
 * Added more angles to canvas rotation dropdown menu
 * Fixed inconsistency in classic brush rendering
 * Fixed inconsistency in layer resize color sampling
 * Theme (Windows Vista style / Fusion / Fusion Dark mode) is now selectable
 * Fixed that a cleared annotation would not count as empty for the "delete
   empty annotations" command

2021-08-06 Version 2.1.19
 * Fixed performance regression
 * Fixed potential crash during login (catchup stage)
 * Fixed crash when adding a new input preset
 * "Fusion" style is now always used on Windows for consistency
 * Added canvas rotation gauge widget to status bar
 * Invalid canvas resize commands are now ignored
 * Fixed that ongoing indirect strokes weren't drawn when exporting a recording to video
 * Fixed garbled navigator content when joining a new session

2021-07-25 Version 2.1.18
 * All actions can now be assigned an alternate shortcut
 * Added French and Portugese translations
 * Fixed inconsistent zooming at certain values
 * Fixed brush size adjustment shortcuts not working consistently
 * Fixed that undo operations would cause the layer list to scroll
 * Fixed moving a layer to the bottom-most position
 * Various bugfixes
 * Breaking change: active tool setting format was changed. Not compatible with older Drawpile versions.
 * Input preferences can now be saved per tool
 * Brush cursor outline width can now be changed
 * Layer properties can now be edited in a dialog
 * Color wheel shape is now selectable
 * Maximum brush size and spacings can now be extended (affects sliders)
 * Added selection perspective transform mode

2020-02-16 Version 2.1.17
 * HTTP redirects (e.g. when searching for a list server) are now followed
 * When launched with an URL, the URL gets set to the address box correctly again
 * Available list servers are now updated in session settings dialog if servers are added or removed while connected
 * Updated Finnish and Chinese translations
 * Server: User "trusted" status flag can now be changed via admin API
 * A list server can now be added via drawpile:// link
 * Fixed moderator login (would ask for password when none was needed)

2020-02-09 Version 2.1.16
 * Server: Added support for ext-auth "TRUSTED" flag
 * Server: Added "lastActive" timestamp field to session user list API
 * Server: Changed session ID style from GUID to ULID
 * Server: Added option to not respect ext-auth HOST flag
 * Relative URLs are now supported in "drawpile:list-server" meta tag
 * Added disconnect notification bar (with a reconnect button)
 * List servers can now be manually sorted
 * Fixed brush size adjustment shortcut (needed to presses to adjust)
 * Fixed selection scaling if selection was not entirely contained by the canvas (selection is now clipped to canvas)
 * Fixed copying and cutting a moved selection
 * Automatically remove list servers that return HTTP 410 (Gone)
 * Removed the default list server. Instead, a link to drawpile.net's communities section is shown.
 * Saved passwords are now stored in the system password store

2019-12-07 Version 2.1.15
 * Server: Added support for list server API 1.6
 * Server: Added `ext_host` and `ext_port` fields to status API endpoint
 * Server: Abuse report token can now be set via admin API
 * Server: List server whitelist can now be edited via the API
 * Server: Fixed memory leak in admin API
 * Server: The server can now also serve web admin site static files
 * Server-gui: Added "welcome message" field
 * drawpile-cmd: fixed ORA export format support
 * Added command line options to override data and config paths (portable app mode)
 * Added "closed" session list filtering option
 * Added "Add" button to join dialog for adding the server's associated list server

2019-11-16 Version 2.1.14
 * Fixed dab spacing in default brush presets
 * Fixed that selecting a brush preset could change the eraser slot into a non-erasering mode
 * Fixed brush preset reordering by drag&drop
 * Added brush preset folders
 * Fixed that pressing spacebar while drawing would cause strange input handling behavior
 * Server: admin API URL is now prefixed with `/api/`
 * Bugfix: don't allow pasting by drag&drop if cut&paste is disabled

2019-11-03 Version 2.1.13
 * Bugfix: spacebar would have to be pressed again after releasing mouse button when dragging
 * Removed arbitrary OpenRaster image size limit
 * Bugfix: brush color is now initialized properly on fresh install
 * Bugfix: selected brush blending mode is restored again
 * Replaced pressure checkboxes with toggle buttons to free up some vertical space
 * Disabled brush preset drag&drop. (Bandaid solution to a regression, will be fixed properly in the next release.)
 * Enabled High-DPI icons and scaling

2019-10-20 Version 2.1.12
 * Added Italian translation (contributed by Albano Battistella)
 * Fixed lockup when opening a layered TIFF file
 * drawpile-cmd: added support for outputting to stdout
 * Improved brush preview: different styles are now used for different brush types
 * Smudging can now be used with all brush shapes
 * Canvas modifier key shortcuts can now be customized
 * Added cursors for layer picker, quick adjust, zoom and view rotation modes
 * Use the same default curve for velocity pressure emulation mode
 * Fixed tool quick adjustment dragging responsivity
 * Server: file backed session file naming is now consistent when archive mode is enabled
 * Added a new shortcut for canvas rotation (shift+ctrl & mousewheel)
 * Improved selection tool: scale/rotate/shear mode is now toggled by clicking, rather than keyboard modifier
 * Fixed crash when using large-radius color picker near the edge of the canvas

2019-06-23 Version 2.1.11
 * Fixed that brush color was uninitialized on fresh install
 * Fixed that using "/me" in a direct message would send it as a public message
 * Fixed incorrect layer when moving selection if active layer was changed before the move ended
 * Fixed single pixel shift when moving or copy&pasting freeform selections
 * Join dialog's session list sort order and column is now remembered
 * Fixed that read-only listservers were included in the session settings "add listing" buttons
 * Server: registered user bans are no longer IP bans
 * Server: op and trusted status is now remembered by user account, rather than username
 * An error message is now shown if a login message is oversize
 * Chat box can now be detached into its own window
 * Client now refuses to autoreset if it knows it isn't fully caught up yet

2019-05-30 Version 2.1.10
 * Fixed that built-in server settings were being ignored
 * Updated bundled color widgets to latest upstream version
 * Fixed that an early undo could clear out the canvas size
 * Limited reset snapshots to one every 10 seconds
 * Fixed view jumping when canvas was resized
 * Fixed extra messages in the beginning of session recordings
 * Server: fixed that web-admin API HTTP headers were case-sensitive
 * Application version number is now shown in a tooltip if a session is incompatible

2019-05-19 Version 2.1.9
 * Fixed that disabled brush slots were still selectable with a keyboard shortcut
 * Fixed potential crash when logging in to a session
 * Incompatible sessions are no longer hidden in from the Join dialog
 * Ctrl+C shortcut now works in the chat box
 * Added support for read-only list servers
 * Removed drawpile-srv argument `--secure` (secure mode is now always used if TLS is enabled)
 * The built-in server is now based on the new Thick Server
 * Server: added support for real password hashing algorithms
 * Server: fixed crash when using file sessions (regression)
 * Fixed duplicate entries in the "Nearby" server list
 * Very long pinned chat messages no longer force the window to become wider

2019-05-04 Version 2.1.8
 * Server: fixed potential crash when terminating session
 * Server: listings are now refreshed in batches instead of individually
 * Background color alpha can now be set in the "new image" dialog
 * Adaptive canvas zoom slider: the minimum value is now always the zoom level needed to fit the whole canvas on screen
 * Drawpile can now download the latest version via the "check for updates" dialog
 * Fixed formatting in update check dialog when more than one new version is shown
 * Drag&dropping a link to an image onto the canvas now works again
 * New more efficient recording index format. Indexes are now generated faster and the files are smaller.
 * Enabled dark appearance support on macOS
 * Memory usage optimization: only the minimum amount of session history is now kept in memory
 * Manual session reset snapshots are now retained separately for one minute.
 * NSFW sessions are no longer hidden by default
 * Fixed crash when opening an OpenRaster file with missing stack.xml

2019-04-13 Version 2.1.7
 * Added Ukranian translation
 * Fixed navigator not updating correctly on canvas resize
 * Simplified join dialog (listings from all servers are now shown at the same time)

2019-04-06 Version 2.1.6
 * Scrollbars are now hidden in fullscreen mode
 * Regression fix: chat box no longer autoscrolls when not already scrolled to the bottom
 * Removed default shortcuts for event log and session settings. They can still be assigned custom shortcuts, however.
 * Added option to share the same color across all tool slots
 * Fixed lines being drawn across the canvas if session reset occurs while midstroke
 * New feature: a session can now be reset to an image loaded from file
 * Full screen mode no longer hides the status bar, instead it is hidden along with the toolbars and docks using the Tab shortcut
 * Added "pick color from layer" brush mode
 * Implemented Night Mode
 * Enabled smooth canvas scaling at certain zoom levels (1-200% or 1-800% when rotated)
 * Session permissions can now be saved as presets

2019-03-30 Version 2.1.5
 * Fixed navigator view dragging
 * Added option to update the navigator in realtime again
 * Pressing Tab now toggles toolbars on and off
 * Entering fullscreen mode no longer hides docks and toolbars
 * Fixed brush preset preview shape rendering
 * Moved certain buttons back into the status bar
 * Moved zoom slider back into the status bar
 * Fixed saving of brush preset changes

2019-03-23 Version 2.1.4
 * Fixed session list sorting in login dialog
 * Fixed crash when resizing canvas
 * Fixed layer access user list going out of sync
 * Fixed navigator focus rect scaling
 * Fixed "registered" level permissions not taking effect on login
 * Server: session and recording directories are now automatically created if missing
 * Added automatic new release checking
 * Added filter field to user list (event log)
 * Reimplemented navigator user cursors
 * Navigator cursors can now be enabled or disabled independently of the main canvas cursors

2019-03-16 Version 2.1.3
 * Fixed showing layers in user markers
 * Fixed crash when changing tools mid-stroke
 * User cursors and other decorations are no longer shown in the navigator
 * Navigator is refreshed only at 500ms intervals to reduce CPU load
 * When the canvas is rotated, the righthand side of the viewport is now indicated in the navigator
 * Restored 2.1.0 style chatbox and added an option to enable 2.0 style compact mode
 * Added Inspector tool
 * Fixed remembering of last open/save folder
 * Added user list to event log dialog that shows all past users
 * Server: logged out users can now be banned retroactively
 * Server: past users are now listed in the admin API

2019-03-09 Version 2.1.2
 * Increased brush dab max spacing limit to 999% and max brush size to 255px (oversizes accessible via the spinbox)
 * Fixed crash when using flood fill on an canvas without any layers
 * Fixed crash when trying to reset after resetting to the very beginning of the history
 * Clicking on the layer show/hide glyph no longer selects the layer
 * OpenRaster: the xres and yres values are now preserved
 * Implemented fixed layers (a generalization of the old background layer feature)
 * Added Vietnamese translation
 * Fixed canvas not appearing immediately when login dialog was closed
 * Fixed chat username line breaking
 * Fixed Recolor (and other modes) in non-incremental mode

2019-02-17 Version 2.1.1
 * Fixed OK button related bugs in the login dialog
 * Added support for ext-auth avatars
 * Added server configuration option for disabling avatars
 * Avatar selection box is now only shown if avatars have been configured and server supports custom avatars
 * Fixed mouse droppings when switching to a smaller brush
 * Fixed setting autoreset threshold when session size is unlimited
 * Fixed autoreset sometimes failing to work
 * Fixed missing layer attributes in reset
 * Save censored layer flag in OpenRaster files
 * Fixed ORA file loading (2.1.0 regression)
 * Add copy merged action (copy visible selection excluding background)
 * Fixed window autoraising when notification balloon was shown (Windows specific bug)
 * Fixed onionskin mode settings initialization
 * Fixed zooming when zoomed outside the usual zoom range. (2.1.0 regression)

2019-02-13 Version 2.1.0
 * Changed internal pixel format to premultiplied 32 bit RGBA
 * Added PutTile command and optimized layer initialization
 * dprectool: added --msg-freq option
 * Protocol change: replaced ToolChange and PenMove with DrawDabs commands
 * Replaced "background layer" concept with a tiled canvas background. (Mostly compatible with MyPaint)
 * Redesigned user list box and chat panel
 * Autoreset threshold is now adjustable and includes reset image as base size
 * Individual layers can now be censored
 * Merged "Find sessions" dialog into the "Join" dialog
 * Simplified "Host" dialog
 * Redesigned "Login" dialog
 * Moved layer hamburger menu to the main menu bar (and expanded it)
 * Added support for user avatars
 * Added controls for flipping, rotating and zooming to the navigator dock
 * New user level: Trusted users
 * Added tiered feature access controls (guest/registered/trusted/operator)
 * Added zoom and rotation controls to navigator
 * Removed sliders from status bar
 * Added zoom tool
 * Added zoom/rotation/flip toolbar
 * Show keyboard shortcuts in toolbar tooltips
 * Replaced recording status icon with toolbar button
 * Replaced "new chat message" status icon with toolbar button (red dot indicates new message)
 * Added template export feature
 * Added square pixel brush
 * Replaced Ffmpeg video export with native WebM export
 * Added private messaging feature

2018-08-14 Version 2.0.11
 * Server: fixed OP status auto-restoration for users who used the "become operator" feature
 * Server AppImage: updated libmicrohttpd to version 0.9.59
 * Fixed crash caused by dragging&dropping a layer that was deleted during the drag operation
 * Fixed unsetting shortcuts which have a default value
 * Changed default "session settings" shortcut to F9, to avoid collision with the default (Windows) fullscreen shortcut F11
 * A nicer set of presets for the brush palette
 * Sending USR1 signal to drawpile-srv now restarts the internal web-admin server

2018-03-17 Version 2.0.10
 * Server: history files are now flushed periodically to better protect against dataloss in case of abrupt server termination
 * Server: blank session files are no longer loaded
 * Windows: wintab relative pen mode hack must now be explicitly enabled
 * Removed tablet bug workaround mode (with the improved tablet support, the workaround mode causes more problems than it fixes)
 * Bugfix: newlayer command now refuses to create a layer with a duplicate ID
 * Bug workaround: a deopped resetting user is now automatically kicked to prevent reset image from mixing with the normal session content.
 * Server: added option to automatically purge old DB log messages
 * Fixed crash when replacing current canvas with a new one while a selection existed

2018-02-25 Version 2.0.9
 * Minor recording format change: recordings are now prefiltered
 * Fixed random duplicate frames in exported animations
 * Added Windows Ink support (from Krita)
 * Added improved Wintab support (from Krita)
 * Added improved X11 tablet event handler (from Krita)
 * Reverted change that updates the color history in real time
 * Swapping colors with X now remembers the color, even if it hasn't been used yet

2018-02-11 Version 2.0.8
 * Fixed password remembering on Windows (now uses the same local appdata directory as other settings)
 * Fixed saved extauth passwords appearing under the server section in the settings dialog
 * Fixed that a server password would also get saved for extauth
 * Server: added support for SSL certificate chains and certificate auto-reloading
 * Fixed reset removing permission settings
 * Server: web admin API can now be used with socket activation
 * Server: support 'uid' extauth token field
 * Better auth user and mod icons
 * Added a new session option to allow only authenticated users to join (requires server version 2.0.8)
 * Chatbox no longer shows "user joined" messages for users already in the session
 * Platform input method context plugins are now included in the AppImage
 * macOS: open a new window (if none are open) when application icon is clicked

2018-01-26 Version 2.0.7
 * Fixed duplicate colors in color history palette
 * Windows specific: added missing style plugin
 * Fixed flipbook downscaling (regession)
 * Flipbook now upscales small images
 * Bugfix: logging in with ext-auth would disable the field for session password entry
 * Bugfix: rectangle fill or image pasting worked (locally) on locked layers
 * Improved selection scaling behavior. Aspect ratio maintaining mode now works, as does flipping and mirroring
 * The client can now remember server and ext-auth passwords
 * The state of the "show password protected sessions" checkbox is now remembered

2018-01-22 Version 2.0.6
 * Added selection shear mode
 * Added terminate session action (moderator command)
 * Changing color now immediately updates the color history
 * Implemented support for external authentication
 * Flipbook can now be cropped
 * Added quick layer pick mode (hold shift+control to select a layer)
 * Added `/status/` endpoint to server web-admin API
 * Added palette file export & import feature
 * Added abuse report feature
 * Added "server title" field to server GUI
 * Added option to disable tablet eraser detection
 * Added drawpile-cmd tool
 * Fixed joining a template session by URL
 * Fixed color fill on transparent areas
 * Optimized OpenRaster file saving
 * Canvas saving is now done in the background
 * Added option to hide password protected sessions from the join dialog
 * Bugfix: abort reset if resetting user is deopped
 * Added new serverside command to cancel session reset
 * Session reset snapshot is now generated only on demand
 * Session reset is now cancelled if a snapshot cannot be generated
 * Bugfix: fixed loss of canvas if user was drawing while reset occurred
 * Windows installer fix: audio.dll was put into a wrong directory
 * Recording is now automatically restarted on session reset
 * Fixed crash when cancelling bezier curve drawing with a right click
 * Regression fix: snap brush outline to pixel boundaries when using hard edged brush

2017-06-26 Version 2.0.5.1
 * Fixed shortcut conflict that blocked the use of the Enter key

2017-06-26 Version 2.0.5
 * Fixed building with systemd integration enabled
 * The number of remembered host addresses is now limited
 * Added tablet test dialog
 * Support Enter and Esc keys when drawing Bezier curves
 * Selection undo now first undos selection transformation
 * Improved retcon behavior. (Don't reset local fork on every conflict to avoid self-conflict loop)
 * Fixed flood fill expansion (regression fix)
 * Fixed concurrency problem in recording playback
 * Added option to hide the host address in the status bar
 * Canvas is now locked on autoreset and a notification chat message is sent
 * Fixed zooming with ctrl+tablet stylus motion
 * Fixed language changing
 * All admin HTTP queries are now logged
 * Layer selection is now restored after session reset
 * Fixed tool selection when "select all" command was used and the rectangular selection tool was already selected
 * Added option to disable tool toggling shortcut
 * Removed "persistent session" option from the host dialog (can still be set via session settings dialog.)
 * Added a log file for debug messages
 * Fixed bug in server GUI that could reset server settings
 * Downgraded AppImage Qt version to 5.6 (Tablet hover events are broken in Qt 5.7 and above)

2017-04-25 Version 2.0.4
 * Added support for room codes and private listings
 * Reverted pressure controls back to checkboxes
 * Added dedicated eraser brush slot
 * Restored eraser as a separate tool (uses only the eraser slot)
 * Added 'Ctrl+E' shortcut to toggle the current brush's eraser mode
 * Added bezier curve tool
 * Fixed stale op and lock bits left over from previous user with the same ID (fixes OP status being out of sync with server after logging back in)
 * Flood fill size can now be limited to protect against accidental canvas fills
 * Added erase mode to flood fill tool

2017-04-17 Version 2.0.3
 * Restored some tablet and smoother improvements from stable branch
 * Fixed (concurrency related) crash bug in layer merging
 * Properly clear ACLs for deleted layers
 * Properly demarcate reset snapshot (fixes possible mixing of non-reset and reset messages that can make the canvas initialization undoable)
 * Fixed missing template sessions in join dialog
 * Host action is now disabled when there is no canvas
 * Fixed missing modifier keys (ctrl/alt) with tablet stylus
 * Fixed potential buffer overflow in Command message serialization
 * Fixed server crash when queueing a large number of messages for upload
 * Fixed infinite loop when squishing selections
 * New AppImage build script (fixes UTF-8 related JSON parse error. Most visible when logging to a server with a non-ASCII username)
 * Fixed session timeout
 * Brush dock redesign (brush preset buttons restored)
 * Merged basic brush based tools (pen, brush, watercolor, eraser) into a single freehand tool
 * Brushes are now shared by all brush based tools (freehand, line, rectangle, ellipse)
 * Any brush can now be toggled into eraser mode
 * Tool preset pie menu replaced with brush preset dock
 * Restored 'X' shortcut key to swap primary/alternative color

2017-03-27 Version 2.0.2
 * Fixed returning from fullscreen mode to maximized window
 * Added contexts to lambda signal/slot connections (fixes server crash when terminating an announced session)
 * Added "send to all sessions" server admin API endpoint and GUI button
 * Restored "lock dock positions" feature
 * Messages received during reset while session history is full are now dropped (mitigates auto-reset loop of death)
 * Fixed layer selection after current layer is deleted
 * Separated layer delete & merge menu items
 * Enabled canvas cache refresh optimization
 * Always generate a fresh initial snapshot when hosting (fixes user ID related bugs when rehosting a short session)
 * Session template password field now sets the password hash instead of the plaintext (consistent with everything else and matches documentation)
 * Implemented missing session template configurations: announcement, opword, preserveChat
 * Display session history size in the status bar (as reported by the server)
 * Fixed lockup on reset when navigator was visible
 * Restore pinned chat message on reset
 * Fixed "hide from self" layer menu item
 * Fixed selection moving when selection is partially (or completely) outside the canvas

2017-03-20 Version 2.0.1
 * Configurable brush cursor
 * Improved session announcement list fetching error messages
 * New feature: automatically add timestamp markers to recordings
 * Fixed constant canvas rollback when many people were drawing simultaneous
 * Fixed moderator accounts
 * Fixed layer exclusive access locking
 * Fixed restoring of session & layer ACLs after reset
 * Fixed setting cut&paste and annotation lock flags
 * Show progress bar (in status bar) during session reset
 * Include username in "op granted/revoked" chat message
 * Fixed duplicate local messages when sending reset snapshot
 * Server GUI: fixed max session count and session size limit changing

2017-03-18 Version 2.0.0 Stable
 * Server: Fixed setting of local hostname (when using a configuration file)
 * Server: Fixed setting of port number in announcement
 * Server: Show listing server error messages
 * Server: Restore op/deop chat notifications
 * Server: Fixed GUI mode tray icon
 * Made tool pie menu smaller
 * Temporarily disabled pie menu popup with right mouse button
 * Restored tool preset shortcuts (1-8)
 * Added shortcuts for assigning tool presets (Ctrl+1-8)
 * Removed new brush cursors (will be made configurable in the next version)
 * Fixed incorrect range in session alias validation ('z' and '9' characters were not accepted)
 * Fixed lasso selection tool (regression)
 * Switching tools now commits the floating selection instead of cancelling it
 * Regression fix: previosly used color list
 * NSFM icon for session lists
 * Fixed selection resize handle bounding box
 * Show received chat message timestamps

2017-02-25 Version 2.0.0 Release Candidate
 * Various bug fixes
 * Added parental controls feature (password protected option to limit access to sessions tagged as "not safe for minors")
 * New brush cursors
 * Slightly adjusted laser style (line is always thick, less blinky)
 * Added server column to session list
 * New feature: mark layer as default for new users
 * Protocol change: added MoveRegion command

2017-02-04 Version 2.0.0 beta 3
 * Implemented file backed session history (enables session hibernation)
 * All session attributes can now be restored from file
 * Public session announcements can now be added and removed via a GUI
 * Reimplemented /opword command (GUI version)
 * Login dialog now shows a progress bar during catchup phase
 * Improved login performance
 * Annotations can now be aligned vertically
 * Individual users can now be blocked from sending chat messages
 * Fixed chat message pinning
 * Session settings now have a dialog window
 * Added option to lock annotation creation and lock individual annotations from modification
 * More server GUI features
 * OSX: Fixed pinch gesture detection
 * Revamped dptxt format
 * Recordings can now be saved directly in dptxt format
 * Merged dprec2txt and txt2dprec into dprectool
 * Replaced tool slots with a tool preset pie menu
 * Server logs are now available via the admin API
 * Session specific server logs can now be viewed in the client
 * Operator status is now restored for authenticated users
 * Server no longer auto-ops users if opword is set or authenticated ops are remembered.
 * User accounts can now be configured in the settings file
 * Reimplemented session template feature

2017-01-09 Version 2.0.0 beta 2
 * Regression fix: set inital smoothing value for new document
 * Regression fix: layer retitling
 * Regression fix: non-preserved chat messages
 * Custom session ID replaced with session aliases (every session now has a unique ID)
 * Server HTTP admin API (mostly) restored
 * Server settings are now stored in an SQLite database
 * Most server settings can now be changed via API and persist in the database
 * Client now automatically resets the session when server space is running low
 * Session user limit can now be changed via the GUI
 * Chat message preservation mode can now be changed via the GUI
 * Users can now be banned from individual sessions
 * Hosting password feature removed. (Instead, hosting privilege can be limited to registered users)
 * Graphical mode for dedicated server (not yet feature complete)
 * Protocol change: Chat message type changed to Transparent
 * Protocol change: added an extra bytearray field to JoinUser message for future proofing

2016-12-17 Version 1.0.6
 * Server: non-persistent session idle time can now also be limited
 * Server: added /opword command
 * Name of the user who created an annotation is now displayed in the editing widget
 * Bugfix: enable/disable fill commands when operator status changes and image lock is in place
 * Bugfix: Filling freeform selections now uses the correct blending mode
 * Cut and fill commands now only operate on selections to avoid accidentally clearing or filling whole layers
 * Added an option to lock dock widgets in their places
 * Added server log chat messages for operator actions
 * Server: remove kicked users from the session immediately
 * Display user pointer on FillRect and PutImage commands

2016-10-15 Version 1.0.5
 * Fixed edited palette loading (OSX specific regression)
 * Fixed untrusted certificate error (OSX specific)
 * Improved performance when joining a session (task bar related bugfix)
 * Fixed restoration of eraser hard edge mode when switching tools

2016-08-06 Version 2.0.0 beta 1
 * Major refactoring
 * Protocol version 4
 * Some server features removed (to be reimplemented later)
 * New simplified recording playback dialog
 * Session resetting to previous snapshots

2016-08-06 Version 1.0.4
 * Username length is now limited to 22 characters
 * Show correct error message when server is full
 * Let the user know if their IP address has been banned
 * Added option to restrict cut&paste and fill operations
 * List of logged in users can now be included in session announcement
 * Allow undo override even while session is locked

2016-07-02 Version 1.0.3
 * Remember last used path when saving files
 * Support new miniupnpc library version
 * Added txt2dprec tool
 * Added support for session templates in the standalone server
 * Fix shortcut saving when editor widget was not manually closed
 * Removed default canvas size limit (screen size)
 * Recording buffer is now periodically flushed to minimize data loss in case of a crash
 * New feature: chat message pinning
 * Selection mirror & flip buttons now automatically cut the selection
 * Flipbook playback range can now be selected

2015-09-13 Version 1.0.2
 * Fixed crash when smoother was set to zero
 * Server: added command line option to enable split recording mode (new recording for each snapshot)
 * Server: /force_snapshot command can now be used outside debug mode
 * Fixed stretched selection contents if selected area was (partially) outside the canvas
 * Chat URL autolinker now accepts more characters in the fragment identifier
 * Retcon simplification: just discard the local fork on conflict rather than replaying
 * Hidden layers are no longer saved when in a flattened image
 * Fixed pressure glitch at the start of a stroke
 * OpenRaster loader optimization: more efficient loading of solid fill layers

2015-08-09 Version 1.0.1
 * Strokes are started immediately even when smoothing is enabled
 * Ports in autolinked URLs are now recognized
 * Dedicated server: added --welcome-message parameter
 * Fixed "reset size" for polygonal selections
 * Improved recording index file generation
 * Active selection is no longer cleared when switching from rectangle to lasso tool
 * A link to unhide age restricted sessions is now shown in the session selector
 * Bugfix: remember selected listing server in session finder dialog
 * Improved UI lockup prevention when receiving large amount of commands
 * Smarter image sending: avoid sending blank images
 * New feature: area sampling for color picker
 * When opening a drawpile:// link, rather than connecting directly, the join dialog is shown

2015-07-12 Version 1.0.0
 * Added "Behind" and "Color erase" blending modes
 * Added support for automatically setting up port forwarding with UPnP
 * Added notification about Carrier Grade NAT
 * Added option to show layer numbers instead than titles
 * Added "thick laser trail" option
 * Added German translation
 * Remain somewhat responsive when joining a long-running session
 * Fixed timeout disconnect caused by missing Ping messages (related to above)
 * Fixed missing button icons in flipbook window
 * Fixed crash when using filling a rectangle aligned with bottom right corner of the canvas
 * Improved touch gesture support (scrolling, zooming and rotating)
 * Faster image loading
 * Moved user list to the chat box
 * OpenRaster: new namespace for Drawpile extensions
 * Protocol change: all blending modes can now be used with PutImage
 * Removed Color pressure mode
 * Scale selections maintaining aspect ratio by holding shift
 * Pasted images are now placed on their original positions (if copied from Drawpile)
 * Public session listing filtering for adult content

2015-06-02 Version 0.9.11
 * Fixed moving of freeform selections
 * Fixed merging (and export) of layers with sublayers
 * Fixed crash when closing animation export dialog
 * Support original frame size for all video export types
 * Updated Czech and Finnish translations
 * Added animated GIF export feature

2015-05-21 Version 0.9.10
 * Fixed loading of older recording formats (<v11.x)
 * Added Solo+BG layer view mode
 * Added Onionskin layer view mode
 * Added animation export feature
 * Added flipbook window for previewing animations
 * When opening animated GIFs, each frame is loaded as a layer
 * Protocol change: merged LayerCreate and LayerCopy
 * Added "Insert layer" action
 * LAN server discovery using Zeroconf
 * Added Japanese and Russian translations
 * Fixed filling selections partially outside the canvas
 * Moving a selection will now automatically move the pixels too
 * Added autosave feature
 * Added button to reset all settings

2015-04-03 Version 0.9.9
 * Added "Lasso" selection tool
 * Added view flipping and mirroring
 * Added filter bar to shortcut settings editor
 * Added last used colors selection to color dock
 * Added selection transformation buttons
 * Added notification sounds
 * Palettes are now write-protected by default
 * Selections (and pasted images) can now be rotated as well as scaled
 * New dab mode button style
 * Chat icon is now shown in statusbar when there are unread messages
 * Crosshair cursor is no longer shown for brush tools
 * Protocol change: added implementation for LayerCopy
 * Added experimental workaround for certain tablet event bugs
 * Added "duplicate layer" button
 * Added "solo" layer view mode
 * Added IP ban feature to the standalone server
 * New icon theme (Breeze)

2015-01-30 Version 0.9.8
 * Show menu bar when pointer is brought to the top of the screen in full screen mode
 * Fixed unnecessary retcon at start of new strokes
 * Fixed annotation moving (regression)
 * Fixed retconning of indirect paint mode strokes
 * Added a language override field to settings dialog
 * New feature: Hold tool shortcut button to select the tool temporarily; releasing the button switches back.
 * Simplified Host dialog
 * Flat tool slot button style
 * Minor protocol change: added new PutImage composition modes
 * "Fill under" mode for flood fill tool
 * Moved zoom buttons to the status bar

2015-01-16 Version 0.9.7
 * Fixed "host on remote server" dropdown box
 * Fixed crash when reordering layers
 * Added new Retcon synchronization method
 * Removed preview strokes
 * Protocol change: 16 bit layer and annotation IDs
 * Updated server admin API
 * New server admin web app
 * Added context menu to pressure curve editor
 * Added clear button to key shortcut editor

2015-01-02 Version 0.9.6
 * Added connection timeout check
 * Added keepalive messages
 * Automatically switch stroke preview mode based on latency
 * OSX: Quit menu action now works as expected
 * OSX: Added "Close" item to File menu.
 * OSX: Don't quit when all windows are closed
 * OSX: Added Window menu
 * Added zoom and angle shortcut context menus to status bar
 * Added network statistics dialog
 * Color picker cursor is now set when quick colorpicking
 * Simplified navigator dock
 * Brush size adjustment now sets brush diameter instead of radius
 * Slightly smoother antialised (thin) brush stroke rendering
 * Fixed tablet event handling when running on Qt 5.4
 * Added preview widget for flood fill
 * Set annotation editor background color
 * Added Watercolor brush
 * Added pixel grid for high zoom levels
 * Statusbar is no longer shown under the tool docks to conserve vertical space
 * Custom session IDs are now shown in session selection window
 * Ctrl+wheel zoom now uses 50% steps
 * Various minor improvements and bug fixes
 * Added dprec2txt tool
 * Added support for playing back all older recording format versions

2014-10-17 Version 0.9.5
 * Added Czech translation
 * Added "Record session" checkbox to join dialog
 * Added zoom and angle sliders to status bar
 * Added support for zooming/rotating with a pinch gesture
 * Added option to disable tablet events
 * Added custom cursors for tools
 * Better text/selection box resizing handles
 * Flood fill expansion
 * Fixed UI language fallback
 * Support for older OSX versions (10.7 and up)
 * Support Retina displays on OSX
 * Added "preserve alpha" blending mode

2014-08-15 Version 0.9.4
 * Improved palette box
 * Various improvements to annotation editing
 * Compressed recording support
 * Regression fix: fixed missing initial snapshot generation in recording index
 * Added /roll chat command for generating dice rolls
 * Layers can now be locked in offline mode
 * Added /preservechat setting
 * Fixed brush blending glitch on semitransparent layers
 * More consistent non-antialiased dab positioning
 * Improved tool box layout
 * Combined color dock
 * Updated OpenRaster support to spec version 0.0.3
 * All supported file types can now be opened by drag&drop
 * Individual layers can now be exported by dragging&dropping
 * Live preview for layer opacity change
 * Added flood fill tool
 * Fixed brush preview outline alignment

2014-07-18 Version 0.9.3
 * Layer opacity glyph now acts as show/hide button
 * Added layer context menu
 * Support for loading remote files (e.g. drag&drop URLs to canvas)
 * Bugfix: paint tools on new windows would not get enabled
 * Set mainwindow title correctly
 * Zero canvas size when creating layers is now tolerated
 * New chat command added: /me
 * Bugfix: locked layers could be changed my merging
 * Regression fix: rectangle fill was broken in previous version
 * Register .dprec filetype on OSX

2014-07-12 Version 0.9.2
 * Improved message popup widget
 * Server: session hibernation
 * Protocol change: more information is included in SessionConf message
 * Translation support
 * Add Finnish translation
 * Web admin API and sample app
 * Bugfix: set layer lock status bits correctly at the start of a new session
 * Changed default stroke preview type to Realistic
 * Default shortcuts for Copy layer & Copy visible changed for consistency with other programs
 * Added Edit toolbar
 * List of supported image formats for saving is now constructed correctly
 * Protocol change: session IDs are now treated as strings rather than numbers
 * Protocol change: SessionConf::attrs is now two bytes long
 * Protocol change: added "flags" field to Chat message
 * Protocol change: use 32 bit coordinates everywhere
 * Chat messages are no longer included in the session history by default
 * Fixed crash when dragging&dropping a layer
 * Fixed canvas stealing focus from text boxes
 * Authenticated login support
 * More version info shown in `drawpile-srv --version`
 * Various bug fixes and usability improvements

2014-06-03 Version 0.9.1
 * SSL support
 * Bugfix: Layer access control menu would lose per-user bits when locking a layer
 * Improved palette widget
 * Added shortcut for showing and hiding the chat box
 * Memory usage fix (undo savepoints are now correctly released)
 * New color widgets
 * Moved foreground/background color selector to the tool settings dock
 * Added tool slots

2014-05-07 Version 0.9.0
 * Server: support for multiple sessions on a single server
 * Server: support for systemd socket activation
 * Server: options can now be loaded from a settings file
 * Server: persistent session expiration
 * Clickable URLs in chat messages

2014-03-27 Version 0.8.6
 * Show old annotation position until reshape message has finished its roundtrip
 * Spin boxes for accurate adjustment of brush parameters
 * New feature: cut selection to clipboard
 * Smoother laser pointer trails
 * Indexed recordings
 * Pauses in recordings are now exported to video
 * New tool: recording markers
 * Added button to stop video export
 * Added "Select all" and "Deselect" menu entries

2014-02-25 Version 0.8.5
 * Navigator view is now updated in real time
 * Hiding laser trails will disable the laser pointer tool
 * New stroke preview style: realistic preview using a temporary layer
 * Simplified input settings dock
 * Brush size shortcut: Shift+mouse wheel or '[' and ']' to adjust brush size
 * Added "redo" button to user list dock
 * New feature: Direct to video export using ffmpeg
 * New feature: latest chat message is shown in the statusbar if chat box is hidden
 * Bugfix: right mouse button now works correctly when input smoothing is enabled

2014-02-03 Version 0.8.4
 * Bugfix: stop scene rectangle from growing when lines or annotations are dragged beyond boundaries
 * Color picker: right mouse click now picks background color
 * Improved interval recording: time between intervals is no longer accumulated
 * New feature: Laser pointer tool
 * New feature: constrain rectangle and line drawing to squares and straight lines with shift key
 * New feature: Ellipse drawing tool
 * New feature: Preview stroke style is now selectable

2014-01-17 Version 0.8.3
 * Improved navigator
 * Stroke smoothing
 * New zoom shortcut (ctrl+middle button or stylus button)
 * Quick color picking: Ctrl + mouse click
 * Pen pressure emulation modes for mouse
 * Fixed rounding bug which caused jitter in tablet pointer coordinates
 * Usability improvement: paste images to center of current view

2014-01-10 Version 0.8.2
 * New application icon
 * Session recording and playback support
 * Adjustable server session history size limit
 * Video export (image sequence only at the moment)
 * Improved dab and line drawing

2013-12-30 Version 0.8.1
 * Use icons from current theme
 * Treat hidden layers as locked
 * Added "delete empty annotations" action
 * Annotation edit box UI bug fixes
 * Canvas resizing
 * Added button for granting and revoking session operator privileges
 * Show remote user pointer positions
 * Layer control locking

2013-12-20 Version 0.8.0
 * Undo and redo support
 * Bugfix: pop up "save as" dialog when trying to save a file in an unsupported format
 * Added "paste from file" action
 * Added upload progress bar
 * Host dialog fixes
 * Paste images by drag&drop
 * Fix loading of tall images

2013-12-14 Version 0.7.2
 * Per-user layer locking
 * Improved brush shape
 * Copy & paste support
 * Improved annotation editing
 * Visible annotations are now included in saved images
 * Ability to look up the external IP address using ipecho.net
 * Menu bar is now hidden in fullscreen mode and floating docks remain visible
 * Option to pick color from current layer only

2013-12-06 Version 0.7.1
 * Redesigned layer & user list boxes
 * Redesigned chat box
 * Support for layer blending modes
 * Indirect drawing mode
 * Text based file format (mainly for testing)
 * Color picker history
 * Right mouse button paints with background color
 * Various bugfixes

2013-11-28 Version 0.7.0
 * Layer support
 * OpenRaster support
 * Partial rewrite: new server and network protocol
 * All features now work in network mode

2008-10-20 Version 0.6.0
 * Subpixel drawing
 * Added pen tool (draw without antialiasing)
 * Added blending modes
 * New brush slider style
 * View rotation
 * Changeable shortcuts
 * UI tweaks and bug fixes

2008-09-26 Version 0.5.0
 * Total rewrite of server and network code. Dropped support for multiple
 session per server and simplified the protocol.
 * Server is now contained in a shared library and is embedded by the client.
 * Tile based drawing engine
 * Fixes to brush rendering
 * Viewport dragging with spacebar (works with tablets too)
 * Added annotation tool
 * Added support for tablet eraser
 * Many small bugfixes/improvements.

2007-04-10 Version 0.4.0
 * Support multiple windows
 * Implemented line and rectangle tools
 * Added a menu item to disable new users from joining the session
 * Full screen mode
 * Client now informs the user if the (local) server crashes
 * Added a "Open recent" menu
 * Changed the brush generation algorithm
 * Added HSV and RGB color selection docks
 * Added a palette dock
 * Various UI improvements

2007-01-18 Vesion 0.3.0
 * Several tablet handling bugs were fixed
 * Client now shows a list of logged in users
 * Session administration commands (kick, lock)
 * Chat

2007-01-11 Version 0.2.0
 * Added networking support, hosting and joinin sessions now possible.

2006-12-27 Version 0.1.0
 * Initial release
