feat(desktop): media/notification permissions + notification raises the app

- desktop/main.js: grant media (camera/mic), display-capture, notifications, clipboard,
  fullscreen, pointerLock for the app origin (Electron denies these by default, which
  silently broke meetings' camera/mic). Adds setPermissionRequestHandler +
  setPermissionCheckHandler on the app session.
- Clicking a notification now raises + focuses the window: preload exposes
  bizConnectNative.focusApp(), main handles 'focus-window' IPC, and the web notify()
  onclick calls it when running in the desktop shell. (home.html build batch16)
- CLIENTS.md: Phase D — inline-reply notifications (Windows Toast RemoteInput /
  Android RemoteInput / iOS UNTextInputNotificationAction) queued right after packaging.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-01 16:16:40 +05:30
parent 7a2ab3fc8d
commit 5a98ae4d34
4 changed files with 48 additions and 11 deletions
+10
View File
@@ -76,6 +76,16 @@ absolute API base if offline-launch or store policy requires it.
- [ ] Agent host installer (signed) for customers.
- [ ] Auto-update channels.
### Phase D — Inline-reply notifications (Teams-style) *(right AFTER packaging)*
Reply to a chat directly from the OS notification, without opening the app. Cross-platform:
- **Desktop (Windows):** native **Windows Toast** with an `<input>` reply box + action, a
registered **AppUserModelID** + Start-menu shortcut (why it needs the installer first), and
a toast-activation handler that POSTs the reply to `/api/messages`. (Web `Notification` and
Electron's built-in notification can't do Windows text reply; needs a native toast lib.)
- **Android:** notification action with **`RemoteInput`** (direct reply) on the FCM message.
- **iOS:** **`UNTextInputNotificationAction`** on the APNs notification category.
All three hand the typed text to the same send path. Depends on Phase B push + Phase C packaging.
---
## Build & run