Great js implementation! I don't have any iThing but I'd happily play your js version in a browser for a while.
Since you mentioned Simon Tatham puzzles there's a js version here[1], but it really just isn't quite as good
[1] https://www.chiark.greenend.org.uk/~sgtatham/puzzles/js/patt...
(if I were to nitpick, for large grids one might want to make the separating line a bit thicker every 5 blocks for faster counting, and repeat numbers at the bottom/right -- but at the size the examples are in neither are needed)
(BTW you didn't mention for overlapping but there's a nice trick: just try from either end, count how many cells are leftover, and take that off the starting side of each block)