To get started, r1c3 must be a 1x1 square. Any square bigger than that would either have a white circle next to it (making it a non-square) or the black circle inside it (forbidden by rules).
After connecting that square's known-shaded neighbours out, r2c2 will obviously be a 1x1 too.

Now, the shaded cells in r1c5 must be able to connect out, so r2c4 must be a 1x1. To prevent a shaded 2x2 on the top two rows then, at least one of r1c6 and r2c6 must be unshaded. However, it cannot be r1c6, because there is no possible unshaded square size for that to happen.
After that deduction, we can easily finish the top 3 rows.

Then, on row 4, one of the two rightmost cells must be unshaded to prevent a square. Whichever it is, the only way to make an unshaded square is to make a 4x4. Then we need to connect the shaded cells below it out, and avoid any 2x2 shaded areas at the bottom.

Next, the white circle at r4c4 must be a 1x1: if it weren't it would need to be a 4x4, which would cut off the connectivity of the shaded region. To avoid a shaded 2x2, r4c2 must be unshaded. Continuing by surrounding known squares with shaded cells and checking all 2x2 squares with 3 shaded cells in them, we get this far

At this point, only two deductions remain:
- To maintain connectivity of the shaded region, r6c4 must be a 1x1 square
- To prevent a shaded 2x2, at least one of the bottom two cells in column 3 must be unshaded. Whichever it is, the only way to make an unshaded square is a 3x3.
And we are done:
