Localize WhatsApp access-grant approvals via t() and push Host language from the UI on load and locale change.
Co-authored-by: Cursor <cursoragent@cursor.com>
Surface chat/access-list contacts as selectable targets with clearer nicknames, and keep conversation peers usable for ops schedulers.
Co-authored-by: Cursor <cursoragent@cursor.com>
Plugins inject conversation.session.header.actions; resolve sessionId back to the bound chat and render nickname/phone or group title.
Co-authored-by: Cursor <cursoragent@cursor.com>
Access grants can pin an agentPreset on direct members and groups; new sessions resolve override over the bot-global preset.
Co-authored-by: Cursor <cursoragent@cursor.com>
Use a shared three-column grid for admin/member rows, and inherit DSH color-scheme so channel/command dropdowns stay readable.
Co-authored-by: Cursor <cursoragent@cursor.com>
Use flex-wrap rows so phone, command, and delete stay tight and soft-wrap only when the panel is too narrow.
Co-authored-by: Cursor <cursoragent@cursor.com>
Refresh missing/forced group titles via groupMetadata and participating catalog so cards show real names instead of bare JIDs.
Co-authored-by: Cursor <cursoragent@cursor.com>
Fetch groupMetadata.subject on @mentions for group cards; render contact pushName under phone rows so admins are not staring at bare numbers.
Co-authored-by: Cursor <cursoragent@cursor.com>
Suggestions only open while focused and hide exact matches; nested group admins/members drop extra frames; pending and actions show group names.
Co-authored-by: Cursor <cursoragent@cursor.com>
Settings button only forwarded accessPolicy, so the graded ACL page always opened empty; also refresh grant from connection.status on mount.
Co-authored-by: Cursor <cursoragent@cursor.com>
Client normalizeBot dropped accessGrant/groupSessionScope, so pending, contacts, and group cards never appeared. Also record contacts only on DM/@, auto-create group buckets on @, and add one-click grant buttons.
Co-authored-by: Cursor <cursoragent@cursor.com>
Row keys included the phone value, so each character remounted the input; also sync draft from serialized grant content, not object identity.
Co-authored-by: Cursor <cursoragent@cursor.com>
Ops bots now isolate per-speaker Harness sessions in groups, with a
settings/RPC toggle to restore shared chat sessions when needed.
Co-authored-by: Cursor <cursoragent@cursor.com>
Keep all IM channels; rename package/cordis id for local profile install without colliding with the community plugin. Document fork intent in FORK.md.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add chatId and threadId source fields across all nine IM channels, update UI/docs/tests, reconcile the latest main branch, and credit @Chan-0312 as a contributor.
Add profile-scoped npm updates for Desktop and Web, protect source installations, and keep restarts manual. Cover stale status recovery, request races, and dialog focus with regression tests.
Verified with npm run check (1626 tests) and isolated Desktop/Web npm installation flows.
Refs #61