This is an old thread but there's a lot of confusion.
The issue is actually the fact, that <~only allows updating the rightmost component of the version, as detailed in the https://developer.hashicorp.com/terraform/language/expressions/version-constraints .
Therefore in your ~> 1.0.0 case, only Patch versions of 1.0.* are allowed. ~> 1.0 works, because it allows the Minor version of your 1.2.
\>= 1.0.0 is any version equal or higher to 1.0.0, including a Major version.