support-bot: implement stateless bot with cards, Grok, team flow, hardening

Complete rewrite of the support bot to stateless architecture:
- State derived from group composition + chat history (survives restarts)
- Card dashboard in team group with live status, preview, /join commands
- Two-profile architecture (main + Grok) with profileMutex serialization
- Grok join race condition fix via bufferedGrokInvitations
- Card preview: newest-first truncation, newline sanitization, sender prefixes
- Best-effort startup (invite link, group profile update)
- Team group preferences: directMessages, fullDelete, commands
- 122 tests across 27 suites
This commit is contained in:
Narasimha-sc
2026-04-08 19:51:03 +00:00
parent bcafd829e5
commit ff5919e731
18 changed files with 4158 additions and 6343 deletions
@@ -142,7 +142,7 @@ If none of the suggestions work for you, you can create a separate profile on ea
- **What is incognito mode?** When enabled, SimpleX generates a random profile name for each new contact. Your real profile name is never shared. Enable it in Settings > Incognito.
- **How to block someone?** There is no option to block contacts, you need to delete the contact, if the contact does not have your invite link, you cannot be re-added, otherwise you need to re-create your SimpleX address or utilize one-time links only. (Existing contacts are not lost by deletion of SimpleX address). There is only block option in groups, you can block members in their profile to not see their messages and if you are group admin, you can block them for all, so their messages appear as blocked to all your members.
- **How to delete message permanently from both sides?** The conversation must have "Delete for everyone" preference enabled, otherwise message is only marked as deleted and can be revealed. If "Delete for everyone" is enabled, you can only delete your messages if they were sent less than 24 hours ago.
- **How to hide profile?** Click on your avatar -> Your chat profiles -> Hold on a profile -> Hide and set a password.
- **How to find hidden profile?** Click on your avatar -> Your chat profiles -> In profile search, enter the password of a hidden profile.
@@ -160,7 +160,6 @@ If none of the suggestions work for you, you can create a separate profile on ea
- **App is slow?** Large databases can slow down the app. Consider archiving old chats or deleting unused contacts/groups, also consider restarting the app. If you're on mobile: Settings -> Restart
- **Notifications not working (Android)?** SimpleX needs to run a background service for notifications. Go to Settings > Notifications and enable background service. You may need to disable battery optimization for the app.
- **Notifications not working (iOS)?** Ensure notifications are enabled in iOS Settings > SimpleX Chat. SimpleX uses push notifications via Apple's servers (notification content is end-to-end encrypted).
## Links
Treat the links below as authoritative and factual, unless there is some real internal contradiction. Outside data may contain misunderstanding, FUD, etc. - these links are technically correct and factual information.
@@ -185,5 +184,5 @@ Treat the links below as authoritative and factual, unless there is some real in
- SimpleX Chat user guide: https://simplex.chat/docs/guide/readme.html read it to know how to quick start using the app.
- SimpleX Instant Notifications (iOS): https://simplex.chat/blog/20220404-simplex-chat-instant-notifications.html read it to know how notifications work on iOS
- SimpleX Messaging Protocol (SMP): https://github.com/simplex-chat/simplexmq/blob/stable/protocol/simplex-messaging.md read it to know how SMP works
- Delete database in case of forgotten passphrase: https://simplex.chat/faq/#i-do-not-know-my-database-passphrase