Skip to content

πŸ›‘οΈ Overview: Classified conversationsΒ #18679

Description

@nickvergessen

Classified conversations

Backend support for "classified" conversations is implemented server-side. The web frontend and mobile clients need to hide/adapt settings and options. A conversation is classified when TalkRoom.attributes & 4 (the CLASSIFIED bit) is set. Gate all of this behind the classified-conversations capability.

Detection

  • Detect classified conversations via TalkRoom.attributes & 4 (CLASSIFIED bit); only apply this behavior when the classified-conversations capability is present.

Hide / disable settings & actions in classified conversations

  • Hide "Message forwarding" action (forward-to-conversation / forward-to-note-to-self) on all messages. (frontend-only, no backend block)
  • Hide "Reply privately" action on messages. (backend returns 403, but hide the action)
  • Render image/file messages as blurhash placeholder only; do not auto-load the inline preview β€” clicking still opens the preview/viewer. (frontend-only)
  • Hide/lock the "Sensitive conversation" toggle and show it as permanently on (backend rejects un-marking with 400). (forced sensitive for everyone)
  • Hide SIP dial-in/out settings (backend rejects enabling with 400).
  • Hide "Allow guests" / make-conversation-public / share-link options (backend blocks public type).
  • Hide federation and email options
  • Hide breakout rooms feature
  • Hide "Open conversation" (listable/joinable) settings (backend rejects with 400).
  • Hide the call-recording start button / recording-consent option (backend rejects with 400).
  • Hide the "Start live transcription" action (backend rejects with 400 classified).
  • Hide the live-translation / target-language picker (backend rejects with 400 classified).
  • Hide the "Download participants list" action (backend returns 403).
  • Hide the "Summarize chat" / unread-summary action (backend rejects with 400 classified).
  • Hide Bots and Matterbridge settings (backend rejects with 400 classified).
  • Add a "πŸ›‘οΈ Classified conversation" (Shield icon + text) red button in the top bar similar to the "Meeting 16. July" meeting hint. *In the planning meeting it was said it's okay if this button is also blink-fading similar to the recording icon to create awareness.

Auto-delete-after-call ("keep" action)

  • Add OBJECT_TYPE_CLASSIFIED ('classified') to the hasRetentionPeriod() check so the "Keep conversation" shortcut shows on the call_ended system message in classified conversations.
  • Wire that shortcut to the existing DELETE /room/{token}/object (unbind) call β€” it flips the room to classified_persist and stops auto-deletion permanently.
  • Treat objectType === 'classified' as "pending auto-deletion" and 'classified_persist' as "kept" for any retention/expiry UI hints (optional: surface the config.conversations.retention-classified seconds value).

Metadata

Metadata

Assignees

No one assigned

    Fields

    No fields configured for Overview.

    Projects

    Status
    πŸ“„ To do (~10 entries)

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions