Drawpile

net.drawpile
by Zapstore _@zapstore.dev

A collaborative drawing program

Republished from GitHub / F-Droid by the Zapstore main account.

Drawpile is a collaborative drawing program that lets multiple people draw, sketch, paint and animate on the same canvas simultaneously. The Android version works on both tablets and phones. The program is built for use primarily with a pressure-sensitive pen, but drawing via touch is also possible. If you have any questions, need help with anything or can't manage to get the application working, check out the help page on drawpile.net on how to get in contact!

First release: Nov 18, 2025, 10 total releases.

Most recent release: Oct 21, 2026.

Website Repo

Appears in 2 app stacks.

0 sats / 0 zaps received in the past year.

Sats Received

Underlying data available via MCP: app_zaps, app_releases.

Zap Count

Underlying data available via MCP: app_zaps, app_releases.

Releases

  • Oct 21, 2026 2.3.1
    **Code signing policy:** <https://drawpile.net/codesigningpolicy/> * Fix: Make dock tab icons show up properly on Qt 6.11, they could end up blank there. * Fix: Don't skip initial command when playing back recordings. This caused the canvas size command to be skipped on old converted recordings, meaning its size stayed at zero and nothing would play. Thanks dango for reporting. * Server Feature: Allow new sessions to clobber empty, non-persistent, lingering sessions. Server owners can enable this to prevent "server is full" errors that would resolve themselves by waiting a few minutes for these lingering sessions to time out. Sessions with the lowest time spent drawing are terminated first. Thanks Bluestrings for suggesting. * Fix: Make hitting "save" after joining a session in the same window not save over the save file from a previous session in the same window. Unless you are reconnecting to the same session, in which case it will save over the file as it should. The logic for this was reversed from what it should be. Thanks Bonbli and D'mitri for reporting. * Fix: Also select layers when multiple key frames are selected. * Fix: Properly select layers when switching focused tracks when the selected frame was already visible. * Fix: Revert default save format to the new default even if it has been changed before, since it's better to make you change it again than lose timelapse data. Thanks Sheepolution for reporting. * Fix: A crash on Windows when unchecking the show conflicts checkbox while still editing a shortcut. Thanks yellow circle for reporting.
    More…
    * Fix: Make animation playback not get stuck when switching from a reversed range to a normal one without refereshing. * Fix: Properly apply the parent group's opacity in the rendered animation as well, rather than just on the canvas. * Feature: On Android, hide any open docks in small screen mode when pressing the back button before closing the main window. Thanks anonymous for suggesting. * Fix: Make start screen take less horizontal space in small screen mode. Thanks anonymous for reporting. * Feature: Remove the "Normal View" button from the timeline header, since you can just press the frame view button to exit it. This makes the timeline fit better on small screens. * Feature: Add a drag zoom mode to the zoom tool. This is the default, since it's more useful and consistent with the rotation and pan tools. You can still use the select zoom by right-clicking, holding the constrain key (Shift by default) or switching the mode of the tool. Thanks Shuko for suggesting. * Feature: Give the zoom tool nice header buttons to zoom in, out, fit and reset. * Fix: Make the zoom tool behave more predictably, it now doesn't do weird stuff like letting you select an area and then zooming out on it. * Fix: Give better icons to zoom in, zoom out and reset zoom, so that they don't all just look like rectangles at a glance. * Feature: Handle Lenovo Tab stylus presses on Android by translating them to F26 to F30. Thanks Moody2357 for helping to figure this out. * Fix: Properly indicate that the previous session is being resumed on Android. Thanks tiar for reporting. * Fix: Correctly restore local state like layer visibility when resuming a session with a snapshot on Android. Thanks tiar for reporting. * Fix: Work around the Wacom Movinkpad update showing a cursor when using the stylus that will flicker out of existence every time you press down the stylus. It will now show no cursor for the stylus, as it did before. Thanks Sylvanticus for reporting. * Feature: Add some new brushes in the Drawpile category and a new Secret's Brushes category with ribbons, halftones and more provided by Blozzom. 2026-09-22 Version 2.3.1-beta.2 * Fix: Make ratchet rotation canvas shortcut work properly when the canvas is mirrored or flipped. Thanks Bovy for reporting. * Fix: Make default filename use *months* as the second number, not *minutes*. Thanks hipofiz for reporting. * Fix: Allow dragging initial curve tool point to let you change its control point again. Thanks Astre for reporting. * Fix: A fix for the application not starting up on Android older than 8. Thanks freyalupen for reporting. * Feature: Allow triggering any action via touch taps. Thanks Bnuuyman for suggesting. * Feature: Add one-finger double-tap touch action. Lets you bind stuff to tapping twice quickly with a single finger. Thanks Bnuuyman for suggesting. * Feature: Allow selecting multiple frames in the timeline, letting you move, copy, delete etc. them all at once. You can use Shift or Ctrl or switch to the "select" timeline tool to do it without keyboard keys. * Feature: Add support for stylus barrel rotation on Android, for styluses that support it. Thanks kwh0209 for helping test this. This is a patch to Qt. * Fix: Make repeated move transforms not cause the transformation to get scaled by one pixel. Thanks Hermanni for reporting. * Feature: Allow fractional scaling for animation exports, in case you need very specific pixel dimensions. * Feature: Allow configuring right-click drawing to do nothing (the default), draw with the background color or erase. Thanks noelle and walnut for suggesting. * Fix: Give select layer above and below shortcuts a proper title with "layer" in the name so that you have a chance of finding them in the list. Thanks anonymous for reporting. * Feature: Allow selecting color-marked layers via keyboard shortcuts. Thanks anonymous for suggesting. * Feature: If Drawpile on Android is terminated due to resource exhaustion, such as running out of memory, it will now show a message about it on the next startup. Thanks Bluestrings for suggesting. * Feature: Add a workaround for full-pressure blotches on Ugee tablets. Enabled by default on Android and the browser where it is known to happen, shouldn't cause interference for styluses that behave normally. Thanks London for reporting. * Fix: Make sure MyPaint brush strokes start with proper directional values if the brush makes use of them. Previously they could end up with the value being zero degrees instead. Thanks tiar for reporting. * Fix: Call the Option key on macOS by its proper name. Thanks Axocrat for reporting. * Feature: Allow configuring whether a stroke is started only when moving the stylus. Enabled by default, as it was before. Thanks dAVePAGE for suggesting. * Fix: Make MyPaint brushes not require movement to put down the first part of their stroke. Brushes that use directional inputs don't do this, since movement is needed to have a direction. Thanks dAVePAGE for reporting. * Feature: Turn the lasso fill tool into a shape fill tool with two shape options: lasso and fan. The latter option does not produce holes, everything gets filled. Thanks lan700ng and VolutBrum for suggesting. * Fix: Correct saving of key frame properties to dppr files. Thanks marddle for reporting. * Feature: Allow exporting animations and timelapses on Android with the OS-supplied media encoder. Thanks Bluestrings, hpar and marddle for testing. * Fix: Make WEBM video export use a higher quality. * Feature: Add a declone key frame layers action. For the selected key frames, it will duplicate the layers referenced by multiple key frames. * Feature: Add a paste decloned key frame layers action. Will paste and duplicate layers if necessary. * Fix: Allow hitting enter/return twice on a number input to accept the dialog they're in, rather than entering edit mode again. You can also hold Shift to explicitly accept the dialog and Ctrl to explicitly enter edit mode instead. * Feature: Allow configuring the default save file name format under Edit > Preferences > Files. Thanks Bluestrings for suggesting. * Feature: Show the current layer title on the cursor when using the layer pick canvas shortcut (Ctrl+Shift+Left Click by default.) Thanks Gabr for suggesting. * Fix: Take the canvas rotation into account when constraining the angle (Shift by default) in the line and gradient tools. Thanks Ben for reporting. * Fix: Properly remember the selection of built-in brush tags like All or Untagged. * Feature: A history of used brushes, selectable as as a new "History" tag. Deleted brushes and brushes requested from other users will be retained here and can be undeleted or saved respectively until the history is cleared or they are explicitly removed. Thanks Ausjamcian, Geese and Phoneme for suggesting. * Feature: Add a clear button for the search field in the brushes dock. Thanks Bluestrings for suggesting. * Fix: Optimize non-tile-aligned canvas resizes. They should now be faster and use less memory. Thanks Bluestrings for reporting. * Fix: Retrieve file display names properly on Android. They could sometimes end up with wonky names when using file providers with ugly paths. * Fix: Use the proper input minimum and input maximum ranges in the MyPaint brush settings. Thanks Pine for reporting. * Feature: Allow exporting animations and timelapses on Windows using the OS-supplied media encoder. * Fix: Allow toggling the workaround that ignores zero-pressure tablet inputs, in case you have a tablet that reports no pressure despite you pressing the stylus down. SuperDisplay is known to do this. Thanks Tenzin for reporting. * Fix: Encode special characters in invite links so that they don't cause trouble when copying them around. Thanks Bluestrings for reporting. * Feature: Project playback, via File > Open Player. Can play back dppr files. This replaces the previous player, dprec and dptxt files will be converted on the fly. * Feature: Drawpile will now ask you if you start a recording while autorecovery is enabled, to avoid accidentally recording double for no reason. Thanks tiar for reporting. * Feature: Allow converting dprec and dptxt recordings to dppr files via File > Import > Convert Recordings to Project. You'll also be prompted about it when you use File > Open on these files. * Feature: Support for Android 16. Older versions continue to be supported, same as before. * Fix: Make timeline selection tool work properly while dragging over a track with onion skins enabled. * Feature: Add Tools > Developer Tools > UDP Activity Stream. This emits the cursor position over the canvas view and some other activity over a UDP socket, which can be consumed by stream avatars, brush sound makers and similar programs. Thanks Maniko for suggesting. * Feature: PNG spritesheet export for animations. Thanks greendyno and ULTRA TECH for suggesting. * Fix: A crash when resizing the canvas smaller while a lasso selection is being transformed. Thanks greendyno for reporting. * Feature: Repairing dppr and dpcs files via File > Repair File. If the file is detected to be corrupted, you will also be prompted to repair it when opening or recovering the file. * Feature: The the position, zoom, rotation, mirror and flip state of the view is now saved in dppr files. This state is restored when resuming a session on Android and following it can be toggled in the playback dialog. * Feature: When using Save As to save to a new dppr file, the current dppr file will be used as the basis for it, rather than an empty file. Thanks tiar for suggesting. * Fix: Make Selection → Fill Selection, gradient tool and shape fill tool adhere to layer alpha lock. Thanks hipofiz and Verdrusk for reporting. * Fix: Show proper download progress for list server favicons. * Fix: Make double-clicking dock titlebars not toggle them floating, since that's too easy to activate accidentally. * Fix: Increase the drag threshold for arranging docks and toolbars in general, as well as for docks when not in arrange mode even further, to avoid accidental rearrangements. * Feature: Add File → Merge/split projects. This lets you combine multiple dppr files or pull individual sessions out of them. Adding dprec/dptxt recordings to them is also supported. * Feature: Warn about closing the browser tab too quickly after saving, since several browers will truncate the target file to 0 bytes and then write to a temporary file, leaving you with the former if you exit too quickly. * Feature: The browser pressure tester now shows the pressure value and lets you toggle whether to optimize for low-pressure styluses like Apple Pencils, in case it doesn't get detected automatically. * Server Feature: Tell the user how many hours or minutes remain on their ban if it expires in less than 3 days, since giving just a date can make it confusing with regards to time zones. Thanks Bluestrings for suggesting. * Feature: Allow switching timelapses to be speed-based instead of duration-based. It will calculate the video duration from the given speed. Thanks xxxx for suggesting. * Fix: When saving an ORA file with clipping groups, the animation timeline's frame assignments no longer get garbled. Thanks BluesFlying for reporting. * Fix: Solve an issue where on some systems you would get disconnected on the first attempt of joining a session and then it worked fine on reconnect. This fix was already applied on Android, but aparently it also rarely happens elsewhere. Thanks Greendyno for reporting. * Feature: Replace the New and Open buttons in the toolbar with a menu that has common file actions and repeats the top menu bar for systems where that's annoying to access. Thanks tysontan for suggesting. * Feature: Allow dragging the logo in the timelapse dialog, rather than having to fiddle with the padding sliders. 2026-05-16 Version 2.3.1-beta.1 * Fix: Force canvas view dimensions to be even on hardware renderers, since otherwise the view gets scrunched on some graphics cards. * Fix: Make MyPaint brushes properly handle input values exactly on the point of a stair-step curve. Thanks Blozzom for testing. * Fix: Don't show MyPaint curves as continuing in a straight line outside the first and last point, sincet they don't. * Server Fix: Only show the fact that a session was reported in the event log, but leave the details to only be visible to the server owners. Thanks Liz for reporting. * Feature: Allow setting a blank brush cursor in the tools preferences. Thanks mixnmatt for suggesting. * Fix: Work around tablets not reporting when the eraser is brought near. Thanks Lauwenmark for reporting. * Feature: Show rectangle selection extents in the status bar. Thanks Mercia for suggesting. * Server Fix: Log streamed resets being blocked properly. Thanks grimsley for reporting. * Feature: Allow selecting custom color scheme files dropped into the application data. * Fix: Work around some some Android devices eating three- and four-finger taps unconditionally. Thanks Afiq for reporting. * Fix: Don't try to set the one-finger touch input on Android according to whether the device says it has a stylus attached because devices just lie about it. It's always set to be dynamically detected by default now. * Fix: Make stylus buttons on some external tablets on Android work properly. The pen buttons used to not activate until pressing the pen down and release only if the pen was continued to be held. This is a patch to Qt. * Fix: Clamp OKLAB colors the proper way round. Thanks Bonbli for reporting. * Feature: Replace autosave mechanism with more robust autorecovery. * Fix: Make setting kinetic scrolling to touch drag not trigger long-presses immediately on Android. * Fix: Properly clear invalid selection areas when masking brush strokes (shouldn't happen in the first place though.) * Fix: Make stylus buttons on Xiaomi devices act as right and middle clicks instead of page up and page down. Can be toggled in the tablet preferences. This is a patch to Qt. * Fix: Make lines not come out all jaggy on Xiaomi devices by ignoring the (wrong) tablet position history. Can be toggled in the tablet preferences. This is a patch to Qt. * Fix: Default the global pressure curve on Xiaomi devices to be really steep, because their stylus has a similarly high threshold as Apple Pencils do. * Feature: Add "Anti-Strain", "Apple Pencil" and "Xiaomi Stylus" as a preset options for the global pressure curve. * Fix: When saving a file, ask whether to overwrite it after confirming the format to avoid overwriting files unquestioned. * Fix: Properly preview editable fills when switching layers. * Feature: Allow toggling eraser, erase mode and alpha preserve via canvas shortcut. Thanks SOLARIS for suggesting. * Fix: Disable the annoyingly slow and sometimes even crashy animations when rearranging docks and toggling toolbar extensions. They now just occur instantly instead. * Feature: Allow viewing project statistics, such as length of sessions and work time, via File → Project statistics. Requires enabling autorecovery and saving to a dppr file. * Feature: Timelapses, via File → Make timelapse. Requires enabling autorecovery and saving to a dppr file. * Feature: Allow triggering undo, redo, hide docks and any other actions via canvas shortcut. Thanks RubySnoot for suggesting. * Feature: Make right-clicking with the freehand tool draw with the background color. Thanks doughie for suggesting. * Fix: Properly disable color marker and blending option buttons in the layer properties dialog when you don't have permission to modify those. Thanks xxxx for reporting. * Fix: Make bezier curve tool work with touch drawing. Thanks Notester32 for reporting. * Fix: Make refreshing flipbook not reset the playback to the beginning. Thanks BulletPepper for reporting. * Fix: Keep flipbook range to match the canvas range when it did so before even when closing the flipbook. Thanks BulletPepper for reporting. * Feature: Add next/previous frame within range actions, to move through the timeline but wrap at the edges of the frame range. Holding shift while pressing arrow keys actuates this action as well. Thanks BulletPepper for suggesting. * Feature: Add "set speed by FPS", "reset range" and "reset speed" actions to the flipbook. They are now behind the button that previously had only two zoom-related actions. * Fix: Make fonts not be a wonky size on some Android devices. * Feature: Ask for a UI scale on startup on Android, letting you adjust it and view the result, rather than having to restart Drawpile and potentially be left in an unworkable state. You can also pick the interface mode while you're at it. * Feature: Rotation tool. Similar to the Pan and Zoom tools, this lets you rotate the canvas just by clicking on the canvas. Thanks Cryankiebuillars for suggesting. * Fix: Properly enable clipping and alpha lock controls in layer dock when switching from a non-editable to an editable layer. Thanks xxxx for reporting. * Fix: Don't clamp brushes with out of range inputs from the mere act of opening the brush editor. Thanks Phoneme for reporting. * Feature: Add numeric input fields to curve inputs to allow the exact numeric values of each curve point to be set exactly. Thanks Saphiros for suggesting. * Fix: Render repeated animation frames into exports, since some players get confused by frames held longer. * Feature: Brush preview styles. You can now toggle between the full style with the rainbow circles and a plain style that matches the UI colors and doesn't try to preview every aspect of the brush. You can also toggle the display of the brush's title and thumbnail. There's also the option of disabling the preview altogether. The default is to show the thumbnail and title with plain style, since that gives the best tradeoff between showing the relevant information without being too distracting. Thanks fadi123go for suggesting. * Fix: Use a fixed random seed for the brush preview so that it doesn't change erratically when adjusting a parameter, which made it hard to see what was actually changing. * Feature: Only load brush thumbnails as they are needed. This should speed up startup if you have a lot of brushes. * Fix: Properly update alpha inherit icon when switching between dark and light themes. Thanks xxxx for reporting. * Feature: Allow choosing between thumbnails, strokes or both in the brushes dock. The default is both, since it gives the most amount of information at a glance. * Fix: Center brush dock thumbnails instead of having them left-aligned. Thanks MorrowShore for reporting. * Feature: Allow arbitrary scaling of brush dock sizes with a slider instead of a fixed set of sizes. * Fix: Handle additional stylus buttons on Android correctly. This makes some three-button styluses no longer interpret two of the side buttons as middle mouse. * Feature: Bind mouse button 5 to toggling the eraser by default. This makes three-button styluses have useful behavior. * Fix: Show correct MyPaint outline size when switching tools. It could sometimes end up showing an unadjusted size. * Fix: Properly mark MyPaint brushes as having been modified when modifying inputs other than pressure. * Fix: Don't limit flipbook range to 99 when opening it. * Feature: Allow using external ffmpeg for animation exports. This adds some more video codecs that normally don't come with Drawpile. * Fix: Make color selection in annotation tool asynchronous so that it doesn't crash in the browser. Thanks Curiosity for reporting. * Feature: An overview page for the shortcut preferences, to hopefully cut down on users not being able to find where to assign mouse buttons or similar. * Fix: Make status bar not end up huge when reattaching chat. Thanks hpar and xxxx for reporting. * Fix: Slow down the update rate of the status bar, since it causes performance issues on some devices. Thanks Liz and Hyper ifg for reporting. * Fix: Don't focus flipbook when it's already open to allow refreshing it without it taking away the keyboard focus from the main window. * Feature: Make the key frame delete action also delete the associated layer and add a separate unassign key frame action that only gets rid of the key frame. * Feature: Move the timeline track manipulation buttons into the top-left corner of the timeline above the tracks which was previously just a blank space. * Feature: Add an exposure tool to the timeline, which allows shifting multiple frames around without keyboard shortcuts. It is also accessible by holding Alt. * Feature: Allow zooming the animation timeline. There's a zoom menu on the timeline header now, you can use Ctrl+Mouse Wheel and you can bind keyboard shortcuts to it. Thanks Myathingoss for suggesting. * Feature: Allow playing back and exporting the tail end of an animation loop by setting the playback start larger than the end in the flipbook. This will play from flipbook range start to timeline range end, restarting from the timeline range start and playing until the flipbook range end, skipping the frames in the middle. Thanks Saphiros for suggesting. * Feature: Allow locking frame dragging on timeline tracks to prevent accidental frame moving, overwriting and changes in exposure. Thanks Saphiros for suggesting. * Fix: Make lone presses of the Alt key not focus the menu bar, since that interferes with shortcuts. * Feature: You can now configure the main menu bar actions in the shortcuts. They are also no longer dependent on which language you have Drawpile set to. * Feature: Allow dragging over numeric inputs to adjust their value. They also now don't annoyingly select the prefix and suffix anymore when you click on them. Thanks LingjenKaos for suggesting. * Fix: Don't consider the canvas eligible for long-pressing to open a (nonexistent) context menu. * Fix: Ignore motions right before releasing a numeric slider so that lifting the stylus doesn't annoyingly nudge the value off what you meant to pick. * Fix: Some text input on Android where spacebar wouldn't work, the view would turn blue on some devices, the text area would block stylus input or the text menu would cover up the text. * Fix: Handle F13 to F24 keys on Android and translate F21 to middle click by default. This is a workaround for OnePlus devices that inexplicably press this keyboard key when you press the button on their stylus. Thanks Clover_Yan for reporting. * Fix: Translate transforms with oversized selection masks to cut and paste operations instead of cancelling the transform. Thanks phanie for reporting. * Fix: Properly reset user id after leaving an online session and opening a file or creating a new image in the same window. Previously you would count as different users in different contexts, leading to permissions appearing wrong and your own strokes getting a user marker. Thanks grimsley for reporting. * Feature: Translate double-tap gesture on Huawei styluses on Android to the F25 key. Thanks noalero for suggesting. * Fix: Occasional crashes when using anti-overflow with a non-zero expand value at the edge of the canvas. Thanks Ausjamcian for reporting. * Feature: Allow clearing log files in the Files preferences. This is particularly useful on Android, where you can't manually delete them (although they probably don't take up much space either way.) * Fix: Immediately send local drawing commands from freehand strokes to the paint engine. This makes synchronized smudging way faster on some devices (and no perceptible difference on most others.) * Fix: Cancel strokes lingering from synchronized smudging when a new one is started. This prevents long-running strokes from just taking forever to finish and prevents the program hanging in some pathological cases. * Fix: Don't enable synchronized smudging on MyPaint brushes that don't have it explicitly set and only have infinitesimal smudge factor. There's several brushes where all it does is slow down the stroke with no perceptible difference. * Fix: Set frame ranges properly when only changing one side of the frame range in a session that doesn't have both sides set yet. Thanks dAVePAGE for reporting. * Fix: Properly load frame ranges from ORA files that don't have any timeline defined. * Fix: Default session host type to passworded instead of remembering that you had it set to public. This is a safer option than accidentally hosting something in public you didn't mean to and ending up in a panic trying to get the strangers out. Thanks Bluestrings and watt for reporting. * Fix: Change the wording on public and passworded session options to make it clearer what they do. Thanks Bluestrings, hyper and tiar for suggesting. * Feature: Generate a session password if none is set, rather than spewing an error telling the user they need to go fix it themselves. * Feature: When attempting to host a public session without a title, offer to host it invite-only instead of just showing an error. Thanks hyper for suggesting. * Feature: Move operator password settings to roles page, to avoid users mistaking it for the session password setting. Thanks Bluestrings for suggesting. * Feature: Show a warning that removing the password from a session will make it public. Thanks Bluestrings for suggesting. * Removed Server Feature: Closing sessions, called "block new joins" in the client. It's just a worse variant of setting/changing the password on the session to make it invite-only. That has none of the downsides of locking yourself out, letting strangers join if they time it right and the session becoming public on its own after everyone has left. * Feature: Add a prompt to the invite dialog to make sessions passworded if they're public and a button to open the session settings, to make those a bit easier to find. Thanks Bluestrings for suggesting. * Fix: Close invite dialog when disconnecting. * Feature: Load brush preset data and thumbnails on demand instead of preloading them. This makes startup, switching tags and other operations that reload brushes much faster, especially if you have a lot of brushes. * Feature: Add sections to the brush editor settings list and group the settings accordingly. Thanks Blozzom for suggesting. * Fix: Don't change current brush when using the brushes dock's search bar. * Feature: A notice in the invite dialog if the server or session doesn't support or restricts joining via web browser, with a prompt to use invite codes instead if appropriate. Thanks Bluestrings for suggesting. * Fix: Allow skipping around in the playback dialog again. This was caused by the check whether the canvas size is valid or not being flippe the wrong way round. Thanks Saova for reporting. * Feature: Adjust stabilizer with velocity. Enabled by default with a curve that lessens the stabilization for faster strokes, which makes it much more usable without having to constantly adjust the slider. * Fix: Properly preview lines, curves, circles and rectangles when using a brush with smudging turned on. Thanks retarj_o_burro for reporting. * Feature: Automatically resume drawings on Android, since the system will terminate Drawpile when it's in the background without giving you a chance to save. To avoid this, cleanly exit the application via File → Quit or by pressing the back button. Thanks tiar for suggesting. * Fix: Don't clear save paths when reconnecting to a session. This was particularly annoying on Android, since you can't save over existing files there. Thanks tiar for reporting. * Feature: Provide a better default name by default instead of just punting to "Untitled". The suggested name is now automatically prefixed with a date and tries to use a cleaned-up version of the session title if drawing online. Thanks tiar for suggesting. * Fix: Make automatic switching to frame view mode work properly even when the timeline isn't a floating or tabbed widget. The lack of a tab bar caused it to get misdetected as hidden. * Fix: Solve an issue where on some Android devices you would get disconnected on the first attempt of joining a session and then it worked fine on reconnect. Thanks Bluestrings for reporting. * Server Fix: Properly disconnect notify all clients when a session is shut down. Previously it could miss some of them and leave them lingering without a session. * Server Feature: Allow disconnecting clients that linger too long without a session, either before joining/hosting one or after having left. The duration is configurable by server owners, not limited by default. * Fix: Allow unsetting default layers again. Previously that operation got incorrectly filtered out as attempting to set the default layer to an invalid id. * Fix: Select the bottom-most layer to start with if no default layer is set. Previously you'd end up on the newest layer, which was unpredictable and often enough confounding if you ended up on somebody's shading layer or similar. * Fix: Properly hide and lock drawing on hidden layers in frame view. Thanks hipofiz for reporting.
  • Feb 20, 2026 2.3.0-158-ge11cc1158
    This "alpha" release is an automatically generated snapshot of the current state of development. It is continuously updated with work-in-progress changes that may be broken, incomplete, or incompatible with other versions of Drawpile. For downloads, take a look at the Assets below. Unless you really, really know what you're doing, **pick the 64bit options**. 32bit is probably *not* what you want unless you have a very strange device.
  • Feb 19, 2026 2.3.0-155-g188de0c31
    This "alpha" release is an automatically generated snapshot of the current state of development. It is continuously updated with work-in-progress changes that may be broken, incomplete, or incompatible with other versions of Drawpile. For downloads, take a look at the Assets below. Unless you really, really know what you're doing, **pick the 64bit options**. 32bit is probably *not* what you want unless you have a very strange device.
  • Feb 17, 2026 2.3.0-151-gfddfb046f
    This "alpha" release is an automatically generated snapshot of the current state of development. It is continuously updated with work-in-progress changes that may be broken, incomplete, or incompatible with other versions of Drawpile. For downloads, take a look at the Assets below. Unless you really, really know what you're doing, **pick the 64bit options**. 32bit is probably *not* what you want unless you have a very strange device.
  • Feb 16, 2026 2.3.0-149-gfd8194c38
    This "alpha" release is an automatically generated snapshot of the current state of development. It is continuously updated with work-in-progress changes that may be broken, incomplete, or incompatible with other versions of Drawpile. For downloads, take a look at the Assets below. Unless you really, really know what you're doing, **pick the 64bit options**. 32bit is probably *not* what you want unless you have a very strange device.
  • Feb 16, 2026 2.3.0-148-g06333ba78
    This "alpha" release is an automatically generated snapshot of the current state of development. It is continuously updated with work-in-progress changes that may be broken, incomplete, or incompatible with other versions of Drawpile. For downloads, take a look at the Assets below. Unless you really, really know what you're doing, **pick the 64bit options**. 32bit is probably *not* what you want unless you have a very strange device.
  • Feb 13, 2026 2.3.0-145-g9e4701a27
    This "alpha" release is an automatically generated snapshot of the current state of development. It is continuously updated with work-in-progress changes that may be broken, incomplete, or incompatible with other versions of Drawpile. For downloads, take a look at the Assets below. Unless you really, really know what you're doing, **pick the 64bit options**. 32bit is probably *not* what you want unless you have a very strange device.
  • Feb 12, 2026 2.3.0-140-g1e08a9472
    This "alpha" release is an automatically generated snapshot of the current state of development. It is continuously updated with work-in-progress changes that may be broken, incomplete, or incompatible with other versions of Drawpile. For downloads, take a look at the Assets below. Unless you really, really know what you're doing, **pick the 64bit options**. 32bit is probably *not* what you want unless you have a very strange device.
  • Nov 19, 2025 2.3.0 Release page →
    **Code signing policy:** <https://drawpile.net/codesigningpolicy/> * Fix: Don't show "exit layer view" notice when there's no canvas. * Fix: Properly remove the "unsaved changes" marker when saving to DPCS. * Feature: Add crop to selection action in the selection menu. Not any different to the resize canvas action, but there for discoverability. * Feature: Allow using stabilizer and smoothing with lasso select tool. * Fix: Don't remember interpolation mode on transform tool, since it's too easy to mess up art from having a stale mode set. * Fix: Make mipmap usage in hardware renderer configurable, since it causes performance issues with some graphics cards or drivers. Defaults to off. Thanks Bluestrings and Sinamer for reporting. * Fix: Make setting the hue slider to 359 in HSL space not turn out gray. Thanks BornIncompetence for reporting. * Fix: Make sliders not show a text selection cursor on Android when they're not in edit mode.
    More…
    * Fix: Make layer list items not show a text selection cursor on Android. * Fix: Correctly calculate the distance to move before a press is no longer considered a long-press. The calculation ended up with incorectly small values in most cases. * Fix: Improve long-press handling for context menus to act more like a real right-click would. * Fix: Don't delay long-presses by left-click or touch kinetic scrolling. * Feature: Add touch draw pressure settings, because apparently some screen tablets on Android use touch inputs instead of stylus ones. Thanks SurgeonTaco for suggesting. * Fix: Make dragging a layer onto its own canvas not paste its contents. Dragging layers between different windows is still possible. Thanks Blozzom and Pepper for reporting. * Server Fix: Don't claim that dprec templates are incompatible when they're not. * Fix: Make the "alpha lock layer for you" a buttton in the layer dock, rather than having it in the lock menu. Otherwise the inherit alpha button is too confusing to people not used to that feature existing. Thanks Phoneme for reporting. * Feature: Add extra thickness to the color sampling ring in the area where the colors meet to give better visibility of the comparison. Thanks tiar for suggesting. * Feature: Allow toggling color sampling ring in the color picker tool settings. * Fix: Only add actually picked colors to the color picker history, not every color hovered over along the way. * Fix: Make opening settings dialog not exit fullscreen on Android. * Fix: On Android devices with a screen large enough to show a full desktop UI, dialogs no longer get full-screened by default. The start and settings dialogs also no longer use their vertical design meant for tiny screens. Thanks tiar for reporting. * Fix: Replace some symbols in messages that don't show up properly on Android with equivalent ones that do. * Fix: Default MyPaint brushes to use synchronized smudging, since many of them only work properly with it turned on. * Fix: Select proper file type and remove the extension on the name input field when saving on Android and the browser. * Fix: Make color picker color dialog use the current foreground color when manually adding a color. Thanks Phoneme for reporting. * Fix: Show an error message on Linux under Wayland when attempting to pick a color from the screen with a hint to use Xorg instead. Thanks Meru and Phoneme for reporting. * Fix: Remove pick from screen button in the browser, since it doesn't work there. * Fix: Don't enter fullscreen in the browser when reopening the main window. Thanks Bluestrings for reporting. * Feature: Skip the username selection when reconnecting to a session in the browser using a drawpile.net account. It now automatically picks the same username again as it does on other platforms. * Fix: Remember local state when reconnecting, such as layer/track visibility, sketch mode, alpha lock, view mode etc. Thanks Bluestrings and hpar for reporting. * Removed Feature: Migration of settings from very old versions of Drawpile. That code no longer works properly, but it's doubtful anyone would want to port their settings from a 2017 version of Drawpile anyway. * Fix: Make keyboards like GBoard not eat all your hardware keyboard shortcuts after editing text once. This is a patch to Qt. Thanks justanotatest for reporting. * Fix: Unfocus chat when collapsing it so that you don't continue typing into it while it's gone. * Fix: Fall back to the application storage on Android when proper storage is unavailable. This is a patch to Qt. Thanks Sherb for reporting. * Fix: Use different zoom levels for hardware and software renderers, depending on which ones work better in the respective modes. * Fix: Default hardware renderer to single-buffering, since the system default buffering can add an immense amount of input lag. * Feature: Three new layout presets under View → Layouts. Thanks Ausjamcian, lambda20xx and Scruff for providing them. * Feature: Several new brush presets in the Drawpile tag. Thanks Annoy, Blozzom and lambda20xx for providing them. * Fix: Properly disable the save as ORA/DPCS actions while another save is going. * Fix: Don't process brush dabs that are invisible due to being infinitesimally tiny, fully transparent or infinitely soft (as opposed to only skipping their processing when they fulfilled all three criteria.) Thanks Blozzom for reporting. 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.
  • Nov 18, 2025 2.2.2 Release page →
    **Code signing policy:** <https://drawpile.net/codesigningpolicy/> * 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.
    More…
    * 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. 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.