Interesting. From the other side (I run a small single-purpose relay and write a text-only client), my feeling is that the problem is less the core protocol, which is simple and works, and more the long tail of NIPs that every client implements partially and differently. Replies get lost because few clients follow the inbox/outbox model, signing via NIP-46 behaves differently on every bunker, and so on.
If you do start something new, I'd love to see a small, versioned core plus a clear way for a client to say exactly which extensions it supports, so it fails cleanly instead of silently. Happy to follow along and share what I've learned the hard way.
