Ship meeting AX chat capture and disclosure - #7034
Conversation
✅ Deploy Preview for anarlog canceled.
|
|
Live macOS validation for
Local validation:
Linear ANLG-297's matrix is updated. ANLG-135 now meets its scoped Slack disclosure close gate; ANLG-76 and ANLG-81 remain open for the rest of the required host matrix. |
|
Live native validation update (2026-08-23, commit
Validated locally: ANLG-297 remains open: live Speaker passes, Webex, the remaining tier-one browser/provider cells, and Linux live AT-SPI cells are still required by the Linear close rule. |
|
Update for ea4fb05:
|
|
Linux headed AT-SPI QA found and fixed two process-discovery gaps in
Ubuntu 24.04 x86_64 live proof: Firefox 154 exposed a real AT-SPI tree; before the fix the probe emitted dozens of duplicate Firefox inspections, and after the fix it emits exactly one top-level Firefox inspection. The public/first-run page remains safely unscoped; no live meeting matrix pass is claimed. Local validation: Fresh PR CI is fully green on this revision (JS, Linux desktop, fmt, lint, i18n, repository checks, and Cursor Bugbot); GitHub reports the PR CLEAN and mergeable. |
|
Live macOS tier-one Meet follow-up on
|
Aside + Google Meet trees overflow the old 18/1800 AX budget, so disclosure failed closed even with one identified Meet tab. Accept those roots, walk chat-labeled nodes first, and still refuse windows that stay unclassified.
Aside titles the window Meet - xxx-xxxx-xxx while the focused AXWebArea is about:blank, so chat capture never got a meeting root. Prefer visible children when they are a subset, walk the window instead of that blank document, and keep capture identity on the Meet code.
Close gates live on ANLG-297 so chat, speaker, and disclosure share one host matrix.
fe1f6d7 to
fbc8d12
Compare
ee3a501 to
a754406
Compare
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.
There are 3 total unresolved issues (including 2 from previous reviews).
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit a754406. Configure here.

Summary
Safety boundaries
Validation
pnpm fmt:checkpnpm -F desktop typecheckpnpm -F desktop test— 390 files / 3376 testspnpm exec oxlint --quiet --format=github apps/desktop/src/— 0 errorscargo test --locked -p detect— 89 testscargo test --locked -p tauri-plugin-detect— 73 testscargo test --locked -p db-app --lib— 195 testscargo test -p desktop— 46 testsNote
High Risk
Touches macOS Accessibility mutation and chat capture, plus speaker-identity and voiceprint provenance. Fail-closed scoping reduces some risk, but AX tree walking and identity policy remain security-sensitive.
Overview
Ships evidence-scoped meeting chat capture for Zoom, Meet, Teams, Webex, and Slack (native and web), including truncated browser snapshots. Capture still requires a unique meeting scope; send stays fail-closed (validated native Slack huddle on macOS). Inspections no longer export participant streams, names, or active-speaker state.
Session search now indexes live
meeting_chatdocuments in sort order (sender, text, links), omitting deleted messages.Retires automatic speaker identification from enhance, AX/AT-SPI, and batch transfer. New identities come only from consented voiceprints plus anonymous diarization and manual assignment. Voiceprint inserts reject
accessibility_active_speaker; onlymanual_speaker_assignmentis allowed. Legacy automatic hints remain readable but are not created or copied onto refined transcripts.Recognizes additional browsers (Comet, BrowserOS, Hermes, SigmaOS, and other Chromium/Mozilla variants) by explicit bundle/process IDs. AX helpers now use raw AX APIs to avoid aborting on stale UI errors, walk visible children on huge trees, and parse more chat layouts.
Reviewed by Cursor Bugbot for commit d1a1c5e. Bugbot is set up for automated code reviews on this repo. Configure here.