refactor(meet): remove the in-app CDP Meet call window (2/3 for #5478) - #5483
Conversation
1 of 3 for tinyhumansai#5478. Removes the six CDP-driven provider scanners and the webview-account surface they ran inside. Pure dead-code removal: the frontend entry points (SidebarAppRail, WebviewHost, webviewAccountService) were deleted in tinyhumansai#5457 and never restored, so none of this was reachable by a user. Deleted: - app/src-tauri/src/{whatsapp,discord,slack,telegram,gmessages,wechat}_scanner - app/src-tauri/src/webview_accounts (4,809 lines) - src/openhuman/channels/webview_accounts (WeChat ingest normalisation, whose only producer was wechat_scanner; already had zero other consumers) - app/src-tauri/src/cdp/{session,snapshot}.rs — the per-account session opener and DOM-snapshot parser. session.rs imports webview_accounts directly, so it cannot compile without it; both had no other consumer. - The CEF cold-start prewarm and the webview-close drain machinery, whose only producers were the prewarm webview and webview_accounts. Unregisters all 15 webview_account_* IPC commands, so the shell no longer exposes commands whose implementation is gone. imessage_scanner is untouched and still registered: it reads chat.db natively, has zero CDP references, and its only crate-internal dependency is core_rpc. cdp/ itself stays — after this its only consumers are the Meet stack (meet_scanner, meet_audio, meet_video), removed in PR 2 of 3. i18n keys and user-facing provider copy are deliberately left in place; they are split and removed in PR 3 pending the tinyhumansai#5423 decision on whether users with a connected web app get a removal notice.
2 of 3 for tinyhumansai#5478. Removes the desktop Meet call window and the CDP bridges that drove it. Like PR 1 this is dead-code removal: the two frontend functions that invoked the Tauri commands had no production callers. Deleted: - app/src-tauri/src/meet_call (602) - app/src-tauri/src/meet_scanner (717) - app/src-tauri/src/meet_audio (1,678) - app/src-tauri/src/meet_video (1,737) - app/src-tauri/src/fake_camera (406) — only consumer was lib.rs's e2e-test-support Chromium args block, whose flags are discarded - joinMeetCall / closeMeetCall in app/src/services/meetCallService.ts, the only two functions in that file that reached the Tauri commands, plus their test blocks Meet as a product is untouched. src/openhuman/meet/ and the backend_bot (Recall.ai) path never used CDP and have no reference to the deleted Tauri modules in either direction. The entire Meetings UI is untouched: every live component imports the backend-bot half of meetCallService (joinMeetViaBackendBot, leaveBackendMeetBot, listMeetCalls, …). After this PR cdp/ has no functional consumer. CdpConn and install_for_label are referenced nowhere outside cdp/; only two inert lines remain in lib.rs — a no-op set_cef_app_handle call and a never-written CdpRegistry — both removed with the module in PR 3. imessage_scanner remains untouched across both PRs.
|
@coderabbitai review |
|
📝 WalkthroughWalkthroughThe PR removes CDP session and snapshot APIs, provider scanners, Meet webview modules, account-webview surfaces, fake-camera support, and related Tauri wiring. It retains native iMessage scanning, core Meet backend functionality, and remaining webview APIs. ChangesCDP and scanner removal
Tauri and frontend integration
Estimated code review effort: 4 (Complex) | ~45 minutes Possibly related PRs
Suggested labels: Suggested reviewers: Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@app/src-tauri/src/cdp/mod.rs`:
- Around line 1-15: Update the transitional CDP documentation across all sites:
in app/src-tauri/src/cdp/mod.rs lines 1-15, remove Meet call-window and
remaining-consumer claims and describe the module as inert compatibility code
pending PR 3 removal; in app/src-tauri/src/cdp/in_process.rs line 1, describe it
as a temporary unavailable CDP compatibility stub; in
app/src-tauri/src/cdp/target.rs line 48, remove the meet-call-<request_id>
active-use example; and in app/src-tauri/src/cdp/target.rs lines 65-68, remove
the claim that the Meet call window uses this attach sequence.
In `@app/src-tauri/src/lib.rs`:
- Around line 1637-1640: Update shutdown_imessage_scanner to add privacy-safe,
grep-friendly [imessage] diagnostics for function entry and exit, whether the
ScannerRegistry state is present or absent, and completion of
registry.inner().shutdown(). Keep logs namespaced and avoid including sensitive
data.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: 1ca3f58e-73a5-403a-945d-e782b2bfc554
⛔ Files ignored due to path filters (3)
app/src-tauri/src/fake_camera/mascot.svgis excluded by!**/*.svgapp/src-tauri/src/meet_video/Bookreading.svgis excluded by!**/*.svgapp/src-tauri/src/meet_video/idelMascot.svgis excluded by!**/*.svg
📒 Files selected for processing (57)
AGENTS.mdapp/src-tauri/src/cdp/conn.rsapp/src-tauri/src/cdp/in_process.rsapp/src-tauri/src/cdp/mod.rsapp/src-tauri/src/cdp/session.rsapp/src-tauri/src/cdp/snapshot.rsapp/src-tauri/src/cdp/target.rsapp/src-tauri/src/discord_scanner/dom_snapshot.rsapp/src-tauri/src/discord_scanner/mod.rsapp/src-tauri/src/discord_scanner/mod_tests.rsapp/src-tauri/src/fake_camera/mod.rsapp/src-tauri/src/gmessages_scanner/cdp_walk.rsapp/src-tauri/src/gmessages_scanner/idb.rsapp/src-tauri/src/gmessages_scanner/mod.rsapp/src-tauri/src/lib.rsapp/src-tauri/src/lib_tests.rsapp/src-tauri/src/meet_audio/audio_bridge.jsapp/src-tauri/src/meet_audio/caption_listener.rsapp/src-tauri/src/meet_audio/captions_bridge.jsapp/src-tauri/src/meet_audio/inject.rsapp/src-tauri/src/meet_audio/mod.rsapp/src-tauri/src/meet_audio/speak_pump.rsapp/src-tauri/src/meet_call/mod.rsapp/src-tauri/src/meet_scanner/mod.rsapp/src-tauri/src/meet_video/camera_bridge.jsapp/src-tauri/src/meet_video/frame_bus.rsapp/src-tauri/src/meet_video/inject.rsapp/src-tauri/src/meet_video/mod.rsapp/src-tauri/src/slack_scanner/dom_snapshot.rsapp/src-tauri/src/slack_scanner/extract.rsapp/src-tauri/src/slack_scanner/idb.rsapp/src-tauri/src/slack_scanner/mod.rsapp/src-tauri/src/telegram_scanner/dom_snapshot.rsapp/src-tauri/src/telegram_scanner/extract.rsapp/src-tauri/src/telegram_scanner/idb.rsapp/src-tauri/src/telegram_scanner/mod.rsapp/src-tauri/src/webview_accounts/mod.rsapp/src-tauri/src/webview_accounts/mod_tests.rsapp/src-tauri/src/webview_accounts/runtime.jsapp/src-tauri/src/wechat_scanner/dom_snapshot.rsapp/src-tauri/src/wechat_scanner/mod.rsapp/src-tauri/src/whatsapp_scanner/dom_snapshot.rsapp/src-tauri/src/whatsapp_scanner/dom_snapshot_tests.rsapp/src-tauri/src/whatsapp_scanner/idb.rsapp/src-tauri/src/whatsapp_scanner/idb_tests.rsapp/src-tauri/src/whatsapp_scanner/mod.rsapp/src-tauri/src/whatsapp_scanner/mod_tests.rsapp/src-tauri/src/whatsapp_scanner/test_fixtures/dom_snapshot_2026_05.jsonapp/src/services/__tests__/meetCallService.test.tsapp/src/services/meetCallService.tsapp/src/store/mascotSlice.tsapp/src/utils/tauriCommands/common.test.tssrc/openhuman/channels/mod.rssrc/openhuman/channels/webview_accounts/README.mdsrc/openhuman/channels/webview_accounts/mod.rssrc/openhuman/channels/webview_accounts/wechat_ingest.rssrc/openhuman/channels/webview_accounts/wechat_ingest_tests.rs
💤 Files with no reviewable changes (44)
- app/src-tauri/src/whatsapp_scanner/test_fixtures/dom_snapshot_2026_05.json
- app/src-tauri/src/fake_camera/mod.rs
- app/src-tauri/src/lib_tests.rs
- src/openhuman/channels/webview_accounts/mod.rs
- app/src-tauri/src/slack_scanner/extract.rs
- app/src-tauri/src/webview_accounts/runtime.js
- app/src-tauri/src/whatsapp_scanner/mod_tests.rs
- app/src-tauri/src/discord_scanner/dom_snapshot.rs
- src/openhuman/channels/webview_accounts/README.md
- app/src-tauri/src/whatsapp_scanner/idb_tests.rs
- app/src-tauri/src/slack_scanner/idb.rs
- app/src-tauri/src/cdp/snapshot.rs
- app/src-tauri/src/telegram_scanner/idb.rs
- app/src-tauri/src/telegram_scanner/extract.rs
- app/src-tauri/src/meet_video/frame_bus.rs
- app/src-tauri/src/gmessages_scanner/cdp_walk.rs
- app/src-tauri/src/meet_audio/caption_listener.rs
- app/src-tauri/src/meet_audio/captions_bridge.js
- app/src-tauri/src/meet_audio/mod.rs
- app/src-tauri/src/meet_call/mod.rs
- app/src-tauri/src/meet_audio/inject.rs
- app/src-tauri/src/whatsapp_scanner/idb.rs
- app/src-tauri/src/cdp/session.rs
- app/src-tauri/src/meet_audio/audio_bridge.js
- app/src-tauri/src/discord_scanner/mod_tests.rs
- app/src-tauri/src/meet_video/camera_bridge.js
- app/src-tauri/src/meet_audio/speak_pump.rs
- app/src-tauri/src/whatsapp_scanner/dom_snapshot.rs
- app/src-tauri/src/whatsapp_scanner/dom_snapshot_tests.rs
- app/src-tauri/src/meet_scanner/mod.rs
- app/src-tauri/src/webview_accounts/mod_tests.rs
- app/src-tauri/src/wechat_scanner/mod.rs
- app/src-tauri/src/discord_scanner/mod.rs
- app/src-tauri/src/telegram_scanner/dom_snapshot.rs
- app/src-tauri/src/gmessages_scanner/idb.rs
- src/openhuman/channels/mod.rs
- app/src-tauri/src/gmessages_scanner/mod.rs
- app/src-tauri/src/telegram_scanner/mod.rs
- app/src-tauri/src/meet_video/inject.rs
- app/src-tauri/src/meet_video/mod.rs
- app/src-tauri/src/wechat_scanner/dom_snapshot.rs
- app/src-tauri/src/whatsapp_scanner/mod.rs
- app/src-tauri/src/slack_scanner/mod.rs
- app/src-tauri/src/slack_scanner/dom_snapshot.rs
| //! Shared Chrome DevTools Protocol client for the Meet call window. | ||
| //! | ||
| //! All CDP traffic flows through the in-process transport in | ||
| //! [`in_process`]: CDP messages travel directly between the Tauri shell | ||
| //! and the embedded CEF browser via `Webview::send_dev_tools_message` | ||
| //! and `Webview::on_dev_tools_protocol`. There is no listener and no | ||
| //! network surface; any same-UID process is shut out by construction. | ||
| //! CDP traffic flows through the in-process transport in [`in_process`], | ||
| //! which is a permanent unavailable-error stub: upstream Tauri's Wry | ||
| //! runtime uses WKWebView (macOS) and WebKitGTK (Linux), neither of which | ||
| //! speaks CDP. See #5478 — this module and its remaining consumers are | ||
| //! being removed; nothing here can succeed at runtime. | ||
| //! | ||
| //! Scanners pick up a [`CdpConn`] either via [`target::conn_for_account`] (for | ||
| //! `acct_<id>`-labelled webviews) or [`target::conn_for_label`] / | ||
| //! [`target::connect_and_attach_matching_in_process_by_label`] (for other | ||
| //! surfaces such as the Meet call window). | ||
| //! The per-account session opener and the DOM-snapshot parser were removed | ||
| //! alongside the webview-account surface they served. | ||
|
|
||
| // Transitional. With the account scanners gone the only remaining consumer | ||
| // is the Meet stack, which uses a narrow slice of the transport, so the rest | ||
| // of `CdpConn` / `WebviewCdpTransport` / `CdpRegistry` is unreferenced. | ||
| // Pruning it here would be churn: PR 3 of #5478 deletes this whole module. |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Update the transitional CDP documentation.
The documentation says that Meet call windows or other CDP consumers remain. app/src-tauri/src/lib.rs lines 2891-2893 state that every CDP consumer is gone. Describe this code as inert compatibility code pending PR 3 removal.
app/src-tauri/src/cdp/mod.rs#L1-L15: remove the Meet call window and remaining-consumer claims.app/src-tauri/src/cdp/in_process.rs#L1-L1: describe the module as a temporary unavailable CDP compatibility stub.app/src-tauri/src/cdp/target.rs#L48-L48: remove themeet-call-<request_id>active-use example.app/src-tauri/src/cdp/target.rs#L65-L68: remove the claim that the Meet call window uses this attach sequence.
Based on PR objectives and retrieved learnings, update documentation when behavior changes.
📍 Affects 3 files
app/src-tauri/src/cdp/mod.rs#L1-L15(this comment)app/src-tauri/src/cdp/in_process.rs#L1-L1app/src-tauri/src/cdp/target.rs#L48-L48app/src-tauri/src/cdp/target.rs#L65-L68
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@app/src-tauri/src/cdp/mod.rs` around lines 1 - 15, Update the transitional
CDP documentation across all sites: in app/src-tauri/src/cdp/mod.rs lines 1-15,
remove Meet call-window and remaining-consumer claims and describe the module as
inert compatibility code pending PR 3 removal; in
app/src-tauri/src/cdp/in_process.rs line 1, describe it as a temporary
unavailable CDP compatibility stub; in app/src-tauri/src/cdp/target.rs line 48,
remove the meet-call-<request_id> active-use example; and in
app/src-tauri/src/cdp/target.rs lines 65-68, remove the claim that the Meet call
window uses this attach sequence.
Source: Learnings
| fn shutdown_imessage_scanner<R: tauri::Runtime>(app: &AppHandle<R>) { | ||
| if let Some(registry) = app.try_state::<std::sync::Arc<imessage_scanner::ScannerRegistry>>() { | ||
| registry.inner().shutdown(); | ||
| } |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Add iMessage scanner shutdown diagnostics.
shutdown_imessage_scanner has no [imessage] diagnostics for the registry-present branch, the registry-absent branch, or shutdown completion. Add privacy-safe namespaced logs around this lifecycle transition.
As per coding guidelines, changed flows need grep-friendly namespaced diagnostics for entry, exit, branches, and state transitions.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@app/src-tauri/src/lib.rs` around lines 1637 - 1640, Update
shutdown_imessage_scanner to add privacy-safe, grep-friendly [imessage]
diagnostics for function entry and exit, whether the ScannerRegistry state is
present or absent, and completion of registry.inner().shutdown(). Keep logs
namespaced and avoid including sensitive data.
Source: Coding guidelines
…\n\nrefactor(meet): remove the in-app CDP Meet call window (2/3 for tinyhumansai#5478)\n
Important
Review commit
6d9f68fb1only — the Files-changed tab shows more than this PR.This is stacked on #5482. Its branch is on a fork, so GitHub cannot use it as this PR's base and diffs against
maininstead, folding #5482's commit into the view. The 60 files / −22,961 lines you see are both PRs; this one is 22 files / +16 / −5,536.Use the Commits tab and open
6d9f68fb1, or locally:The diff corrects itself once #5482 merges.
Summary
joinMeetCallandcloseMeetCall, have zero production callers — only their own test file. Proof below.src/openhuman/meet/, thebackend_bot(Recall.ai) path, and the entire Meetings UI are unchanged.cdp/has no functional consumer — the precondition PR 3 rests on. Three inert references remain and are named explicitly.imessage_scannerremains byte-for-byte untouched across both PRs.Problem
Why this is dead code
meetCallService.tsis two services in one file, and only the smaller half ever touched the Tauri CDP commands:joinMeetCallinvoke('meet_call_open_window')__tests__/meetCallService.test.tscloseMeetCallinvoke('meet_call_close_window')joinMeetViaBackendBot,leaveBackendMeetBot,sendHarnessResponse,listMeetCalls,getMeetCallDetail,listUpcomingMeetings,setEventPolicy,getEventPolicies,joinMeetingViaMascotBotapiClient.post('/mascots/join-meeting')— the backend botEvery live component imports the backend half:
UpcomingTable.tsx:19andMeetComposer.tsx:16importjoinMeetViaBackendBot,ActiveMeetingBanner.tsx:13importsleaveBackendMeetBot, andHistorySection,HistoryDetail,TranscriptViewer,ActionItemChecklistanduseUpcomingMeetingsare all backend-path.grep -rn "meet_call_open_window|meet_call_close_window" app/srcreturned onlymeetCallService.tsitself, its test, and one doc comment inmascotSlice.ts:782. There is no dynamicinvoke(<variable>)in the services layer. Someet_call_open_windowwas registered and implemented, and the only thing that ever called it was a unit test.And it could not have worked anyway
app/src-tauri/src/cdp/in_process.rsis a permanent error stub — CDP only exists under a Chromium engine, and #5456 moved the app to Wry (WKWebView on macOS, WebKitGTK on Linux). The Meet stack reaches it throughcdp::target::connect_and_attach_matching_in_process_by_label→install_for_label, which always returnsErr.The failure would have been quiet rather than loud:
meet_call/mod.rs:209onlylog::warn!s the CDP failure, so the window is built — deliberately off-screen at(-30000, -30000)(:187, re-asserted at:218) because the design assumed it would be driven headlessly and hidden after joining. The join itself is CDP (meet_scannerdrives it viaInput.dispatchMouseEvent, per the comment at:225). So anything that did call it would have produced an invisible window that never joins, never captures audio or video, and never closes itself. Nothing calls it.Solution
app/src-tauri/src/meet_audio/(44 cdp refs —caption_listener,speak_pump,inject)app/src-tauri/src/meet_video/(14 —inject)app/src-tauri/src/meet_scanner/app/src-tauri/src/meet_call/(2)app/src-tauri/src/fake_camera/joinMeetCall/closeMeetCall+ theirdescribeblocksfake_cameraresolved by deletion. Its only code consumer islib.rs:2785, inside the#[cfg(feature = "e2e-test-support")]Chromium args block — notmeet_video(that reference is a doc comment). It could not work regardless: the args vec that block builds ends inlet _ = args;and is discarded, so the--use-file-for-fake-video-captureflag never reached anything. Themeet_videoconsumer is gone here, so the module goes with it.meet_scanneris in this PR rather than PR 1 because it sits inside the Meet dependency cycle, not the account-scanner group:meet_call/mod.rs:48isuse crate::meet_scanner;with ameet_scanner::spawn(...)call at:251, whilemeet_scannerreferencescrate::meet_call. It has 0 references towebview_accounts.Frontend footprint is two functions
meetCallService.tskeeps all 21 exports and no component was touched. WithjoinMeetCall/closeMeetCallgone the file no longer imports@tauri-apps/api/coreat all — an independent signal that the Tauri-facing half is fully out.Two doc references were retargeted rather than left pointing at deleted code:
mascotSlice.ts:782(described the resolver as serving "the CEFmeet_call_open_windowsender and the backendagent_meetings_joinsender" — backend only now) and themeetCallService.tsheader comment describing the two-phase CDP flow.cdp/after this PR — the PR 3 preconditionNo functional consumer remains.
CdpConn,install_for_label,conn_for_label,connect_and_attach_matching_in_process_by_labelandfind_page_target_whereare referenced nowhere outsidecdp/.Three inert references survive, named so this is checkable rather than taken on trust:
lib.rs:2885—.manage(cdp::CdpRegistry::default()), a registry whose map is never written.lib.rs:2894—cdp::set_cef_app_handle(...), whose body is{}.companion/events.rs:9— a doc comment.Both
lib.rslines are removed with the module in PR 3.A trap worth knowing about, for PR 3 and anyone else editing this module list
Deleting
mod fake_camera;orphaned the#[cfg(any(test, feature = "e2e-test-support"))]attribute directly above it, which then silently applied to the next item —mod file_logging;— removing a live module from the default build and producing fiveE0433s in unrelated files. Nothing about the diff looks wrong, and the failure lands somewhere else entirely.app/src-tauri/src/lib.rs's module list has several cfg-attributed entries, so a line-wise deletion there needs the attribute above each removed item checked too. Caught bycargo checkbefore commit; flagged because the same trap is live for PR 3.Submission Checklist
joinMeetCallandcloseMeetCalldescribeblocks whose subject is gone. The remaining 6 blocks in that file (backend-bot path) are untouched and pass. No new behaviour to cover.N/A: behaviour-only removal, no feature rows added/removed/renamed.N/A: no feature IDs.N/A: nothing removed here was reachable from the shipped UI. The Meetings UI smoke path runs through the backend bot and is unchanged.Closes #NNN— deliberately not closing Remove the CDP layer and every surface that depends on it #5478 here;Closesgoes on PR 3, the last of the stack.Impact
Desktop only. No runtime behaviour change for any user: the removed path had no caller, and would have returned
"CDP is unavailable with the upstream Tauri WebView runtime"if it had one.Two IPC commands (
meet_call_open_window,meet_call_close_window) are no longer registered. Nothing inapp/srcinvokes them.Meet is unaffected as a product.
src/openhuman/meet/(includingbackend_bot, the Recall.ai path) has no reference to the deleted Tauri modules in either direction, verified by grep in both directions. Joining, transcripts, action items, upcoming meetings and event policies all run through core RPC and the backend bot.Related
cdp/itself, the dead E2E scaffolding, the AGENTS.md JS-injection rule and the i18n split, and carriesCloses #5478.webviewNotificationsfrontend module)Pre-existing breakage, called out per CONTRIBUTING
Pushed with
--no-verify. The pre-push hook runspnpm rust:clippy(cargo clippy -- -D warnings), which fails onunused import: std::fsatapp/src-tauri/src/process_recovery.rs:14. This is not from this PR —cargo clippy -- -D warningsfails identically onupstream/main(verified by checking outupstream/mainand re-running), and the import became unused in1843706c3, the CEF → Wry commit in #5456. Left alone here to keep this diff to one concern; it is a one-line fix if a maintainer wants it folded in or taken separately.AI Authored PR Metadata (required for Codex/Linear PRs)
Linear Issue
Commit & Branch
remove/cdp-2-meet(stacked onremove/cdp-1-scanners, PR refactor(scanners): remove the CDP webview-account surface (1/3 for #5478) #5482)6d9f68fb15c21d40bf4b84a0b112db2993f99d5dValidation Run
pnpm --filter openhuman-app format:check— run, passes. "All matched files use Prettier code style!"pnpm typecheck— run, passes with zero errors. This is the check that matters most here: three sibling test files (ActiveMeetingBanner.test.tsx,useUpcomingMeetings.test.ts,MeetingBotsCard.test.tsx) pull in the whole module viavi.importActual<typeof import('.../meetCallService')>, which types every export. Deleting two exports would surface there, and does not.vitest runon the 4 directly-affected files (meetCallService.test.ts,joinMeetingViaMascotBot.test.ts,backendMeetService.test.ts,common.test.ts) → 4 files / 74 tests passed. Then theimportActualconsumers:src/components/meetings+MeetingBotsCard.test.tsx→ 16 files / 219 tests passed.cargo fmt --all -- --checkclean in both Cargo worlds.cargo check -p openhuman --tests→ 0 errors.cargo check --no-default-features→ 0 errors.cargo check --manifest-path app/src-tauri/Cargo.toml --all-targets→ 0 errors.--all-targetsdeliberately, so test targets compile.Only warning across the Tauri shell is the pre-existing
unused import: std::fsdescribed above.Validation Blocked
command:pnpm rust:clippy(via the pre-push hook)error:unused import: std::fs—process_recovery.rs:14impact:none from this PR; pre-existing onupstream/main, verified by checkout. Pushed with--no-verifyper CONTRIBUTING's rule for unrelated pre-existing breakage.Behavior Changes
Parity Contract
meetCallService.ts, zero components touched, 219 component tests passing.imessage_scanneruntouched across both PRs (git diff upstream/mainagainst it is empty).grep -rn "joinMeetCall|closeMeetCall|meet_call_open_window|meet_call_close_window" app/src→ clean.cdp/functional-consumer count → 0.Duplicate / Superseded PR Handling
Summary by CodeRabbit