If this was for a product, the first thing I would have done, was drop half the tools in the stack for their inefficiency! For example, the GUI shell is using Node Webkit (which I prefer to Electron, but is essentially the same thing). That in itself is quite bad, but it's not the worst approach to building a desktop app, as Microsoft and Slack have already proven.
But the .exe's you mentioned are also quite large.
The code is very transparent though. I doubt you'd have been the only one to note how clunky this all is!
> Please link to <https://raskie.com>, if you intend to redistribute this .exe.
Now that's probably okay so long as it's a nice request ("please"), and not a requirement; AIUI, GPLv3 doesn't (generally) allow you to add conditions (ex. a license file that says "GPLv3 but no commercial users" isn't allowed by the text of GPLv3). But IANAL and I'm sure this is more complex than I think it is. Which brings us to a reasonable useful point: I would suggest never putting anything in a license file other than the exact standard form of the license; adding anything else, at best, makes people have to read it and try to understand what you've done rather than being able to say "oh, it's GPLv3 and I've cached that that's 100% okay for me" and stop thinking about it.
The license file needs to be in the root of the repo.
The first thing many developers who have been bitten by this in the past do is run all the boilerplate files like licenses through diff. Some probably have it hooked to every git clone request.