Release notes

Version 2.16

Version 2.15

  • Sorting solutions
    Solutions can now be sorted descending. There is also a new menu item in the context menu (right click a solution) to move the best solutions to the bottom of the list. 
  • New website
    JSoko now checks if a newer version is available at the website

Version 2.14

  • Look&Feel: No nimRod Look&Feel with Wayland
    The NimRod Look&Feel can't be used with Wayland anymore.
    There seem to be problems with popups.
    You can change the Look&Feel using the menu: Settings->Look&Feel
  • Bug fix: Escaping delete solution dialog
    When deleting a solution, a dialog is shown asking "Are you sure to delete?".
    If the dialog is aborted by pressing the Escape key, the solution was deleted anyway.
    This is fixed now.

Version 2.13

  • Look&Feel: Default Look&Feel with Wayland
    When the Wayland communication protocol is used then the default Look&Feel is used instead of NimRod.
    NimRod Look&Feel has problems with popups when used with the Wayland communication protocol.

Version 2.12

  • Bug fix: Setting solution as move history
    Since version 2.10 the best pushes solution has been set as move history when no savegame for the level is there. This caused an exception in some cases.
    This has been fixed in Version 2.12.

Version 2.11

  • Bug fix: Submitting solutions to
    Since version 2.10 a special setting in the file settings.ini isn't needed anymore.
    However, JSoko 2.10 still checked if the setting is present.
    This has been fixed in Version 2.11.

Version 2.10

  • New levels: Chrysalis levels
    This version contains the first 10 Chrysalis level collections by David Buchweitz.
  • Optimizer: auto select only solution
    If the user hasn't selected any solution to be optimized when the optimizer is started, the optimizer now automatically selects the solution, if there is only one solution.
  • Move history
    When a level is loaded and there is no snapshot data (played move history), then the program sets the first solution as move history.

Version 2.09

  • Bug fix: Data parser
    The data parser has correctly extracted the Let's Logic level id from the data.
    However, the id hasn't been kept in the level comment. Therefore, the id was not saved with the level data when the level or the whole collection was saved to hard disk (or saved in the database).
    This is fixed with this version.

Version 2.08

  • Optimizer: pushingSession optimization methods
    The optimizer now offers a pushingSession/moves and pushingSession/pushes optimization method.
  • Save collection as...
    When a collection is saved JSoko now imports all solution from the database to every level before saving the collection to the hard disk.
  • Run length decoding
    JSoko now supports decoding run length encoding data that use nested grouping.
    Example level: 20#|#@17-#|8(#-8(.$)-#|#-8($.)-#|)#18-#|20#

Version 2.07

  • bug fix for Optimizer: Optimizer closed although "don't close" has been selected
    If the optimizer is still running and the user closes the window, the program will ask if the optimizer should really be closed. If "no" is selected, the optimizer won't be closed anymore.

Version 2.06

  • Optimizer: New checkbox "Stop iteration when no improvement"
    When "iteration" is enabled the optimizer keeps optimizing new solutions until a solution is found that is already known.
    During these iterations it may happen that the optimizer finds a new solution which isn't better than the solutions before (but different).
    If this is the case the optimizer will start a new iteration with this new solution which may lead to several iterations without any progress.
    When the new checkbox is selected the new found solution is compared to the one that had been selected to be optimized. If it isn't better the iteration stops.

Version 2.05

  • Saving all metrics of a solution
    When a level / collection is saved to disk the solution metrics are now all exported that means: 
  • Bugfix for optimizer
    The moves/pushes optimization methods were slower as before since version 2.03. 
    This has been fixed in this version.

Version 2.04

  • Leaving tool windows
    The optimizer and solver can now be closed by pressing the escape key.
  • bug fix: crash of optimizer
    The optimizer has crashed in specific situations while optimizing a solution.

Version 2.03

  • Default directoy when loading or saving level files
    The default directory is usually the last one used for loading a file.
    This is still the case in this version except when a collection is selected from the collections list that has been loaded from disk (instead of the database). 
    In that case the default directory for the file chooser is the directoy the played collection is stored in.
  • Switch for simpler pushes lowerbound calculation in huge levels
    For huge levels it takes some time to calculate the box distances when a level is loaded.
    Therefore, it's now possible to switch between "accurate" and "fast" calculation of the box distances in the settings.
  • Optimizer: automatic intervals for pushing range optimiation
    The optimizer now has a new option for intervals.
    This can be used to let the optimizer optimize first pushes range 0-100, then 100-200, then 200-300, ...

 Version 2.02

  • bug fix: too few memory in optimizer
    When JSoko was started with a lot of RAM - like 60GB, and the optimizer was started for a very small level, then the optimizer wrongly showed a "too few memory" message. This is fixed now.
  • bug fix: optimizer crashed when using boxLines optimization 
    The optimizer has crashed when optimizing for box lines only. This has been fixed in this version.

Version 2.01

  • Solution upload to Let's Logic
    The texts in the log while uploading solutions don't show information for solutions which haven't been improved. This has changed, since the log text often got too large otherwise.

Version 2.00

  • New sounds
    There are now sounds for having solved a level, resetting the level and for situations that can't be solved anymore.
  • Solutions list
    The key "F11" now works as a toggle for showing/hiding the solutions list.
    When the solutions list is visible a small button is now visible to indicate that the list can be hidden by pressing the button. As before the list can also be hidden by clicking at the displayed level.
    This new button makes it more visible that a click is needed to hide the list for users only playing with keys.
  • Optimizer: double click invertes marked area
    In the optimizer it's possible to select an area to be optimized with the mouse:
    When dragging an area can be selected.
    Holding down the ctrl-key while doing this deletes the markings in the selected area.
    Dragging with the right mouse button also deletes the markings in the selected area.
    In this version it's possible to double click at the background image of the displayed level to invert the markings.
    This way it's easy to first select the left part of the level and then by double clicking selecting the right part of a level.
  • Status bar size
    The status bar at the bottom of the GUI now has the same size as the info bar at the top of the GUI.

Version 1.99

  • Bug fix: Database driver not found
    When JSoko 1.98 is started with: java -jar JSoko.jar the database driver couldn't be found.
    This is fixes with this version.
    Note: JSoko is intended to be started with the file: JSoko.exe
    The file "Start_JSoko_Windows.bat" is just there for those who want to compile the sourcecode and then start the program and therefore can't use the installer of JSoko.

Version 1.98

  • New menu item: Show technial help info
    In the help menu there is a new checkbox for enabling the display of technical info that are:
    1. Maximal RAM JSoko can use
    2. Folder where the database is stored
    3. Folder where the settings are stored
    4. Folder JSoko has been started from
    These info may help to in case of problems to reset all data JSoko has stored.
  • Optimizer
    When multiple solutions are optimized the optimizer will remove the old best solution after each iteration and add the new best found solution.
  • Bug fix: crash in huge levels
    In very huge levels the program internally crashed because the internal storage wasn't huge enough. This is fixed now.
  • Simpler pushes lowerbound calculation in huge levels
    To support levels bigger than 70x70 squares the pushes lowebound calculation is done with a simpler algorithm to avoid too long waiting times for the user. Howerver, the path finding still takes a lot of time for huge levels.

Version 1.97

  • Bug fix: the link to the Letslogic API key has been broken
    The Letslogic website has been updated which caused the link to the member preferences to be broken. This has been fixed.
  • Handling of ctrl+v
    Pressing ctrl+v now checks whether a solution or a level is to be pasted.
    Previously the user had to select the correct GUI element first: either the solution list or the main GUI when pasting solutions/levels.
  • Select level combo box
    In the combo box for selecting a level (can be opened by pressing "l") the user can now:
    -  enter a number for searching the level with that number. For instance entering 4 and a space will search for the level having level number 4.
    - enter a text for searching for the level having that title. For instance entering "*lock*" will search for the first level having the characters "lock" in the title.

Version 1.96

  • Bug fix: JSoko crashed when submitting solutions to Letslogic
    In case connecting to the database takes too long the program crashed when submitting solutions to Letslogic. This has been fixed now. Thanks to Bernhard H. for reporting that bug!

Version 1.95

  • New Feature: Submit multiple level sets to Letslogic
    This new feature allows selecting multiple collections. All solutions of the levels of those collections are then submitted to Letslogic. 
    JSoko will save the best submitted solution values in the database. This way the next time only new better solutions are submitted.
  • New Feature: Maximum time for optimizer plugin
    JSoko can be passed a maximum time for running the optimizer when started as a plugin (that is: called from Sokoban YASC).
    JSoko will stop the optimizer after that time and return the best found solution so far to Sokoban YASC.
  • New skin: KSokoban skin by Anders Widell
  • New skins: Yoshi Classic and Yoshi New by Borgar Þorsteinsson

Version 1.94

  • Bugfix: Submit of new solutions to Letslogic failed on Linux systems
    A newer JRE is now bundled in the Linux JSoko version due to an expiried certificate in the old bundled JRE.
  • Bugfix: JSoko couldn't be installed on Systems using Java14
    Users couldn't install JSoko on a system having Java 14 installed, since Java 14 doesn't ship with an unpacker anymore. 
    Therefore the bundled JRE isn't packed with "Pack200" in this new version
  • New feature: JSoko 1.94 (64Bit!) is now ready to be called as a plugin from Sokoban YASC.

    Note: you need to have Sokoban YASC 1.661 (or newer) installed to use this new feature (see the release notes of Sokoban YASC 1.661 for more information). 

    Sokoban YASC offers several sophisticated features around optimizing like a task queue, automatic optimizing in intervalls, alternating the optimization method and many more.

    All of this can now be used together with the JSoko optimizer directly from Sokoban YASC.

    This new plugin feature of Sokoban YASC allows running the external solvers and optimizers as 64-bit programs.

    Optimizers, in particular, benefit tremendously from having access to a large amount of RAM, so it's possible to use all RAM for the JSoko optimizer by using this new feature of Sokoban YASC.

    Note: since Sokoban YASC is a Windows program it can only call JSoko Windows.

    If you use JSoko on Linux you have to install the JSoko Windows version using Wine. The installer may report an error at the end, but JSoko is installed correctly. You can also use the zipped JSoko version ( which needn't be installed. Just unzip it to the the c:\ drive provided by Wine.
    In both cases you may have to set the correct path to JSoko in the optimizer settings in Sokoban YASC.

    Thanks to Brian Damgaard for implementing this really great new feature in YASC!
  • Several minor changes.

Version 1.93

  • bug fix: after sending new solutions to the result texts weren't displayed anymore. However, the solutions were sent correctly. It was just a problem regarding the text output.

Version 1.92

  • bug fix: the optimizer stopped after the optimizing run has ended without showing a found solution and wasn't reacting to user input anymore. Thanks to user findus for reporting that bug.

Version 1.91

  • bug fix: with activated go-through feature the path finding created additional boxes in some cases. Thanks to Brian Damgaard for reporting that bug.
  • When a deadlock has been found, but the user continues to play, JSoko only checked the last pushed box for being involved in a deadlock (for a better performance). This resulted in JSoko not considering a level as deadlocked anymore.
    Now JSoko remembers whether any previous push resulted in a deadlock and displays a deadlock message in any case when the user continues to play.

Version 1.90

  • bug fix: with activated go-through feature the solver worked incorrectly. Thanks to Brian Damgaard for reporting that bug.
  • New Chinese translation (thank you 愉翁).
  • Added a new feature: Display a checkerboard overlay on top of the game board.
    Some expert solvers use a parity concept during the solving process, and here it helps that the checkerboard coloring shows the odd/even parity of each square.
    The options for this new feature can be found in the 'Settings' menu and is called "Show checkerboard overlay".
  • bug fix: the tunnel detection wasn't correct in some cases in the solvers that also take the moves into account. Thanks to Michael G. for reporting this bug.

Version 1.89

  • bug fix: if the level title is the very first line in a file it hasn't been parsed properly.
  • Improved display of squares outside the active board also in the level browser (which can be opened via a button in the toolbar of JSoko)
  • A board containing only one line of elements (walls, goals, ...) is treated as invalid. This allows parsing level titles like: #

Version 1.88

  • New link to the release notes in the about menu.
  • New menu items in the about menu for reporting a bug or a suggestion for improvement.
  • The new skins by Jean-Pierre Martel have been removed.
  • Improved display of squares outside the active board (for instance in level: MF8 115th Extra).

Version 1.87

  • new skins by Jean-Pierre Martel. Thanks for the skins Jean-Pierre!
  • the "Go-through boxes" feature can be disabled in the settings.
  • An animation speed of 250 now means that no animations are shown but just the final board.

Version 1.86

  • the  "go through boxes" feature introduced in version 1.84 is now only active for boards having a size lower than 2000 squares because the calculation takes a long time on huge boards.
  • ctrl + z now performs the "undo move" operation instead of "undo all moves".

Version 1.85

  • bug fix:
    the  "go through boxes" feature introduced in version 1.84 caused problems with the solver and the optimizer. This is corrected in this version.

Version 1.84

  • New freature "go through boxes":
    When the player or a box is clicked the reachable squares are now shown with a little circle graphic.
    The player can now "go through" boxes that can be pushed away and then back to the original position for reaching the actual box to be pushed.


A white circle indicates reachable positions that can be reached without the go through feature.

A dark square indicates positions that are only reachable when pushing boxes due to the go through feature.

The boxes that can be used to "go through" are marked with a black circle.


Using this feature it's possible to select a box for pushing that can only be pushed when going through other boxes by pushing them first away and the back to the original position.


  • New Chinese translation.

    Many thanks to 愉翁 who has implemented the "go through" feature in JSoko and provided the new translation. He is the author of the android app BoxMan.


Version 1.83

  • Optimizer: The optimizer methods moves/pushes and pushes/moves now also leverage all available RAM and all CPU cores. They are slightly faster than the methods that also optimize the secondary metrics. If you are only interested in solutions having the best moves and pushes than the moves/pushes and pushes/moves methods are therefore the primary choice for optimizing.

  • Optimizer: if a pushes range of the solution is optimized (instead of the whole solution) the displayed "depth" in the search is now calculated differently:
    if for instance the pushes range is: from push 100 to push 300 of the solution,
    then the depth starts with 100 until depth 300 is reached.
    This way it's easier to see in which pushes range the optimizer finds new improvements.

  • The maximum board size is 100 rows/columns. 
    Expert users can set another value in the settings.ini
    Note that the default settings.ini is copied to the user folder at program start. In order to change the value the settings.ini file in the user folder has to be changed (For Windows this is: %appdata%\jsoko).

  • Setting "Show minimum solution length": the calculated lowerbound for the solution length is now immediately shown after selecting a solution.

Version 1.82

  • JSoko now uses UTF-8 for writing files.
  • The optimizer GUI has changed. The solutions list and optimizer log have switched their places. Suggested by users having low resolution screens.
  • New Features: the Optimizer now offers new methods: 
    - Moves/most Pushes: this method can sometimes be better when a new best solution needs more pushes than the solution to be optimized.
    - Box lines/Moves: can be used to shuffle the solution a little bit before optimizing for moves again.
    - Box changes/Moves and Box changes/Pushes: can be used to shuffle the solution a little bit before optimizing for the primary metric (moves or pushes) again.

Version 1.81

  • Bugfix: the played moves are saved in the database when a level is left by the user so the user can continue where the level has been left when the level is reopened.
    However, yet, JSoko has stored too many snapshots which causes problems with the database. 
    Thanks to Alice for reporting this bug.
  • Bugfix: when a comment for a solution is saved, JSoko couldn't load the following levels in a level collection, anymore.
    Thanks to Alice for reporting this bug.
  • Bugfix: importing another JSoko database now also imports levels which aren't assigned to any level collection

Version 1.80

  • Bugfix: Check for new version hasn't succeeded anymore, due to a new https issue.
  • Linux DEB installer now includes a bundled Java Runtime Environment (Version 8)
  • HSQLDB 2.4 is used instead of HSQLDB 1.8.1

Version 1.79

  • The "Info" menu has been integrated in the "Help" menu. This is a more common menu structure. Thanks to Brian Damgaard for suggesting this.
  • Fix: Check for new version hasn't succeeded anymore since SourceForge switched to only allow https connections.
  • New Feature: users having an account at can submit solutions using the new API Key provided by that website directly to letslogic.
    Note: JSoko must know the level ID from letslogic for submitting solutions. Hence, please download the levels from since those files do contain the letslogic IDs.

Version 1.78

  • bug fix: the optimizer has run in an endless loop in certain situations. Thanks to findus for reporting this bug.
  • bug fix: the optimizer couldn't optimize levels that have all boxes on goals. Thanks to findus for reporting this bug.
  • optimizer: the optimizer offers a new optimization method, optimizing for box lines then pushes
  • bugfix: some skn-skins couldn't be loaded anymore. Thanks for tripleb for reporting this bug.

Version 1.77

  • bug fix: in specific levels "copy to clipboard with transformation" hasn't worked correctly
  • new translation: thanks to Alexey for his Russian translation
  • bug fix: the optimizer returned invalid solutions in certain situations. Thanks to Alice for reporting this bug.
  • bug fix: JSoko sets back the saved moves history when a level is loaded. There was a bug setting the wrong player start position in the coding. Thanks to Alice for reporting this bug.
  • A level title like "500+" has been interpreted as own level. This is fixed now.
    Thanks to P. Voyer for reporting this.

Version 1.76

  • bug fix: the translator tool hasn't created a new language file when "add language file" has been pressed on Windows OS
  • translations: thanks to Åke Engelbrektson for his Swedish translation
  • translations: thanks to P. Voyer for his French translation
  • translations: thanks to G. Kostopoulos for this Greek translation
  • optimizer: the optimizer now  supports 4 boxes for generating box configurations to be optimized

Version 1.75

  • bug fix: in levels containing a goal room the tunnel logic has been using the wrong box. This could result in unnecessary long solutions.
  • bug fix: the last moves history hasn't been correctly set when a level has been loaded again in some cases.
  • JSoko now uses UTF-8 as standard encoding for reading files.
  • When the level editor is active, the "close window" action now closes the editor instead of the whole JSoko application.
  • A new skin from Scott Lindhurst can be used. Thanks to Scott Lindhurst for this skin!

Version 1.74

  • bug fix: entering the editor and leaving the editor again without changing the level results in internal crashes of the program. In this case please switch the level up and down one time so the current level is loaded again.
  • database: the collections of the database and the last 5 played collections are displayed in a list in the main GUI for quicker access. The key "c" opens the list of the collections, the key "l" the levels list.
  • JSoko is published using install4j installer for Windows. Therefore all user data are saved in the default user directories ("user home").
  • Translator: the language texts can be exported to a file to share them.
  • The size and position of the optimizer GUI is saved to the settings file and restored from there when the GUI is opened again.
  • Levels that aren't loaded from the database (but from hard disk or clipboard) are automatically saved in a new collection "unregistered". Every time a level is loaded JSoko checks whether a similar level (comparing the level elements: walls, boxes, goals, ...) is already stored in the "unregistered" collection. If this is the case, the solutions of the stored level in the database are added to the loaded level and the level is connected with the one in the database. This means adding new solutions or deleting solutions from the loaded level also adds the solutions to / removes the solutions from the level in the database. Nevertheless, it's recommended to import all levels to the database manually (menu: Database->Import collection to database). This way the levels are stored for a collection having a specific name.

Version 1.73

  • bug fix: in some cases the pushes/moves and the moves/pushes solver couldn't find the optimal solution. Thanks to Alexey for reporting this bug.
  • bug fix database: the selection for levels without a collection assignment wasn't correct. This is fixed now. Thanks to F. Minklei for reporting this bug.

Version 1.72

  • bug fix: the solver couldn't solve some levels like Thinking Rabbit Original No 10
  • JSoko uses the default "Look and Feel" on Mac OS
  • The new JSoko icon is used in the program
  • It's possible to save a whole collection of levels in one file
  • Support of "interior empty rows": a level now can contain empty lines. These "empty lines" must only contain spaces except the first character which must be a "-".

Version 1.71

  • Improved Chinese translation. Thanks to Anian Wu for this update.
  • bug fix: Clicking at "Info -> about JSoko" caused an "out of memory" error. Thanks to garbelinchen for reporting this.
  • optimizer: there is a new optimizing method that optimizes for:
    1. moves
    2. pushes
    3. box lines
    4. box changes
    5. pushing sessions
    Optimizing for 5 metrics takes a lot more time than just optimizing moves and pushes. However, this new method can leverage all cores of a system and use more RAM as the other methods. Hence, on multi cores systems this method can be as fast as the old moves/pushes optimizing method. The results of this methods are the same as of the normal moves/pushes method except that the found solutions are also optimized for box lines, box changes and pushing sessions.
    Hint: in order to use the full power of this method it's recommended to start JSoko with a higher RAM setting. The setting is in the files / Start_JSoko_Windows.bat
    For instance the "512m" in   java -Xmx512m -jar JSoko.jar  can be replaced by a higher number like 5000m to allow JSoko to use 5000MB (= 5GB) RAM.
    For more information have a look at the JSoko help pages.

Version 1.70

  • bug fix: huge levels sometimes have been considered as unsolvable
  • bug fix: Chinese translation caused an exception in the program. Thanks to anian for reporting this.

Version 1.69

  • bug fix: dragging in the history slider didn't work
  • optimizer: it's possible to manually mark the area to be optimized. The area not marked is now displayed darker to indicate it's not optimized.
  • optimizer: there is a new optimizing method that optimizes for:
    1. pushes
    2. moves
    3. box lines
    4. box changes
    5. pushing sessions
    Optimizing for 5 metrics takes a lot more time than just optimizing pushes and moves. However, this new method can leverage all cores of a system and use more RAM as the other methods. Hence, on multi cores systems this method can be as fast as the pushes/moves optimizing method. The results of this methods are the same as of the normal pushes/moves method except that the found solutions are also optimized for box lines, box changes and pushing sessions.
  • optimizer: the number of CPUs to be used by the optimizer can be set by the user

Version 1.68

  • new skin by Jean-Pierre Martel
  • highlighting of reachable box positions can be set on / off
  • replay can be started using key "R"
  • redo and undo can be done using single steps
  • JSoko remembers the last played collection file and level number

Version 1.67

  • JSoko is compatibel with Java 6 again
  • quicker box configuration phase in optimizer when using more than one box for optimizing. Thanks to Brian Damgaard for his help.

Version 1.66

  • bugfix: exception when trying to load file which isn't there is now catched
  • new maximum level size is 70 * 70 squares
  • quicker box configuration phase in optimizer when using more than one box for optimizing
  • bugfix: sound has still been played while being disabled in the menu
  • bugfix: changing the animation speed while a solution is replayed is taken into account again
  • Optimizer: iteration mode and selected active area now stays as it is, even when optimizer is optimizing only a pushes range.
  • Optimizer: the deadlock detection now runs at most 3 second to ensure the resources of this computer aren't used too much.
  • Optimizer: the deadlock detection is automatically cancelled when the optimizer is started (no waiting for the deadlock detection having finished)

Version 1.65

  • bugfix: background image names weren't displayed translated
  • removed display of level title since it's already displayed in the combo box
  • new translation: Spanish translation by Moisés R. González Rodríguez

Version 1.64

  • bugfix: In the optimizer a solution stayed colored even after the optimizer has finished.
  • Double-clicking a "short cut" in the file chooser dialog now immediately loads the file.
  • Improved Dutch translation. Thanks to Joris Wit for this update.
  • bugfix: the closed diagonal deadlock detection crashed JSoko in some levels due to squares "outside" the board (example level: "Bruno Druille 80"). Thanks to Heiner for reporting this bug.
  • bugfix: some of the settings weren't saved anymore.
  • solutions GUI: solutions that are best moves and best pushes solutions are now displayed with a special character - default character: !   (thanks to Heiner for implementing this)

Version 1.63

  • The included JSoko help is updated to stay in sync with the online help
  • Improved Dutch translation. Thanks to J. Wit for this update.
  • Fixed bug in deadlock detection which classified the following level as deadlock (after push):
    # .$@#

Version 1.62

  • solutions GUI: faster sorting of the solutions (moves/pushes, pushes/moves sorting by the user)
  • bug fix game: while the player has moved the moves weren't updated
  • bug fix editor: setting an object on a square, then selecting another object and setting it on the same square didn't work
  • bug fix optimizer: fixed drawing marked area in optimizer when not dragging from top left to lower right
  • Optimizer GUI now gets scrollable when window becomes too small
  • JSoko includes two new languages: Chinese and Dutch. Many thanks to Lei Zheng and Joris Wit!
  • New Translator tool to change the language texts. Thanks to Pawel Kleczek!

Version 1.61

  • bug fix: the user settings file hasn't always been saved in the directory the JSoko.jar is located
  • bug fix: the start level collection must be named case sensitive to be loaded on some OS
  • bug fix: the graphical level browser crashed when just a few levels had been loaded
  • bug fix: the shortcut file wasn't always saved in the same folder as JSoko has been started in

Version 1.60

  • bug fix: clicking at a level in the graphical level browser now loads the selected level. This doesn't work in version 1.59.

Version 1.59

  • The rotation and/or flipping of the board is now represented by a new tool bar icon.
  • JSoko now offers an automatic check for new versions of the program. (JSoko menu: info->search for new version at program start)
  • In the graphical level browser levels having at least one solution are displayed with a check mark. Thanks to Minh Hoang for implementing that!

Version 1.58

  • If the solver is opened and then closed the main window lost the focus so it has to be clicked again to play with key board. This is fixed now.
  • new feature: a new tool bar button allows to view multiple levels at once to select one for playing. Thanks to Minh Hoang for implementing that!
  • When the optimizer is opened the board is set back to the initial board position in the game view. Now the board stays as it is when the optimizer is opened. Thanks to Brian Damgaard for this suggestion.
  • If only a part of a solution is optimized (pushes range optimization) the displayed values during the optimization reflected the fake level created from the selected pushes range. Now the displayed values reflect the values with regard to the original level/solution. Thanks for Jean-Pierre Martel for this suggestion.
  • bug fix: when the optimizer has been started for optimizing a range of the solution and a new solution has been selected during the optimizer runs the optimizer couldn't be stopped anymore by the user (however, the optimizer normally stopped after having finished the optimizing).

Version 1.57

  • bug fix: when the player is played using the key board the program crashed

Version 1.56

  • bug fix: if the level is rotated or flipped while an animation due to a selected box is displayed the animation stayed at the previous box position.
  • game play: clicking at the player position now displays the reachable squares of the player
  • game play: the player can be moved by click&drag. Boxes can be pushed by click&drag.
  • game play: when the mouse enters the slider for browsing through the moves history the cursor turns to a hand symbol. Thanks for this suggestion to Brian Damgaard.

Version 1.55

  • bug fix: if the optimizer is used for optimizing a pushes range and iterating is enabled the optimizer can't be stopped up to the second iteration. In this version the iteration is automatically deselected when optimizing a pushes range is selected.
  • bug fix: if the optimizer is used for optimizing multiple solutions at once the solutions are colored to indicate that these solutions are being optimized. In some cicumstances the last found solution stays colored after the optimizer has ended. This is fixed now.
  • history slider: the history slider is now integrated in the moves/pushes display area.
  • pathfinding: the menu item for switching between moves optimized pathfinding vs. pushes optimized pathfinding has been removed. There now is a button in the toolbar for switching instead.
  • new feature: there is a new toolbar button for replaying a solution automatically.
  • bug fix: levels that contain boxes outside the player reachable area (usually boxes and goals set there for beauty reasons) have caused a crash when the level contains a savegame/snapshot.

Version 1.54

  • new level set by David Holland
  • bug fix: in huge free levels the path finding has crashed. This is fixed now.
  • bug fix: if the optimizer is opened and then the another level is loaded in the game solutions couldn't be imported in the optimizer anymore.
  • optimizer: competitions like the MF8 competition use rather huge levels. The optimizier can't handle these huge levels very well because in most cases there is not enough available RAM. Therefore there are two new features:

    * the pushes range optimization has been changed. Example:<br>If a range from 10 to 50 is selected the solution is analyzed. All boxes that aren't pushed in this pushes range of the solution are changed to walls. Furthermore the level is changed so that the board after push 10 is taken as new start position and the board after push 50 is taken as end position. This way higher vicinity values can be used for optimizing.

    * Yet, the optimizer has always tried to find improvements in all parts of a level. In order to be able of using higher optimizer settings it's now possible to mark the area that should be optimized. This is simply done by clicking or dragging in the board displayed in the optimizer (holding down the cntrl key or using the right mouse button when selecting the area will delete the marking of the selected area).<br>The optimizer then will only search for improvements in the selected area. This way it's possible to mark a really small area and then even use 3 boxes for optimizing (for instance: three boxes with a small number of vicinity squares like 6).

Version 1.53

  • bugfix: if the level is switched while the optimizer is running the optimizer has added the solution to the currently loaded level. This is fixed now.
  • bugfix: if a solution is taken as new history while the solver is running the solver sometimes crashes. Now it's not possible anymore to do this.
  • new feature: JSoko now supports run length format for copying a level or solution to the clipboard and loading a level / solution. Many thanks to Minh Hoang for the coding for this.
  • The history slider is smaller now. Therefore showing it doesn't move the rest of the GUI too much too the left.

 Version 1.52

  • bugfix: The solutions have not been ordered correctly by secondary metrics in every case. This has been fixed in this version.

 Version 1.51

  • new help: JSoko now shows a help at the start of the program. Currently this help is only available in English. It's possible to open this help from the program by pressing the F1 key.
  • optimizer: The optimizer offers a new check box for fixing the player end position. This is useful for players who split levels into several sub levels for better optimizing results. Thanks to Ming for suggesting this feature.

Version 1.50

  • Fixed a display problem: levels which aren't assigned to any collection have been displayed multiple times in the levels view instead of just one time. Furthermore some internal debug information have been printed to the console. These prints have been removed from the coding.
  • JSoko now supports exporting a solution to the clipboard in run length format. Thanks to M. Hoang and M. Gobelli for contributing coding for this!

Version 1.49

  • New feature: in the database menu of JSoko there is a new menu item " " for importing more than one collection from the hard disk to the database of JSoko. If you have some collections you play very often you can import them to JSoko. If they are then loaded from the database JSoko will automatically save your solutions in the database, too. In the database enter the text to search for (for instance in the author text field "a*") and press enter. The GUI will then show all data that matches your input (for instance all authors whose names start with a "a"). Since version 1.49 the search is case insensitive.

Version 1.48

  • solutions sidebar: if a level has been loaded from the database the solution order is saved back to the database if changed
  • workaround: due to a [ bug] in JDK Update 18 the solvers haven't been started
  • bug fix: license text for JSoko now is displayed again in about dialog

Version 1.47

  • New sidebar for displaying the solutions of a level. (feature suggestion from Jean-Pierre Martel)

Version 1.46

  • bug fix for simple deadlock detection: JSoko in rare cases falsely declared squares as deadlock squares. This resulted in false deadlock messages, false shown dead squares and let the optimizer run in an endless loop. Thanks to Sokobano for reporting this bug.
  • optimizer: bug fix for deadlock identification code: the optimizer now can find all deadlocks again. Due to a bug yet JSoko has missed some.

Version 1.45

  • Optimizer: the "iterative optimizing" setting is now saved from one session to the next
  • Optimizer: number of box configurations to be generated can be set manually
  • Optimizer: selected solutions in the list can be removed by using the popup menu (usually opened by a right click)
  • Optimizer: bug fix for crash when optimizer is stopped before the generation phase has started

Version 1.44

  • optimizer: use more than one solution as seed solution
  • optimizer: optimize from push x to push y only feature
  • optimizer: split solutions if too less RAM
  • Deadlock detection: new deadlock detection for "closed diagonal" deadlocks

Version 1.43

  • skins: smoother animations and animation speed adjustable
  • GUI: show walls adjustable
  • skins: support for skn-format

Version 1.42

  • skins: new built-in skins
  • bugfix: fixed missing text for "save file"

Version 1.41

  • GUI: the NimROD look and feel can be customized
  • database: importing a whole collection is enabled again

Version 1.40

  • general: navigation to next/previous unsolved level
  • general: paste of moves from clipboard
  • general: copy level to clipboard regarding transformations
  • general: a message is displayed if a level exceeds the maximum level size of the program

Version 1.39

  • general: fixed bug: the history slider has wrongly been shown when using the mouse wheel in the editor

Version 1.38

  • general: browsing through the movement history is now possible by using the mouse wheel
  • general: ctrl+c copies the current board and: the moves history if any moves have been made or all solutions otherwise
  • general: the build file has a new default target. It's possible to use the build file now without proguard and 7Zip

Version 1.37

  • solver: bugfix for counting how many levels have been solved by the solver

Version 1.36

  • general: application position and size are saved in the settings file
  • general: crtl+c and ctrl+v can now be used to import or export a level
  • solver: while solving a timer is showing the needed time
  • solver: the user can skip a level

Version 1.35

  • solver: if the packing order search fails the normal solver method is used
  • solver: new feature: solving from level x to level y
  • solver: new feature: display of solutions in the solver log
  • solver: new feature: saving solver log to file

Version 1.34

  • solver: new method for levels having goal rooms
  • GUI: GUI: newest NimRod Look&Feel 1.0g
  • GUI: removed label texts, because the Nimbus L&f shows them in the optimizer.

Version 1.33

  • general: display of level in database and solutions view
  • GUI: newest NimRod Look&Feel
  • GUI: better quality when scaling graphics

Version 1.32

  • optimizer: box configuration generation progress is displayed step by step now

Version 1.31

  • general: stripping leading ">" characters for all imported data
  • levels: new Disciple set
  • optimizer: parallelization of box configuration generation

Version 1.30

  • internal: code refactoring, newest NinROD, newest HSQLDB
  • general: load last loaded collection at program start

Version 1.29

  • optimizer: new optimizer method: box lines only

Version 1.28

  • interal coding: table sorting now done by Java 6 classes
  • bugfix: after closing the optimizer the main panel gets the focus now
  • buxfix: deselecting all boxes for optimizing doesn't crash the program anymore
  • new feature: the settings of the program are saved to a user_settings.ini file
  • new feature: the "open dialog" now offers a shortcut list for saving often used paths
  • skins: newest NimRod Look&Feel

Version 1.27

  • optimizer: no cut of the search tree in the optimizer for better performance any longer
  • optimizer: new text "Optimization method courtesy of Sébastien Gouëzel"

Version 1.26

  • optimizer: performance improvements for the optimizer, new close icon for the optimizer GUI

Version 1.25

  • bugfix: IDA* solver crashed in goal room levels due to class cast exception
  • new feature: Optimizer for solutions

Version 1.24

  • look&feel: fixed problems with Java 6 and NIMRod Look&Feel (Thanks to Nilo J. González)
  • game play: possibility to switch between moves and pushes optimized pathfinding
  • game play: the information about "new best solution" / "duplicate solution" is just shown in the status bar, instead of an extra popup (suggested by Brian Damgaard)

Version 1.23

  • editor: the editor now only handles mouse actions when the program has the focus. (Before: when selecting the program for giving it the focus has also been handled as action, which resulted in setting an object in the editor, ...)
  • game play: display of the number of pushes at least needed to solve a level
  • skins: new background image

Version 1.22

  • bugfix: the undo / redo buttons weren't enabled in some cases
  • general: 7 new sokhard levels

Version 1.21

  • bugfix: the move optimizing solvers crashed due to a stack overflow in some levels (Sasquatch VI 28, ... )
  • gameplay: the undo / redo button is enabled / disabled depending on the movement history status
  • general: the program starts with a resolution of 1024 * 800. If this is too large for the screen its size is reduced to the screen size. However, some OS like "MS Windows" reserve some space for a toolbar. The program now takes this into account.
  • new feature: undo all / redo all
  • new feature: history browser for the done moves/pushes
  • new feature: in the solutions frame a new button "copy lurd string to clipboard" is available
  • new feature: sounds for a move and a push
  • bugfix: aborting loading a new collection resulted in jumping to the first level of the current collection
  • bugfix: backspace for "undo" has been usable while the editor is running
  • bugfix: switching the skin while the editor is activated set the level status to "level unchanged"

Version 1.20

  • bugfix: It has been able to put a box on top of the player in the editor
  • bugfix: The reachable squares of a box weren't shown correctly when the view has been transformed
  • bugfix: transformation in editor must also be treated as change
  • general: Replaced the sea background by the graphic "drops"
  • general: Only the "application" is supported as from version 1.20 (only high resolution graphics,...)
  • database: the comment area and button are disabled when there isn't any row selected
  • new feature: tool bar for one click actions
  • new feature: load data via drag&drop

Version 1.19

  • interal coding: The whole project now uses Java 1.5 as standard
  • database: Set author of all selected levels at once
  • bugfix: the presolving of a goalroom coulnd't be aborted by the user
  • bugfix: incorrect move tunnel detection (for instance level sok evo 107 has been solved in 268 moves instead of 266)
  • database: datebase for storing all level information Version 0.1
  • editor: transformation in editor must also be treated as change

Version 1.18

  • ignore ">" at row start
    caution: reverse mode gamelines may start with ">", hence, gamelines need special action (YASC 1.302 includes a correct implementation).
    new feature: Solution management
  • Bugfix clipboard import
  • Bugfix: collections onces loaded coundn't be loaded again
  • editor: leaving the editor with "cancel" the level now is displayed with the same transformation as it has been displayed when entering the editor
  • gameplay: popup when new best solution
  • general: new look&feel (the standard one can be set in the settings menu)