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>
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 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