Files
openhuman/app/src-tauri/vendor
a29056fa6f feat(webview): browser-like permission management for embedded apps (#713) (#721)
* chore(cef): bump submodule to include permission handler (#713)

Picks up permission handler from tauri-cef feat/713-webview-permissions:
  c17221ea8 feat(cef): add permissions helper module with unit tests
  c7213ceb4 feat(cef): allow desktop-capture + deny-by-default prompts

Enables mic / camera / screen-share / notifications / clipboard /
persistent-storage prompts in embedded webviews (Slack, Discord, Meet,
WhatsApp Web).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* feat(cef): enable SharedArrayBuffer for embedded app huddles (#713)

Slack Huddles, Meet, and Discord voice rely on SharedArrayBuffer-backed
WebRTC audio worklets / Opus encoders. Chromium gates SharedArrayBuffer
behind cross-origin isolation (COOP/COEP) by default, and embedded apps
don't send those headers, so the feature silently disappears — huddle
and call buttons become unresponsive because init aborts before any
getUserMedia / permission-handler path is reached.

Passing --enable-features=SharedArrayBuffer to CEF's command line makes
the constructor available again in top-level secure contexts, matching
the default behaviour of desktop Chrome. Verified in DevTools console
on app.slack.com: typeof SharedArrayBuffer === "function" after the
flag, "undefined" before.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* feat(macos): add NSCameraUsageDescription for embedded webview calls (#713)

macOS TCC rejects any camera access request from an app bundle that
doesn't declare a purpose string in Info.plist. Without this key the
OS silently denies getUserMedia({video:true}) before the user ever
sees a prompt, which breaks video calls in every embedded app (Google
Meet, Discord, Slack huddles).

Paired with NSMicrophoneUsageDescription so mic + camera are both
covered for the CEF permission handler landing in the companion
submodule bump.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* feat(macos): grant camera entitlement for embedded video calls (#713)

The Hardened Runtime entitlement com.apple.security.device.camera is
required for the signed app bundle to receive the macOS TCC camera
prompt. Without it, getUserMedia({video:true}) inside embedded
webviews (Google Meet, Discord, Slack huddles) is refused at the OS
layer regardless of the CEF permission handler decision.

Mirrors the existing audio-input entitlement so mic + camera both
work end-to-end once the CEF handler permits the request.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* chore(deps): sync Cargo.lock with v0.52.26 release bump

Cargo.toml versions bumped to 0.52.26 in prior release commits but the
lockfiles still recorded 0.52.24. Regenerated via cargo check — no
dependency graph changes.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* chore(vendor): bump tauri-cef to include loopback/local-network perms (#713)

Bumps the tauri-cef submodule to e2471bb80 on feat/cef, which adds
CEF_PERMISSION_TYPE_LOOPBACK_NETWORK / LOCAL_NETWORK / LOCAL_NETWORK_ACCESS
to the auto-accepted prompt mask. Required so embedded WebRTC call flows
(Slack Huddles, Meet, Discord voice) don't stall during STUN/TURN local
candidate gathering.

Upstream PR: tinyhumansai/tauri-cef#6

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* feat(permissions): clarify mic/camera Info.plist usage for huddles (#713)

Previous NSMicrophoneUsageDescription only mentioned voice dictation
and NSCameraUsageDescription mentioned video calls but not huddles
explicitly. Updates both strings to name the huddle/call flows in
embedded apps (Slack, Meet, Discord) that drive the macOS TCC prompt,
so the first-launch dialog is accurate about why the permission is
being requested.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* feat(webview): route Slack huddle popups in-app (#722)

Slack Huddles use openManagedChildWindow, which calls
window.open("about:blank", …) and then programmatically navigates the
returned popup to the huddle UI. The previous deny-all policy on
on_new_window meant window.open returned null, and Slack's caller
aborts the huddle flow with a beacon/error when the handle is falsey.

Adds popup_should_stay_in_app() with a narrow per-provider allowlist:
- Slack: about:blank + app.slack.com / *.slack.com hosts
- All other providers / URLs: existing deny-and-hand-to-system-browser
  behavior is preserved

Popups matching the allowlist return NewWindowResponse::Allow so CEF's
default handling spawns an in-app child window with a real handle.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-21 18:52:00 +05:30
..