typing client tag

Copyright © 2017 MuffinMedic

Copyright © 2020 James Wheare <james@irccloud.com>

Unlimited redistribution and modification of this document is allowed provided that the above copyright notice and this permission notice remains intact.

Introduction πŸ”—

This specification defines a client-only message tag to indicate the current typing status of users in channels and private messages.

Motivation πŸ”—

This tag provides a means of communicating further context to a conversation. Knowing that someone is typing can allow users to hold off on sending messages that simply ask for feedback or check that someone has seen their message. Conversations can have an increased sense of immediacy when participants are aware that others are in the process of replying.

Architecture πŸ”—

For the purpose of this specification, a message is defined as a PRIVMSG, NOTICE, TAGMSG, or batch end.

Dependencies πŸ”—

Clients wishing to use this tag MUST negotiate the message-tags capability with the server.

Format πŸ”—

A typing notification is represented by a TAGMSG command sent with a typing tag using the client-only prefix + and possible values of active, paused, and done.

Input event handlers MUST be throttled so that any typing notification is not sent within 3 seconds of another one for a given target.

After receiving a typing notification, clients SHOULD assume the sender is still typing until any of the following conditions is met:

Privacy Considerations πŸ”—

This section is non-normative.

Typing status indicators introduce additional privacy concerns for users who may not wish to inform others of when they are creating or replying to a message. Clients are recommended to provide appropriate privacy controls when enabling this feature. Standard implementation guidelines on message tag moderation considerations also apply to servers.

Client implementation considerations πŸ”—

This section is non-normative.

To prevent unnecessary distraction, clients might choose to not display typing notifications for their own nickname, while still sending them to others.

Examples πŸ”—

This section is non-normative.

Client begins typing

Client: @+typing=active :nick!ident@host TAGMSG target

Client begins typing and then stops entering new text without clearing the text-input field

Client: @+typing=paused :nick!ident@host TAGMSG target

Client begins typing then clears the text-input field without sending the message

Client: @+typing=done :nick!ident@host TAGMSG target

Software supporting +typing: IRCCloud, PIRC.pl web client, Moon Moon, BitBot