feat(meeting-detector): per-app ignore list for meeting detection#3886
Merged
louis030195 merged 3 commits intoJun 8, 2026
Merged
Conversation
Adds a dedicated `ignoredMeetingApps` setting so a user can exclude
specific apps from automatic meeting detection without turning detection
off entirely. Kept separate from `ignored_windows` by design: the
detector enumerates processes directly and never goes through the capture
filter, and "don't treat this app as a meeting" is a different intent
from "don't record this app".
- config: RecordingSettings.ignored_meeting_apps (+ Default, tauri.ts)
- engine: meeting_app_is_ignored helper + retain-filter in
run_meeting_detection_loop, applied before the AX scan so an ignored
app costs nothing past process enumeration; threaded through
start_meeting_watcher and both call sites
- matching: case-insensitive substring on the running app name AND the
matched detection profile's identifiers, so an entry works as the app
("Discord") or the service ("meet.google.com")
- cli: --ignored-meeting-apps (mirrors --ignored-windows)
- app: "ignore apps" button beside the meeting-detection toggle opens a
MeetingAppsPicker that auto-populates from the user's recent apps +
curated meeting apps (with icons), click-to-toggle or type a custom
service
- tests: 5 unit tests for meeting_app_is_ignored
Also syncs src-tauri/Cargo.lock internal crate versions (0.4.7 -> 0.4.8).
Closes screenpipe#3847
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Row component was defined inside MeetingAppsPicker body, so its component identity changed on every parent render. React tore down + remounted the entire row subtree (including the hover-styled Button) each render, which flickered the :hover background on/off while the cursor sat still on the ignore button. Hoist Row out as a top-level React.memo'd component and pass added + onToggle as explicit props instead of closing over them. Stable identity = no remount = no flicker.
Adds a WebDriver spec that mirrors the user-visible flow for the per-app meeting-detection ignore list (screenpipe#3882, addressing screenpipe#3847): - Settings > Recording: 'ignore apps' button opens the picker - Toggling Webex flips data-added on the row and surfaces a count badge - Closing + reopening the picker keeps Webex selected (settings store round-trip — same persistence guarantee the user relied on in the bug report). Wires up data-testids on the open button, count badge, dialog root, and each picker row/toggle so the spec doesn't depend on visible copy. Engine-side correctness (the actual detector skipping ignored apps) is already covered by the meeting_app_is_ignored_* unit tests in crates/screenpipe-engine/src/meeting_detector.rs — this spec only pins the UI contract.
louis030195
reviewed
Jun 6, 2026
louis030195
left a comment
Collaborator
There was a problem hiding this comment.
@Anshgrover23 this is super clean, love the thorough tests
generated by the screenpipe pr-review pipe (https://screenpi.pe), not written by a human — reply and tag @louis030195 if it got something wrong.
Contributor
Author
|
@louis030195 Can I get a review on this one ? |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Built on top of #3882.
Fixes #3847
Screen.Recording.2026-06-06.at.11.29.13.PM.1.mov
MeetingAppsPicker:Rowwas declared inside the parent component body, so React tore down + remounted the whole row subtree on every parent render — the button's:hoverstate flashed on/off while the cursor sat still.Rowout as a top-levelReact.memocomponent with stable identity; passadded+onToggleas explicit props instead of closing over them.