amigo-labs
Pincel

Release notes

View on GitHub

Features

  • tauri: add Edit > Settings... (Cmd+,) to the native macOS menu (bf94c4c)
  • tauri: add files_exist to tell which recent paths still hold a file (3a93b29)
  • ui: add the Settings dialog and move app settings out of View (84b71c6)
  • ui: remove recent files whose file was deleted (AC-30, AC-31) (33a7f50)
  • ui: settings dialog and a tidy View menu (8f879b3)
  • ui: show the clipboard card in the start screen between the New cards and the clipboard row (361f592)

Bug Fixes

  • pincel-image-core: mark OpenRaster entries as made on Unix on every platform (ee89225)
  • ui: accept today's release wasm in the perf setup (175aa5c)
  • ui: drop deleted recent files and place the clipboard card in the start screen (416bf7c)
  • ui: find the bundle's wasm at its root path in the perf setup (8da8218)

Performance Improvements

  • faster convolutions, job digest pins and a working pnpm perf (3302708)
  • pincel-effects: convolve rows without per-tap clamping (b8f85ad)
  • pincel-effects: skip edge clamping inside the 3x3 convolution (275c3c5)
  • pincel-image-core: flatten over a background through lookup tables (caf9f64)
  • pincel-image-core: Image-mode quick wins for export, selection, open, thumbnails and redraw (1cbb72c)
  • pincel-image-core: move decoded RGBA8 pixels instead of copying (6e88011)
  • pincel-image-core: run selection modifiers in O(1) per pixel (b4316d3)
  • pincel-image-core: track a selection generation on the command bus (8f5c475)
  • pincel-image-wasm: compose group thumbnails at thumbnail size (03b51f9)
  • pincel-image-wasm: report the selection generation in DocumentInfo (692788d)
  • ui: present each Image-mode canvas change once per frame (2a5f98e)
  • ui: rebuild the selection outline only when the selection changes (4ab193a)

View on GitHub

Features

  • pincel-agent: describe font.list and font matching in pincel://guide (AC-12) (4ca9462)
  • pincel-agent: font.list and a font argument for draw.text (AC-01..AC-08, AC-10, AC-13) (7f061a2)
  • pincel-agent: run the tools on a document an editor owns (AC-07) (19c43c6)
  • pincel-core: draw text with a face of a font collection (AC-08) (6d28c9c)
  • pincel-image-core: text faces with a collection index and a live font edit (AC-07, AC-08) (4f21b53)
  • pincel-image-wasm: agent_call on the open document (AC-07) (a5a595e)
  • pincel-image-wasm: OCR session over a snapshot's source area (AC-03, AC-10, AC-11, AC-17) (bccc6b1)
  • pincel-image-wasm: read and write palette files (AC-03, AC-04, AC-07, AC-08) (421d265)
  • pincel-image-wasm: register_font takes an optional face index (AC-08) (fb90e5b)
  • pincel-mcp: offer the system's fonts to draw.text and font.list (AC-09) (7426000)
  • pincel-ocr: read whole pages in reading order (4c96d9f)
  • pincel-ocr: read whole pages in reading order (AC-01, AC-02, AC-03, AC-04, AC-05, AC-14) (4ddfcd2)
  • pincel-palette: add shared palette file codec crate (AC-21) (87539fa)
  • pincel-wasm: agentCall on the open document (AC-07) (00efee8)
  • pincel-wasm: registerFont takes an optional face index (AC-08) (9223b09)
  • tauri: find, start and connect a ComfyUI server (8fc7fca)
  • tauri: find, start and end ComfyUI servers (AC-02 – AC-13) (9a8678c)
  • tauri: let the desktop app download the OCR models from pincel.amigo-labs.dev (f3a96e4)
  • tauri: list system fonts with fontdb and read a listed font file (AC-15, AC-16) (8829edd)
  • tauri: live MCP endpoint for agents on the open documents (85127e2)
  • tauri: live MCP endpoint on 127.0.0.1 (AC-05, AC-06, AC-08, AC-22, AC-23) (2bb23a5)
  • tauri: reach ComfyUI over HTTPS through reqwest and rustls (AC-08) (3ba039b)
  • ui: font family list in the Pixel and Image Text tools (AC-01, AC-03, AC-04, AC-06, AC-07, AC-08, AC-09, AC-10, AC-12 – AC-14, AC-18, AC-22) (9b55740)
  • ui: font sources, face choice and added fonts for the Text tools (AC-02, AC-05, AC-07, AC-11, AC-20, AC-21, AC-23, AC-24) (5c108be)
  • ui: installed fonts in both Text tools (f42ecab)
  • ui: load, save and reset Image mode's palette (f851ecf)
  • ui: load, save, extend and reset Image mode's palette (AC-01..AC-20, AC-22..AC-25) (5cd3e20)
  • ui: open the clipboard from the start screen as a pixel sprite or an image (AC-34, AC-35, AC-36, AC-37, AC-38) (9dd8793)
  • ui: run live agent calls on the open documents (AC-07, AC-09, AC-10, AC-11, AC-15, AC-16, AC-17, AC-18, AC-19) (d6ff138)
  • ui: Tools > Recognize Text dialog with the model download on first use (AC-01, AC-02, AC-03, AC-04, AC-07, AC-16, AC-17) (653b05b)
  • ui: Tools ▸ Recognize Text with the OCR model download on first use (1eabaa8)
  • ui: View ▸ AI Agents… and the AI connected indicator (AC-01, AC-02, AC-03, AC-04, AC-12, AC-13, AC-14, AC-20, AC-21) (16532b4)
  • ui: View ▸ Image generation… dialog for the ComfyUI connection (AC-01 – AC-08, AC-11 – AC-14) (f4c170a)

Bug Fixes

  • tauri: a chat that cannot store the port leaves nothing listening (AC-03) (f8af412)
  • tauri: end stale sessions on a new token and stay off when the config cannot be written (e7ffbd8)
  • ui: create the OCR model store in profiles already at schema 3 (8e7e8a4)
  • ui: read background Pixel tabs for doc.list without switching them (18d63b7)
  • ui: render an added family from its added faces, never a system face (AC-05) (974a186)

View on GitHub

Bug Fixes

  • ui: check the stamp's target layer for the lock, not the active one (8e08736)
  • ui: close the polygonal lasso on its first vertex and on Enter (a9ee567)
  • ui: drop an open polygonal lasso when another tool is chosen (a24664a)
  • ui: keep the selection when the first vertex is double-clicked (3cc2ff3)
  • ui: polygonal lasso closing and three tool gaps found in a spec audit (6af1c66)
  • ui: refuse the newer shapes on a locked layer with the notice (6973cd2)

View on GitHub

Features

  • ui: add a Button component with busy state and shortcut keycap (aad8bce)
  • ui: give buttons a pressed state, a danger variant and one on-state (b1e9e4e)
  • ui: one button language, themed tooltips, duotone icon set (e64a198)
  • ui: redraw the icon set in duotone (1e525e6)
  • ui: show themed tooltips with the shortcut as a keycap (db9c59c)

Bug Fixes

  • ui: keep control names and nested titles under the tooltip layer (e320368)
  • ui: make the Slice and Move Selection Outline icons readable (5d15c3d)

View on GitHub

Features

  • ui: lay the start screen out as a weighted action grid (140c864)
  • ui: let the start screen layout follow the recent files (31e3376)
  • ui: say in the New dialog what Create will make (c489fff)

Bug Fixes

  • re-sync agent skills (acceptance-criteria headings in any case) (cbb40a5)
  • re-sync agent skills (commit gate, spec-build completion) (e6dc12e)
  • ui: keep the New dialog's notes, Tab and size honest (714987d)

View on GitHub

Bug Fixes

  • ui: rename the tour store so Tour.svelte cannot shadow it (6ec7d91)
  • ui: rename the tour store so Tour.svelte cannot shadow it (8d0bc91)

View on GitHub

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)

View on GitHub

Features

  • integrate the Vectorizer (pincel-trace + File ▸ Export ▸ SVG…) (9a6ed31)
  • pincel-image-wasm: vectorizer over the composite for SVG export (f2800ea)
  • pincel-trace: pixel-exact mode and the SVG document (AC-12 – AC-14, AC-16, AC-17, AC-20) (8c9286d)
  • pincel-trace: port the Vectorizer core (AC-02 – AC-11, AC-15, AC-18, AC-19) (4ae67ad)
  • pincel-trace: read trace options from a flat wire vector (22c7d62)
  • pincel-wasm: Vectorizer over a composed frame for SVG export (aeb4797)
  • tauri: Export as SVG… in the native File menu (AC-10) (0abc73a)
  • ui: File ▸ Export ▸ SVG… in both editors (AC-01 – AC-09, AC-11) (092dc60)
  • ui: paste the clipboard image as a new document (2350eca)
  • ui: paste the clipboard image as a new document (AC-22, AC-23, AC-24, AC-25, AC-26) (f323697)
  • ui: start image selections on the stage, deselect by click and Escape (AC-29, AC-30, AC-31, AC-32) (9b852d4)
  • ui: start pixel selections on the stage beside the canvas (AC-01, AC-04, AC-07, AC-09, AC-12, AC-17, AC-18, AC-21, AC-22, AC-23, AC-24) (a554af6)
  • ui: start selections on the stage beside the canvas (14991b4)

Bug Fixes

  • pincel-trace: reserve outline-sized buffers fallibly (AC-18) (87ecaa4)
  • pincel-trace: share cached quantizations instead of copying them (AC-18) (40498e5)
  • pincel-trace: use as_chunks for RGBA pixels (clippy 1.99) (cee3a28)
  • tauri: stop the PWA service worker from freezing the desktop UI (4c15c89)
  • tauri: stop the PWA service worker from freezing the desktop UI (a321a03)
  • ui: drop a pixel gesture on pointercancel instead of committing it (AC-09, AC-21, AC-22, AC-23, AC-24, AC-29, AC-30, AC-31, AC-32) (501fb42)
  • ui: keep the SVG export dialog modal for pointer and keyboard (866fe91)
  • ui: let a key right after a marquee release see the new selection (e756741)
  • ui: march Image-mode selection ants instead of blinking the outline (3bcb5ca)
  • ui: march Image-mode selection ants instead of blinking the outline (c8b134c)
  • ui: snap both image-mode marquee corners to the pixel grid (1819fda)
  • ui: tie the SVG tracer to the document it traces (7257535)

View on GitHub

Features

  • add skills for feature specification and verification (6526967)
  • copy, cut and paste in both modes (copy-cut-paste) (28b8cc5)
  • perf: benchmarks, budgets and nightly performance workflow (4229ec7)
  • pincel-agent: add pincel://guide and pincel://effects resources (AC-17, AC-18) (a2649fc)
  • pincel-agent: add the Pixel agent tool layer (AC-02..AC-33, AC-43..AC-46) (132926b)
  • pincel-agent: Image documents over MCP (mcp-headless-image) (5b65b7d)
  • pincel-agent: open, edit, save and export Image documents (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-19, AC-20, AC-21) (a175f1a)
  • pincel-core: add CommandBatch and PutCel commands (AC-09) (f10b887)
  • pincel-core: add copy_pixels and the PasteLayer command (AC-02, AC-04, AC-05, AC-07, AC-11, AC-18, AC-19) (842fa4c)
  • pincel-core: add PatchCel and AddEmptyCel dirty-rect commands (AC-09) (05d67e8)
  • pincel-core: add PencilStroke command with brush sizes and pixel-perfect (AC-01, AC-02, AC-03, AC-04, AC-05, AC-06, AC-08, AC-09, AC-10) (6a7e87e)
  • pincel-core: animated export as APNG and GIF (animated-export) (11545c5)
  • pincel-core: export animations as APNG with tag direction and scale (AC-03, AC-04, AC-05, AC-07, AC-08, AC-09) (74d5722)
  • pincel-core: export animations as GIF and describe them for the dialog (AC-12, AC-13, AC-16, AC-17) (ad1cd36)
  • pincel-core: scale PencilStroke stamps by pen pressure (AC-01, AC-02, AC-04, AC-05, AC-06, AC-09, AC-10) (3e205f0)
  • pincel-image-core: add copy_selection and PasteLayer::at (AC-02, AC-03, AC-04, AC-05, AC-09, AC-10) (a08d803)
  • pincel-image-wasm: add copy_selection, cut_selection, image_key and a paste position (AC-02, AC-03, AC-04, AC-05, AC-06, AC-09, AC-10, AC-21) (a4f8a7f)
  • pincel-mcp: add the stdio MCP server with workspace sandbox (AC-01, AC-34..AC-40) (c00ff71)
  • pincel-mcp: headless MCP server for Pixel documents (773b296)
  • pincel-mcp: serve resources with their MIME type and describe Image mode (AC-17, AC-18) (50acfa0)
  • pincel-wasm: add beginStroke / strokeTo gesture API for Pencil and Eraser (AC-01, AC-03, AC-04, AC-05, AC-06, AC-08, AC-14) (ec6b135)
  • pincel-wasm: add copySelection, cutSelection, pasteLayer and imageKey (AC-02, AC-04, AC-05, AC-06, AC-07, AC-11, AC-12, AC-18, AC-19, AC-20, AC-21) (3e4198d)
  • pincel-wasm: add optional pressure argument to strokeTo (AC-01, AC-04, AC-05, AC-09, AC-10) (f8f6a56)
  • pincel-wasm: expose exportAnimation and animationInfo (AC-18) (74d3e7f)
  • pixel: pen pressure scales the Pencil and Eraser (pixel-pressure) (4610e12)
  • pixel: pencil brush sizes 1-8, round shape, pixel-perfect and Shift constrain (1afe8df)
  • tauri: add Export Animation to the native File menu (44af9fb)
  • ui: add File > Export > Animation dialog for APNG and GIF (AC-01, AC-02, AC-06, AC-10, AC-11, AC-14, AC-15, AC-18, AC-19) (e7cee29)
  • ui: brush size, shape, pixel-perfect and Shift constrain for the Pixel pencil (AC-01, AC-03, AC-07, AC-08, AC-10, AC-11, AC-12, AC-13, AC-15, AC-16, AC-17) (f730687)
  • ui: Cut, Copy, Copy Merged and Paste in both modes (AC-01, AC-02, AC-03, AC-04, AC-05, AC-06, AC-08, AC-09, AC-10, AC-11, AC-12, AC-13, AC-14, AC-15, AC-18, AC-19, AC-20, AC-21) (ee56179)
  • ui: scale the Pixel-mode Pencil and Eraser with pen pressure (AC-03, AC-05, AC-07, AC-08, AC-09) (a8fc24e)

Bug Fixes

  • aseprite-writer: emit tileset chunks before the layers that reference them (dfd4fde)
  • pincel-agent: check every export.sheet output path before writing (AC-34) (1e0ae49)
  • pincel-agent: store only the changed rectangle per pixel edit (AC-09) (bd859a1)
  • pincel-core: read and write tile flip bits the way Aseprite does (353439e)
  • pincel-core: read and write tile flip bits the way Aseprite does (59b59af)
  • pincel-image-core: Soft Light follows W3C Compositing-1, not Pegtop (AC-02) (085b900)
  • pincel-image-core: Soft Light follows W3C; close image-editing evidence gaps (e57ab0d)
  • ui: lock the Shift pencil direction until Shift is released (AC-07, AC-17) (cddb39b)
  • ui: route every e2e path into an editor through waitForEditor (e282fe0)
  • ui: route every e2e path into an editor through waitForEditor (a5b71e4)
  • ui: skip off-canvas pixels of a pencil or eraser stroke silently (AC-04) (9e8930d)
  • ui: wait for editor readiness before e2e input (42c3e2b)
  • ui: wait for editor readiness before e2e input (8a6def7)

View on GitHub

Features

  • pincel-image-core: add PasteLayer command (acd8c72)
  • pincel-image-wasm: export paste_layer (87add73)
  • ui: open a new document on startup from a ticked New card (d603c0a)
  • ui: paste a clipboard image as a new layer in Image mode (3cc61cc)
  • ui: redraw the Smudge, Gradient and Stamp icons (3952751)
  • ui: separate the tool rail into sections (52562c9)
  • ui: size a new image from the image on the clipboard (5843050)
  • ui: startup document, clipboard image size and paste with canvas expand (bbbf685)

Bug Fixes

  • pincel-image-core: keep the paste's layer index across redo (bce05bc)
  • ui: never store a non-finite startup document size (4fefcf1)
  • ui: paste only into the document it was asked for (167d521)

View on GitHub

Features

  • pincel-image-core: move the selected pixels, and the selection alone (5575dcf)
  • pincel-image-core: the Gradient tool (66ededd)
  • pincel-image-core: the Recolor and Smudge tools (7412859)
  • pincel-image-core: the selection outline travels with its pixels (5da1bcb)
  • tauri: updater commands for the in-app Help menu (3b48369)
  • ui: check for updates from the Help menu (78247ae)
  • ui: expand, contract and feather the selection by a radius (f57fc16)
  • ui: File ▸ Open Recent in Image mode (9e05daf)
  • ui: Help menu with About Pincel (785fa64)
  • ui: line, the four shapes, pan and zoom as Image-mode rail tools (abbe448)
  • ui: move the selected pixels, or the selection alone (a9ea6da)
  • ui: the Gradient tool (6036064)
  • ui: the Recolor and Smudge tools (53a2c0f)

Bug Fixes

  • pincel-image-core: carry Smudge and Recolor state across a drag (9a3dc0e)
  • tauri: install the native menu only on macOS (046b87c)
  • tauri: one menu bar per platform, and the Image-mode tools paint.net has (95b9b18)
  • ui: four defects from the review of the new tools (e1bed0e)
  • ui: the About dialog holds the keyboard while it is open (9574a2d)

View on GitHub

Features

  • pincel-core: HSL blend modes; LF line endings from feat/blend-modes (32280da)
  • pincel-core: render the Hue, Saturation, Color and Luminosity blend modes (581218e)

View on GitHub

Bug Fixes

  • tauri: updater trusts the new amigo-labs signing key (b3b9420)
  • tauri: updater trusts the new amigo-labs signing key (80ae66c)

View on GitHub

Features

  • desktop downloads on the website, New cards open in place on the start screen (8d3e411)
  • ui: New cards on the start screen open in place (f3eb37a)

View on GitHub

New Contributors

Full Changelog: https://github.com/amigo-labs/amigo-pincel/commits/v0.1.1

View on GitHub

New Contributors

Full Changelog: https://github.com/amigo-labs/amigo-pincel/commits/v0.1.0