Files
BizGaze_Remote/desktop
Sravan 70a776fa6c fix: real-time bg messages, join clears invite, richer seen-by, nicer badge (0.1.10/batch63)
1. Notifications/messages lagged when the desktop window was backgrounded —
   Electron throttles hidden renderers by default, stalling the chat WS's
   onmessage + timers. Set backgroundThrottling:false → real-time in the tray.
   (Transport is WebSocket; no Firebase needed.)
2. Joining a call via the header Join button left the Join/Decline invite popup
   on screen — enterMeeting now dismisses the invite (and stops the ring).
3. Seen-by is now "Message info": real contact DPs, a "Not seen yet" list for
   groups, and dark lettering (white-on-pastel initials were invisible).
4. App-icon unread badge: red→pink gradient pill with a white ring + shadow,
   drawn at 2x, instead of a flat red disc.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-10 12:51:14 +05:30
..

Biz Connect — Desktop client

Electron shell that loads the live Connect web UI and adds native screen capture. See the overall plan in ../CLIENTS.md.

Run (dev = local testing)

npm install
npm start                                   # dev auto-targets http://localhost:8090 (your local server)
SERVER_URL=https://remote.bizgaze.com npm start   # …or point dev at production to compare

npm start IS the local desktop test — no separate "local" installer needed. In dev (unpackaged) the shell defaults to the local server; a PACKAGED installer defaults to production. SERVER_URL overrides either. (Bash/Git-Bash syntax above; in PowerShell: $env:SERVER_URL='…'; npm start.)

Build installers

npm run dist        # electron-builder → Win NSIS / Mac dmg / Linux AppImage

Signed, trusted installers need certificates:

  • Windows: an EV (or OV) code-signing certificate.
  • macOS: Apple Developer ID cert + notarization (CSC_LINK, APPLE_ID, APPLE_APP_SPECIFIC_PASSWORD).

Notes

  • The window loads ${SERVER_URL}/home; relative /api and /ws URLs work because the origin is the server itself — no web-code changes.
  • setDisplayMediaRequestHandler in main.js is what makes "Share Screen" work in Electron; it currently defaults to the primary display. Swap in a source-picker for production.
  • The session is persisted (persist:bizconnect) so login survives restarts.
  • window.__NATIVE__ === 'desktop' is exposed for the web UI to feature-detect.