Skip to content

feat(meeting-detector): per-app ignore list for meeting detection#3886

Merged
louis030195 merged 3 commits into
screenpipe:mainfrom
Anshgrover23:feat/meeting-detection-ignored-apps-picker
Jun 8, 2026
Merged

feat(meeting-detector): per-app ignore list for meeting detection#3886
louis030195 merged 3 commits into
screenpipe:mainfrom
Anshgrover23:feat/meeting-detection-ignored-apps-picker

Conversation

@Anshgrover23

@Anshgrover23 Anshgrover23 commented Jun 6, 2026

Copy link
Copy Markdown
Contributor

Description

Built on top of #3882.

Fixes #3847

  • Demo video:
Screen.Recording.2026-06-06.at.11.29.13.PM.1.mov
  • E2E test passing:
image
  • Fix hover-flicker on the "ignore" button inside MeetingAppsPicker: Row was declared inside the parent component body, so React tore down + remounted the whole row subtree on every parent render — the button's :hover state flashed on/off while the cursor sat still.
  • Hoist Row out as a top-level React.memo component with stable identity; pass added + onToggle as explicit props instead of closing over them.

Louis Beaumont and others added 2 commits June 6, 2026 08:11
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 louis030195 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

@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.

@Anshgrover23 Anshgrover23 requested a review from louis030195 June 6, 2026 18:56
@Anshgrover23

Copy link
Copy Markdown
Contributor Author

@louis030195 Can I get a review on this one ?

@louis030195 louis030195 merged commit f39c850 into screenpipe:main Jun 8, 2026
12 of 13 checks passed
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.

[bug] Meeting detector ignores ignored_windows list - Webex background window triggers phantom meetings

2 participants