SikuliX 2014 --- Nightly Builds 1.1.2 ---
Latest available Build: 1.1.2-SNAPSHOT 2018-01-13_16:09 Travis Build 96
News and direct chat:
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
BE AWARE and TAKE CARE:
-- 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
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.2-#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:
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 1.1 for scripting with Python/Jython (is Jython 2.7 and needs Java 7+)
for use with Java 6 download
JRuby 1.2 for scripting with Ruby/JRuby (is JRuby 22.214.171.124)
for offline setup: download for setup option 2 (API)
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?
Changelog version 1.1.2
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"
added: capture variant capture(Region or Text, [path,] name) that stores the captured image either in current bundlepath or the given path
added: Region.findBest() and .findAny(): search for more than one image in same region in parallel
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
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
added: -Dsikuli.javaok to let SikuliX run, even if Java version cannot be detected
experimental: added IDE command line parameter -m
which allows to run multiple instances of the IDE (you should know what you are doing)
fixed:Python subprocess did not work - put import subprocess into Sikuli.py
fixed: should not act (click, move, ...) if FindFailed should be ignored (setFindFailedResponse)
fixed: paste() did not return 1 on success but 0
revised: App.getClipboard(): system clipboard as singleton
added: download link in SikuliX1 Essentials (github.io)
fixed: Bug #1694102: macOS: popFile() hangs (should run on EventQueue)
fixed: Bug #1693687: Region.getCol(n, cols): negative n did not work
fixed: Bug #1693110 VNC: type(Key.UP) did not work
fixed: new Finder().destroy() throws NPE
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
revised: changed the way, the tigervnc-viewer jar is referenced (sikulix2tigervc-2.0.0-SNAPSHOT)
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)
fixed: findAll() should throw FindFailed according to docs and support FindFailed Response handling.
revised: VNCScreen: scripts using only VNC can now be run on headless systems (Pepijn Van Eeckhoudt)
added: backport from Version 2: class Do: timed autoclosing popup, popAsk, popError, input/input hidden
fixed: VNC: class Key constants like Key.WIN were not supported / keyUp() used typeKey instead of typeCode
fixed: IDE: recapture image: new file content not reflected (image cache not updated)
revised: VNCScreen: stop, close, stopAll: remove screen(s) from list.
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!
fixed: removed irritating error message with multiple mouseDown()
fixed: ADBDevice: tap, input and getDisplayDimension
fixed: Image.reload(image) did not work
revised: Runserver: pull/244 - various enhancements
fixed: ImagePath: images not found at root level of jar
fixed: KeyModifier.WIN should be the same as KeyModifier.KEY_WIN
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
fixed: observe() used in scripting: crashed with stackoverflow due to infinite recursion between scripting and Java level
revised: runsikulix.cmd: adding to PATH is not needed anymore (done at runtime internally)
fixed: capture prompt: message was no longer displayed
revised: setting findfailed handler in Java code so that parameterless constructor for ObserveCallBack can be used
fixed: isLockOn() now works as expected (implemented with a direct access to the Windows API)
fixed: checkLastSeen: subsequent searches with higher wanted similarity were ignored -
should only check if current wanted similarity is lower then last seen similarity.
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()
fixed: sikulixsetup#forsetup: latest snapshot was no longer uploaded to OSSRH
fixed: OCR text search not working - looks for image file instead
fixed: should detect macOS Sierra 10.12 (avoid extended delay with Java Robot)
fixed: the Tesseract support stuff was no longer available on google.code, stored now at download.sikulix.com
fixed: input() function on scripting level was blocked and did not work anymore
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)
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)
added: started to add support for Android devices (package org.sikuli.android) --- not yet in the docs
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)
revised: inputText() dialog: set fontsize, optional use monospaced, line wrap at wordbounds, vertical scrollbar if needed
revised/fixed: Python scripting: observe() not useable in some cases
revised: Capture Prompt: prompt text should already vanish, when mouse button is pressed
fixed: Jython: with Region: now (finally ;-) seems to work
fixed: IDE: insert image button did not work any longer
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)
fixed: Jython scripting: capture() did no longer work as documented
(should return filename of image stored in temp)
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.
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 robot.run(),
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
revised/added: VNCScreen: revised: init process, added: convenience features start() and stop() for one VNC
connection 0 to IP:Port (example see docs)
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
revised: VNCScreen: fixed some issues
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
fixed: Region.wait() should not do anything at InteruptedException
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 (
fixed: ObserverCallback did not work in JRuby
(thanks to https://github.com/RaiMan/SikuliX-2014/pull/191)
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 myscript.py, 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.
fixed: findAll: Match.getImageFilename now works
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
changed: version 1.1.1+ will now need Java 1.7 or newer
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: Mouse.click() : 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+)
revised: capture feature -- should now work in multimonitor configurations with latest system versions
fixed: Mac: do-not-slow-down-hack now works on 10.11 too
revised: issue #155 - import of plain .py modules
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 (126.96.36.199)
Fixlevel of version 1.1.0 (2015-10-05)
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: someApp.open(waitTime): 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())
some revisions and new features for the App class (thanks: https://github.com/RaiMan/SikuliX-2014/pull/163)
... and Linux setup: (thanks: https://github.com/RaiMan/SikuliX-2014/pull/167)
fixed: Windows: App class constructor App() should not open not running app (thanks: https://github.com/RaiMan/SikuliX-2014/pull/163)
added: Allow user to specify the delay between mouseWheel calls (thanks: https://github.com/RaiMan/SikuliX-2014/pull/154)
added: IDE: italian translation
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
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
fixed: some problems with the App class methods (App.close("some-app" did not work)
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
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
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
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
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: SikuliX.app did not start up
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
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
added: Jython scripts: highlightOff() switches off all current highlights
revised: RunServer: now works according to http://sikulix.com/support
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)
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.open() (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 SikuliX.app
- when starting the IDE or running script from commandline it works
fixed: Windows: Jython scripting: exceptions in imported stuff now again shown correctly
revised: findBest(): now internally works on the given images in parallel (threading)
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()")
revised: class App: App.open() 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
fixed: getBundlePath: Windows: now without leading slash
revised App class (Windows): faster now and focus indeed activates the frontmost window
fixed: Jython import: problem with import of .py files
revised: App class: open() now accepts parameters again
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)
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.
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: App.open("some.exe parm1 parm2 ...")
must now be written as App("some.exe").setUsing("parm1 parm2 ...").open()
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
revised: class App: App.open, 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.
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)
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)
fixed: setup did not work anymore with already downloaded artefacts (offline setup)
added: runScript(): inline run of PowerShell snippets
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.
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
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)
fixed: runScript(): possible NPE, when used in scripts run from commandline
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
added: jython script running with sikulixapi.jar::Runner: usage: org.sikuli.script.Runner.run(scriptPath, args),
sikulixapi.jar and a jython.jar must be on classpath (auto taken from setup downloads if omitted).
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
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
(ALL.click(someBotton) will find and click the button, no matter on which monitor it currently is)
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).
the next days I will somehow reveal more information about the new or revised features
... but many features are already in the docs
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)
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
revised: observe: handlers (callback on observe event happened) now directly called from Java in Jython and Jruby
see GitHub commits
again revised the Linux libVisionProxy.so build
started: make a SikuliX.exe using Launch4J
again revised the Linux libVisionProxy.so build
finalized: on Mac now the IDE is back as Mac application
fixed: Linux setup: libVisionProxy.so (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
fixed: problem with CheckLastSeen when pattern is used
fixed: only onAppear handler was called on event (other handlers not called)
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()
fixed: minor - see GitHub commits
fixed: detection of Mac OSX 10.10
fixed: Windows: offline setup did not work
fixed: JRubyAddons (1.1.0-6.jar) back again for download during setup
fixed: offline setup now includes library jars
finalized: unattended setup
fixed: a crash on Windows because of a bug in the handling of the libs folder
finally revised: download of needed stuff during setup
fixed: setup: export resources (Lib folder, command files, ...)
revised: Jython, JRuby, libs-jars and sikulixapi.jar now loaded from MavenCentral/OSSRH
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
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
added: Region: getLastTime() returns the duration in msecs of the last find in the given region (similar: Match.getTime())
fixed: Jython import problem in build 2014-09-22 (addModPath)
added: Sikuli.py: some convenience functions for path handling
added: Sikuli.py: new popXXX, input, select
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)
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)
revised/fixed: delete not used images on save still in some special cases deleted images erroneously
added: OCR-read the text from a given image file (convenience: Image.text(imagefile)) or an Image object
fixed: problem with addImagePath() crashing Jython import
this is the first build of 1.1.0 (first commit: 0107b25)
new: javadoc and sources jars of sikulixapi now available here
new: Match.getTime() returns elapsed time in millisecs of the corresponding search op
new: ScriptRunner.run(script_folder) 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
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
revised: final setup test now the same for API/Jython/JRuby, more features are tested, more verbose logging
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
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
JRuby: gem should be useable, rspec+ package seperate setup option
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
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
added: Michaeal Johnsons VNC solution
revised: build process and collectjars
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)
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
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
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 Mouse.at() 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 http://win-builds.org/)
revised: JRuby support: many minors (see GitHub)
... more can be found in commits before 2014-05-01 on GitHub