Change History

Old History ChessTab Top

Changes are listed in reverse chronological order. Followed by version comments and general comments added from time to time.



12 June 2018

ChessTab version 2.1.1 released.

Insert the PGN text of new moves at the end of the game or a variation in the correct place when the current end move has variations.


30 October 2017

ChessTab version 2.1 released.

Improvements to PGN error handling based on changes to pgn package. The selection rule interface is made more like the partial position (chessql) interface.


4 October 2017

ChessTab version 2.0.1 released.

New versions of dependencies.


4 October 2017

ChessTab version 1.0.1 released.

New versions of dependencies.


2 October 2017

ChessTab version 2.0 released.

The concurrent changes to basesup are sufficient to justify changing the major version number. Follow change of major version number in basesup.


2 October 2017

ChessTab version 1.0 released.

The partial position searches are replaced by Chess Query Language (CQL) searches. CQL support is incomplete but the scope of partial position searches is covered in a superior way.

The database indicies are changed to support the CQL searches.

The concurrent changes to basesup are sufficient to justify changing the major version number, as are the partial position and database index changes. Follow change of major version number in basesup.

Chess engines running on other computers can be used to analyze positions.

Move calculation of database index values here from the pgn package.

This version was released at same time as ChessTab version 2.0.


6 August 2017

ChessTab version 0.41.10 released.

New version of dependency which stops PGN Tags with '"'s in the value being treated as an error.


31 January 2017

ChessTab version 0.41.9 released.

Fix a problem in exception reporting.


31 January 2017

ChessTab version 0.41.8 released.

New versions of dependencies.


23 December 2016

ChessTab version 0.41.7 released.

New versions of dependencies.

Many problems in selecting games using a game selection rule such as 'White from Brown to Green' are fixed. Simpler rules like 'White gt Jones' did not suffer problems.


27 November 2016

ChessTab version 0.41.6 released.

Fix problem which prevented analysis of multiple games at once. Fix problem which prevented use of a running chess engine after it had responded with a 'forced checkmate' analysis or had been asked to analyse a position which is checkmate.


9 November 2016

ChessTab version 0.41.5 released.

Improve handling of typing O-O-O moves.


21 October 2016

ChessTab version 0.41.4 released.

Documentation changes only.


18 October 2016

ChessTab version 0.41.3 released.

Add function to analyse all positions in a game or repertoire using the active chess engines.

Improve interface to start chess engines.


2 October 2016

ChessTab version 0.41.2 released.

New versions of dependencies.


28 September 2016

ChessTab version 0.41.1 released.

Fix problems inserting and editing games, repertoires, game selection rules, and partial positions.


18 September 2016

ChessTab version 0.41 released.

Consultation games are indexed under the name of each player involved.


18 September 2016

ChessTab version 0.40.5 released.

Program crashes using the Berkeley DB or Sqlite3 database engines whenever bitarray-0.8.1 is installed are fixed.

The text of game scores, chess engine analysis, repertoires, selection rules, and partial positions is split into multiple lines between words rather than characters when displaying a particular item.

The 'Move To' and 'Filter' buttons ignore commas and periods entered in the search value when applied to player's names.

The game selection rule text is no longer included in the list of these rules, leaving just the name of the rule.

Lists of games are displayed correctly when a database is opened after game scores, repertoires, and partial positions, are left open when a database is closed.


14 September 2016

ChessTab version 0.40.4 released.

Documentation changes only.


9 September 2016

ChessTab version 0.40.3 released.

The restrictions on evaluating selection rules when using the DPT database engine are removed.


7 September 2016

ChessTab version 0.40.2 released.

A number of program crashes when using the DPT database engine are fixed.


5 September 2016

ChessTab version 0.40.1 released.

Chess engine analysis presented with sensible line breaks.


5 September 2016

ChessTab version 0.40 released.

Databases updated by this version of ChessTab cannot be accessed by earlier versions because the player name format in indexes has been changed.

The database engine specific deferred update modules for use on OpenBSD are replaced by a test for available memory in the default modules, following enabling changes in the basesup component.

The chess engine analysis functions cannot be used when running under Wine. A message is displayed at start-up if this seems to be the case and the functions do nothing rather than fail.


Version 2.0.1

This version was released so downloading the version of the gridsup dependency with a part missing can be avoided. ChessTab does not need the missing part of gridsup. In other words ChessTab-2.0 works exactly like this version.

This version has not replaced version 2.0 as the current version on PyPI.

Version 2.0

The scope of the chess engine analysis functions is extended to allow use of chess engines running on other computers. Chess engines running on the same computer as ChessTab may be treated like this too. The functions to run chess engines have been moved to the new uci package which also provides a way of communicating with these engines.

Firewalls may prevent communication with chess engines on other computers unless you change settings to allow it.

ChessTab cannot run under Wine at time of writing for a variety of reasons, see Comments dated 2 October 2017, but can now get analysis done by chess engines running under Wine without itself running under that Wine environment.

ChessTab uses Chess Query Language (CQL) as a way of expressing database searches. ChessTab does not attempt to replicate the report generation done by the program provided with the CQL specification. The CQL website provided version 5.1 of the query language at time of writing (the obvious links in the contemporary Wikipedia entry for CQL were to version 3.01 which is significantly different).

At present ChessTab supports CQL's 'piece designators' and 'transform filters'. This is sufficient to replace the partial position specifications used by earlier versions of ChessTab.

The indicies which supported partial positions are extended and modified to support CQL. The number of index references per typical game is doubled, with noticable effect on updating a game and significant effect on the time taken to import large numbers of games to a database (see Comments dated 2 October 2017).

Version 0.41.9

Fix problem which prevented exception reports being written to error log when importing chess games, and prevented the occurrence being reported in the progress window for the import.

Version 0.41.7

Serious problems in the query language processing of the basesup component have been fixed.

The simplest clauses, like 'field le value', were fine. When a negation was added, 'field not eq value' for example, or a range clause was used, 'field above value1 to value2' for example, the request did not work.

Mis-spelling the 'and', 'or', and 'nor', keywords remains a problem. The query is processed but the clause following the mis-spelt keyword is ignored: 'White eq Jones ot White like Smi or Date is 2003.01.24' is treated as 'White eq Smi or Date is 2003.01.24' having typed 'ot' for 'or' for example.

Version 0.41.6

Fix the problems in analyze multiple games or analyse checkmate and avoid the work-around.

The sign either problem had occurred was new analysis would no longer appear while navigating games. The counts shown by menu option 'Engines | Position Queues' would be stuck at some probably non-zero values.

The work-around was quit the engines and restart them (and try to avoid doing whatever caused the problem).

Version 0.41.5

Add a menu action and keyboard equivalent for the O-O-O move.

When typing O-O-O there is usually a point where O-O, itself a possible legal move, has been typed. The change allows O-O-O to be input directly in cases where both O-O and O-O-O are legal moves. It remains possible, for example, to type O--O and then fill in the third O to get O-O-O.

Version 0.41.4

Put correct version numbers in list of installed packages in "Help | About".

Version 0.41.3

Analysis of all positions in a game or repertoire may be requested. All active engines when the request is made are used. The order in which a games' positions are analysed will vary between runs of ChessTab, so analysis for the board position could appear almost immediately or after some longer time.

The commands to start chess engines may be started from a list on a database in addition to a 'run program' dialogue.

A couple of faults in translating moves in the analysis produced by chess engines to PGN are fixed.

Version 0.41.2

ChessTab does not use the functions changed in dependencies.

Version 0.41.1

Error detection and reporting improved. Popup menus advertize the insert, edit, and delete actions correctly.

Version 0.41

All previous versions used the value given in the White and Black tags as a player's name for indexing purposes. This version accepts multiple player names, in either tag, separated by colons as stated in the PGN specification. See comment dated 18 September 2016.

Consultation games must not be added to a database using earlier versions.

The selection rule "White like : or Black like :" will give an empty list of games if there are no consultation games on a database: if the earlier version of ChessTab supports selection rules.

You may need to export all the games using the earlier version of ChessTab, then import them to a new database using ChessTab-0.41. Certainly if the earlier version of ChessTab is before 0.40, but only if the database contains consultation games otherwise.

Version 0.40.5

The program crashes related to using bitarray-0.8.1 were introduced in changes to the basesup component concurrent with ChessTab-0.39.1 and are fixed by changes to the basesup component concurrent with ChessTab-0.40.5.

The 'Move To' and 'Filter' buttons apply the rules introduced in ChessTab-0.40 on commas and periods to the search value entered. No need to remember not to type commas and periods which appear in player's names.

The amount of text in game selection rules is likely too variable for the list to be easily read, so show the rule's name only.

The list of games matching a position in a game or repertoire, or a partial position is always displayed, rather than being left blank until an action which causes the list to be refreshed is done. Colour highlighting is corrected in cases where a game, repertoire, selection rule, or partial position is closed while the database is closed. Closing a database, and then all the games, repertoires, and partial positions, leaves a blank screen rather than a screen showing some or all the list of games matching a partial position.

Version 0.40.4

Redundant lists of items removed from object docstrings.

Version 0.40.3

The restrictions on evaluating selection rules when using the DPT database engine have been removed as a consequence of the concurrent changes in the basesup component.

Version 0.40.2

Hide selection, repertoire, and position, actions when using the DPT database engine do not crash program as a consequence of the concurrent changes in the basesup component.

Evaluation of selection rules when using the DPT database engine do not crash program. An information dialogue states evaluation has been suppresed.

Version 0.40.1

Revert to starting each variation of chess engine analysis on a new line.

Version 0.40

New component versions pgn-0.10.2 basesup-0.21 gridsup-0.19.4 rmappsup-0.38.4.

Paragraph removed because change left out in error. See comment dated 18 September 2016.

The values in the White and Black tags are stored as given but sequences of periods, commas, and spaces, are replaced by a single space for indexing by player name. PGN files often use consistent but conflicting ways of following the layout recommended in the PGN specification for commas and periods in these tags. The change attempts to achieve more consistent indexing of games from different sources.

See these and forum questions for ways to increase the memory available to processes on OpenBSD.


5 September 2016

A 2 million game deferred update using sqlite3 takes over 9.5 hours on FreeBSD, 15.5 hours on MS Windows XP, and 45 hours on OpenBSD. The differences are likely due to the memory available. Runs using bsddb3 on FreeBSD and OpenBSD take similar times to the sqlite3 runs.

DPT takes 11.5 hours to do the 2 million game deferred update on Windows XP, but 150 hours under Wine on FreeBSD. DPT seems to be unsupported now, but the scale of the discrepancy makes it worth mentioning. DPT's way of determining memory use does not work under Wine on FreeBSD and the work-around turns out to be slow.

Python's multiprocessing.Queue is used to communicate with chess engines but it does not work under Wine. Wine HQ Bugzilla bug 17195 and Python Issue Tracker issue 9099 are the closest references found which could be relevant.

When one of the chess fonts, Chess Cases for example, is added to the font directory for Wine in FreeBSD, ~/.wine/drive_c/windows/Fonts, it gets used as the default font for Text widgets created by the MS Windows version of Python tkinter. The same happens if instead the font is put in /usr/local/share/fonts so it is available for the FreeBSD version of Python as well.

But the font does not get used as the default font for Text widgets created by the FreeBSD version of Python. Nor does it get used in this way by the MS Windows version of Python tkinter running on MS Windows when the font is installed on MS Windows.

Versions used are FreeBSD 10.1, Wine 1.8.1, and MS Windows XP, Python 3.3.

Reading about fonts in the Tcl/Tk manual suggests the effect is not an error, but a consequence of the font selection rules.

The problem is resolved within ChessTab by stating the font required explicitely under Wine, taking advantage of the multiprocessing.Queue problem. However under Wine ChessTab is best run in a dedicated user, with the font installed in ~/.wine/drive_c/windows/Fonts but not in /usr/local/share/fonts, to avoid polluting the widgets of other programs running under Wine with the chess fonts.

Concurrent changes in the pgn package turned the minor problem of putting a space at the start of each variation's line into the major one of not putting each variation on a separate line. Fixing the major problem revealed the minor problem had been fixed too.

7 September 2016

The selection rule evaluator was written to use data stored using the apsw, bsddb3, or sqlite3 database interfaces without regard for the differences to the DPT database engine. Hence the problems evaluating selection rules when using the DPT database engine.

14 September 2016

The module and class docstrings look nicer when viewed with pydoc now the lists have been removed, but otherwise their content is the same.

18 September 2016

This paragraph was removed from the "Version 0.40" description because the change was left out in error: "All previous versions used the value given in the White and Black tags as a player's name for indexing purposes. This version accepts multiple player names, in either tag, separated by colons as stated in the PGN specification.". This change is applied in "Version 0.41".

18 October 2016

It became clear that both a ucinewgame and a setoption clear hash command are needed between analysis of each position by a chess engine to make the analysis consistent between runs of ChessTab. The random order in which positions are analysed is assumed to be why setoption clear hash is needed as well.

Positions are not sorted into game order for analysis because navigation of any displayed game or repertoire causes the most recent position displayed to be put at the front of the queue for analysis. It is not yet clear how Recursive Annotation Variations should be fitted into game order for analysis.

13 November 2016

It is possible to claim all the conditions mentioned in the comment dated 6 November 2011, see old history, have been met. DPT is no longer supported but the important element in DPT, bitmapped record numbers, has been transplanted to the interfaces to sqlite3 and bsddb3. Display of chess engine analysis is supported but the chess engines must be running on the same computer as ChessTab.

Problems found in ChessTab-0.41.5 will be fixed in ChessTab-0.41.6 and so forth, but new work will appear in ChessTab-0.42 and beyond. All earlier versions of ChessTab which survived previous culls have been removed from the website.

These things will be done before replacing ChessTab-0.41 as the stable version:

Fix the bug which prevents queries like 'White eq Smith or White eq Jones' being expressed as 'White eq Smith or Jones'.

Support parts of Chess Query Language (CQL) relevant to partial positions as understood in ChessTab.

Change the user interface for ChessTab partial positions to fit the 'White eq Smith or Jones' pattern, and be compatible with CQL.

Support display of chess engine analysis done on other computers in the Local Area Network.

ChessTab-0.41.5 will be put on PyPI shortly.

2 October 2017

CQL distinguishes the moves played in a game from variations, a distinction not made in the partial position scheme. The decision to support this distinction forces a change to the content of index values, to refer to the variation indexed, making ChessTab-1.0 incompatible with earlier versions. Thus a new major version number is needed.

ChessTab-1.0 does not run under Wine at time of writing on my environment for these reasons:

The Microsoft Windows installers for Python34, Python35, and Python36, fail to install Python under wine-2.0_3,1 on FreeBSD 10.3.

The 'embed' zipfile Python downloads available for Python35 and Python36 do not include the tkinter module which is required by ChessTab.

The Microsoft Windows installer for Python33 installs Python under wine-2.0_3,1 on FreeBSD 10.3 but ChessTab-1.0 uses Python's asyncio module which was added to Python at Python34. Earlier versions of ChessTab do not use the asyncio module.

The reason for running ChessTab under Wine is to use the dptdb database interface away from Microsoft Windows.

The number of index entries per game is more than doubled, from about 1800 to about 4200, to support CQL statements. On a computer with a 3Ghz CPU with 2Gb 800MHz DDR2 SDRAM and a SSD importing about 1.5 million games took about 826 minutes on ChessTab-2.0 compared with about 397 minutes on the previous version. This gives an estimate of about 75 minutes to do everything except the indexing, which does not seem inconsistent with what my notes of several years ago say about timings on a slower computer but I would have liked 120 minutes as the estimate here.

29 June 2018

The fix applied today to basesup-2.0 does not affect ChessTab, which will move on to use a later basesup version at a convenient time.