Skip to content

fix: auto-end Stay when meeting ends - #9

Merged
avatarneil merged 9 commits into
mainfrom
neil/auto-end-stay-on-meeting-end
May 14, 2026
Merged

avatarneil merged 9 commits into
mainfrom
neil/auto-end-stay-on-meeting-end

Conversation

@avatarneil

@avatarneil avatarneil commented May 12, 2026

Copy link
Copy Markdown
Owner

Stay now turns itself off when the protected meeting ends, including native-app paths where Zoom returns to Home or another Zoom shell after the call closes. The classifier is more conservative about native meeting apps: app identity alone is no longer enough when the active window is a known non-meeting shell, while browser meetings still lock on other tabs and end when the protected meeting tab/window stops matching a meeting.

The desktop shell now gets out of the way after PIN setup and other idle-ready transitions, using the macOS app hide/show path so Stay itself does not remain the foreground window and block focus polling. When macOS reports a native app like Zoom with an empty CGWindow title, the platform adapter enriches that snapshot from the focused Accessibility window title before classification; this keeps Zoom Home filtered while allowing a live Zoom Meeting window to prompt correctly. Prompt/lock windows also raise and focus when they need user attention.

Native meeting-app end signals from a different window now require confirmation on consecutive polls. That keeps a transient Zoom shell/window observation during app switching from ending the Stay, while still allowing a repeated Zoom Home/Workplace signal to auto-end after the meeting is actually gone. High-confidence cases where the protected meeting window itself stops matching still end immediately.

This follows the shape used by stronger meeting tools: prefer high-confidence signals such as calendar/video links, live audio/call activity, and explicit supported-app state; when Stay only has foreground app/title/window metadata, treat native app shell titles as low confidence instead of prompting on them, and use platform-specific metadata enrichment where the generic provider is incomplete.

Tested with cargo fmt --all --check, cargo test --workspace, bun run test, and bun run typecheck.


Compound Engineering
GPT-5

@avatarneil
avatarneil enabled auto-merge (squash) May 13, 2026 23:58
@avatarneil
avatarneil merged commit 7420e23 into main May 14, 2026
4 checks passed
@avatarneil
avatarneil deleted the neil/auto-end-stay-on-meeting-end branch May 14, 2026 00:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant