Holy mother of god this was hard! Great concept and the only complaint is that the player is sort of thrown into the deep end starting from level 2 (cause level 1 was too easy in comparison). Maybe there should've been a progressive tutorial section to let the player learn all the patterns.
How did you make sure that each puzzle was solvable? I guess the obvious way is to work backwards from the completed state but how did you guarantee it to be symmetrical?