ENGINEERING VERSION LOG · 2026.10.04
Overlay placement and tray lifecycle
The 2.0.39 candidate places the overlay on the recording display and protects tray feedback across stop races. Verification is recorded below; installation and public-release acceptance remain open.
01 · THE FAILURE
Old coordinates and incomplete state feedback.
Inspection of the installed Mac 2.0.32 package showed tooltip and menu updates, but no tray-image state updates. Hiding the overlay therefore removed visible status feedback. Overlay placement also used one global X/Y position, which could carry a previous screen’s coordinates into a new recording. These are desktop presentation and lifecycle faults; they do not establish an ASR failure.
02 · DISPLAY PLACEMENT
Keep placement with the current session.
2.0.39 queries bounded foreground-window geometry, selects the matching display, and stores normalized positions per display. Placement locks during recording while user dragging remains allowed. Session guards prevent a late geometry result from moving a newer session; display removal or metric changes trigger reflow.
On Mac, will-move fires before the position commits. The fix reads the actual move event and excludes programmatic resize. Windows defers resize until the committed move. Geometry queries are bounded at 350 ms on Mac, 800 ms on Windows, and 250 ms for optional X11 xdotool commands. Audio capture and ASR start do not wait for the query.
The query reads window bounds, not titles, contents, cookies, microphone data, or clipboard text.
03 · TRAY LIFECYCLE
A stale stop must not clear a new recording.
Five cached icons retain the full brand artwork: ready, red recording dot, amber clock, green check, and coral error badge. Waveform frames do not recompose them, and status works with the overlay hidden.
MediaRecorder.onstop now checks cancellation and current-recording identity before clearing local or main-process state. An old callback cannot clear a new session.
04 · VERIFICATION
Each check has a specific boundary.
| Check | Observed result | Boundary |
|---|---|---|
| Desktop tests / build | 220 tests: 218 passed, 2 Windows-only signature checks skipped, 0 failures; build passed | Code checks |
| Mac hidden native overlay probe | 26 assertions on two physical displays | Programmatic movement |
| Mac native Tray probe | All five states passed | Other-OS rendering is not native-tray acceptance |
| Windows CI 37197345934 | Internal unsigned installer; packaged public-WAV local ASR passed on Windows x64, Mac arm64 / x64, and Linux x64 | No GUI installation |
| Linux CI 37197348457 | AppImage / deb package and ELF native checks passed | No GUI installation |
CI used revision f0efa948f5e6. Controlled tests do not prove physical mouse dragging, fullscreen Spaces, mixed DPI, manual microphone capture, hotkeys, or target-app paste. No new latency improvement is claimed.
05 · RELEASE BOUNDARY
Report publication and binary release are separate.
The Mac arm64 2.0.39 candidate passed Developer ID identity, strict signature, architecture, and microphone/audio entitlement checks. It remains unnotarized and uninstalled. Public stable feeds still advertise 2.0.19.
Apple notarization preflight returned HTTP 403 for a necessary missing or expired account agreement. This does not prove API-key expiry; legal acceptance requires the account holder. An approved Windows production signing identity is also missing.