Skip to content

feat(desktop): add meeting chat disclosure#5350

Closed
ComputelessComputer wants to merge 2 commits into
mainfrom
fix/meeting-disclosure
Closed

feat(desktop): add meeting chat disclosure#5350
ComputelessComputer wants to merge 2 commits into
mainfrom
fix/meeting-disclosure

Conversation

@ComputelessComputer
Copy link
Copy Markdown
Collaborator

@ComputelessComputer ComputelessComputer commented May 29, 2026

Add an opt-in setting that posts a recording disclosure to supported meeting chats and cover Microsoft Teams auto-stop behavior.


Note

Medium Risk
New macOS Accessibility-driven UI automation posts text into third-party meeting chats; failures or wrong targets are possible, though the feature is opt-in and defaults off.

Overview
Adds an opt-in Disclose recording in chat setting (auto_disclose_recording, default off) and wires it through settings storage, analytics, and Lingui strings.

When listening starts with auto-disclose enabled, the app calls a new detect plugin command to post a fixed recording notice to the active meeting app’s chat (Zoom, Teams variants, or supported browsers for Meet). Users can also trigger the same flow from the floating bar for the first five minutes of a session; successful posts mark the session dismissed so prompts hide. Listener live state now tracks disclosureDismissedSessionIds and triggerAppIds for that UI.

On macOS, hypr_detect implements send_meeting_disclosure via Accessibility (focus chat, paste message, send). Non-macOS returns an error. The floating bar grows a third control and emits floatingBarDisclose when tapped.

Includes a regression test that Microsoft Teams (com.microsoft.teams2) participates in mic-trigger auto-stop like other meeting apps.

Reviewed by Cursor Bugbot for commit ed82b88. Bugbot is set up for automated code reviews on this repo. Configure here.


This is part 1 of 2 in a stack made with GitButler:

@netlify
Copy link
Copy Markdown

netlify Bot commented May 29, 2026

Deploy Preview for old-char canceled.

Name Link
🔨 Latest commit ed82b88
🔍 Latest deploy log https://app.netlify.com/projects/old-char/deploys/6a1963b3a9ba030008e6584b

return Ok(());
}

Ok(())
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Disclosure reports success even when message isn't sent

Medium Severity

type_disclosure_into_input returns Ok(()) even when neither the confirm action nor the send button press succeeds. The message text gets placed into the input field but is never actually sent. The caller try_post_disclosure interprets any Ok(()) as Ok(true) — meaning "disclosure posted" — so the entire chain up to the TypeScript layer silently reports success. For a feature whose purpose is to "post a short recording notice," an unsent draft in a text field is not visible to other meeting participants.

Additional Locations (1)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 76ca4fc. Configure here.

Comment thread apps/desktop/src/session/components/disclosure-action.tsx
Copy link
Copy Markdown

@cursor cursor Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 2 potential issues.

There are 3 total unresolved issues (including 1 from previous review).

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit c4a5b0d. Configure here.

}

post_key_combination(ANSI_V_KEY_CODE, cg::EventFlags::CMD)
}
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pasteboard overwritten without saving and restoring original content

Medium Severity

paste_disclosure_message overwrites the system pasteboard with the disclosure text and simulates Cmd+V but never saves or restores the user's previous clipboard content. Since this runs automatically (via the opt-in setting) at the start of every meeting, the user's clipboard is silently destroyed as a side effect. This is especially surprising because the function is called from spawn_blocking and the user may have important content on their clipboard.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit c4a5b0d. Configure here.

Comment thread apps/desktop/src/stt/contexts.test.tsx
Add an opt-in setting that posts a recording disclosure to supported meeting chats and cover Microsoft Teams auto-stop behavior.
Show the meeting disclosure action in the floating meeting bar and wire it through the windows plugin event bridge.
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