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.

InkTyper EngineeringCandidate · release pending
ScopeShared desktop clientDisplay placement and recording state
EvidenceTests, native probes, packaged ASRInteractive acceptance pending
Status2.0.39 candidatePublic stable feeds remain 2.0.19

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.

CheckObserved resultBoundary
Desktop tests / build220 tests: 218 passed, 2 Windows-only signature checks skipped, 0 failures; build passedCode checks
Mac hidden native overlay probe26 assertions on two physical displaysProgrammatic movement
Mac native Tray probeAll five states passedOther-OS rendering is not native-tray acceptance
Windows CI 37197345934Internal unsigned installer; packaged public-WAV local ASR passed on Windows x64, Mac arm64 / x64, and Linux x64No GUI installation
Linux CI 37197348457AppImage / deb package and ELF native checks passedNo 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.

Candidate status · 2026-10-04This report publishes engineering evidence. Signed installation, interactive acceptance, and coordinated download/feed promotion remain separate release gates.