jsoncall.js: after login retry succeeds, dispatch 'sage_login' on bricks.app so shell can reload the global menu dynamically.
- withLoginInfo 改为接收完整 opts(含 method/headers/params) - 等待 login_window 的 destroy 事件(=登录成功信号) - 登录成功后重试原始请求 - 重试仍401则返回null(避免死循环) - 用户手动关闭登录窗口时也触发重试,401则返回null