One downside of squash merging is that when you need to split your work across branches, so that they're different PRs, but one depends on the other, then you have to do a rebase after every single one which had dependencies is merged.
When that happens I essentially pick one of the branches as the trunk for that feature and squash merge into that, test it, then merge a clean history into main.
Indeed. Former Garry's Mod cheat maker here, I remember how fun it was learning how to attach code to the game binary, as well as using their own Lua engine for cheats.
Works great for me. I enabled that functionality alongside resizing on RMB by using "Easy Move+Resize" from GH. I also use Raycast to bind most window management stuff, it's instant unlike the built-in alternatives on Tahoe.
In my experience LLMs can code C++ for the Arduino framework pretty well these days. The mistakes they make, like wrong pin numbers, are pretty language agnostic.