Features
- paint.net effects, docked effect panel, document tabs and unsaved-changes prompt (aba129c)
- pincel-agent: colour parameter kind and the outline effect (AC-12) (bbfd2c2)
- pincel-agent: expose Drop Shadow, Stylize Outline, Quantize and Reduce Noise's strength to agents (68ea4f1)
- pincel-agent: expose the paint.net adjustments to agents (AC-10) (1043cc9)
- pincel-agent: expose the paint.net Artistic and Photo effects to agents (ede3e97)
- pincel-agent: expose the paint.net blurs to agents (AC-13) (a3b1bbc)
- pincel-agent: expose the paint.net distortions to agents (2daf47b)
- pincel-agent: expose the paint.net render effects to agents (72ee703)
- pincel-core: add the DrawDitherGradient command (dithered-gradient AC-01, AC-02, AC-03, AC-04, AC-06, AC-07, AC-08, AC-14, AC-15) (719b1f4)
- pincel-core: add the Shading ink to PencilStroke (shading-ink AC-01, AC-02, AC-03, AC-04, AC-05, AC-06, AC-11) (e9e93e7)
- pincel-core: compose indexed and grayscale sprites (AC-01 … AC-12) (03233c8)
- pincel-core: compose linked cels (AC-01 … AC-07) (a0b4463)
- pincel-core: fold group opacity and blend mode in compose (AC-08 … AC-20) (6767bae)
- pincel-core: integer-scaled PNG frame and sheet export (AC-03, AC-04, AC-05, AC-06, AC-07, AC-08, AC-09) (9e7933c)
- pincel-core: mirror, wrap and cel growth in PencilStroke (AC-01, AC-02, AC-03, AC-05, AC-06, AC-07, AC-15, AC-16, AC-17, AC-19, AC-21) (09eab06)
- pincel-core: read and write Lospec .hex, JASC .pal and PNG palette strips (palette-formats AC-02, AC-03, AC-04, AC-05, AC-06, AC-07, AC-10, AC-11, AC-12, AC-13, AC-15) (18cdce3)
- pincel-core: undoable SetGrid command for the sprite grid (AC-08, AC-09, AC-10, AC-13) (d0ab686)
- pincel-effects: add Drop Shadow, Stylize Outline, Quantize and paint.net Reduce Noise (AC-03 – AC-10) (ac5d299)
- pincel-effects: add the Outline Object effect with a colour wire slot (AC-02, AC-03, AC-04, AC-05, AC-06, AC-12, AC-13) (c08b586)
- pincel-effects: add the paint.net adjustments (AC-03 – AC-09, AC-11) (868d4d6)
- pincel-effects: add the paint.net Artistic effects (AC-05, AC-06, AC-07) (3dafe15)
- pincel-effects: add the paint.net blurs (AC-03 – AC-11, AC-13, AC-14) (6bb9973)
- pincel-effects: add the paint.net distortions (AC-03 – AC-12) (cdfb309)
- pincel-effects: add the paint.net Photo effects (AC-03, AC-04, AC-08 – AC-11) (32ad03b)
- pincel-effects: add the paint.net render effects (AC-03 – AC-08) (1122d87)
- pincel-effects: outline effect with a colour wire slot (AC-02, AC-03, AC-04, AC-05, AC-06, AC-12, AC-13) (c18400e)
- pincel-image-core: commands report the composite rect they change (AC-01) (c2b0443)
- pincel-image-core: composite layer groups in isolation (AC-07, AC-08, AC-09, AC-10) (e60c6d4)
- pincel-image-core: group commands in the Image command format (AC-01, AC-02, AC-03, AC-14) (e63da69)
- pincel-image-core: layer groups in the Image-mode layer tree (AC-01, AC-02, AC-04, AC-05, AC-20) (ee30c68)
- pincel-image-core: merge rules for layer groups (AC-06, AC-13, AC-14, AC-15) (2deb168)
- pincel-image-core: paste above a group and keep group buffers out of canvas ops (AC-19) (bdb2420)
- pincel-image-core: read 8-bit RGB PSD layers, groups and composite (AC-01, AC-02, AC-03, AC-04, AC-05, AC-06, AC-07, AC-08, AC-10, AC-14) (adb9e41)
- pincel-image-core: read and write layer groups as nested OpenRaster stacks (AC-01, AC-02, AC-03, AC-04, AC-05, AC-07) (e6169bd)
- pincel-image-core: refuse pixel edits on groups and move group content (AC-11, AC-12, AC-18) (8e35db5)
- pincel-image-wasm: expose the open-document count for tests (AC-16) (570508e)
- pincel-image-wasm: layer tree in the document info and group thumbnails (AC-11, AC-12, AC-17) (c395705)
- pincel-image-wasm: open_psd returns the handle and the import notices (AC-06, AC-09) (3b3059e)
- pincel-image-wasm: run effects on the selection as their target (AC-10) (7427dc3)
- pincel-wasm: add beginShadingStroke for the Pencil's Shading ink (shading-ink AC-01, AC-02, AC-03, AC-04, AC-05, AC-06, AC-11, AC-13) (7fc8a37)
- pincel-wasm: add composeFrame(frame, zoom, onion) for onion-free composites (animation-preview AC-09) (fbd01bb)
- pincel-wasm: add importPalette / exportPalette for every palette format (palette-formats AC-06, AC-07, AC-08, AC-09, AC-14, AC-15) (cdca03c)
- pincel-wasm: anchor Pixelate to the canvas grid for trimmed cels (AC-06, AC-13, AC-14) (e4365fc)
- pincel-wasm: count live documents for tests (AC-16) (f177eb8)
- pincel-wasm: expose applyGradient for the dithered Gradient tool (dithered-gradient AC-08, AC-12, AC-13) (a3bba13)
- pincel-wasm: grid accessors and undoable setGrid (AC-08, AC-09, AC-10, AC-13) (2a3fdbc)
- pincel-wasm: optional scale on exportPng and exportAtlas (AC-03, AC-04, AC-06, AC-07, AC-08, AC-09) (799207f)
- pincel-wasm: run effects on the selection as their target (AC-10, AC-11, AC-13) (9c5b9b9)
- pincel-wasm: setStrokeMirror and setStrokeWrap for the stroke gesture (AC-01, AC-02, AC-03, AC-15) (37164b1)
- tauri: add File > Close with CmdOrCtrl+W to the native menu (AC-20) (b2fd942)
- tauri: associate .psd files with Pincel as a viewer (AC-13) (7261633)
- tauri: Help ▸ Keyboard Shortcuts in the native macOS menu (AC-03) (39426a5)
- tauri: let the UI ask before the window closes (AC-09) (5a80305)
- tauri: move the native Export Sprite Sheet accelerator to Cmd+Alt+E (power-user-shortcuts-coverage AC-19) (85c6702)
- tauri: register the clipboard-manager plugin with read-image only (AC-27, AC-28, AC-33) (9691418)
- tauri: set_menu_accelerators rebuilds the macOS menu with rebound chords (AC-14) (c890ece)
- ui: add a Ctrl+K command palette over every menu command and tool (power-user-shortcuts-palette AC-01 – AC-17) (b445733)
- ui: add a Preview panel that plays the animation while you draw (animation-preview AC-01, AC-02, AC-03, AC-04, AC-05, AC-06, AC-07, AC-08, AC-10, AC-11, AC-12, AC-13, AC-14, AC-15, AC-16) (14477e2)
- ui: add the dithered Gradient tool to Pixel mode's Fill group (dithered-gradient AC-09, AC-10, AC-11, AC-12, AC-13) (4ed0364)
- ui: add tool-rail flyout model helpers (AC-02, AC-04, AC-05, AC-08, AC-11) (e507fe3)
- ui: ask about unsaved changes before the desktop app closes (AC-01, AC-08, AC-09, AC-10, AC-11) (924d878)
- ui: ask Save / Don't Save / Cancel before replacing unsaved work (AC-02, AC-03, AC-04, AC-05, AC-06, AC-07, AC-08, AC-12, AC-13) (0a2ac68)
- ui: canvas only zooms and pans while an effect is open (AC-03) (a009345)
- ui: default shortcuts for layers, frames, flips, rotation, opacity, the palette and Toggle UI (power-user-shortcuts-coverage AC-01 – AC-19) (85f381e)
- ui: dock the effect panel in the sidebar, drawer or bottom sheet (AC-01, AC-02, AC-04 – AC-06, AC-12 – AC-15) (c2536b6)
- ui: drop images onto an open editor to add them as layers or open them (file-access AC-20, AC-21, AC-22, AC-23, AC-24, AC-25, AC-26, AC-27, AC-28) (b75c1b7)
- ui: Drop Shadow, Stylize Outline, Quantize and paint.net Reduce Noise in the Effects submenus (AC-01, AC-02, AC-12) (6560b2e)
- ui: Effects > Object > Outline Object with a colour parameter in the effect panel (AC-01, AC-06, AC-08, AC-09, AC-11) (4650965)
- ui: Effects ▸ Outline… with a colour parameter in both modes (AC-01, AC-08, AC-09, AC-11) (964845b)
- ui: export and import the keymap as JSON (AC-07 – AC-11, AC-15 – AC-17) (fef54f3)
- ui: failed effects keep the panel, prompts and document switches end it (AC-16, AC-17) (a7bcb71)
- ui: Grid Settings dialog for the Pixel-mode grid (AC-07, AC-08, AC-09, AC-10, AC-13, AC-15, AC-17) (b9bf15c)
- ui: import any palette file and export .gpl, .hex, .pal or PNG strips (palette-formats AC-01, AC-02, AC-03, AC-05, AC-06, AC-09, AC-10, AC-11, AC-12) (4670230)
- ui: keep the native macOS menu in step with the keymap (AC-14) (c0a929b)
- ui: keyboard shortcuts overview dialog (AC-01, AC-02, AC-04 – AC-18) (44ced13)
- ui: layer groups in Image mode's layers panel and Layer menu (AC-01, AC-02, AC-03, AC-05, AC-07, AC-11, AC-12, AC-14, AC-16, AC-17, AC-20) (62340eb)
- ui: mix both modes in one tab bar (AC-01 – AC-05, AC-07 – AC-11, AC-15 – AC-17, AC-19, AC-21 – AC-25) (35ab4fd)
- ui: offer a clipboard image on the desktop start screen (AC-27 – AC-32) (593daba)
- ui: open a variant flyout from tool-rail group buttons (AC-01, AC-02, AC-03, AC-04, AC-05, AC-06, AC-07, AC-08, AC-09, AC-10, AC-11, AC-12, AC-13, AC-14) (6ffa0bd)
- ui: open PSD files in Image mode (AC-01, AC-05, AC-06, AC-07, AC-08, AC-09, AC-10, AC-11, AC-12, AC-14) (ed992f8)
- ui: open several documents as tabs in each editor (AC-01 – AC-20) (70cb8eb)
- ui: open the shortcut overview from the native Help menu (AC-03) (31c5a7d)
- ui: paint.net adjustments in both modes' Adjustments menu (AC-01, AC-02, AC-10, AC-12) (d4ea8a9)
- ui: paint.net Artistic and Photo effects in Image mode's submenus (AC-01, AC-02, AC-13) (e5c8fdf)
- ui: paint.net blurs in Image mode's Blurs submenu (AC-01, AC-02, AC-12, AC-15) (ec36c78)
- ui: paint.net distortions in the Distort submenu (AC-01, AC-02, AC-15) (f49ed76)
- ui: paint.net effect menus per mode with new parameter kinds (AC-01 – AC-07, AC-09 – AC-15) (a0b314e)
- ui: paint.net render effects in the Render submenu (AC-01, AC-02, AC-12) (def5de7)
- ui: Pencil Shading ink with a Shift+click palette ramp (shading-ink AC-01, AC-02, AC-07, AC-08, AC-09, AC-10, AC-11, AC-12, AC-14) (41a4804)
- ui: pixel grid and custom grid in Pixel mode (AC-01, AC-02, AC-03, AC-04, AC-05, AC-06, AC-11, AC-12, AC-14, AC-16) (00412da)
- ui: rebind shortcuts in the Keyboard Shortcuts dialog (AC-01 – AC-06, AC-12, AC-13) (7c9373c)
- ui: recognize a dropped file as the file of an open tab (AC-03, AC-19) (bd2cbbf)
- ui: resizable docked sidebar with a splitter, width kept per mode (AC-07 – AC-11) (852277d)
- ui: respect reduce motion and add View ▸ Reduce Motion (AC-01, AC-02, AC-03, AC-04, AC-05, AC-06, AC-07, AC-09, AC-10, AC-11, AC-12, AC-13) (1c894be)
- ui: Scale choice for PNG frame and sprite-sheet export (AC-01, AC-02, AC-03, AC-04, AC-05, AC-06, AC-07, AC-08, AC-09, AC-10, AC-11) (0c62d3c)
- ui: symmetry and tiled mode for the Pixel-mode Pencil and Eraser (AC-01, AC-02, AC-03, AC-04, AC-05, AC-06, AC-07, AC-08, AC-09, AC-10, AC-11, AC-12, AC-13, AC-14, AC-15, AC-16, AC-17, AC-18, AC-19, AC-20, AC-21, AC-22) (da8bbbc)
- website: scroll the comparison inside its wrapper on phones with Pincel kept in view (website-comparison AC-09) (982bcaa)
Bug Fixes
- pincel-agent: list the outline effect with a hex colour parameter (AC-12) (0120e3c)
- pincel-core: keep slice center and pivot relative on canvas changes (57a2c6c)
- pincel-core: stamping on a frame without a grid creates it (AC-21) (384f958)
- pincel-effects: keep transparent pixels' colour out of distort and reduce noise (AC-18) (dc153ad)
- pincel-effects: list outline once in EFFECT_NAMES after the PR #123 merge (428cac5)
- pincel-effects: read the radial blur centre as a fraction of the image (3fe6b2c)
- pincel-effects: read the radial blur centre as a fraction of the image (57b63a2)
- pincel-effects: render Turbulence from gradient noise (7bf710e)
- pincel-image-core: add_layer keeps the layer tree intact (2bc43a5)
- pincel-image-core: PSD fill opacity scales the layer's opacity (AC-01) (e1ead8e)
- pincel-wasm: a new tileset stores the transparent tile 0 (AC-01, AC-04) (734f76d)
- reconcile effect-panel AC-17 after integrating feat/clipboard-offer (1d40a74)
- reconcile the effect-menu loading test after integrating feat/clipboard-offer (9e0ef7d)
- reconcile the tool flyout with document tabs after integrating feat/tool-variant-flyout (306922f)
- tauri: drop the test-only labels_for so clippy passes (e9399f7)
- tauri: route current_labels through labels_for (35c5fb1)
- ui: a refused slice size snaps back to the stored value (AC-10) (4b0916f)
- ui: apply Select ▸ Expand… / Contract… in Pixel mode (5dd2afe)
- ui: clamp an out-of-range New size instead of blocking Create (app-shell AC-06) (0c3c7e0)
- ui: count a Pixel inline layer rename as an undo step in the UI (pixel-layers-frames AC-08) (d832ddf)
- ui: draw Image-mode selection ants on device pixel centres (08d3a76)
- ui: drop the Image gesture in flight when a new tab opens (47aba67)
- ui: Enter on a menu entry or panel button keeps its own meaning while an effect is open (AC-04, AC-05) (f61f898)
- ui: find "…" effect entries by their English name in the command palette (c767961)
- ui: fit a new Pixel document to the stage its panels leave (pen-input AC-11) (3626790)
- ui: focus the inline layer rename field when it opens (AC-08) (0f33109)
- ui: keep a focused size field selected when the clipboard prefill lands (92418b5)
- ui: keep native-menu items from the editor while the unsaved prompt is open (AC-02, AC-07, AC-08) (439e7b2)
- ui: keep the focus in the drop dialog when Add as layer is unavailable (0c5cd6d)
- ui: keep the Pixel document unsaved when the save picker is cancelled (3c795a5)
- ui: keep the shell starting when the window API throws under a Tauri 1 bridge (7b505ba)
- ui: name an unknown file opened from the Pixel editor (AC-12) (638f441)
- ui: Preview off hides the preview of a parameterless effect (AC-03) (3fffeb3)
- ui: refuse a drop under the unsaved-changes prompt with a notice (b828d90)
- ui: report an effect refused on a locked Image layer (AC-12) (59fbe35)
- ui: route an Image-mode recent from the Pixel editor's Open Recent (app-shell AC-09) (b0317e3)
- ui: show the kept duration after a rejected frame duration entry (pixel-layers-frames AC-31) (387fadd)
- ui: show the shell notice when the Pixel editor cannot read a file (file-access AC-14, AC-16) (51ec205)
- ui: slice 9-patch center and pivot relative to the bounds (AC-09, AC-12, AC-13) (f9abb31)
- ui: the Add tileset form always opens with its defaults (AC-02) (685edba)
- ui: the Add tileset form reports every bad tile size itself (AC-03) (ef9bea6)
- ui: the Image editor keeps the native Open Recent submenu current (AC-19) (65c13c7)
- ui: the Tilesets panel hides the empty tile 0 (AC-07) (83516eb)
- ui: Tilesets panel edits refresh the undo state (AC-01, AC-04) (3f28ab2)
- ui: Tilesets panel strings go through t() (AC-01, AC-04, AC-06) (0f15aa8)
- ui: translate the Slices panel's field labels and row texts (AC-11) (0626569)
- ui: translate the sprite sheet dialog's grid line (AC-16) (3830dde)
- website: call Aseprite source-available and date Piskel's last release (website-comparison AC-06, AC-07) (973fdd2)
- website: set
<html lang> on a client-side language switch (website AC-01 – AC-05) (75bf1bf)
Performance Improvements
- pincel-image-core: bench a 4K brush stroke presented from the cache (AC-02) (c656e67)
- pincel-image-core: cached composite with a downscaled pyramid (AC-01, AC-05, AC-06, AC-07) (69ecefd)
- pincel-image-core: compose without powf, byte for byte (AC-01, AC-02, AC-04) (ba53299)
- pincel-image-core: division-free pyramid filter for equal alphas (AC-07) (018e2b7)
- pincel-image-wasm: composite_region presents from the render cache (AC-01, AC-05, AC-06, AC-07) (b97a773)