SikuliX1 --- Nightly Builds 1.1.3 --- needs Java 8+

Latest available Build: 1.1.3-SNAPSHOT 2018-07-11_08:21 Travis Build 41

Want to read about the latest fixes and new features?

News and direct chat: Join the chat at
Linux users might find out, that setup does not run out of the box due to missing prerequisites - still testing
Issues might be posted here

The builds are run on Travis CI in the moment the changes are pushed to GitHub.


-- do not mix with a working SikuliX environment, use separate folders
-- purge everything from environment that has something to do with previous SikuliX versions -- run in a way, that your current installation and your work is safe or can be restored
-- the stuff you get, might have any bugs without notice - so be prepared
-- in addition to the fix information below, you might inspect the latest commits on GitHub
View the corresponding JavaDocs of selected classes (relevant for API usage)

BE AWARE Classes in the index, that do not open (error: not found, by intention)
are not part of the official API, that is guaranteed to be downwards-compatible in version 2.
Usage of these classes is at your own risk.
For classes that open, all public elements can be expected to have the same feature and usage in version 2.
Elements with remarks like "INTERNAL USE" or "EXPERIMENTAL" might not be available in version 2.

If you want to use the latest nightly build (sikulixapi.jar) in your Maven project:
it is available in the OSSRH snapshot repository
Add this appropriately to your pom:


For setup the only file you need to download is sikulixsetup-1.1.3-#timestamp#.jar:

(download by clicking this link, store in an preferably empty folder and run by doubleclicking the jar)
(on Linux it might be necessary to switch on the executable file attribute)

this setup jar and the other jars look like this after download:
sikulix...-1.1.3-YYYYMMDD.SSSSSS-NN-forsetup.jar or
DO NOT rename the files - leave them as they are!

The files downloaded during setup are no longer stored in the folder setup is run in, but in a special Folder of your home folder:
-- Windows: in the folder Sikulix in the folder pointed to by the environment variable %APPDATA%
-- Mac: the folder ~/Library/Application Support/Sikulix
-- Linux: in ~/.Sikulix
Other folders stored there:
-- the folder containing the native libraries (SikulixLibs_versionstamp/)
-- the Lib folder containing the supporting stuff for Jython and JRuby (Lib/)
-- the folder containing the tessdata stuff (SikulixTesseract/)
only in case of problems it might be necessary to visit this folder.

The needed jars will be downloaded automatically while running setup.
The referenced downloadpages are:
-- OSSRH Snapshot repository (browsable)
-- MavenCentral repository (not browsable)
-- tessdata default eng for setup (see below) -- tessdata for all available languages

So you only would need to manually download anything using the below links, if you have problems with setup's inline download.
In this case you have to download the needed files according to the below information and run setup (so called offline setup)
If you download manually by clicking on the below links, the jars have to be moved either
   -- to a folder Downloads in the folder containing sikulixsetup-X.Y.Z.jar
   -- or to the same folder as sikulixsetup-X.Y.Z.jar

Setup will find the local files and ask you wether to use them instead of downloading fresh versions.

BE AWARE: These files are not useable for any other purpose than being processed by setup
... and will be moved during setup into the Sikulix special folder down in your home folder (see above).
In any case, when rerunning a setup, already downloaded files will always be detected and you are asked wether to reuse.

for offline setup: downloads for setup option 1 (IDE)

sikulixsetupIDE to get the SikuliX IDE

  ... to edit/run scripts with the IDE you must have at least one of the following (suboptions 1.1 and 1.2):
   Jython option 1.1 for scripting with Python/Jython (is Jython 2.7 and needs Java 8+)

   JRuby option 1.2 for scripting with Ruby/JRuby (is JRuby

for offline setup: download for setup option 2 (API)

sikulixsetupAPI For the use of SikuliX with Java and Java aware languages/frameworks

for offline setup: to be downloaded in any case

you need the libs package for your system
- for Windows: sikulixlibswin
- for Mac: sikulixlibsmac
- for Linux: sikulixlibslux

for offline setup: download for setup option 3

nothing to do here anymore - the tessdata eng stuff is now contained in sikulixapi.jar by default

Status of bug fixes and new features

Bugs reported on Launchpad marked as FixCommitted-Critical and targeted for the respective milestone should be fixed with this build.
Want to have a look?

Special information per build

Changelog version 1.1.3

Build: 2018-07-05 #33

fixed: (Bug 1780299): IDE: switching from script text to button/thumbnail removed Pattern.resize()

Build: 2018-06-28 #32

fixed: Region: inherit global FindFailed settings from FindFailed did not work, exists should ignore FindFailed settings

Build: 2018-06-22 #28

added: (Bug 878864) automatically resize images on the fly before search or activate a callback for every search to manipulate the search image (see docs)

Build: 2018-06-16 #26

fixed: IDE: Preview: TargetOffset: zoom in/out with trackpads did not work (Bug 1776408)

Build: 2018-04-04 #18

added: inline run of RobotFramework stuff: option to not open the HTML at the end
fixed: offline setup missing manifest (Bug 1756820)
changed: now using jruby-complete-9.1.16 (Java 10)
fixed: Java 10 version handling

Build: 2018-03-27 #12

fixed: Java and macOS version detection (Java 9+, macOS 10.13)

Build: 2018-03-22 #10

fixed: bug 1757368:running JavaScript from IDE did not work
changed: highlight transparent error changed to debug log level 3

Build: 2018-03-15

fixed: bug 1755759: Java 9: IDE - Undo/Redo not functional
fixed: github issue #2: ERROR at line (log(-1, "imagefile not found:\n%s"); java.util.MissingFormatArgumentException: Format specifier '%s')

Build: 2018-03-14

fixed: bug #1755730 Python script runner: sys.argv[0] should contain path of running script

Changelog version 1.1.2 --- final per March 10th 2018

Build: 2018-02-11

revised: most JAVA 9 problems are fixed
revised: Setup now downloads JRuby 9.1 - link on offline setup page adjusted

Build: 2018-01-12

revised: Setup now downloads Jython 2.7.1 - link on offline setup page adjusted
added: VNCScreen: methods to flag Region/Location as being on a VNCSCreen and create new ones.
changed: Settings.Ocr... are now initialized to true (since tessdata is always available).
added: TextRecognizer.reset(String language) to switch to another language (prepared in tessdata accordingly)
changed: made Screen.lastScreenImage public, to allow some "capture logging"

Build: 2017-12-31

added: capture variant capture(Region or Text, [path,] name) that stores the captured image either in current bundlepath or the given path (see docs) added: Region.findBest() and .findAny(): search for more than one image in same region in parallel (see docs)

Build: 2017-12-01

added: jython scripts exported in the IDE as jars including the script compiled (obfuscated) and the captured images can be run like normal scripts from commandline

Build: 2017-11-28

experimental: create a self-running jar from one Jython sikuli script (including images, script source obfuscated/compiled)

major revision 2017-11-01

- the lib... modules are fixed now and will be used from final version 1.1.1 as external jars from MavenCentral.
- tigervnc support implemented as in version 2 (external jar from MavenCentral).
- jygments sources are moved to module IDE.
- a complete tessdata eng is now contained in module API and hence always available.
- setup is revised accordingly.
... and not relevant stuff is removed from the repo

Changelog version 1.1.2 before major revision 2017-11-01

Build: 2017-10-23

added: -Dsikuli.javaok to let SikuliX run, even if Java version cannot be detected

Build: 2017-10-17

experimental: added IDE command line parameter -m
which allows to run multiple instances of the IDE (you should know what you are doing)

Build: 2017-09-15

fixed:Python subprocess did not work - put import subprocess into

Build: 2017-07-26

fixed: should not act (click, move, ...) if FindFailed should be ignored (setFindFailedResponse)

Build: 2017-07-14

fixed: paste() did not return 1 on success but 0

Build: 2017-06-04

revised: App.getClipboard(): system clipboard as singleton
added: download link in SikuliX1 Essentials (

Build: 2017-05-28

fixed: Bug #1694102: macOS: popFile() hangs (should run on EventQueue)
fixed: Bug #1693687: Region.getCol(n, cols): negative n did not work

Build: 2017-05-24

fixed: Bug #1693110 VNC: type(Key.UP) did not work

Build: 2017-05-09

fixed: new Finder().destroy() throws NPE

Build: 2017-05-08

implemented: VNCClient::serverCutText(): to get clipboard content from server after a ctrl-c (tested only on Mac-Mac)
fixed: VNCRobot: key modifiers not handled correctly for type(..., modifiers)
fixed: Region.findBest() throws IndexOutOfBounds if nothing found, should return null

Build: 2017-05-02

revised: changed the way, the tigervnc-viewer jar is referenced (sikulix2tigervc-2.0.0-SNAPSHOT)

Build: 2017-04-30

fixed: LinuxUtil: checking availability of xdotool should use -v insread of version (Bug #1687263)
fixed: ADBScreen: device in landscape orientation: capture did not work (Bug #1686355)

Changelog version 1.1.1 (closed 2017-04-05)

Build: 2017-03-29

fixed: findAll() should throw FindFailed according to docs and support FindFailed Response handling.

Build: 2017-03-23

revised: VNCScreen: scripts using only VNC can now be run on headless systems (Pepijn Van Eeckhoudt)

Build: 2017-03-18

added: backport from Version 2: class Do: timed autoclosing popup, popAsk, popError, input/input hidden
see docs

Build: 2017-03-17

fixed: VNC: class Key constants like Key.WIN were not supported / keyUp() used typeKey instead of typeCode

Build: 2017-03-16

fixed: IDE: recapture image: new file content not reflected (image cache not updated)
revised: VNCScreen: stop, close, stopAll: remove screen(s) from list.

Build: 2017-03-14

revised: complete rewrite of the VNC feature, now based on the TigerVNC viewer jar (great thanks to: Pepijn Van Eeckhoudt)
Be sure to have read the docs!

Build: 2017-03-03

fixed: removed irritating error message with multiple mouseDown()

Build: 2017-02-25

fixed: ADBDevice: tap, input and getDisplayDimension
fixed: Image.reload(image) did not work
revised: Runserver: pull/244 - various enhancements

Build: 2016-12-10

fixed: ImagePath: images not found at root level of jar

Build: 2016-12-09

fixed: KeyModifier.WIN should be the same as KeyModifier.KEY_WIN

Build: 2016-12-02

fixed: Python scripting: select() had problems with unicode strings and default = 0
fixed: Maven: sikulixapi.jar now contains the tessdata stuff, so OCR/text features should work in Maven projects now out of the box

Build: 2016-11-29

fixed: observe() used in scripting: crashed with stackoverflow due to infinite recursion between scripting and Java level

Build: 2016-11-08

revised: runsikulix.cmd: adding to PATH is not needed anymore (done at runtime internally)

Build: 2016-11-04

fixed: capture prompt: message was no longer displayed

Build: 2016-11-03

revised: setting findfailed handler in Java code so that parameterless constructor for ObserveCallBack can be used

Build: 2016-10-31

fixed: isLockOn() now works as expected (implemented with a direct access to the Windows API)

Build: 2016-10-23

fixed: checkLastSeen: subsequent searches with higher wanted similarity were ignored - should only check if current wanted similarity is lower then last seen similarity.

Build: 2016-10-21

fixed: Match.getTime() now really returns the duration in milliseconds including the time waiting for the image to appear (in case of success before the end of the waiting time), consolidated also with Match.toString()

Build: 2016-10-20

fixed: sikulixsetup#forsetup: latest snapshot was no longer uploaded to OSSRH

Build: 2016-10-19

fixed: OCR text search not working - looks for image file instead

Build: 2016-10-09

fixed: should detect macOS Sierra 10.12 (avoid extended delay with Java Robot)

Build: 2016-09-10

fixed: the Tesseract support stuff was no longer available on google.code, stored now at

Build: 2016-08-04

fixed: input() function on scripting level was blocked and did not work anymore

Build: 2016-07-31

revised: delete images on save: incomplete string can be ignored, a ' is detected in comments revised: ScreenUnion as Region: (Screen.all()) highlight does not make sense (error message), shown as S(Union) not S(-1)

Build: 2016-07-19

revised: Android support: startup, input/type, exec
moved tap, swipe, input, key to class Region - if used on non-Android device, nothing happens
(see: for some information details)

Build: 2016-07-15

added: started to add support for Android devices (package --- not yet in the docs

Build: 2016-07-05

revised: inputText() dialog: some improvements
revised: IDE: delete images on save: aborted now, if a string is not completed on same line (led to possible loss of images before)

Build: 2016-07-04

revised: inputText() dialog: set fontsize, optional use monospaced, line wrap at wordbounds, vertical scrollbar if needed

Build: 2016-06-25

revised/fixed: Python scripting: observe() not useable in some cases
revised: Capture Prompt: prompt text should already vanish, when mouse button is pressed

Build: 2016-06-19

fixed: Jython: with Region: now (finally ;-) seems to work

Build: 2016-06-18

fixed: IDE: insert image button did not work any longer

Build: 2016-06-17

fixed: prepareRobot(): should add to sys.path only once (only relevant for rerun in IDE)
fixed: Java level: Region.onXXX observe events could no longer be specified (no suitable constructor in ObserverCallBack)

Build: 2016-06-07

fixed: Jython scripting: capture() did no longer work as documented (should return filename of image stored in temp)

Build: 2016-06-06

fixed: Robot Framework: Library Screenshot now works
fixed: at Python script level: class Settings was no longer writable
fixed: location outside any screen should not crash with NPE, only display error message and either do nothing or something on primary screen.

Build: 2016-05-27

revised: RobotFramework support: robot module auto-imported in all cases, sys.path adjusted in all cases including parent folder of script, added prepareRobot() to support the seamless use of, runScript() now is aware of UTF-8/UniCode (see docs)
revised: internal SikuliX errors leading to termination now during script run no longer terminate the IDE but only the scriptrun so leaving the problem messages visible even in IDE and avoid loss of unsaved scripts
revised: vncStart(): to allow more than one connection in parallel

Build: 2016-05-26

revised/added: VNCScreen: revised: init process, added: convenience features start() and stop() for one VNC connection 0 to IP:Port (example see docs)

Build: 2016-05-25

added: new feature: key-value-store that can be use, to provide options to a script from outside and/or to persist information from one scriptrun to the next (based on a property file - see docs)
revised: RobotFramework support: now all usage variants are functioning as described (see docs)
fixed: popFile(): NPE selecting root folder, memory leak caused by leaving JFrames

Build: 2016-05-24

revised: VNCScreen: fixed some issues (some details)
fixed: input(..., hidden) now returns the user's input correctly
fixed: popFile() now allows to select any file or folder
fixed: popFile() on cancel now returns empty string instead of crashing with NPE

Build: 2016-05-20

fixed: Region.wait() should not do anything at InteruptedException

Build: 2016-05-20

fixed: RobotFramework support on Windows
fixed: getImagePath() on Windows now returns useable path strings
fixed: input dialog (with hidden) should return null/None when cancelled
added: IDE: imported .sikuli scripts are now internally reloaded (reimported) when changed since the last run (no need any longer to use reload() or even restart the IDE)
revised: RobotFramework support: the robot Python module is now bundled, possible to run Robot scripts from the IDE ( see docs)
fixed: ObserverCallback did not work in JRuby
(thanks to
revised: IDE: open/save/export/loadImage handling - now possible to load .skl into the IDE, overwriting is checked at export, Folders not ending .sikuli can be loaded as scripts (with .py, .rb, .js)
revised: Linux: class App: if features like wmctrl are missing or do not work correctly, SikuliX does not terminate anymore, but only prints error messages and respective features will not work, also issuing error messages
added: ScreenImage (return of capture()): getRegion() returns the region, where the image was captured from
revised: Python API layer for use with IDE's like PyCharm, class Screen is now directly mapped to class Screen at Java API
fixed: mouse actions on VNCScreen not done by VNCRobot but by DesktopRobot
revised: Mac: App.isRunning() more robust now (no more strange crashes)
added: popFile(): display a file open dialog allowing to select a file or folder returning the absolute path to the selected item (Mac: script packages .sikuli can be entered)
revised: the open/save/loadImage dialogs - Jython scripting support:
... now possible to open a folder not having .sikuli (save not yet supported)
... .skl can be opened to a .sikuli, to edit the script
fixed: run(someCommand) now prints the complete output from stderr (not only first line) (Bug #1573519)
revised: The target parameter type in find, wait, exists,findAll and onXXX is now checked for validity.
... same goes for the respective indirect finds in click, ... (valid only: single Pattern, String, Image)
... If invalid the script aborts with an error message reporting the line number in Jython scripts.
added: class App: experimental: issue http requests based on Apache org.apache.httpcomponents.httpclient (App.wwwStart(), App.wwwStop(), App.wwwGet(), App.wwwSave() see javadocs)
added: FindFailed handler support: it is now possible, to define a handler function (as with observe), that is visited in case of FindFailed situations (before any other actions). A handler might also be specified for situations, that an image is not found on the imagepath (not loadable). This new feature allows much easier, to implement corrective actions and logging for these cases. How to finally handle the case can be specified in the handler. (see docs: Exception FindFailed)
revised: FindFailed PROMPT: now an image can be recaptured in case of not found. This might make it easier, to make a script work in changed environments, where images are no longer found. The original image is preserved as _BACKUP_original.png. These backups have to be managed manually at this time and are overwritten without notice with the next recapture
added: input and pop... features can now be placed on the screen where needed (center of the dialogbox goes to a given location or center of a region - related function is popat())
revised: input, popup and the other pop... features now are always on top from beginning no matter which app is frontmost
revised: Jython scripting support: possible now to setup a folder myscript (no .sikuli needed) containing a, other .py files to be imported and folders .sikuli intended to contain images.
... This allows to setup projects in IDE's like PyCharm and run them from PyCharm as well as using SikuliX from commandline.
... The image folders .sikuli are intended to be managed in the SikuliX IDE (capture support).
About the prerequisites and the possibilities see the docs. This folder structure is not yet completely supported in the SikuliX IDE.

Build: 2016-03-26

fixed: findAll: Match.getImageFilename now works

Build: 2016-03-25

added: exists now aborts with FindFailedResponse(PROMPT) and reports the line number including traceback for Jython scripts
added: feature to report the current line number and a traceback for Jython scripts, if the script run is terminated from the Java level
revised: final cleanup at termination

Build: 2016-03-21

changed: version 1.1.1+ will now need Java 1.7 or newer

Build: 2016-03-21

revised: Region.highlight(): now available on Linux if supported --- thanks to toschneck
revised: run Linux config check commands from internally now using appache.commens.exec --- thanks to toschneck
revised: : configurable click (pause - down - pause - up - pause)
revised: mouse click action (Mac hack to avoid slow down after 1 minute) - fast clicking is back (except Mac 10.10+)

Build: 2016-03-03

revised: capture feature -- should now work in multimonitor configurations with latest system versions

Build: 2015-10-26

fixed: Mac: do-not-slow-down-hack now works on 10.11 too
revised: issue #155 - import of plain .py modules

Build: 2015-10-17

revised: Linux: SikuliX no longer terminates if wmctrl or xdotool are not available. Some Appclass features do not work in this case, but respective error messages are produced. wmctrl: openApp, closeApp, switchApp - xodotool: getFocusedWindow
added: jxgrabkey sources to sikulixapi.jar to avoid downloading artefact from non-MavenCentral repository
changed: JRuby now using version 9 (

Fixlevel of version 1.1.0 (2015-10-05)

Build: 2015-09-25

revised: drag(), dropAt(), dragDrop(): for each usage you can define individual timing parameters (see docs)
fixed: problem with App class on Mac and Windows after 2015-09-19: native xxxUtil libs where no longer loaded
added: App class: waits max waitTime until App is running (like someApp.isRunning(waitTime))
added: for Java: convenience Method App.pause(waitTime): do nothing for the given time (instead of using new Screen().wait())

Build: 2015-09-22

some revisions and new features for the App class (thanks:
... and Linux setup: (thanks:

Build: 2015-09-09

fixed: Windows: App class constructor App() should not open not running app (thanks:
added: Allow user to specify the delay between mouseWheel calls (thanks:

Build: 2015-09-08

added: IDE: italian translation

Build: 2015-08-28

revised: using runsikulix -s -- arg1 arg2 ... now has the user args available in sys.argv[1+] when running .sikuli (Python) on the server
revised: setup now shows the used options

Build: 2015-08-21

fixed: added a Region.init() to better support subclassing of Region on the Jython level
revised: allow to run setup in the project context using mvn -Pl Setup exec:exec

Build: 2015-08-18

fixed: some problems with the App class methods (App.close("some-app" did not work)

Build: 2015-07-20

fixed: offline setup: selenium4sikulix should only be downloaded on request
temp fix: removed the robot stuff from sikulixapi.jar, htmldata files cannot be loaded from a jar

Build: 2015-07-14

added: for use in observe handler/ObserveCallback: event.getType() returning a string with APPEAR, VANISH or CHANGE
added: for use in observe handler/ObserveCallback: event.isAppear(), event.isVanish() and event.isChange() returning True or false

Build: 2015-07-13

added: Mouse.setMouseMovedHighlight(true/false), where true will be the default.
added: Robot run: use Java as Keyword implementation, containing jar file is added to classpath at runtime

Build: 2015-07-05

added: Robot Framework: robot Python module now bundled (SikulixAppData/Lib), setup RobotFW testcase in IDE(Robot text and inline Keyword library) and run from IDE and/or commandline, see a test script combining RFW with Sikulix and Selenium
fixed: NPE when setting autoWaitTimeout of a region to 0

Build: 2015-07-03

added: a showcase (runnable from the net) for the usage of Selenium Firefox in SikuliX script (tested on Mac and Windows)
added: download and store available extensions using setup (from commandline: setup...jar options extensions)
added: support for Selenium now available as ready to use extension jar (not yet in the docs)
fixed: scripts from the net: if download for .py/.rb is not allowed, one can use .py.txt and .rb.txt for the script files
fixed: Mac OSX 10.11: did not start up

Build: 2015-06-30

revised: running scripts stored somewhere in the HTTP net can now be run from inside the IDE (runScript()) or from commandline with option -r --- docs are up to date

Build: 2015-06-27

revised: feature load(jar): more options to find the jar, imagepath to folder in jar can be given
added: buildJarFromFolder(): to build a jar on the fly at runtime
added: compileJythonFolder(): replaces the contained .py files with it's compiled versions ...$py.class (can be used for source protection)
fixed: App class: LinuxUtil: added a stub implementation for getApp() to avoid loss of pid

Build: 2015-06-25

added: Jython scripts: highlightOff() switches off all current highlights

Build: 2015-06-24

revised: RunServer: now works according to
fixed: Finder: Windows: now works again
fixed: App class: isRunning() now works on Windows and Mac
added: Jython support: now Lib/site-packages is recognized and can have a sites.txt containing more paths (see docs/Using Python)

Build: 2015-06-22

revised: commandfiles on Mac to have alternatives to start the IDE (shows SikuliX icon in taskbar and SikuliX as name)
revised: App class on Mac, still (app not running) does not work on 10.9 and earlier (on 10.10 with most apps works), when the script is run from the IDE that is running as - when starting the IDE or running script from commandline it works

Build: 2015-06-15

fixed: Windows: Jython scripting: exceptions in imported stuff now again shown correctly

Build: 2015-05-28

revised: findBest(): now internally works on the given images in parallel (threading)

Build: 2015-05-26

added: findAllByRow, findAllByColumn: returns an array of matches in sorted order top left to bottom right either row-wise or column-wise
added: findBest(): find the match with the highest score out of the list of given images
revised: App.isRunning(): now internally refreshes the App instance, so the App can be created with a window title and later be checked, whether it is running, if other means are used to start the app (usage instead of "if someApp.window()")

Build: 2015-05-22

revised: class App: and openApp() now ignore already running instances of the named app and will in doubt start a new instance. Windows: openApp("cmd.exe /c "some command to run") works again

Build: 2015-05-21

fixed: getBundlePath: Windows: now without leading slash
revised App class (Windows): faster now and focus indeed activates the frontmost window

Build: 2015-05-20

fixed: Jython import: problem with import of .py files

Build: 2015-05-19

revised: App class: open() now accepts parameters again

Build: 2015-05-18

fixed: regression: Pattern().targetOffset() offset ignored fixed: a problem with the "name =" capture feature, now made sure, that the line only contains "name ="
fixed: App.getWindow(): Mac: a problem with , in a title
continued: RunServer and RunClient (now named Run)

Build: 2015-05-16

fixed: IDE: cursor keeps current position in cases, where the content is re-evaluated (toggle view and image rename)
added: experimental (more options might follow): a feature to highlight the search region before search (green frame) and the match (if found, red frame) after the search (each for 2 seconds), might be an alternative to slow motion running. Start: Debug.highlightOn(), Stop: Debug.highlightOff(). works for region.method() usage and for setROI() usage. The region/ROI must be at least 10 pixel smaller than the screen on all sides, otherwise the green frame is omitted.

Build: 2015-05-15

fixed: multi monitor: should be fixed now (tested on Mac (incl. 10.10.x) and on Windows)
revised: IDE: show button: now recognizes negative coordinates and finds image on all screens.
added: class App: now possible to add parameters/options again as a string using setUsing(...).
Currently only recognized on Windows, which brings back the possibility to
open an application with parameters/options.
Until now:"some.exe parm1 parm2 ...")
must now be written as App("some.exe").setUsing("parm1 parm2 ...").open()

Build: 2015-05-13

revised: class App: Mac/Windows: an app now knows it's process ID (PID) and its frontmost window title
you can ask an app wether it is running and wether it has a window
if an app is running it is not started again with open(). Linux: not yet revised

Build: 2015-05-08

revised: class App:, focus, close on Windows to be more consistent. getWindow() to get the title of the frontmost window of an app. The same app is only opened once - a running process is reused.

Build: 2015-05-04

temp fix: IDE as mac app: added a hack to avoid click/type slowdown after about 60 seconds
temp fixed: IDE: switching to Jython 2.7.0 final with setup option for Jython 2.5 (when unicode problems arise)

Build: 2015-05-01

added: IDE: buttons to capture a point and an offset and
to show (highlight) the leftmost item in the line having the cursor (if possible in the line context)
added: IDE: capturing with the cursor in a line containing only imagename = will result in an
image filename as imagename.png and overwrites on recapture. (to support naming schemes and variable use)

Build: 2015-04-23

fixed: setup did not work anymore with already downloaded artefacts (offline setup)
added: runScript(): inline run of PowerShell snippets

Build: 2015-04-20

added: runScript("applescript tell ..."): run code snippets in AppleScript on Mac using osascript
fixed: possible problem with setup running with proxy
revised: running Python scripts from net and with RunServer
revised runsikulix.cmd: now first we check, whether java can be run from system path
fixed: each SikuliX session should have it's own temp folder (auto deleted at JVM shutdown). Still the IDE GUI can only run once, but as much as one likes in parallel from commandline.

Build: 2015-04-17

fixed: user args after -- not filled into sys.argv when running from commandline
fixed: runsikulix.cmd did not use Java 8, if available in standard places
fixed: tessdata not bundled when using setup with option 1 only
fixed: exists(Pattern(image)) hangs (internally looping endlessly), if image file is not available
added: experimental: RunServer: run scripts (or JavaScript snippets) from anywhere using a http RESTful protocol
fixed: save script problems causing exceptions should be handled internally (otherwise might block GUI)
added: experimental: visual annotation (former extension Guide) now a standard feature of SikuliX (contained in sikulixapi.jar)

Build: 2015-04-03

fixed: runScript(): possible NPE, when used in scripts run from commandline

Build: 2015-04-01

revised: jython script running with sikulixapi.jar::Runner: now returns the value from an exit(n)
fixed: Linux: possible NPE in build on the fly

Build: 2015-03-31

added: jython script running with sikulixapi.jar::Runner: usage:, args), sikulixapi.jar and a jython.jar must be on classpath (auto taken from setup downloads if omitted).

Build: 2015-03-27

fixed: Mac: a problem that made it to not run any longer with Java 6
revised: MouseMovedCallback feature
added: set callback handler and request visiting the handler before processing a mouse action (on/off)
added: request termination with next mouse action throwing an AssertionError

Build: 2015-03-24

fixed: (I hope ;-) all regression bugs against 1.0.1 in multi monitor environments
revised: ALL in Jython scripts and Screen.all().getRegion() can now be used, to search on all monitors in the same op ( will find and click the button, no matter on which monitor it currently is)

Build: 2015-03-24

added: multi monitor: a visual can now be found on all screens with one op: Screen.all().getRegion().find(someImage) will return a match, that knows it's screen, hence match.getScreen() will return the screen it was found on. Take care: is a lengthy operation and costs some memory, so it should be used with care. If the match spans screens, the screen with the biggest part is the winner (should be avoided).

Build: 2015-03-22

the next days I will somehow reveal more information about the new or revised features
... but many features are already in the docs

a toy: starting sikulixapi.jar with no parameters reveals a simple edit/save/run dialog for JavaScript trials
added: SikulixAppData/SikulixStore/SikulixDebug.txt if this file is present at startup, then from beginning we run with debug level 3 and all messages are written to this file (helpful for startup debugging)
added: SikulixAppData/SikulixStore/SikulixOptions.txt is a key/value store according to the rules of Java property files, that is loaded at startup. The options might overwrite settings and are available at runtime via getOption... calls (precedence: home folder, work dir, SikulixAppData)
added: SikuliX now has a central repository (SikulixAppData) for all related stuff in the user's home folder area according according to the standards of the system
added: running scripts can now be paused/continued and aborted by moving the mouse (detection with next mouse action)
added: one can now run scripts written in JavaScript (edit not yet supported in IDE)
revised: script running in general: -r can have multiple scripts that are run one after the other,
added: runScript() can be used to run scripts from inside other scripts or from Java including handling of the bundlePath
added: images and scripts can now be downloaded/run from HTTP accessible locations in the net
revised: Linux build on the fly for libVisionProxy should be available in API also, to support this with Maven usage of sikulixapi.jar
revised: TextRecognizer: made the tessdata handling more robust, findAll(text) now works
added: image files whose name start with an _ are protected against image cleaning on save in all cases
added: sikulixapi.jar can now be bundled with Launch4J to create .exe that only need a JRE, resources and images can be exported or used from the .exe content (bundled in the original jars)
revised: moved parts of the Sikuli/Jython import handler to the Java level
revised: completely reworked the startup for IDE and API usage, now concentrating all startup requirements in the one singleton class RunTime
revised: all Sikulix related stuff besides the jars (setup, IDE and API, can now be moved around freely) is now in a system specific Sikulix folder in the home folder

Build: 2015-01-14

revised: observe: handlers (callback on observe event happened) now directly called from Java in Jython and Jruby

Build: 2015-01-12

see GitHub commits

Build: 2015-01-09

again revised the Linux build
started: make a SikuliX.exe using Launch4J

Build: 2015-01-08

again revised the Linux build
finalized: on Mac now the IDE is back as Mac application

Build: 2015-01-06

fixed: Linux setup: (provided or bundled) is checked and can be built on the fly during setup (tested on Ubuntu 14.04 64/32 Bit)
fixed: JRuby: did not run unsaved scripts
fixed: Java 6: Jython version is checked: must be 2.5 and is used with setup (having bundled 2.7 terminates)
changed: Jruby now 1.7.18, Jython now 2.7-b3
fixed: version 1.1.0 now compiles on Java 6 again

Build: 2014-12-28

fixed: problem with CheckLastSeen when pattern is used
fixed: only onAppear handler was called on event (other handlers not called)

Build: 2014-12-03

revised: silent setup: replaced download popups with log messages to avoid any GUI usage fixed: write(#DEL.) did not work added: Key.dump(): get a list of keynames for write()

Build: 2014-11-23

fixed: minor - see GitHub commits

Build: 2014-11-13

fixed: detection of Mac OSX 10.10

Build: 2014-10-31

fixed: Windows: offline setup did not work

Build: 2014-10-20

fixed: JRubyAddons (1.1.0-6.jar) back again for download during setup

Build: 2014-10-16

fixed: offline setup now includes library jars
finalized: unattended setup

Build: 2014-10-14

fixed: a crash on Windows because of a bug in the handling of the libs folder
finally revised: download of needed stuff during setup

Build: 2014-10-12

fixed: setup: export resources (Lib folder, command files, ...)
revised: Jython, JRuby, libs-jars and sikulixapi.jar now loaded from MavenCentral/OSSRH

Build: 2014-10-05

changed: managing ImageCache is per Settings.setImageCache(n), which sets the max. in-memory-images to n MB (start value 64). 0 will switch off caching and clear the cache immediately.
completely revised image loading and caching.
added: a feature to store key-value-pairs in the persistent preferences storage, so they can be retrieved in a future SikuliX session
... details see javadocs Sikulix.prefStore, ...load, ...remove
added: Region.isValid to check, wether a Region can access a screen
added: Region.mouseMove(x,y) and Mose.move(x,y): both move the mouse from it's current position to the given offset

Build: 2014-09-25

revised: getting parts of a region or an image based on a raster overlay of even rows, columns or cells
documentation: started to revise the docs

Build: 2014-09-24

added: Region: getLastTime() returns the duration in msecs of the last find in the given region (similar: Match.getTime())

Build: 2014-09-23

fixed: Jython import problem in build 2014-09-22 (addModPath)
added: some convenience functions for path handling
added: new popXXX, input, select

Build: 2014-09-17

added: IDE: Preview: renaming an image now changes all occurences of the same imagename in this script
added: IDE: scriptwindow tab menu: reset now makes a reparse to reflect changes in the preferences (e.g. how images are shown)

Build: 2014-09-16

fixed: user parameters from command line after -- or --args are now available again in sys.argv[1 .. n]
revised: IDE: renaming images in Preview (special case: overwrite existing image)

Build: 2014-09-13

revised/fixed: delete not used images on save still in some special cases deleted images erroneously

Build: 2014-09-12

added: OCR-read the text from a given image file (convenience: Image.text(imagefile)) or an Image object

Build: 2014-09-11

fixed: problem with addImagePath() crashing Jython import
this is the first build of 1.1.0 (first commit: 0107b25)

Build: 2014-09-10

new: javadoc and sources jars of sikulixapi now available here
new: Match.getTime() returns elapsed time in millisecs of the corresponding search op

Build: 2014-09-07

new: will run the script, scripting language is detected from contained scriptfile.
can be used to setup batched script runs.
revised: editor tab context menu features
revised: IDE: usage of tempfiles

Build: 2014-08-30

temp fix: when running on Mac OSX 10.10 the search feature is switched of, to avoid startup crash of IDE (to be fixed later)
fixed: now compiles on Mac with Java 8
fixed: some problems after Scriptrunner restructuring

Build: 2014-08-10

revised: final setup test now the same for API/Jython/JRuby, more features are tested, more verbose logging

Build: 2014-08-09

revised: handling of images in Image/ImagePath completely switched to URL's
revised: IDE: tab close and script save - consistent handling of image cache - might still have odds

Build: 2014-08-05

added: callback feature to jython runner, now logging redirect works in Jython scripting
added: now even user logs can be redirected, setLoggerAll now redirects info, action, error, debug and user

Build: 2014-08-04

revised: setup
JRuby: gem should be useable, rspec+ package seperate setup option

Build: 2014-07-31

added: Sikuli's log messages can be redirected to a private logger instance (see java docs Debug)
brought back for JRuby: rspec, cucumber support is again bundled

Build: 2014-07-31

fixed some setup problems now the libs folder is always exported to the parent folder when sikulixapi.jar is used
switched off JRuby IDE stdxxx redirection for now - problems, when running IDE from commandline

Build: 2014-07-24

added: Michaeal Johnsons VNC solution
revised: build process and collectjars

Build: 2014-07-23

revised: lib export when running with sikulixapi.jar: exported to parent folder of jar in all cases.
added: a usecase for sikulixapi.jar from OSSRH in Maven projects (on git)

Build: 2014-07-22

finally fixed: problems after migrating to new version/naming/structural concept
setup: API (option 2) now contained in setup - no extra download
sikulixapi.jar for MavenCentral: Libs splitted into 3 system specific parts Libswin, Libsmac and LibsLux

Build: 2014-07-21

finally fixed: problems after migrating to new version/naming/structural concept
switched of yellow splash-screens at script run

Build: 2014-07-17

(first build of 1.1.0-Beta4) revised: IDE save: handling of images
revised: HotKeys: reset at scriptend in IDE
revised: Mouse: new classes Keys and Device for synching

Build: 2014-06-29

revised: IDE help menu: post question, report bug: version/system/java info in clipboard, to support pasting
fixed: IDE crash Java NPE: if Tesseract not working and auto-image-naming is text/OCR

Build: 2014-06-28 (this is the release status of 1.1.0-Beta2)

fixed: IDE terminates on trying to open a non sikuli directory or an incorrect sikuli project
fixed: possible loss of images at save (images in comments, images given with path)
fixed: multi-monitor issues with respect to mouse actions (Screen(0) no longer is the primary monitor in all cases, but Screen.getPrimaryScreen() is)
fixed: out-of-bounds crash during error eval when running from command line (thanks to github user fpmchu)
fixed: IDE: NPE on termination when running from command line
fixed: bug 1330348: running Java: ImagePath is set to working directory if no path is set before first image search
fixed: possible NPE in special situations (mouse moved to invalid location)
fixed: the native library problems on Windows when using 32-Bit Java
added: Screen.all() makes a ScreenUnion of all monitors, on Python level ALL is predefined and can be used as ALL.function() like a Screen/Region
added: reset() to renew the multimonitor configuration inline on Python level
added: Settings.OcrLanguage is now accepted by Tesseract (after using org.sikuli.script.TextRecognizer.reset())
added: images can now be loaded from jars (see JavaDocs::ImagePath)
revised: completely: observe processing (see JavaDocs for now)
revised: further reduced error verbosity at script load and creating image thumbnails
revised: class Mouse, added to get the mouse location, external mouse moves are detected, mouse use should now be thread safe
revised: moved the handling of capture and stop hotkey to HotkeyManager to prepare a more general usability (run on command line, using callbacks)
revised: Region.write() and it's javadoc (alternative for type() with more features)
revised: the native build for Linux, Mac and Windows (now using MinGW from
revised: JRuby support: many minors (see GitHub)

... more can be found in commits before 2014-05-01 on GitHub