This is a feature request
Motivation
When creating an opening repertoire, it's common for positions to coalesce through transposition. Finding these transpositions easily would be a great help when developing opening repertoires, and I'm sure users will find a way to use this feature in other unforeseen scenarios.
User Stories
- I can request a list of transposed positions in the current game
- The list of transposed positions is a tree view with parent nodes showing FEN for the position and leaf nodes showing a move list leading to this position
- Left-clicking the leaf nodes navigates to the appropriate move in the varitaion in the current game
- Right-clicking the transposed FEN position gives the option to copy the FEN to the system clipboard
- Right-clicking one of the leaf nodes gives the option to copy the move list leading to that position to the system clipboard
- When requesting the list of transposed positions, I can request that comments are added to the game identifying transposed positions
- When requesting the list of transposed positions, I can request that pre-existing "transposition" comments be removed
- The transposition comments are in the format "transposition: %d" so that move A (which is identical to move B through transposition) and move B both have a comment: "transposition: 1"
- After a transposition report is shown, another can be requested which will clear the current report and generate a new one taking into consideration anew the "request for comments added" flag
I would like to acknowledge explicitly that there can be more than two moves that transpose to a position. Also, if two positions appear to be the same but are actually different (the ability to castle has been forfeited, for instance), they are not part of a transposition set.
I tried to write the above user stories without mentioning any technical requirements. For instance, I imagine that a new dockable window will need to be created to support this, but if some other way seems convenient and practical, by all means we should do that.
Regarding #2 above, I'm not sure if FEN is the best thing for the parent nodes of the tree. It could alternatively be a serial number. Another option, although this would de-normalize the tree, one move in the transposition set can be arbitrarily chosen. Whatever seems most usable should be good.
I just created pull request https://github.com/Isarhamster/chessx/pull/102 to address this. I only implemented points 1,2,3, and most of 9.
Last edit: lmat 2024-08-31