WASRTK is an Electron desktop app for frame-by-frame drawing, simple animation, and rotoscoping with reference images or live screen capture.
- Eight drawing tools: pen, line, rectangle, circle, fill, eraser, eyedropper, and selection
- Frame timeline with add, duplicate, delete, drag-to-reorder, and playback
- Multi-layer editing with visibility toggles, reordering, and flattening
- Onion skinning with configurable range
- Reference images from files or desktop/window capture
- Project save/load in
.wasrtk - Export to PNG sequences or animated GIF
- Multiple palette presets with quick swatch switching
- Palette creation/import workflows via dedicated Palette Editor window (image extraction + Lospec formats excluding Paint.NET/Photoshop)
- Eyedropper tool with zoomed color-pick preview lens
- Theme customization through a separate theme settings window
- Add additional professional-grade tool types (selection tool). Done
- Add selection workflows for region move/edit. Done
- Add palette choices for fast color workflow switching. Done
- Expand selection editing with copy/cut/paste, nudge, and constrained marquee. Done
- Fix selection edge cases (undo noise, out-of-bounds drags, locked-layer safety). Done
- Verify selection interactions do not interfere with frame/layer operations or other tools. Done
- Fix flood-fill accuracy so fills remain consistent across zoom levels. Done
- Align selection move workflow with paint.net-style drag-and-commit behavior. Done
- Require explicit Enter to commit detached selection moves (Escape to cancel restore). Done
- Reset selection state automatically after Enter commit. Done
- Add palette creation/import support for editor, image extraction, and Lospec-compatible files (excluding Paint.NET/Photoshop formats). Done
- Improve palette image import extraction quality so representative colors are detected reliably. Done
- Add palette management workflow with saved-palette preview and draft preview before committing to the palette list. Done
- Add an eyedropper tool with zoomed pick-area preview for easier color selection. Done
- Keep eyedropper preview hex label live-updating while hovering before click. Done
- Harden export helpers (case-insensitive MIME lookup, safer layer iteration, and FPS fallback for GIF delay). Done
- Improve config/file IPC resilience (auto-recover palette config file + validate read/write file paths). Done
- Add pen tool straight-line assist (Shift from last point + Ctrl/Cmd snap to 45° increments like Aseprite). Done
- Cache per-layer 2D rendering contexts to reduce repeated context lookups in hot drawing/render paths. Done
- Constrain rectangle and ellipse tools with Shift so previews/commits become perfect squares and circles. Done
- Start Phase 1 implementation by expanding fill controls with contiguous toggle and sample-all-layers behavior. Done
- Add initial brush engine presets (hard round, soft round, pixel, textured) with live preset switching. Done
- Add brush flow and spacing controls wired into the brush engine for pen/eraser presets. Done
- Add pressure sensitivity controls for brush size/flow response on tablet-compatible pointer input. Done
- Add initial transform actions (flip horizontal/vertical and rotate 90°) for active selections or current layer. Done
- Add magic-wand selection mode (tolerance-based contiguous pickup) as the first advanced selection variant. Done
- Add quick scale transform actions (Scale + / Scale -) for active selections or current layer. Done
- Add quick skew transform actions (Skew X / Skew Y) for active selections or current layer. Done
- Add lasso selection mode for freehand region capture in the selection workflow. Done
- Add polygon selection mode with click-to-add points and Enter/close-loop finalize behavior. Done
- Add selection anti-alias and feather controls for advanced lasso/polygon/magic-wand workflows. Done
- Improve polygon selection UX with live hover edge preview between vertex clicks. Done
- Fix paint bucket behavior on transparent backgrounds by matching and writing alpha during flood fills. Done
- Add Phase 1 interaction bug audit covering remaining tool, selection, transform, fill, and project UX issues. Done
This roadmap expands WASRTK from a focused animation sketch tool into a full-featured drawing and illustration application.
- Add brush engine presets (hard/soft round, textured, pixel) with size, opacity, flow, spacing, and smoothing controls. Done
- Add pressure sensitivity support (size/opacity/flow) for drawing tablets. Done
- Add undoable transform tools (scale, rotate, skew, flip) for selections and full layers. Done
- Add lasso/polygon/magic-wand selection modes with anti-alias and feather options. Done
- Add advanced fill controls (tolerance slider, contiguous toggle, sample-all-layers). Done
- Add layer groups/folders with collapse/expand, locking, and group visibility controls.
- Add blend modes (Normal, Multiply, Screen, Overlay, etc.) and per-layer opacity.
- Add adjustment layers (levels, curves, hue/saturation, brightness/contrast).
- Add clipping masks and alpha-lock workflows for targeted painting.
- Add smart guides, rulers, and snapping for precise layout alignment.
- Add customizable keyboard shortcuts and command palette search.
- Add dockable/resizable panels (layers, colors, history, navigator, brush settings).
- Add robust history timeline with named snapshots and non-linear jump points.
- Add macro/action recording for repeated drawing and editing workflows.
- Add autosave, crash recovery, and backup version history controls.
- Add import support for PSD (core layer data), Aseprite, and common image formats with metadata retention where possible.
- Add export presets for print, web, social media, sprite sheets, and animation pipelines.
- Add color management (sRGB/Display P3 profiles, soft proofing, gamma-safe export).
- Add vector text layers with font controls, alignment, and path text support.
- Add batch export and asset slicing workflows for game/UI pipelines.
- Add plugin API for custom tools, importers/exporters, and automation extensions.
- Add cloud sync and optional real-time collaboration for shared projects.
- Add in-app asset browser for brushes, palettes, textures, and community templates.
- Add onboarding tutorials, contextual tips, and searchable help docs inside the app.
- Add telemetry-free performance diagnostics panel to help users optimize large projects.
- Professional drawing workflow is possible without leaving WASRTK for core illustration tasks.
- Large projects (100+ layers, high-resolution canvases) remain responsive on mid-range hardware.
- File interoperability is sufficient for mixed-tool studio workflows.
- New users can complete first illustration workflows via onboarding without external docs.
- Power users can tailor the UI/shortcuts/tools to match established workflows.
git clone https://github.com/graphicmismatch/WASRTK.git
cd WASRTK
npm install
npm startThe repo currently ships Electron 13.1.7. GIF export uses a vendored copy of gif.js (vendor/gif/) rather than an npm dependency, so packaged builds don't need node_modules at runtime. See docs/development/testing.md for the automated test suite (npm test, npm run smoke) and the manual QA checklist.
npm startlaunches the appnpm run devlaunches the app and opens DevToolsnpm testruns the unit test suitenpm run smokeruns the Electron smoke harness (needs a display, orxvfb-run -a npm run smokeheadless)npm run buildcreates packaged output withelectron-buildernpm run build:win,npm run build:mac,npm run build:linuxbuild platform-specific bundles
- Quick Start
- Documentation Index
- Architecture Overview
- Component Architecture — full file-by-file inventory
- Drawing Tools
- Palette Editor
- Timeline System
- Keyboard Shortcuts
- File Formats
- Testing Guide
main.jswires Electron startupsrc/main/contains menus, IPC, window management, and theme/palette config persistencesrc/renderer/contains the editor, tools, project I/O, exporters, references, and themingindex.htmlandstyles.cssdefine the main UItheme-window.html/theme-window.jsandpalette-window.html/palette-window.jsprovide the theme and palette editor windowsvendor/gif/vendors the GIF export library so packaged builds work withoutnode_modules
See Component Architecture for the full file-by-file breakdown.
WASRTK is licensed under GPL-3.0-or-later.