Without Explorer the tray icon, taskbar overlay badge and thumbnail toolbar
can't exist (E_FAIL / E_NOTIMPL). On a runner without an interactive
desktop only those calls may fail, and the app must still respond.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5
Call each with what cinny sends (badge, unread, call state, thumbbar,
SMTC, taskbar progress, jump list, update-ready, flash), then reset;
every call must succeed and the app must still respond.
Refs #4, #7, #19
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5
The windows runner can't show a hidden window or inject keys (no
interactive desktop: even a direct show() leaves it hidden). Check that
first; the deep link must still reach the page and un-minimise, but window
visibility and the global-hotkey round trip are n/a on such a runner.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5
Hide the window (then minimise it), open matrix:r/lotus-smoke-*:example.org
through Windows (protocol handler -> second cinny.exe -> single-instance),
and require the window to come back and the URL to reach the page as
lotus-deeplink.
Refs #8, #19
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5
The example.com check could pass vacuously if the runner can't reach the
internet (goto failed silently, the mic request then came from the app's
own page). Serve a page on http://localhost:9333 instead, confirm the
navigation happened, and fail on builds that should refuse it.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PPmy3tPq869XDW4njjVaKA