diff --git a/inbox/jingle-session-history.xml b/inbox/jingle-session-history.xml new file mode 100644 index 000000000..b9c18dbd3 --- /dev/null +++ b/inbox/jingle-session-history.xml @@ -0,0 +1,424 @@ + + +%ents; +]> + + +
+ Jingle Session History + This specification defines an archiveable message event for representing Jingle call history, including missed calls, completed calls, Total Conversation calls, and optional recording or transcript metadata. + &LEGALNOTICE; + xxxx + ProtoXEP + Standards Track + Standards + Council + + XMPP Core + XEP-0030 + XEP-0166 + XEP-0167 + XEP-0301 + XEP-0313 + XEP-0334 + XEP-0353 + XEP-0447 + + + + jingle-session-history + + jingle + history + calls + mam + accessibility + + + Edward + Tie + info@tiedragon.com + + + 0.0.1 + 2026-06-15 + et +

Initial ProtoXEP submission.

+
+
+ + +

&xep0166; defines Jingle session signalling, and &xep0353; defines message-based Jingle initiation. These protocols describe how a call is proposed and negotiated, but they do not define a compact, archiveable call-history entry for the user-visible conversation timeline.

+

Many messaging clients show entries such as "missed video call", "voice call, 3:12", or "Total Conversation call, 12:44". Such entries need to synchronize across devices and may be archived by &xep0313;, but raw media streams do not belong in MAM.

+

This specification defines a jingle-history element carried inside an ordinary XMPP message stanza. The element describes the outcome and metadata of a Jingle session. It does not store media streams, recordings, RTP packets, WebRTC data channel contents, or location history.

+
+ + +

This specification is designed to meet the following requirements.

+
    +
  1. Represent missed, declined, cancelled, failed, busy, timeout and completed Jingle calls as normal message events.
  2. +
  3. Represent audio, video, real-time text, captions, screen sharing, file and location media types in call summaries.
  4. +
  5. Allow Total Conversation calls to be shown as one timeline event without storing audio or video in MAM.
  6. +
  7. Support local-only call history for privacy-sensitive clients.
  8. +
  9. Support MAM-synchronized call history by using ordinary messages with fallback body text.
  10. +
  11. Represent optional recording and transcript availability as metadata only.
  12. +
  13. Support group calls and emergency-call profiles without requiring servers to understand Jingle media.
  14. +
  15. Remain compatible with clients that ignore the extension by requiring a readable message body.
  16. +
+
+ + +
+ +
Call-history event
+
An ordinary message stanza containing a jingle-history element.
+
+ +
Recording metadata
+
Information that a recording may exist elsewhere. The recording itself is not carried by this specification.
+
+ +
Total Conversation call
+
A call containing audio, video and real-time text as one conversational unit.
+
+ +
Local-only history
+
A call log stored only by a client and not sent as an XMPP message.
+
+
+
+ + + +

A user receives a video call but does not answer before the call times out. The caller or callee stores a message event that can be shown as "Missed video call".

+
+ +

Two users complete a call containing audio, video and real-time text. The client stores one summary event with the Jingle session ID, media list, duration and transcript availability.

+
+ +

A service deployment records calls only after explicit consent or policy-based rules. The call-history message records that a recording is available in cloud storage, while the file itself is described using a file-sharing protocol such as &xep0447;.

+
+ +

A client may maintain a private local call log for failed or temporary calls. In that mode the client MUST NOT send the jingle-history message and MUST NOT rely on MAM to store the event.

+
+
+ + +

The primary element is jingle-history qualified by the namespace urn:xmpp:jingle-history:0. It is carried as a child of a normal XMPP message stanza.

+ + Missed video call + + + +]]> +

A client that does not understand this extension will still display the message body. A server that supports &xep0313; can archive the message as ordinary message history.

+
+ + +

An entity supporting this specification MUST advertise the following discovery feature using &xep0030;:

+ +]]> +

Entities MAY advertise the following additional features when they implement the corresponding metadata profile:

+ + + +]]> +
+ + +

The jingle-history element has the following attributes.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AttributeRequiredValuesMeaning
sidyesJingle session IDThe session ID from the related Jingle session.
directionyesincoming, outgoingDirection from the perspective of the archiving client.
dispositionyescompleted, missed, declined, cancelled, failed, busy, timeout, replaced, emergencyUser-visible outcome of the session.
mediayesSpace-separated tokens: audio, video, rtt, captions, screen, file, locationMedia or contextual modalities associated with the session.
profilenoaudio, video, total-conversation, group-call, emergency, screen-share, customHigh-level call profile.
startednoISO 8601 timestampWhen the relevant call attempt or session started.
endednoISO 8601 timestampWhen the call attempt or session ended.
durationnoNon-negative integer secondsCall duration in seconds.
recordingnonone, local, cloud, external, policy-basedWhether a recording exists and where it is expected to be stored.
transcriptnonone, local, cloud, external, policy-basedWhether a transcript exists and where it is expected to be stored.
encryptednotrue, falseWhether referenced recording or transcript material is known to be encrypted.
consentnonone, initiator, all-participants, policy-basedConsent state for recording or transcript storage.
retentionnoToken such as 30d, 1y or policyKnown retention period or policy label.
+

Unknown attributes and child elements MUST be ignored by receivers. Implementations SHOULD preserve unknown attributes and child elements when rewriting or exporting history, where practical.

+
+ + +

The recording and transcript attributes are intentionally summary fields. They do not contain the recording, transcript or file bytes.

+

A sender MAY include more detailed metadata using child elements in optional namespaces.

+ + + + +]]> +

If a recording or transcript file is shared with the user, the file metadata SHOULD be expressed using an existing file-sharing specification such as &xep0447; elsewhere in the same message or in a related message. This specification does not define a new file-transfer mechanism.

+
+ + +

In synchronized mode, the sender builds an ordinary message with a fallback body and a jingle-history element. The sender SHOULD include &xep0334; store when it wants the event to be archiveable.

+

In local-only mode, a client MUST NOT send the call-history message. The event is stored only by that client and is outside the scope of &xep0313;.

+

MAM stores event metadata only. It MUST NOT be used as a container for raw audio, raw video, RTP packets, WebRTC streams or full call recordings.

+
+ + +

Clients SHOULD render concise timeline summaries. Examples include:

+ +

Clients SHOULD show recording, transcript, encryption, consent and retention indicators when they are known.

+
+ + +

For group calls, the jingle-history element MAY be sent in a groupchat message to the room. For this version, group-call support is limited to the room JID implied by the message route, sid, disposition, media, profile and duration.

+ + Group video call ended, 22:00 + + +]]> +
+ + +

Emergency call history MAY be represented with profile='emergency' or disposition='emergency'. This specification is not an emergency-services routing or legal compliance protocol.

+ + Emergency Total Conversation call started + + +]]> +

Precise location MUST NOT be placed directly in jingle-history. If location is needed, it should be represented using a secure location protocol or a separate call-scoped location event.

+
+ + +
    +
  1. A fallback message body is REQUIRED.
  2. +
  3. Receivers MUST ignore malformed or unknown optional values instead of failing the whole message.
  4. +
  5. Clients MUST NOT automatically record calls because this extension is present.
  6. +
  7. Clients MUST NOT automatically upload transcripts because this extension is present.
  8. +
  9. Clients SHOULD use stable message IDs when possible so related reactions, corrections or display markers can refer to call-history events.
  10. +
+
+ + +

This specification is motivated by accessibility and Total Conversation use cases. Clients SHOULD expose the media list and profile to assistive technologies, including whether real-time text or captions were part of the call.

+

Clients SHOULD avoid using color alone to represent missed, failed, emergency, recorded or transcript-available states.

+
+ + +

Remote jingle-history elements are untrusted input. Clients MUST validate required attributes, ignore invalid enum values and avoid allocating excessive memory for unusually large attributes.

+

Recording URLs and transcript URLs, if any, are outside this specification. Clients MUST treat any related file references as untrusted until verified by the file-sharing and encryption layer.

+

This specification does not provide end-to-end encryption. Deployments SHOULD use encrypted transport and end-to-end encryption where available.

+
+ + +

Call history can reveal sensitive social patterns, accessibility needs, emergency use, contact availability and communication habits. Clients SHOULD offer a local-only mode and retention controls.

+

Default behavior SHOULD store call-log metadata only. Audio or video recording requires explicit consent unless a clearly visible legal, emergency or service policy applies.

+

For group calls, implementations SHOULD support all-participant consent before recording or cloud transcript storage.

+
+ + +

This document requires no interaction with the Internet Assigned Numbers Authority.

+
+ + +

This specification requests registration of the following namespaces.

+ +

This specification requests registration of the following service discovery features.

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +]]> + +
diff --git a/inbox/total-conversation-profile.xml b/inbox/total-conversation-profile.xml new file mode 100644 index 000000000..edcaa9379 --- /dev/null +++ b/inbox/total-conversation-profile.xml @@ -0,0 +1,334 @@ + + +%ents; +]> + + +
+ Total Conversation Profile + This specification defines a profile for XMPP clients that present audio, video, real-time text, captions, files and optional call-scoped context as one Total Conversation experience. + &LEGALNOTICE; + xxxx + ProtoXEP + Standards Track + Standards + Council + + XMPP Core + XEP-0030 + XEP-0080 + XEP-0166 + XEP-0167 + XEP-0176 + XEP-0215 + XEP-0301 + XEP-0313 + XEP-0343 + XEP-0353 + XEP-0363 + XEP-0479 + XEP-0517 + + + + total-conversation-profile + + accessibility + jingle + rtt + webrtc + profile + + + Edward + Tie + info@tiedragon.com + + + 0.0.2 + 2026-07-01 + et +

Update synchronized real-time text references after Jingle Synchronized Real-Time Text was accepted as XEP-0517.

+
+ + 0.0.1 + 2026-06-15 + et +

Initial ProtoXEP submission.

+
+
+ + +

Total Conversation is a user experience where real-time text, audio and video are available together as one conversation. XMPP already contains many of the necessary building blocks: &xep0301; for chat-oriented real-time text, &xep0166; and &xep0167; for Jingle calls, &xep0517; for Jingle synchronized real-time text, &xep0176; and &xep0215; for connectivity, and &xep0313; for archive retrieval.

+

However, an implementation can support several of these pieces and still fail to provide a coherent Total Conversation. The user may see audio and video in one call surface, while real-time text is sent as unrelated chat messages. Captions may be indistinguishable from typed text. Location may be global presence instead of call-scoped consent. Archives may not show whether text was synchronized with the call or merely a fallback.

+

This specification defines a profile claim and conformance model for XMPP Total Conversation clients. It composes existing XMPP RFCs and XEPs, uses &xep0517; for synchronized real-time text, and references Jingle extensions for call-scoped location.

+
+ + +

This specification is designed to meet the following requirements.

+
    +
  1. Define what a client means when it claims Total Conversation support.
  2. +
  3. Keep normal XMPP messaging, real-time text and Jingle calls interoperable with existing XEPs.
  4. +
  5. Define progressive conformance levels from ordinary chat to synchronized Total Conversation.
  6. +
  7. Make fallback paths visible to users and assistive technologies.
  8. +
  9. Allow clients to discover supported modalities without inventing a new account or media system.
  10. +
  11. Describe how archives preserve the difference between synchronized text and fallback text.
  12. +
  13. Support accessibility, relay, interpreter, captioning and emergency-readiness experiments without claiming to be an emergency-services standard.
  14. +
+
+ + +
+ +
Total Conversation
+
A conversation containing simultaneous audio, video and real-time text.
+
+ +
Synchronized text
+
Real-time text, captions, translation or interpreter text bound to the same Jingle session as audio or video.
+
+ +
Fallback text
+
Real-time text sent outside the Jingle session, for example using &xep0301; in normal message stanzas.
+
+ +
Assistive context
+
Conversation metadata such as caption source, call-scoped location, interpreter state, language, fallback state and consent state.
+
+
+
+ + +

This specification does not replace audio, video, message, archive, file-transfer or encryption specifications. It defines how those specifications fit together when the user-visible product claims Total Conversation support.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ProtocolRole in this profile
&xep0301;Live text and fallback RTT outside Jingle.
&xep0517;Real-time text, captions, translation or interpreter text bound to the same Jingle session as audio/video.
&xep0166; and &xep0167;Jingle signalling and RTP audio/video descriptions.
&xep0176;, &xep0215; and &xep0343;Connectivity and WebRTC data channel signalling where applicable.
&xep0353;Message-based Jingle proposal and ringing flow.
&xep0313;Archive retrieval for messages, metadata and call-history events.
&xep0363; and &xep0447;File upload and file metadata for attachments, voice messages, video messages or optional recordings.
&xep0479;General XMPP client compliance baseline.
+

A client MUST NOT claim this profile as a replacement for the underlying protocol support. For example, advertising the profile without supporting Jingle does not imply audio/video calling.

+
+ + +

The profile defines progressive levels. A client MUST NOT advertise a level higher than it can negotiate and present to the user.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
LevelNameRequired behavior
tc-0Core conversationAuthenticated XMPP messaging, presence and service discovery.
tc-1Live text conversationtc-0 plus &xep0301; real-time text and readable message body fallback.
tc-2Audio/video conversationtc-1 plus Jingle call proposal and audio/video session signalling.
tc-3Synchronized Total Conversationtc-2 plus real-time text or captions negotiated as part of the same Jingle session using &xep0517; or a compatible future profile.
tc-4Assistive contexttc-3 plus consent-gated call-scoped context such as location, fallback state, caption source and service metadata.
+
+ + +

An entity supporting this profile MUST advertise the base profile feature using &xep0030;:

+ +]]> +

The base feature says that the entity understands the profile family. Actual level and modalities SHOULD be carried in a service discovery extension form.

+ + + + + + urn:xmpp:total-conversation:0 + + + tc-3 + + + chat + rtt + audio + video + caption + + + xep-0301 + xep-0363 + + + +]]> +

If a client advertises urn:xmpp:total-conversation:0 but omits one of the underlying features, peers MUST treat that omitted part as unsupported.

+
+ + +

Call-scoped media and context MUST be bound by at least the peer JID, Jingle session ID and Jingle content name. A peer JID alone is not sufficient because a user can have multiple devices, browser sessions, simultaneous calls or fallback chat paths.

+ RTP audio + content video -> RTP video + content text -> XEP-0517 synchronized real-time text or captions + content location -> optional call-scoped location + content file -> optional session-bound file transfer +]]> +

If &xep0517; synchronized text is not negotiated but fallback &xep0301; is used, the user interface MUST show that the text is fallback text and not synchronized Jingle text.

+
+ + + +

A deaf or hard-of-hearing user starts a call where sign-language video, audio and typed real-time text are visible together. The client advertises tc-3 because the text is part of the call session.

+
+ +

A peer supports audio/video Jingle but not synchronized Jingle text. The client continues the call and uses &xep0301; for fallback RTT. The user interface shows fallback state.

+
+ +

A user joins a call with a relay, captioner or interpreter service. The client identifies caption source and language when known and keeps the assistive text visibly associated with the call.

+
+ +

A client can represent an emergency-oriented Total Conversation profile using audio, video, real-time text, captions and call-scoped location. This profile does not define PSAP routing or legal emergency-service requirements.

+
+
+ + +

Archives MUST NOT erase whether text was synchronized, call-bound or fallback. If an archive contains call-bound text or call summaries, clients SHOULD retain enough metadata to show the Jingle session ID, content name, text source and synchronization state.

+

&xep0313; MAY store ordinary messages, real-time text fallback messages and archiveable call-history events. It MUST NOT be used to store raw RTP packets, WebRTC media streams, camera output or microphone output.

+

Optional recordings, video messages, voice messages and transcript files are file/media objects and should use existing file-sharing or upload specifications with appropriate consent, encryption and retention metadata.

+
+ + +

A Total Conversation client MUST make the following states visible to the user and available to assistive technologies where applicable.

+ +

Color alone MUST NOT be the only indicator for fallback, recording, emergency, muted, failed or caption-source state.

+
+ + +
    +
  1. A client MUST NOT advertise tc-3 unless it can bind real-time text or captions to the same Jingle session as audio or video, for example by negotiating &xep0517;.
  2. +
  3. A client MUST NOT advertise tc-4 unless it can represent assistive context and user consent state.
  4. +
  5. Fallback paths are allowed but MUST be visible.
  6. +
  7. This profile is not a codec registry. Audio and video codec negotiation remains delegated to the relevant Jingle RTP and WebRTC mechanisms.
  8. +
  9. This profile is not an emergency-services standard.
  10. +
+
+ + +

This profile exists primarily because accessibility requires the conversation to be coherent. Deaf, hard-of-hearing, speech-impaired and mixed-hearing groups need to know whether text is typed by the other person, generated by ASR, entered by a captioner, translated, interpreted, delayed, synchronized to the call or fallback outside the call.

+

Implementations SHOULD provide keyboard-operable call, text, media, file and location controls; accessible names for icon-only controls; focus order that follows the conversation flow; sufficient contrast; and visible fallback warnings that do not rely on color alone.

+
+ + +

This profile can combine sensitive media, text, files, location and service metadata. Implementations SHOULD use encrypted transport and end-to-end encryption where available.

+

Downgrade attacks are important. If synchronized text falls back to ordinary &xep0301;, or call-scoped location falls back to global PEP location, the user MUST be informed.

+

Received captions, ASR text, translations and location data MUST NOT be treated as verified facts unless additional trust and verification mechanisms exist.

+
+ + +

Total Conversation can expose partial text before a message is final, live speech through captions, contact availability, file metadata, location and call participation across multiple devices.

+

Clients MUST ask for user consent before sending live location or enabling assistive services that involve third parties such as ASR, captioning, translation, relay or interpreter providers.

+

Location sharing MUST stop when the call ends, when the user stops sharing, when permission is revoked, or when the source becomes stale.

+
+ + +

This document requires no interaction with the Internet Assigned Numbers Authority.

+
+ + +

This specification requests registration of the following service discovery feature:

+ +

This specification requests registration of the following XEP-0128 form type:

+ +

Initial form fields are:

+ + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeValuesMeaning
tc#levellist-singletc-0, tc-1, tc-2, tc-3, tc-4Highest Total Conversation level the entity can honestly negotiate.
tc#modalitieslist-multichat, rtt, caption, audio, video, file, location, translation, interpreterConversation modalities the entity can present or send.
tc#fallbackslist-multiProtocol identifiers such as xep-0301, xep-0363 and xep-0080-pepFallback paths the entity can use and expose to users.
+
+ + +

This profile defines a discovery feature and XEP-0128 data form, but no standalone XML payload.

+
+