⇦ | drawpile-base [community]
Last updated on: 2025-11-29 02:02 [UTC]

Metadata for drawpile-base in community

net.drawpile.drawpile - 2.3.0-r0 ⚙ aarch64 ⚙ armv7 ⚙ x86 ⚙ x86_64

Icon
<component type="desktop-application">
  <id>net.drawpile.drawpile</id>
  <name>Drawpile</name>
  <summary>Collaborative drawing</summary>
  <project_license>GPL-3.0+</project_license>
  <developer_name>askmeaboutloom, Calle Laakkonen and contributors</developer_name>
  <description>
    <p>Drawpile lets you draw, sketch, paint and animate together with other people on the same canvas.</p>
  </description>
  <pkgname>drawpile-base</pkgname>
  <launchable type="desktop-id">net.drawpile.drawpile.desktop</launchable>
  <icon type="remote" width="48" height="48">net/drawpile/drawpile/0fc431614ecc579c48a5496d4ffea55a/icons/48x48/drawpile-base_drawpile.png</icon>
  <icon type="cached" width="64" height="64">drawpile-base_drawpile.png</icon>
  <icon type="remote" width="64" height="64">net/drawpile/drawpile/0fc431614ecc579c48a5496d4ffea55a/icons/64x64/drawpile-base_drawpile.png</icon>
  <icon type="remote" width="128" height="128">net/drawpile/drawpile/0fc431614ecc579c48a5496d4ffea55a/icons/128x128/drawpile-base_drawpile.png</icon>
  <icon type="stock">drawpile</icon>
  <url type="homepage">https://drawpile.net/</url>
  <url type="bugtracker">https://github.com/drawpile/Drawpile/issues</url>
  <url type="faq">https://docs.drawpile.net/help/common/faq</url>
  <url type="help">https://drawpile.net/help/</url>
  <url type="donation">https://donate.drawpile.org/</url>
  <url type="translate">https://hosted.weblate.org/engage/drawpile/</url>
  <categories>
    <category>Graphics</category>
  </categories>
  <provides>
    <binary>drawpile</binary>
    <id>net.drawpile.drawpile.desktop</id>
    <mediatype>application/vnd.drawpile.recording</mediatype>
    <mediatype>text/vnd.drawpile.recording</mediatype>
    <mediatype>application/vnd.drawpile.canvas</mediatype>
    <mediatype>image/openraster</mediatype>
    <mediatype>image/png</mediatype>
    <mediatype>image/jpeg</mediatype>
    <mediatype>image/qoi</mediatype>
    <mediatype>image/webp</mediatype>
    <mediatype>image/vnd.adobe.photoshop</mediatype>
    <mediatype>x-scheme-handler/drawpile</mediatype>
  </provides>
  <screenshots>
    <screenshot type="default">
      <image type="source" width="1280" height="720">net/drawpile/drawpile/0fc431614ecc579c48a5496d4ffea55a/screenshots/image-1_orig.png</image>
      <image type="thumbnail" width="1248" height="702">net/drawpile/drawpile/0fc431614ecc579c48a5496d4ffea55a/screenshots/image-1_1248x702.png</image>
      <image type="thumbnail" width="752" height="423">net/drawpile/drawpile/0fc431614ecc579c48a5496d4ffea55a/screenshots/image-1_752x423.png</image>
      <image type="thumbnail" width="624" height="351">net/drawpile/drawpile/0fc431614ecc579c48a5496d4ffea55a/screenshots/image-1_624x351.png</image>
      <image type="thumbnail" width="224" height="125">net/drawpile/drawpile/0fc431614ecc579c48a5496d4ffea55a/screenshots/image-1_224x125.png</image>
    </screenshot>
  </screenshots>
  <releases>
    <release type="stable" version="2.3.0" timestamp="1763424000">
      <description>
        <p>Changes in this version:</p>
        <ul>
          <li>Fix: Don't show "exit layer view" notice when there's no canvas.</li>
          <li>Fix: Properly remove the "unsaved changes" marker when saving to DPCS.</li>
          <li>Feature: Add crop to selection action in the selection menu. Not any different to the resize canvas action, but there for discoverability.</li>
          <li>Feature: Allow using stabilizer and smoothing with lasso select tool.</li>
          <li>Fix: Don't remember interpolation mode on transform tool, since it's too easy to mess up art from having a stale mode set.</li>
          <li>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.</li>
          <li>Fix: Make setting the hue slider to 359 in HSL space not turn out gray. Thanks BornIncompetence for reporting.</li>
          <li>Fix: Make sliders not show a text selection cursor on Android when they're not in edit mode.</li>
          <li>Fix: Make layer list items not show a text selection cursor on Android.</li>
          <li>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.</li>
          <li>Fix: Improve long-press handling for context menus to act more like a real right-click would.</li>
          <li>Fix: Don't delay long-presses by left-click or touch kinetic scrolling.</li>
          <li>Feature: Add touch draw pressure settings, because apparently some screen tablets on Android use touch inputs instead of stylus ones. Thanks SurgeonTaco for suggesting.</li>
          <li>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.</li>
          <li>Server Fix: Don't claim that dprec templates are incompatible when they're not.</li>
          <li>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.</li>
          <li>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.</li>
          <li>Feature: Allow toggling color sampling ring in the color picker tool settings.</li>
          <li>Fix: Only add actually picked colors to the color picker history, not every color hovered over along the way.</li>
          <li>Fix: Make opening settings dialog not exit fullscreen on Android.</li>
          <li>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.</li>
          <li>Fix: Replace some symbols in messages that don't show up properly on Android with equivalent ones that do.</li>
          <li>Fix: Default MyPaint brushes to use synchronized smudging, since many of them only work properly with it turned on.</li>
          <li>Fix: Select proper file type and remove the extension on the name input field when saving on Android and the browser.</li>
          <li>Fix: Make color picker color dialog use the current foreground color when manually adding a color. Thanks Phoneme for reporting.</li>
          <li>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.</li>
          <li>Fix: Remove pick from screen button in the browser, since it doesn't work there.</li>
          <li>Fix: Don't enter fullscreen in the browser when reopening the main window. Thanks Bluestrings for reporting.</li>
          <li>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.</li>
          <li>Fix: Remember local state when reconnecting, such as layer/track visibility, sketch mode, alpha lock, view mode etc. Thanks Bluestrings and hpar for reporting.</li>
          <li>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.</li>
          <li>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.</li>
          <li>Fix: Unfocus chat when collapsing it so that you don't continue typing into it while it's gone.</li>
          <li>Fix: Fall back to the application storage on Android when proper storage is unavailable. This is a patch to Qt. Thanks Sherb for reporting.</li>
          <li>Fix: Use different zoom levels for hardware and software renderers, depending on which ones work better in the respective modes.</li>
          <li>Fix: Default hardware renderer to single-buffering, since the system default buffering can add an immense amount of input lag.</li>
          <li>Feature: Three new layout presets under View → Layouts. Thanks Ausjamcian, lambda20xx and Scruff for providing them.</li>
          <li>Feature: Several new brush presets in the Drawpile tag. Thanks Annoy, Blozzom and lambda20xx for providing them.</li>
          <li>Fix: Properly disable the save as ORA/DPCS actions while another save is going.</li>
          <li>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.</li>
          <li>Fix: Unpremultiply alpha values when exporting to animated WEBP so that partially transparent pixels come out looking correct.</li>
          <li>Fix: Make the preferences menu item on macOS open the preferences again.</li>
          <li>Fix: Make mouse wheel to adjust brush sizes not skip over small values on wheels that make big steps. Thanks Meiren for reporting.</li>
          <li>Fix: Make zoom tool detect clicks properly, rather than detecting tiny motions as a rectangle to zoom into. Thanks Scruff for reporting.</li>
          <li>Fix: Make freehand tool icon appear again if starting up with the eraser selected. Thanks Meiren for reporting.</li>
          <li>Fix: Make software renderers handle canvas sizes with dimensions beyond 32767 pixels properly. Thanks Ben for reporting.</li>
          <li>Fix: Open ORA files with width or height greater than 32767 pixels. Thanks Nimono for reporting.</li>
          <li>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.</li>
          <li>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.</li>
          <li>Fix: Make layer clipping onto pass-through groups work the same as it does in other programs (that is, make it not clip.)</li>
          <li>Feature: Anti-overflow fill for brushes. Thanks Ausjamcian, Axocrat and Null for suggesting.</li>
          <li>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.</li>
          <li>Fix: Make clicking with touchpad not trigger touch color picker.</li>
          <li>Fix: Properly enable or disable session permission boxes and sliders according to compatibility mode and operator status.</li>
          <li>Fix: Make key frame visibility attributes work properly in compatibility mode.</li>
          <li>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.</li>
          <li>Server Fix: Don't restrict binary (.dprec) templates to the current version.</li>
          <li>Fix: Disable native message boxes, they're broken on macOS Tahoe and don't add anything except an inconsistent appearance.</li>
          <li>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.</li>
          <li>Fix: Don't show duplicate full screen action in view menu on macOS.</li>
          <li>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.</li>
          <li>Feature: Allow closing modal dialogs on macOS using Command+Q. Thanks Axocrat for suggesting.</li>
          <li>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.</li>
          <li>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.</li>
          <li>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.</li>
          <li>Fix: Properly reconnect to sessions when using an invite code, rather than asking for a password the second time around.</li>
          <li>Fix: Properly reconnect when using a WebSocket URL, rather than replacing the path inappropriately.</li>
          <li>Fix: Don't incorrectly redo already gone undone commands after a series of undos and redos. Thanks Sinamer for reporting.</li>
          <li>Feature: Don't ask for login method, username and password again when reconnecting. Thanks Meru for reporting.</li>
          <li>Feature: Don't show chat until connecting to a session and remember the size of it even when it was hidden.</li>
          <li>Feature: Send button in chat, for virtual keyboards where hitting return is inconvenient.</li>
          <li>Feature: Make drawpile-timelapse command-line tool fill the background with the canvas background color instead of black.</li>
          <li>Server Fix: Apply archive and size limit setting immediately, not only when a session is started.</li>
          <li>Server Feature: Allow toggling archive mode on individual sessions instead of using server default. Thanks Bluestrings for suggesting.</li>
          <li>Server Fix: Properly treat autoreset threshold with zero value as no autoreset.</li>
          <li>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.</li>
          <li>Server Feature: Allow overriding session size limit for individual sessions. Thanks Bluestrings for suggesting.</li>
          <li>Fix: Properly check for session reset size so that oversized resets don't end up in disconnects.</li>
          <li>Fix: Show a proper error message when a manual reset fails, rather than claiming that an auto-reset failed.</li>
          <li>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.</li>
          <li>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.</li>
          <li>Feature: Long-press to open context menus. Enabled by default on Android and in the browser. Can be toggled in the user interface preferences.</li>
          <li>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.</li>
          <li>Fix: Make drawpile-cmd actually write to stdout when passing "-" as the output file, like the help claims. Thanks incoheart for reporting.</li>
          <li>Feature: Higher-quality zoom using the hardware renderer. Thanks cromachina for contributing.</li>
          <li>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.</li>
          <li>Feature: Allow for fractional framerates instead of only allowing whole numbers.</li>
          <li>Fix: Reset flipbook crop, speed nad frame range when a different canvas is loaded.</li>
          <li>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.</li>
          <li>Fix: Clear layer selection when selecting a blank frame. Thanks Pumpkin for reporting.</li>
          <li>Fix: Properly persist changes to blend, alpha preserve and erase modes when they're changed on the brush dock. Thanks cromachina for reporting.</li>
          <li>Fix: Don't disconnect brush shortcuts when changing other shortcuts. Thanks cromachina for reporting.</li>
          <li>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.</li>
          <li>Feature: Start blank canvases with a single timeline track pre-created, similar to how it works with layers.</li>
          <li>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.</li>
          <li>Feature: Make compiling Drawpile with WebSocket support mandatory. This avoids accidentally ending up with an application that's unable to connect to certain servers.</li>
          <li>Fix: Properly disable join button when an empty address is entered.</li>
          <li>Feature: Allow explicitly picking between WebSockets and TCP sockets in the join, browser and host pages of the start dialog.</li>
          <li>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.</li>
          <li>Feature: Show connection socket type in the net status field in the bottom-right corner.</li>
          <li>Fix: Make deselect work on identity transforms. Previously it would cancel the transform, but not actually deselect.</li>
          <li>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.</li>
          <li>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.</li>
          <li>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.</li>
          <li>Feature: Show lock message even when it doesn't affect the current tool (without actually locking anything.)</li>
          <li>Feature: Allow detaching the chat but keeping it on top of the main window or all other windows. Thanks Bluestrings and Blozzom for suggesting.</li>
          <li>Fix: Properly autoselect default layer on join. Thanks Bluestrings for reporting.</li>
          <li>Feature: Automatically switch to frame view mode when the animation timeline is sufficiently fiddled with.</li>
          <li>Fix: Make chat recognize user as operator even when they are for some rason not in the user list. Thanks Bluestrings for reporting.</li>
          <li>Fix: Properly restore chat size when reattaching.</li>
          <li>Fix: Properly save accounts on the web when asked when the server doesn't support browser authentication. Thanks Bluestrings and Evil Sonic for reporting.</li>
          <li>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.</li>
          <li>Fix: Allow putting labels on a blank brush thumbnail. Thanks hipofiz for reporting.</li>
          <li>Feature: Pixel art input for pixel brushes, turns off all smoothing and makes the inputs apply immediately. Thanks Ben, dAVePAGE and Nilifin for reporting.</li>
          <li>Fix: Remove alpha lock and erase toggle buttons when using the eraser tool.</li>
          <li>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.</li>
          <li>Fix: Make start dialog not flicker briefly on some systems.</li>
          <li>Removed Feature: Use the same logo for the application, too distracting evidently.</li>
          <li>Fix: Make hosting session with a password work, it did not get picked up sometimes. Thanks Bluestrings for reporting.</li>
          <li>Removed Feature: Compatibility with the old 2.1 versions, which was originally released 6 years ago. 2.3 is compatible with 2.2 instead.</li>
          <li>Feature: Add Edit &gt; Lightness/Darkness to Alpha action. Thanks Ben for suggesting.</li>
          <li>Feature: Allow switching annotation rendering between vector, smooth and pixel fonts. Thanks cvrsoiioo4 for suggesting.</li>
          <li>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.</li>
          <li>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.</li>
          <li>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.</li>
          <li>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.</li>
          <li>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.</li>
          <li>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.</li>
          <li>Feature: Bring back the indirect normal mode from Drawpile 2.1 as another paint mode option.</li>
          <li>Feature: Allow using blend modes with MyPaint brushes, rather than restricting them to normal, recolor and erase.</li>
          <li>Feature: Allow using MyPaint brush color dynamics in indirect mode.</li>
          <li>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.</li>
          <li>Fix: Don't displace annotations when resizing the canvas to the left or top.</li>
          <li>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.</li>
          <li>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.</li>
          <li>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.</li>
          <li>Fix: Make MyPaint brush outline more accurate to the actual maximum size of the brush (although it still can't account for crazier brushes.)</li>
          <li>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.</li>
          <li>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.</li>
          <li>Feature: Allow drawing on selections via Selection → Draw on Selection.</li>
          <li>Feature: Allow changing the color of the selection mask via View → Set Selection Mask Color.</li>
          <li>Feature: Make selections mask brush strokes. Can be toggled via Selection → Mask Brush Strokes With Selection. Thanks Bluestrings for testing.</li>
          <li>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.</li>
          <li>Feature: Don't require paste permission for transforms that modify the opacity or blend mode.</li>
          <li>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.</li>
          <li>Feature: Allow locking layer properties to avoid accidentally changing e.g. the blend mode.</li>
          <li>Feature: Allow locking layer positions to avoid accidentally moving them. Thanks Athena for suggesting.</li>
          <li>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.</li>
          <li>Feature: A Drawpile 2.2 compatibility mode, allowing you to join sessions hosted with the previous version. Thanks lambda20xx for testing.</li>
          <li>Feature: Add shortcuts that switch tools and deselect in a single action. Thanks Bonbli for suggesting.</li>
          <li>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.</li>
          <li>Feature: A gradient tool, which works inside of selections. Thanks ChristianJohnsten, lambda20x, Malrn and Maffi for suggesting.</li>
          <li>Feature: Preview brushes with fixed X and Y offsets with an offset outline. Thanks Phoneme for suggesting.</li>
          <li>Fix: Don't mark the canvas as having unsaved changes from just making a selection on it. Thanks MachKerman for reporting.</li>
          <li>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.</li>
          <li>Fix: Save and restore smudge minimum value properly instead of resetting it to zero.</li>
          <li>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.</li>
          <li>Feature: Show the time it took to open, save and export files in the status bar.</li>
          <li>Fix: Don't disconnect when receiving an unknown message from user 0. Thanks Blozzom and unsername for reporting.</li>
          <li>Fix: Compensate jagged curves in when using the lasso select tool. Thanks Blozzom for reporting.</li>
          <li>Feature: Make arrow keys navigate the animation timeline when it has focus. Thanks MorrowShore for suggesting.</li>
          <li>Feature: Add support for opening and exporting images in Quite Okay Image Format (QOI).</li>
          <li>Feature: Add -B/--background-color option to drawpile-timelapse command to set an override background color. Thanks Bluestrings for suggesting.</li>
          <li>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.</li>
          <li>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.</li>
          <li>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.</li>
          <li>Feature: Allow pressing Escape (or whatever you bound "cancel action" to) to deselect. Can be disabled in the tool preferences. Thanks RannyBergamotte for suggesting.</li>
          <li>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.</li>
          <li>Fix: Properly stop flood fills at selection boundaries. Thanks Bluestrings for reporting.</li>
          <li>Feature: Allow assigning keyboard shirtcuts to tool blend modes. Thanks Izzy and Meru for suggesting.</li>
          <li>Fix: Don't reattach detached brushes when switching slots. Thanks MachKerman for reporting.</li>
          <li>Feature: Show tooltips of tool buttons immediately, so that you can tell better what they do without having to wait for them.</li>
          <li>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.</li>
          <li>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.</li>
          <li>Fix: Don't allow toggling toolbars in small screen mode, since they will just reappear again. Thanks CosmosX007 for reporting.</li>
          <li>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.</li>
          <li>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.</li>
          <li>Feature: Allow reordering and toggling which drawing tools are visible in the toolbar, via e.g. Tools → Configure drawing toolbar. Thanks MorrowShore for suggesting.</li>
          <li>Feature: Add OKLAB blend mode for layers and brushes. Thanks Bonbli for contributing.</li>
          <li>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.</li>
          <li>Feature: Auto-correct attempts to host on http(s) sites by extracting the host portion from them. Thanks Charmandrigo for suggesting.</li>
          <li>Feature: Add shortcuts to change brush opacity and hardness. Thanks justanotatest for suggesting.</li>
          <li>Feature: Allow defining a separate pressure curve for the stylus eraser tip in the tablet preferences. Thanks CosmosX007 for suggesting.</li>
          <li>Feature: Allow turning off system file dialogs on Windows, in case they somehow cause trouble. Thanks CrustStuff for suggesting.</li>
          <li>Fix: Remember loops field in animation export dialog during a single run, instead of resetting it to 1 every time.</li>
          <li>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.</li>
          <li>Feature: Redirect handling in the client, allowing servers to forward connections to other servers, with the option of only accepting signed redirects.</li>
          <li>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.</li>
          <li>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.</li>
          <li>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.</li>
          <li>Feature: Add a build for Windows on ARM. Thanks fizbin for testing.</li>
        </ul>
      </description>
      <url>https://drawpile.net/news/release-2.3.0/</url>
    </release>
    <release type="stable" version="2.2.2" timestamp="1742947200">
      <description>
        <p>Changes in this version:</p>
        <ul>
          <li>Fix: Make annotations not cause glitches when moving them around when using the software renderer. Thanks Meru for reporting.</li>
          <li>Feature: Add -u/--users parameter to dprectool, which will print out a table of user statistics along with names and ids.</li>
          <li>Feature: Add --include-user-ids parameter to dprectool, allowing to pass a comma-separated list of user ids to only include visual changes from.</li>
          <li>Fix: Work around WebKit bug 284752 that prevents Drawpile from working on Safari 18. Thanks grimsley for reporting.</li>
          <li>Fix: Correct weird letter spacing in the font rendering on Windows. Thanks Sinamer for reporting.</li>
          <li>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.</li>
          <li>Fix: Generate the catchup image in the background when hosting on the builtin server, rather than hanging the client. Thanks mukihyena for reporting.</li>
          <li>Server Fix: Additional checks and logging to avoid and diagnose temporary failures in streamed resets. Thanks Will for reporting.</li>
          <li>Fix: Slightly delay restoring dock layouts after the window is resized to avoid a crash on macOS. Thanks Axocrat for reporting.</li>
          <li>Fix: Properly update the checkbox on View &gt; Full Screen if the OS forces the application out of it. Thanks Sinamer for reporting.</li>
          <li>Fix: Restore window maximized after exiting the application from full screen mode. Thanks Sinamer for reporting.</li>
          <li>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.</li>
          <li>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 &gt; Tablet Driver &gt; 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.</li>
          <li>Fix: Remove the "KisTablet" prefix from the tablet driver names in Windows, it's a technical name that doesn't add anything useful.</li>
          <li>Feature: Indicate when you have no layer selected so that it doesn't seem like you can draw but nothing happens.</li>
          <li>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.</li>
          <li>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.</li>
          <li>Removed Feature: Username lists in external session announcements. They were never used.</li>
          <li>Fix: Show current tier in the layer permissions menu again. Thanks Meiren for reporting.</li>
          <li>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.</li>
          <li>Server Feature: Invite codes, allowing inviting people with revokable links that override regular session restrictions. Thanks Bluestrings and Liz for suggesting.</li>
          <li>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.</li>
          <li>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.</li>
          <li>Fix: Use proper background images in Windows installer instead of those ugly red discs. Thanks evilTriangle for reporting.</li>
          <li>Fix: Correct intermittent errors when connecting, reconnecting or otherwise opening a new main view in the browser that could hang the application.</li>
          <li>Feature: Allow hiding the color history swatches on individual color docks. Thanks Stickly for suggesting.</li>
          <li>Fix: Make pan, zoom, inspector and color picker tools not get locked by the session catching up or resetting. Thanks Greendyno for reporting.</li>
          <li>Fix: Don't show canvas during catchup when using software renderer.</li>
          <li>Fix: Fix keyboard shortcuts, enter and backspace not reacting on some devices in the browser. Thanks Greendyno for reporting.</li>
          <li>Fix: Keep leading spaces and zeroes the same when creating or duplicating a layer. Thanks Greendyno for reporting.</li>
          <li>Feature: Allow making the application full-screen in the browser, using View &gt; Full Screen. Thanks Windy for suggesting.</li>
          <li>Fix: Make user markers not leave streaks in the software renderer when fractional UI scaling is involved. Thanks lambda20xx for reporting.</li>
          <li>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.</li>
          <li>Fix: Don't crash on invalid certificates when connecting via WebSocket. Thanks IZUHU for reporting.</li>
          <li>Feature: Set user agent header when connecting via WebSocket using the client. Thanks Meru for suggesting.</li>
          <li>Feature: Allow adding a "w" query parameter to session URLs to connect via WebSocket instead. Thanks IZUHU for suggesting.</li>
          <li>Fix: Remember whether a host was connected to via WebSocket by adding the "w" query parameter to it.</li>
          <li>Server Feature: Add a "prefer WebSockets" option. Clients will generate appropriate invite links and announcements will contain this preference.</li>
          <li>Server Fix: Allow refreshing external bans even when the section is locked. Thanks Bluestrings for reporting.</li>
          <li>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.</li>
          <li>Feature: Add PSD and WEBP format support to the drawpile-cmd command.</li>
          <li>Fix: Don't reset reference dock position when toggling dock visibility. Thanks izzy for reporting.</li>
          <li>Fix: Remove language selection in the web version for now, since it doesn't do anything. Thanks Albano Battistella for reporting.</li>
          <li>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.</li>
          <li>Fix: Show and select existing track title when renaming it. Thanks Greendyno for reporting.</li>
          <li>Fix: Properly resize login dialog on Android when showing session listings so that you can actually read something.</li>
          <li>Fix: Don't make kinetic touch scrolling jerk around when moving the finger over the scroll bar.</li>
          <li>Fix: Properly linkify URLs with an @ in the path.</li>
          <li>Fix: Default kinetic scroll on Android and the browser to left-click, since that works better and also covers touch.</li>
          <li>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.</li>
          <li>Fix: Work around a crash on Windows when toggling kinetic scroll settings.</li>
          <li>Fix: Properly show current layout on first layouts dialog run. Thanks Dib for reporting.</li>
          <li>Fix: Disable image reader limit in command-line tools under Qt6.</li>
          <li>Fix: Deduplicate brush and tag names when exporting brushes. Thanks Blozzom for reporting.</li>
          <li>Fix: Don't crash under Windows 7 when attempting to play two sounds once. Thanks pachuco for reporting.</li>
        </ul>
      </description>
      <url>https://drawpile.net/news/release-2.2.2/</url>
    </release>
    <release type="stable" version="2.2.1" timestamp="1708214400">
      <description>
        <p>Changes in this version:</p>
        <ul>
          <li>Fix: Default to previous directory when saving a fresh file. Thanks Crow for reporting.</li>
          <li>Feature: Allow toggling performance-related canvas view settings, since some systems get slowdowns. Thanks DevonJP for reporting.</li>
          <li>Fix: Don't force TLS socket algorithms, since ECDSA certs seem to not like them. Thanks Bluestrings for reporting.</li>
          <li>Fix: Log message queue read, write and timeout errors properly. Thanks Pepper for reporting.</li>
          <li>Feature: Implement WebSocket support in the server, available with the --websocket-port and --websocket-listen options.</li>
          <li>Feature: Send keepalive messages from the server, if the client indicates support for it. Avoids them disconnecting when too busy uploading to send a ping.</li>
          <li>Feature: Active user counts for sessions. A user counts as active if they drew in the last five minutes.</li>
          <li>Feature: Make invite links indicated web client capability and NSFM-ness of sessions so that the invite page can show a "join in the browser" button and an appropriate notice respectively. Thanks Blozzom for suggesting the latter.</li>
          <li>Fix: Properly handle cancelling a connection while it's being established. Thanks Fox for reporting.</li>
          <li>Server Fix: When hosting without an account is enabled, also allow it for anyone *with* an account. Thanks ahaven for finding this.</li>
          <li>Fix: Don't resize brush settings unnecessarily larger when switching between brush types. Thanks Meiren for reporting.</li>
          <li>Fix: Try to handle switching between tablet pen and eraser more consistently. Thanks Daystream for reporting.</li>
          <li>Feature: Add next and previous key frame actions, allowing skipping between key frames in the current track. Thanks BulletPepper for reporting.</li>
          <li>Fix: Properly refer to "layer" and "layer group" in layer actions depending on what is selected. Thanks Momo for reporting.</li>
          <li>Fix: Save censored layers into PSDs properly. Thanks Blozzom for reporting.</li>
          <li>Fix: Don't allow copying, cutting and color picking from censored layers.</li>
          <li>Fix: Rotate brush and fill outline along with the canvas. Thanks Bluestrings for reporting and xxxx for helping solve some issues with it.</li>
          <li>Feature: Add experimental support for high-DPI interface scaling.</li>
          <li>Fix: Don't reset opacity multiply inputs to default when loading a brush that doesn't have it set. Thanks Blozzom for reporting.</li>
          <li>Fix: Limit MyPaint brush dab counts to more sensible values, since the defaults from MyPaint are pointlessly high and can cause chugging. Thanks Blozzom for reporting.</li>
          <li>Fix: Don't blink last user cursors again when making a selection.</li>
          <li>Fix: Make user cursors trail MyPaint brush strokes better, only smoothing it out when there's jitter. Thanks Blozzom for reporting.</li>
          <li>Feature: Show latency in the status message, next to the session size and cursor coordinates. Thanks Meiren for suggesting.</li>
          <li>Feature: Add action to pick color from screen, default shortcut is Shift+I. Thanks Meru for suggesting.</li>
          <li>Feature: Allow switching the current brush to erase mode when using the tablet pen eraser instead of switching to the eraser tool slot. The setting for this is in the Input settings.</li>
          <li>Feature: Make the Windows installer put a shortcut on the desktop.</li>
          <li>Fix: Widen the stripes of the censor pattern so that it's easier on the eyes. Thanks Ben for reporting.</li>
          <li>Fix: Don't remember uncensor layers across restarts, to avoid being exposed to things you didn't want to just because you forgot to toggle it back off.</li>
          <li>Fix: Properly show censored layers in the list even when they are revealed.</li>
          <li>Server Fix: Allow reading users' trusted status through the API, because it's something you can write through it.</li>
          <li>Server Feature: Allow limiting the maximum number of users per session. Moderators and administrators can override this.</li>
          <li>Server Fix: Time out clients that take too long to disconnect gracefully. Thanks Bluestrings for reporting.</li>
          <li>Fix: Properly apply layer properties if the layer changed since opening them.</li>
          <li>Feature: Show last joined address in join dialog.</li>
          <li>Fix: Hide disconnection banner after establishing connection to a session.</li>
          <li>Fix: Make censoring layer groups actually have an effect.</li>
          <li>Fix: Don't use 64 bit stuff in 32 bit Windows installer.</li>
          <li>Fix: Don't break pinned start menue shortcuts when updating on Windows. Thanks Bluestrings and anonymous for reporting.</li>
          <li>Server Fix: Don't report temporary server bans as permanent. Thanks Bluestrings for reporting.</li>
          <li>Server Fix: Properly convert between IPv4 and IPv6 when checking IP bans. Thanks Bluestrings for reporting.</li>
          <li>Fix: Use proper measurements to decide on how much painting to do in a single step, hopefully preventing chugging caused by certain brushes.</li>
          <li>Server Fix: Save catchup keys to file-backed sessions so that the counter doesn't reset upon a server restart.</li>
          <li>Fix: Don't show user cursors while catchup dialog is open.</li>
          <li>Feature: Add some bulk permission commands for (un)trusting and setting layer tiers, explanation available through /modhelp. Thanks Bluestrings for suggesting.</li>
          <li>Fix: Don't gray out layer ACL tier settings when a layer is assigned to users exclusively, since those settings are not exclusive.</li>
          <li>Fix: Don't include stuff from before session reset when restarting a recording because of one. Thanks Meiren for reporting.</li>
          <li>Fix: Don't overwrite recordings on Windows if the file names contain non-ASCII symbols. Thanks Meiren for reporting.</li>
          <li>Fix: Make log file on Windows log non-ASCII symbols properly.</li>
          <li>Fix: Don't reorder listing servers when sorting by title in the browse tab.</li>
          <li>Feature: Remember last sorting on the browse page. Thanks Bluestrings and Meiren for suggesting.</li>
          <li>Fix: Only ask for confirmation when a self-signed TLS certificate changes, not when a "real" one renews. Thanks Bluestrings and Pepper for reporting.</li>
          <li>Feature: Fill background for copying the merged image with a non-rectangular selection. Thanks Bluestrings for suggesting.</li>
          <li>Fix: Make bezier curve tool generate smooth curves at small sizes, rather than getting jaggy. Thanks Crow for reporting.</li>
          <li>Server Feature: Allow server owners to kick users not connected to a session.</li>
          <li>Fix: Make navigator slider not eat keyboard inputs when navigator is undocked. Thanks anonymousduck for reporting.</li>
          <li>Fix: Disregard hidden frames when rendering animations. Thanks Etide for reporting.</li>
          <li>Server Feature: Log when a wrong password is entered for server accounts and sessions, disconnect the user after too many wrong tries.</li>
          <li>Server Fix: Log client host and join attempts even when unsuccessful. Thanks Bluestrings for reporting.</li>
          <li>Fix: Load default settings values after the program has initialized, avoiding crashes that can happen on Windows when building in debug mode. Thanks kiroma for reporting and testing.</li>
          <li>Feature: Optimize classic brush calculation, making them a good chunk faster. Thanks kiroma for contributing.</li>
        </ul>
      </description>
      <url>https://drawpile.net/news/release-2.2.1/</url>
    </release>
    <release type="stable" version="2.2.0" timestamp="1705104000">
      <description>
        <p>Changes in this version:</p>
        <ul>
          <li>Complete overhaul of the paint engine, making it much faster.</li>
          <li>Support for MyPaint brushes, with many brushes included.</li>
          <li>Layer groups, which can also be used for alpha preserve, clipping and masking.</li>
          <li>A proper stabilizer and curve smoothing to avoid jaggy lines.</li>
          <li>Nicer-looking user interface with dark mode and tablet-friendly sliders.</li>
          <li>Better color depth that prevents artifacting when shading.</li>
          <li>Numerous added blend modes, such as Overlay, Screen, Color and Erase.</li>
          <li>Fixed indirect mode to work properly.</li>
          <li>Android support.</li>
          <li>And a lot more stuff that doesn't all fit in here. Look on drawpile.net for the full list.</li>
        </ul>
      </description>
      <url>https://drawpile.net/news/release-2.2.0/</url>
    </release>
  </releases>
  <content_rating type="oars-1.0">
    <content_attribute id="social-chat">intense</content_attribute>
    <content_attribute id="social-audio">intense</content_attribute>
  </content_rating>
</component>