Mark many more function (and some objects) static
Call deallocate() in matching.c test routines
Adjust fuzzpuzz sample shell commands to not include "/*"
Tracks: set drag_s{x,y} even if starting off-grid
Update and expand comment at the head of fuzzpuzz
Separate fuzzing and harness in fuzzpuzz
js: Hide type menu if there's only one preset and no configuration
Solo: cope with pencil marks when tilesize == 1
Note in the documentation that Pattern clues are in order
Tighten grid-size limit in Mines
Make sure that moves in Flood use only valid colours
Fix over-long lines in devel.but
More validation of solve moves in Flood
Validate that save file values are ASCII (mostly)
Extend fuzzpuzz to test more code
Reserialise the game in fuzzpuzz
Avoid division by zero in Cube grid-size checks
Mosaic: don't duplicate the description being validated
Loopy: free the grid description string if it's invalid
Twiddle: don't read off the end of parameter strings ending 'm'
Free new game_state properly in Mosaic's execute_move()
Remember to free the numcolours array from Pattern's drawstate
Don't leak duplicate edges in Untangle
Undead: check the return value of sscanf() in execute_move()
Remember to free the to_draw member from Net's drawstate
Don't leak grids in Loopy's validate_desc()
Remember to free the actual_board array in Mosaic
Fix memory leaks in Keen's validate_desc()
Allow more general cross-shaped boards in Pegs
Don't allow moves that change the constraints in Unequal
Cleanly reject more ill-formed solve moves in Flood
Check state is valid at the end of a move in Pearl
Mention how old the 15-puzzle is
Forbid game descriptions with joined islands in Bridges
Forbid impossible moves in Bridges
Unequal: fix sense error in latin_solver_alloc fix.
Mines: Add assertions to range-check conversions to short
Limit width and height to SHRT_MAX in Mines
Range: Don't fail an assertion on an all-black board
Unequal: Don't insist that solve moves must actually solve
Pearl: fix bounds check in previous commit.
Pearl: fix assertion failure on bad puzzle.
latin_solver_alloc: handle clashing numbers in input grid.
Palisade: replace dfs_dsf() with a simple iteration.
Tolerate incorrect solutions in Inertia
Forbid lines off the grid in Pearl
Dominosa: require the two halves of a domino to be adjacent
Tighten validation of Tents game descriptions
Fix move validation in Netslide
Avoid invalid moves when solving Tracks
Mines: Don't check if the player has won if they've already lost
Mines: forbid moves that flag or unflag an exposed square
Document numeric input in Undead
Remove an odd mention of NO_PRINTING from Mosaic
Explicitly document that various function pointers can be NULL
Remove various unused game functions
Loopy: Specify can_solve as true, rather than 1
Validate the number of pegs and holes in a Pegs game ID
Limit number of mines in Mines game description
Don't segfault on premature solve moves in Mines
Cleanly reject ill-formed solve moves in Flood
Forbid moves that fill with the current colour in Flood
Don't allow Bridges games with < 2 islands
KaiOS: explicitly set the font family to Open Sans
Increase KaiAds timeout to 10 seconds
Add validate_params bounds checks in a few more games.
Black Box: reject negative ball counts in game_params.
Add myself to copyright holders and update copyright years
Add a content security policy for the KaiOS app
Update comment in manifest.pl based on experience
kaios/manifest.pl: canonicalise the JSON output.
Install KaiOS app docs even without Halibut
Use the main Web site version of the docs for KaiOS apps
kaios: Add hooks for the KaiAds API
js: Quicker keyboard access to menu items
kaios: Make F10 open and close the menu
Correct type of "locales" in KaiOS manifest
Deliver banner images from build script
Generate a possibly suitable marketing banner for the KaiStore
kaios: Provide a populated "locales" field in the manifest
kaios: Turn off :hover highlighting in menus
Buildscr bits for making KaiOS builds
kaios: Put version numbers in manifest files
kaios: Hack out everything that needs dialogue boxes
js: Remove an outdated reference to the "invisible Custom option"
js: Tolerate the absence of various UI elements from the HTML
js: Look up elements in the DOM as early as possible
js: Simpler and more robust startup procedure
js: Use current_key_label() to label feature phone softkeys
js: Rename update_undo_redo() as post_move()
js: Make soft-key labels generate key events when clicked
kaios: Major parts of a build for KaiOS
Properly-styled icons for KaiOS
js: Have the "SoftRight" key open the menu by focussing it
Allow repeated "solve" operations in Guess
Tracks: tighten up the 'illegal solve submoves' fix.
Tracks: let solve make illegal moves
Fix mosaic's validate_desc: 9 is valid
Avoid unnecessary timestamp bumps on generated-games.h.