Changelog¶
The format follows Keep a Changelog, and versions follow Semantic Versioning. Changes that alter generated puzzles are marked (new puzzles), and changes that alter ratings (new ratings).
[0.4.0] - 2026-11-09¶
Added¶
Documentation site at https://pencil-puzzles.org/docs/.
Changed¶
Sudoku: levels follow common sudoku grading, with X-wing and similar techniques at expert. (new ratings) (new puzzles)
The web app moved to https://pencil-puzzles.org/.
[0.3.1] - 2026-11-08¶
Added¶
Python:
print(puzzle)shows the grid.Python:
generatewithout a shape gives the genre’s standard size.Python: every puzzle has
clues; kakurasu’s is aKakurasuClueswithrowsandcols.Rust: the crates are on crates.io.
Changed¶
Generating without a size gives hashi and kakuro 10x10 puzzles (were 7x7 and 8x8), kakurasu 7x7 (was 6x6) and fillomino 10x10 (was 6x6). (new puzzles)
Python:
generatewithout a seed picks a random one, kept inGenerated.seed(was 0).Sudoku: box lines cross with
+when printed, also in the command-line tool’s--format pretty.README rewritten around the Python package.
Deprecated¶
Python:
givens,numbers,cells,row_cluesandcol_clues; useclues.
[0.3.0] - 2026-11-08¶
Added¶
Nurikabe: grids up to 10x10 (was 8x8).
Web app: per-puzzle saves with undo history across reloads, Show mistakes, Show solution and Pause, difficulty next to the timer and size presets.
Web app: selecting several cells at once, keyboard input, kakuro combinations for the selected run and easier hashi bridges.
Rust:
Candidates.first_only.
Changed¶
Nurikabe: new generator, and solving and rating on bitboards. Generation is ~463% faster on average. (new puzzles)
Nurikabe: generating without a size gives 10x10 puzzles (was 6x6). (new puzzles)
Sudoku: new generator and rating on bitboards. Generation is ~1791% faster on average. (new puzzles)
Kakuro: new generator with symmetric layouts that finds more puzzles at 12x12 and 16x16. Generation is ~11% slower on average at the sizes where both versions find every puzzle. (new puzzles)
Web app: each request may use 100 million operations (was 50 million).
Genre summaries and rule texts read the same in the library, docs and README.
Fixed¶
Web app: highlighting follows each genre’s rules.
[0.2.0] - 2026-11-06¶
Added¶
Fillomino (up to 10x10), hashi (up to 15x15), hitori (up to 12x12) and kakuro (up to 16x16): generate, solve, rate, check and hint.
Web app: hashi bridges (click between two islands, or Shift with an arrow key), hitori numbers under the marks and kakuro blocks with their sums. Selecting a kakuro cell highlights its two runs.
Web app: WASD to move, and Q, E and R to shade, dot and clear a cell.
Python:
check(..., finished=True)checks an answer as finished, with unmarked cells and undrawn bridges at the genre’s default. Hashi steps list bridges as(row, col, row2, col2, value).Rust: links between cells (
Place::Link,View.links,ViewLink),ViewCell.circled,ViewCell.label,ViewCell.blockwithBlockCell,ClueInput::text,Profile::contradictions_where, thegridmodule (neighbours,flood,flood_from) andRng::shuffle.
Changed¶
Nurikabe: generating without a size gives 6x6 puzzles (was 5x5). (new puzzles)
Web app: click shades a cell and right-click dots it, where both used to cycle through the marks. Dots are larger.
Web app: each request may use 50 million operations (was 2 million).
[0.1.0] - 2026-11-05¶
Added¶
Sudoku, nurikabe and kakurasu: generate, solve, rate, check and hint.
Difficulty from easy to expert, set by the hardest technique a puzzle needs.
Python package, command-line tool and web app.
Text, ID and JSON formats.
Work budgets, attempt limits and cancellation.
Corpus and benchmarks for every genre.