How does this prevent MITM attacks? The secret you send to the server, be it called hash or password, is what’s used to authenticate the user. For the purpose of client/server communication, this “password” on your host only is not relevant, as it’s only used to generate the real secret.
A hypothetical MITM attacker would still gain access to that secret, without needing to care how it was generated, be it by hashing something on your host or by coming up with semi random letters yourself.
The secret sent to the server becomes the defacto password.
Now about those password managers, they are a thing but I don’t have experience using them. Through a disadvantage is that if a site gets breached you have to do something weird with your password manager, so that a different password is produced with your secret key and the domain name. This can be done with a counter that needs to be manually adjusted, but that’s weird from a usability point of view.