Triage
Thanks for the profile and the browser-vs-desktop comparison — that is enough to treat this as a real Windows desktop input-lag bug.
What we think is going on
The desktop renderer periodically reads environment topology over synchronous IPC. getLocalEnvironmentBootstraps() in the preload is ipcRenderer.sendSync(...). Electron blocks the entire renderer until the main process replies, so keystrokes cannot paint during that wait.
The installed frontend matches the profile:
- Connection platform polls topology every 3 seconds (
PLATFORM_POLL_INTERVALinapps/web/src/connection/platform.ts) because the bridge has no change event. - That poll reads the primary target and the secondary bootstrap list. Both call
window.desktopBridge.getLocalEnvironmentBootstraps(). - The same poll also hits
getLocalEnvironmentEnabled()viasendSync. - The command palette / legacy sidebar can add a second 2s poll (
useDesktopLocalBootstraps).
The browser UI at http://localhost:3773 does not have desktopBridge, so it never takes this path. Smooth typing there with the same backend is expected.
Your capture also matches the code: desktop traces of the bootstrap handler are sub-millisecond (apps/desktop/src/ipc/methods/window.ts), while the renderer spent ~1s inside native sendSync. That points at IPC transport / main-process contention, not a slow handler. One 1s stall does not prove this is the only source of perceived lag, but it is a sufficient explanation for visible freezes while typing.
The “Some requests are slow” toast is a separate 15s RPC-ack warning (SlowRpcRequestToastCoordinator). A 1s IPC stall would not trip it by itself. Leaving that as an unconfirmed overlapping symptom.
Likely code
apps/desktop/src/preload.ts(getLocalEnvironmentBootstraps→sendSync)apps/desktop/src/ipc/methods/window.ts+apps/desktop/src/ipc/DesktopIpc.ts(handleSync)apps/web/src/connection/platform.ts(3s poll)apps/web/src/connection/desktopLocal.tsapps/web/src/environments/primary/target.tsapps/web/src/connection/useDesktopLocalBootstraps.ts
This shape landed with the parallel local/WSL backend work (#2751). No duplicate issue found. Related but not the same: #6248 (Windows main-thread blocking), #11771 (remove the slow-request toast), #11754 (@ picker typing jank).
Next step
Stop polling this snapshot over sendSync. Preferred fix is a main→renderer topology change event, or async invoke plus a cached last-known snapshot so the UI thread never blocks. After that, re-profile empty-chat typing on Windows. Investigating the ~1s transport wait is useful follow-up, but removing sendSync from the hot poll is the first change.
Accepting as a Windows desktop performance bug. Browser workaround stands until a desktop build lands.