Repository navigation
Releases: jshriver/icsdrone-rs
Release list
v2.2.9
Full Changelog: v2.2.8...v2.2.9
v2.2.9
Fixed: bot asked the engine for a move after being checkmated
When the bot was checkmated or stalemated, FICS sent the final board
before announcing that the game was over. The bot treated that board
as its turn and asked the engine for a move in a position where no
legal move exists.
v2.2.8
Full Changelog: v2.2.7...v2.2.8
v2.2.8
Fixed: bot played one move behind after a reconnect
After the connection dropped and the game was resumed, the bot could
start reading the engine's answer to the previous search instead of
the current one. Each move then came instantly and was meant for an
older position. Eventually FICS rejected the moves as illegal, and the
bot lost on time.
The bot now keeps track of whether the engine is still searching:
- Before starting a new search, it stops any search still running.
- It discards any leftover engine output, so an old answer can't be
taken for the new one.
If a leftover answer is ever discarded, the log says
discarding a stale engine answer: ….
v2.2.7
Full Changelog: v2.2.5...v2.2.7
v2.2.7
New: material difference beside the board
Like Lichess, the window now shows which pieces each side is up on,
in a column to the right of the board. Each side's material appears
by its own end of the board, on a small strip in the board's
light-blue square color so both white and black pieces stand out in
either theme. The icons are half the size of a board square and grow
with the board. The side ahead also shows its lead in points (pawn 1,
knight/bishop 3, rook 5, queen 9), e.g. +3. It is worked out from the
pieces on the board, so promotions count.
New: light/dark theme switch
A ☀/🌙 button in the status bar, or the T key, switches the window
between light and dark while it is running. The window still starts
in your system's setting.
Fixed: resuming a game after a reconnect
v2.2.5 sent resume after reconnecting, which not every server
supports. The bot now sends match <opponent> to the player it was
playing, which resumes the adjourned game where it left off, clocks
included.
Improved: lower CPU use with the window open
- The window now redraws once a second during a game, as the clock
ticks, instead of ten times a second. Moves, clicks and typing
still update it immediately. - The console keeps the last 100 lines instead of 2,000.
This matters most where the window is drawn in software, such as
WSL2, where it could take CPU time away from the engine.
v2.2.5
Full Changelog: v2.2.1...v2.2.5
v2.2.5
Fixed: illegal move after promoting a pawn
Since v2.2.1 the bot sends the engine the full move history so that it
can avoid repetition draws. When the bot promoted a pawn, that history
could record the move without the promotion piece. The engine then
skipped the rest of the history, tried to promote the same pawn again,
FICS rejected the move, and the bot lost on time.
- The promotion piece is now read from the board after the move, so it
is always included in the history. - New safeguard: if FICS ever rejects one of the bot's moves, the bot
searches again from the current position instead of waiting for its
clock to run out. It does this once per move.
New: TCP keepalive and automatic reconnect
For players on unreliable connections.
- Keepalive: after 30 seconds without traffic, the connection is
probed every 10 seconds. This stops home routers from silently
dropping a quiet connection, and a dead connection is detected in
about a minute instead of hours. The probes are invisible to FICS and
to you. - Automatic reconnect: if the connection drops, the bot no longer
exits. It reconnects and logs back in, retrying after 5s, 10s, 30s
and then every 60s. The status bar and console show each attempt,
andquitstill works while it is waiting. - Resuming games: if the bot was in a game, FICS adjourns it. After
reconnecting, the bot asks the opponent to resume. The moves played
before the drop are not included in the saved PGN; recording restarts
from the resumed position.
Improved: score graph scale
The score graph used to stop at ±10 pawns. Its scale now grows with
the evaluations (±1, ±2, ±5, ±10, ±20, ±50, ±100, …), so a large
advantage is no longer flattened against the top edge. Forced mates,
including engines that report a mate as a huge number such as
+7999.81, are drawn on the edge so they don't squash the rest of the
graph. Hover a point to see its exact score.
Other
- Release builds are faster to compile (thin LTO), and there is a new
quickbuild profile for testing:cargo build --profile quick. - The README now covers all current features, including the new
"Playing a game" and "Flaky connections" sections.
v2.2.1
Full Changelog: v2.1.5...v2.2.1
I've released v2.2.1 with all the fixes and changes Bart recommended. Thanks for testing, it was very helpful. Please give it a try. Added timeseal v1 in the last release but here are the current changes.
Engine play
Repetition fix: the engine used to be sent only the current position, so it couldn't see earlier positions and would shuffle into threefold-repetition draws. It now gets the full move history every turn. Takebacks and joining a game midway are handled.
Pondering: with "Ponder": "true", the engine thinks on the opponent's time about the reply it expects. If the opponent plays that move, the engine keeps what it found; if not, it stops and searches the real position.
Engine book detection: moves from the engine's own book (OwnBook) are now recognized, and the GUI and PGN mark them as book moves.
Saved games (SavePGN)
Clock times: every move gets the clock left after it ([%clk 0:04:58]), which Lichess, ChessBase and SCID show as a clock.
Engine notes: the bot's moves get score/depth and the time taken, e.g. {+0.35/18 2.1s}, or {book} for book moves.
GUI
Book loading: the status bar shows the opening book loading, with its size and how long the load took.
Console: bare fics% prompt lines are hidden, and every line gets a timestamp to the millisecond.
Score chart: now uses the bot's side, matching the engine panel, with a "+ = us ahead" caption.
Resign button: appears during a game and asks for confirmation before resigning.
Book moves: highlighted on the light-square blue in the Moves panel.
Fullscreen: pressing F outside the input line toggles it.
WSL2: the window falls back to X11 when the Wayland connection is missing, and if the window can't open at all, it says why in the terminal instead of exiting silently.
Terminal
FICS style 1 board: black pieces marked *, the board drawn from the bot's side, and the move number, last move, clocks and strengths down the right side. The plain and colored versions both use it.