Use the standard game_mkhighlight in Same Game
Same Game: darken light colours to make keyboard cursor visible
Refactor the new icon installation code.
Install the icons to the right location on Linux
Generate more common icon sizes
grid_edge_bydots_cmpfn: remove dangerous pointer comparison.
osx.m: avoid division by zero in startConfigureSheet.
grid.c: new and improved Penrose tiling generator.
grid.c: add dot coordinates to debugging dumps.
grid.c: allocate face/edge/dot arrays incrementally.
Move mul_root3 out into misc.c and generalise it.
js: Copy-to-clipboard support
Add user preference for Bridges' "G" key (show_hints)
Bridges: remove a comment for a deleted line of code
Fix control-character generation fix
Distinguish MOVE_UNUSED from MOVE_NO_EFFECT in Galaxies
Pearl: slightly better handling of clicks outside the grid
Keen: fix another misuse of dsf_canonify.
Reduce the set of keys from which we generate control characters
Distinguish MOVE_UNUSED from MOVE_NO_EFFECT in Flip
Distinguish MOVE_UNUSED from MOVE_NO_EFFECT in Filling
Distinguish MOVE_UNUSED from MOVE_NO_EFFECT in Dominosa
Distinguish MOVE_UNUSED from MOVE_NO_EFFECT in Pegs
Blackbox: correct FROMDRAW() macro for C division semantics
spectre-test: support raster-mode tiling generation.
spectre_adjacent: optionally report dst_edge.
spectre.c: expose a couple more internal functions.
Spectre tiling: add a comment with some reference URLs.
Loopy / grid.c: support the new Spectre monotiling.
Fix some unused-variable warnings.
Add a 'core' library alongside 'common'.
hat-test: support SVG output.
Distinguish MOVE_UNUSED from MOVE_NO_EFFECT in Pearl
Distinguish MOVE_UNUSED from MOVE_NO_EFFECT in Cube
Distinguish MOVE_UNUSED from MOVE_NO_EFFECT in Fifteen
Distinguish MOVE_UNUSED from MOVE_NO_EFFECT in Bridges
Distinguish MOVE_UNUSED from MOVE_NO_EFFECT in Slant
Expose the NO_EFFECT/UNUSED distinction through midend_process_key()
Distinguish MOVE_UNUSED from MOVE_NO_EFFECT in Mines
Add MOVE_NO_EFFECT and MOVE_UNUSED return values from interpret_move()
Rename UI_UPDATE as MOVE_UI_UPDATE
Update a comment in Mines to reflect that we have user prefs now
Fix a few minor memory leaks.
Add preferences for existing UI style controls
js: pass preferences file from JS to C on the heap, not the stack
js: handle exceptions when accessing localStorage
Emscripten: fix edge case of js_canvas_find_font_midpoint.
Loopy: fix redraw issue due to enlarged dots.
Isolate icons build from the running user's preferences.
Windows: reorganise menu ids.
midend_apply_prefs: apply prefs to the right ui.
Untangle: add a 'snap to grid' user preference.
Untangle: replace manual int64 bodging with int64_t.
Replace check of __STDC_VERSION__ with HAVE_STDINT_H.
Loopy: slightly increase the size of dots.
hat-test: fix memory leaks.
Pattern: Reduce row clue spacing if there are lots of them
Pattern: switch to small font when there are many row clues
Correct a comment in Pattern's clue-drawing code
Emscripten: change the localStorage key used for preferences.
Support user preferences in the Emscripten frontend.
emcc.c: remove savefile_read_ctx.
emcc.c: missing (void) in a function definition.
Fix bounds check in buffer_append.
Support user preferences in the Mac frontend.
GTK save_prefs: fix a wrongly sourced error report.
Slant: actually check ui->swap_buttons.
GTK: stop referring to &thegame in prefs I/O functions.
Support user preferences on Windows.
make_prefs_path(): tolerate NULL inputs.
Document the new Net preference.
Net: preference for how loop highlighting interacts with locking.
Fix failure to update me->ui when changing preferences.
GTK: add a command-line --delete-prefs option.
Support preferences in the GTK frontend.
Universal preference option for one-key shortcuts.
Keep a set of preferences in the midend.
Require games to accept new_ui(NULL) if they have preferences.
Generalise the midend serialisation callbacks.
New backend functions: get_prefs and set_prefs.
Move per-puzzle ad-hoc getenv preferences into game_ui.
Pass a game_ui to compute_size, print_size and print.
Missing const in configure() documentation.
Filling: switch to using dsf_minimal in minimize_clue_set.
Loopy: draw even faint lines using draw_thick_line.
Turn off Leak Sanitiser in the icons build.
Update the documentation for the dsf functions.
Actually rewrite the dsf implementation.
Reorganise the dsf API into three kinds of dsf.
Introduce a new dsf_equivalent() function.
Remove conditioned-out dsf diagnostic code.
Remove size parameter from dsf init and copy functions.
Store a size field inside the DSF type.
Actually make DSF an opaque structure type.
Declare all dsfs as a dedicated type name 'DSF'.
Remove a direct use of dsf internals in Filling.
Consistently use snew_dsf to allocate dsfs.
Use a dedicated copy function to copy dsfs.
Use a dedicated free function to free dsfs.
Stop putting dsfs in existing scratch int arrays.