A few scattered thoughts:
1. It doesn't sound like the problem is actually that you're falling out of love with coding. You said, "on avg I spend less than 20% of my time coding or solving problems".
2. I feel ya. Reading stuff like TAOCP and SICP was what initially inspired me to pursue this career. But chasing the money for coming up on two decades has worked me into a position where I'm really efficient at putting different web skins on the same four CRUD operations on a database. The kind of problems that got me into this career, aren't the kinds of problems I'm solving on a day to day basis.
3. Having talked to lots of people in lots of careers, it seems like anything you do as a job is going to be less satisfying than if you do it for its own sake. I love playing guitar, but the reality of playing guitar professionally, even if you're financially successful, is that it isn't all that fun. Some high-level Go player (I think Cho Chikun, but I can't find a source), when asked why he liked Go so much, said "I hate go". People in the adult film industry generally have low satisfaction with their sex lives. Money ruins everything. Once you start basing your ability to eat, clothe yourself, live under a roof, etc. on something you do, you're no longer doing it for fun, and it stops being fun. Put in psychology terms, adding extrinsic motivation to an activity decreases your extrinsic motivation to do it.
4. Because #3 applies to every activity, switching careers may not be the solution you think it is.
5. That said, doing something you are intrinsically motivated to do as your job, does seem to be more enjoyable than doing something you're not intrinsically motivated to do. So finding coding jobs that let you do more of the part of the job you like, the actual coding, might help.
6. JavaScript's ecosystem is the obvious, abjectly terrible result of decades of "move fast and break things". That's a controversial opinion, I'm aware, and I'm not going to argue with people who disagree because no one will be educated or persuaded. It's possible to write good code in any language, but I think it would be difficult to even learn to write good JS, because the culture is all about introducing a massive amount of dependencies on bleeding-edge garbage and antipatterns like global state are the norm, not the exception. The problems you mention, "I feel like anything can break at any moment and ruin my day. I don’t understand any of the tools well enough to be confident that it’s stable, and the worst problems are the silent ones"--that's at least partially a problem specific to JavaScript's ecosystem. You might find better luck in a better ecosystem. But unfortunately the disease has also infected other ecosystems: if you pull all of pip into your Python project and use a bunch of global state you'll run into the same problems.
7. Returning to why you're doing what you're doing--the real, underlying reason--is helpful. I know people who work truly horrible jobs, but feel happy about it because their work lets them provide food, housing, and education for their kids. I'm not saying have kids (I don't have kids) but to some extent being aware of what I'm getting from my work keeps me from being too frustrated when I have to work. And if you can't find a reason, then maybe find ways to work less, until you're only working as much as you need to.
8. The subtext of #7 is that satisfaction probably isn't going to come from your work. Few people dream of doing labor.