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.
Remove an unnecessary extern function declaration.
Move obfuscator tests into obfusc.c.
Reference my just-published article about aperiodic tilings.
Don't allow zero clues in Pattern
Net: validate co-ordinates in decode_ui()
Add a game_state argument to decode_ui()
Make encode_ui() and decode_ui() optional in back-ends
Net: assert that cx and cy are in range in compute_active()
js: explicitly tell Emscripten which browsers to target
js: set -s ENVIRONMENT=web in Emscripten
Fall back to <math.h> if <tgmath.h> doesn't work.
Remove obsolete testbuild.c.
KaiOS: include extra copyright notices in manual
Replace <math.h> with <tgmath.h> throughout
js: stop using EXTRA_EXPORTED_RUNTIME_METHODS
js: use the "load" event for loading save files
js: Load save files into the C side incrementally
js: load games using FileReader.readAsArrayBuffer()
hat-test: more scaling and clipping options.
hat-test: fix array underrun.
Remove penrose_count_tiles().