dc1915bb43
Live presence (fixes stale in-call/status until refresh — impossible in apps): - server broadcasts a user's status over the chat socket on connect/disconnect, call join/leave, and status change (chat.js broadcastPresence; signaling + routes hooks). - client onPresence() updates the contact dot + open-chat header live. Chat delivery ticks (#6): chat-list row now mirrors the thread (delivered→double grey, read→blue) via a new 'with' field on the delivered relay + onChatRead/onChatDelivered. Call fixes: no bogus 'host handed over' when a 1:1 call ends (leaveMeeting forced); branded call-connecting + chat-thread loaders; header subtitle tracks live call state. Notifications: web notify + sw.js use sender/group DP + brand icon (not old wordmark); desktop shell drops Web Push so only the single native toast fires (#5). Brand: master icon/splash/loaders wired everywhere (PWA/favicon/apple-touch/.ico), branded login (blue + gold CTA), branded toasts (BZToast) on all pages, Electron splash. Desktop: dev auto-targets localhost (packaged→prod); version 0.1.3 with new multi-size icon; dropped unused node-notifier; removed home-mockup.html. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2.7 KiB
2.7 KiB
Biz Connect Desktop — packaging & updates
How updates reach installed apps (two kinds)
- Web / UI / feature / bug-fix changes → instant, no app update.
The app loads the live UI from
https://remote.bizgaze.com. Deploy the server (./deploy.sh) and every installed desktop app has it on next open/reload. This is ~95% of all changes. - Native shell changes (
main.js/preload.js) → auto-update. Baked into the.exe. Shipped via electron-updater against a self-hosted feed onhttps://remote.bizgaze.com/downloads/. On launch (and every 6h) the app checkslatest.yml, downloads a newer version in the background, and installs on next restart.
Build an installer
cd desktop
npm install
npm run dist # electron-builder → dist/ (Win: NSIS .exe + latest.yml + .blockmap)
Output in desktop/dist/:
Biz Connect Setup <version>.exe— the installerlatest.yml— the update manifest electron-updater reads*.blockmap— enables delta downloads
A PACKAGED build points at production (main.js defaults SERVER_URL to
https://remote.bizgaze.com when app.isPackaged); running from source in dev defaults to
http://localhost:8090. SERVER_URL overrides either.
Publish a release (self-hosted feed)
- Bump
versionindesktop/package.json(semver — electron-updater compares this). npm run dist.- Upload all of
dist/(the.exe,latest.yml,.blockmap) to whatever the server serves athttps://remote.bizgaze.com/downloads/.- Behind Nginx Proxy Manager: point
/downloads/at a static folder, or add a static route in the app. The files are large binaries — host them on disk/volume, not git.
- Behind Nginx Proxy Manager: point
- Installed apps pick it up within 6h (or on next launch).
First release: users install the
.exemanually (download link on your site). Every release after that updates automatically.
Code signing (add when the cert is ready)
Unsigned installers work but trip Windows SmartScreen ("More info → Run anyway"). To sign:
- Azure Trusted Signing (recommended): set
win.azureSignOptions(or use the@electron/windows-signpath) with the Trusted Signing account/endpoint. Cloud, no token. - EV/OV cert (.pfx or token): set env
CSC_LINK(path to .pfx) +CSC_KEY_PASSWORD, or configure a hardware-token signing tool. electron-builder signs automatically. Once signing is on, auto-updates are silent (no SmartScreen).
App identity
appId = com.bizgaze.connect.desktop; the NSIS installer registers this as the
AppUserModelID and creates a Start-menu shortcut — which is also the prerequisite for the
Phase D inline-reply Windows Toast notifications (see ../CLIENTS.md).