Skip to content

Repository files navigation

WASRTK

WASRTK is an Electron desktop app for frame-by-frame drawing, simple animation, and rotoscoping with reference images or live screen capture.

Current feature set

  • 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

Project task list

  • 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

Fully fledged drawing app plan

This roadmap expands WASRTK from a focused animation sketch tool into a full-featured drawing and illustration application.

Phase 1 — Core drawing power

  • 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

Phase 2 — Layering and composition

  • 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.

Phase 3 — Productivity and pro workflow

  • 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.

Phase 4 — File compatibility and output

  • 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.

Phase 5 — Collaboration and ecosystem

  • 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.

Success criteria for “fully fledged” status

  • 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.

Getting started

git clone https://github.com/graphicmismatch/WASRTK.git
cd WASRTK
npm install
npm start

The 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.

Scripts

  • npm start launches the app
  • npm run dev launches the app and opens DevTools
  • npm test runs the unit test suite
  • npm run smoke runs the Electron smoke harness (needs a display, or xvfb-run -a npm run smoke headless)
  • npm run build creates packaged output with electron-builder
  • npm run build:win, npm run build:mac, npm run build:linux build platform-specific bundles

Documentation

Repository layout

  • main.js wires Electron startup
  • src/main/ contains menus, IPC, window management, and theme/palette config persistence
  • src/renderer/ contains the editor, tools, project I/O, exporters, references, and theming
  • index.html and styles.css define the main UI
  • theme-window.html/theme-window.js and palette-window.html/palette-window.js provide the theme and palette editor windows
  • vendor/gif/ vendors the GIF export library so packaged builds work without node_modules

See Component Architecture for the full file-by-file breakdown.

License

WASRTK is licensed under GPL-3.0-or-later.

About

[Ai Slop]A Rotoscoping Toolkit, primarily for Pixel Art

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages