Callers can now catch DesktopError and inspect err.code to distinguish auth/validation/unknown failures; plain Error fallback kept for message.
Callers can now catch DesktopError and inspect err.code to distinguish auth/validation/unknown failures; plain Error fallback kept for message.