Tabbed MDI interface implemented in JS. Modal dialogs run everything. Almost all the application configuration state passes through the client, frequently, at full mutation risk. The developer UX is even worse.
The admin GUIs we replaced with CLIs were so bad that a concise CLI is preferred by non-technical staff. Use of common business parameters in the DSL (we just read DSL commands right out of argv) has been really intuitive for them.