Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

@nut-tree-fork/nut-js

nut-tree8.4kApache-2.04.2.6TypeScript support: included

Native system automation for node.js

native, system, automation, testing, keyboard, mouse, process, memory, window, screen, monitor, display, timer, clock, clipboard

readme

@nut-tree-fork/nut-js

This is the core package for nut.js, the one package that keeps all the other packages together. It provides the basic functionality to interact with the screen, the keyboard, and the mouse.

changelog

nut.js change log

All notable changes to this project will be documented in this file.

4.0.0

  • Feature: Add ability to move/focus/resize windows (#172)
  • Enhancement: Add support for 'Clear' key on macOS (PR #520)
  • Feature: Optional default providers (#533)
  • BREAKING: OCR confidence override not working (nut-tree/plugin-ocr#25)
  • Enhancement: New 'toHaveColor' Jest matcher (#547)
  • Enhancement: Improved error messages for timeouts (#556)
  • Maintenance: Migrate nut.js core and its default providers to a monorepo (PR #560)
  • Maintenance: Use PlayWright for E2E tests
  • Bugfix: getActiveWindow returns out-of-bounds coordinates for maximized windows (#559)
  • BREAKING: Require minimum node version of 16

3.1.2

  • Bugfix: Screen capture broken on macOS 13 (#469)
  • Enhancement: Enable newly introduced keys to be used as modifiers (#490)
  • Enhancement: Extend move API to handle single point case (#499)
  • Feature: Add color queries to search for pixels of a certain color (#500)
  • Bugfix: screen.highlight closes Electron window (#505)

3.1.1

3.1.0

3.0.0

  • Enhancement: Improve types of Jest matchers (#466)
  • BREAKING: Rename clipboard methods (#463)
  • Enhancement: Option to disable automatic request of permissions in macOS (#462)
  • BREAKING: Allow screen.find and other to work with non-image needles (#455)
  • BREAKING: Add bits per pixel and byteWidth info to image class (#451)
  • Bugfix: Installed Electron App crashes after upgrading to 2.3.0 (#449)
  • Maintenance: Add .nvmrc config (#447)
  • Enhancement: Define and export interfaces for keyboard/mouse/screen configs (#443)
  • Bugfix: 'RightShift' key is mapped to space (#442)
  • Maintenance: Introduce prettier (#437)
  • Bugfix: Win2012-R2: Error: The specified procedure could not be found (#434)
  • Feature: Logging provider (#371)

2.3.0

  • Bugfix: Segmentation Fault when retrieving window title (#377)
  • Enhancement: Automatically check and request required permissions on macOS (#377)

2.2.1

  • Enhancement: Scale easing function result by base speed before applying (#425)
  • Maintenance: Resolve security vulnerabilities (#422)

2.2.0

  • Maintenance: Limit CI runs to PRs, not every push
  • Maintenance: Upgrade node version to 16 for all CI runs
  • Bugfix: Fix grave accent (PR #414)
  • Enhancement: Refine error messages on fetchFromUrl (#415)
  • Enhancement: Ship Windows runtime dependencies (#365)

2.1.1

  • Bugfix: Modifier keys are not properly released on macOS (#264)
  • Bugfix: Fix mouse clicks with modifiers on macOS (#273)

2.1.0

  • Bugfix: Keyboard methods pressKey and releaseKey ignore updated autoDelayMs (#188)
  • Enhancement: Add mappings for missing numpad keys (#367)
  • Enhancement: macOS double click (#373)
  • Maintenance: Both mouse.leftClick and mouse.rightClick should reuse click (#390)
  • Feature: New image loader to fetch remote images (#400)
  • Bugfix: Mouse methods pressButton and releaseButton should respect auto delay (#403)

2.0.1

  • Bugfix: Issue with keyboard.type in to Spotlight on MacOS (#152)
  • Enhancement: Numpad buttons don't work on Linux (#360)

2.0.0

  • Feature: Apple Silicon (libnut#49)
  • Enhancement: Enable warning message for missing accessibility permissions on macOS (#354)
  • Enhancement: Add runtime typechecks for screen.find etc. (#351)
  • Bugfix: Fix Windows scaling issue (#349)
  • Maintenance: Refine types (#340)
  • Maintenance: Cleanup deprecated code (#341)
  • Enhancement: Support for mouse capturing games (#168)
  • Feature: Provide functions to convert images between BGR and RGB color mode (#336)
  • Feature: Audio keys support (#233)
  • Enhancement: Configurable interval for waitFor (#312)
  • Bugfix: Apply pixel density scaling on colorAt (#327)
  • Enhancement: Change find signature to only work on Image instances (#329)
  • Enhancement: Adjust assert class to new Screen#find parameter types (#324)
  • Feature: Get screen pixel color (#259)
  • Feature: Add Screen#findAll to enable matching multiple template occurrences (#320)
  • Enhancement: Make Screen#find accept Promise<Image> (#320)
  • Enhancement: Accepting a Buffer with image data for Screen#find (#204)
  • Enhancement: Get rid of adapter layer in favour of providerRegistry (#310)
  • Feature: Provide a default implementation for ImageReader and ImageWriter (#307)
  • Feature: Define interface for mouse movement type (#130)
  • Feature: Separate image matching code (#279)
  • Enhancement: Export FileType (#301)
  • Enhancement: Export ImageWriterParameters (#296)
  • Enhancement: Export provider interfaces (#294)
  • Feature: Introduce a registry for providers (#292)
  • Feature: Add methods to grab the current screen content as Buffer (#278)

1.7.0

  • Enhancement: Trigger snapshot releases (#234)
  • Feature: Cancel screen.waitFor if needed (#241)
  • Enhancement: Move docs into separate repo (#244)
  • Feature: Support for node 16 and Electron 13 (#246)

1.6.0

  • Feature: Create screenshot from region (#154)
  • Bugfix: Endless loop in timeout function for long-running actions returning undefined (#205)
  • Maintenance: Use default exports for all provider classes (#163)
  • Enhancement: imprecise error message if image is too large (#169)
  • Bugfix: waitFor does not properly cancel (#174)
  • Feature: Enable GitHub Actions (#200)
  • Enhancement: Use @nut-tree/libnut@next for snapshot releases (#202)
  • Enhancement: Requesting image search outside of screen boundaries fails with runtime error (#195)

1.5.0

  • Enhancement: Window support (#5)
  • Bugfix: screen.find neglects offsets when providing a search region (#160)

1.4.2

  • Maintenance: Refactor locationparameters.class.ts (#129)
  • Enhancement: Update npmignore (#128)
  • Maintenance: Refactor image-processor.class.ts (#131)
  • Enhancement: Update to `opencv4nodejs-prebuilt@5.3.0-2` (#139)
  • Enhancement: Add note about macOS permissions to readme (#134)
  • Enhancement: Stabilize drag & drop E2E test (#145)
  • Bugfix: Hanging shift key after keyboard input on Windows (#157)

1.4.1

  • Bugfix: Electron + Windows problems (#126)

1.4.0

  • Enhancement: API docs (#87)
  • Enhancement: Improve CI pipeline (#110)
  • Enhancement: Rename MouseActionInterface (#112)
  • Enhancement: Enhance test stability (#109)
  • Enhancement: Config cleanup (#117)
  • Enhancement: Improve error message when failing to locate images (#101)
  • Enhancement: Support for node 13 and 14 (#119)
  • Enhancement: Support for Electron (#121)
  • Enhancement: Native highlight (#40)

1.3.2

  • Enhancement: Revisit mouse speed settings (#85)

1.3.1

  • Bugfix: Wrong result size for scaled image search (#68)
  • Enhancement: Switch from robotjs to libnut (#86)
  • Enhancement: Update to OpenCV4 (#89)
  • Enhancement: Enable matrix builds (#13)

1.3.0

  • Enhancement: Enabled prebuilt bindings for OpenCV (#77)

1.2.1

  • Enhancement: Exported Button enum (#75)

1.2.0

  • Bugfix: Drag & drop gestures were not working on macOS and Windows (#70)
  • Enhancement: mouse Public API now exposes pressButton and releaseButton methods (#69)

1.1.2

  • Bugfix: Clipboard copy calls did not resolve (#64)

1.1.1

  • Minor version upgrade for OpenCV dependency

1.1.0

  • Feature: nut.js now comes with a precompiled version of OpenCV (#63)

1.0.1

  • Bugfix: Check dimensions of ROIs to prevent access violations (#57)

1.0.0

0.1.0-beta.3

  • Improved error handling on image search

0.1.0-beta.2

  • Changed default screen.config.resourceDirectory to use process.cwd()

0.1.0-beta.1

  • Enabled pre-built OpenCV bindings via opencv4nodejs-prebuilt