OxieDraw
Development

Changelog

Notable changes in each OxieDraw release, newest first.

All notable changes to OxieDraw, newest first. Entries are added as part of the commit that makes the change, under the topmost (not released) heading. Tagging a release turns that heading into the version and its date.

Releases

v0.1.10 (not released)

v0.1.9 (2026-09-01)

  • Fixed pasting an image bigger than the canvas looses parts that fall outside it.
  • Pattern tool: patterns grown along a drawn line, starting with fur. A rank of fur is one continuous edge - a run of hand movements that sweep up into each point and pull back off it tuft shapes, so the tips join up and nothing crosses through anything else. The drawn line is a silhouette and the fur lies over the body on one side of it, so the curve decides the look: long sweeps over a flat stretch, crowded and flat in a hollow, fanned open and curling over a bulge.
  • Clipping masks: a layer renders only where the one below it has alpha, so flats can be shaded without painting outside the silhouette. Adjustment layers can clip too, affecting their base alone instead of the whole folder. The base is positional, so reordering re-resolves it and hiding it hides the stack. Ctrl+Alt+G, the layer context menu, or the gutter elbow.
  • Alpha lock: paint changes a layer's colour but never its alpha, so a shape can be recoloured in place. Covers the brush, fill, gradient, shapes and liquify; the eraser is refused, and text layers cannot lock. Marked in the theme's warning yellow - GNOME's microphone and screen-share pair - on the thumbnail badge, the header toggle and a canvas chip. / or the context menu.
  • Project schema v12 records both flags; older files load with them off.
  • Layers panel header: add layer, adjustment and group on the left, alpha lock alone on the right.
  • Layers panel rebuilt on three tones instead of connector lines: panels on the window colour, rows in the card colour, and a folder or adjustment filling what it covers in a shade between, so the surface carries the nesting. Rows inside a container paint no fill of their own. 6px of padding all round makes the row pitch uneven, so placement and hit-testing now share one layout pass; nesting insets only the left, so the eye and drag handle keep their x at any depth. The clip rod runs down into the layer it clips to and terminates there rather than hooking back under itself.
  • The left toolbar set the new tool before running the tool-switch logic, so the tool being left was already invisible to it and anything that needs to wind down on the way out saw the switch as a no-op.
  • Every chrome panel sits on the window colour. They carried libadwaita's .sidebar, which leaves the background to the theme, so any sidebar tint landed on them; they carry .oxiedraw-chrome instead.
  • Dragging a row or folder casts a drop shadow and keeps its surface while it travels, and the drop animates into place - the block flies from the pointer to its slot, shadow fading, as the rows making room close their last gap.
  • Deleting a layer inside a group and undoing puts it back in that group; the delete never recorded the folder change, so undo restored it at the root. Undo also restores clip and alpha-lock flags, and duplicates keep them through redo.
  • Transform, filter, fill, shape, gradient and liquify previews respect clipping instead of snapping to it on commit.
  • Selection tool: coverage heatmap preview, Add/Erase/Blur mask brushes with pressure build-up, and a marquee button that shows the shape it draws. Shift no longer forces a 1:1 marquee while it is the add modifier.
  • Filter preview keeps adjustment layers, and filters their mask too.
  • More logging across startup, document loading and the render loop.
  • Removed the obsolete view button from the top bar.
  • Frame profiler with a stacked stage breakdown in the F3 graph, configurable overlay, cheaper layer thumbnails and tab switching.
  • Cloning a group no longer loses or duplicates its children.
  • Tests that need a real GPU sit behind a gpu-tests cargo feature instead of #[ignore].
  • CI runs plain cargo test --workspace, the same command as locally, instead of nextest.

v0.1.8

  • Clippy: cleared the pre-existing pedantic failures that kept the lint gate, and with it the tagged release build, red.
  • Liquify tool: brush-driven local warping of a raster layer with Warp, Twirl, Pucker, Bloat, Push Left and Reconstruct over a GPU displacement field on a pristine snapshot, so repeated strokes stay a single resample. Mirrors across drawing guides, clips to the selection, and bakes one undo step per stroke.

v0.1.7

  • Toasts are drawn inside the canvas instead of as overlay widgets, so they no longer cancel a stylus drag or steal input.
  • Fill tool: fills carry across anti-aliased outlines instead of stopping at the first blended pixel, the threshold can be dialled in by holding and dragging after the drop, and pixels plus history land before the reveal sweep, which now runs on the frame clock so it cannot starve pen input.
  • Transform tool moves the whole panel selection (multiple layers and groups) as one rigid unit, with N-target GPU live preview, off-canvas data preserved across undo and redo, and adjustment layers previewed live.
  • Better shape correction.
  • Better charcoal brush.
  • Fixed layers spread across multiple groups.
  • Krita charcoal pencil: textured brush ported from Charcoal Pencil Thin, with dotted-paper grain, pressure-driven texture strength (grainy to solid) and size taper.
  • Brush UI: grid picker view, cog shortcut, and deferred save/discard in the brush manager.
  • Documentation site (Docus) with the user guide, tips and rustdoc API pages.

v0.1.6

  • CI: build and release only on tags, lint and test on branches; marked the git workspace safe in the version step and fixed the version it reports.
  • Fixed clippy warnings under Rust 1.94.
  • Moved the repository and CI from Codeberg to GitHub.
  • Better brushes: GPU smudge (bristle and oil presets), pattern and texture support in the brush format, and GPU tests covering both.

v0.1.5

  • Drawing guides: assistant mode, snapping to guides, and ProCreate-style symmetry with real-time mirroring of every dab.
  • Canvas rotation, persisted per document.
  • Shared EnumMeta trait for dropdown enums and an EffectKind::as_filter_spec bridge.
  • Reworked the serde layer for project files.
  • Touchpad support: two-finger pan and pinch zoom on the canvas.
  • Blend modes now composite in gamma space; folder selection ignores adjustment layers.
  • Removed dead EngineState and Compositor, documented the architecture in module rustdoc.
  • Extracted DocumentSession::new wiring behind a SessionCtx.
  • Shared fullscreen-pass construction across renderer modules.
  • Clipped the per-frame present pass to the dab region, fixing lag on large canvases with integrated GPUs.

v0.1.4

  • Brush stabilizer is rate-independent: its smoothing is rescaled to an 8 ms reference interval, so Ink Pen no longer lags far worse on low-end hardware.

v0.1.3

  • Stripped the forced GTK_THEME from the AppImage hook.

v0.1.2

  • Fixed AppImage icons, bundled font, and Wayland scaling.

v0.1.1

  • Hardened the release publish step so it is idempotent for moved tags and re-runs.

v0.1.0

First tagged release.

Copyright © 2026