Repository navigation
Measured on a live machine, today, with TradingView open and working
{"vis":"hidden","hidden":true,"title":"Live stock, index, futures, Forex and Bi..."}
The window was fine. It was behind the terminal. macOS Chromium marks a fully occluded window hidden, not just a background tab, and 2.5.0's visibility check refused on exactly that. Every screenshot-using skill stopped working in the ordinary case: you look at your agent, not at the chart.
The check was right. Refusing was the wrong half of the fix. Issue #3 is real (a hidden target hands back the last frame it painted, a plausible PNG of the right chart showing stale data) but turning "you might get a stale image" into "you get nothing" is not an improvement for someone whose chart is working.
It now asks for the frame instead. Page.bringToFront() makes the target visible, which is what actually resumes compositing, so the capture is both possible and current. Verified against the live Electron target: returns in 1ms, no throw, visibilityState: visible afterwards. Only if fronting fails to make it visible (minimised, another Space) does it refuse, because there a capture really would be stale.
An already-visible target is never touched, because raising a window is a visible change on someone's desktop. brought_to_front: true appears in the result when it happened.
A second finding, from writing the test for the first
ClassifiedError was discarding its own diagnostics. The constructor kept hint and cause and dropped every other option on the floor. Ten fields across six modules never reached a caller:
| Field | Tool |
|---|---|
shape_requested, shape_created, entity_id, cleanup_removed |
draw_shape |
editor_bound_to, source_loaded_from, candidates |
pine_open |
requested_date, days_away |
replay_start |
dialog_buttons |
tab_close |
probe_shape |
chart_set_timeframe |
Every one of those refusals told the caller a decision had been made and then withheld the facts behind it. Most were added in 2.5.0 and never checked for arrival: the same defect as the release they were written for, in the code that reports that release's own errors. They travel in details now and toJSON surfaces them.
937/937, lint clean, all six CI jobs green.