<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/doap/xmpp-style.xsl" type="text/xsl"?>
<rdf:RDF
    xmlns='http://usefulinc.com/ns/doap#'
    xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'
    xmlns:xmpp='https://linkmauve.fr/ns/xmpp-doap#'
    xmlns:schema='https://schema.org'
>
  <Project>
    <name>Xepher</name>

    <created>2021-06-26</created>

    <shortdesc xml:lang='en'>Xepher — WeeChat XMPP client</shortdesc>
    <shortdesc xml:lang='fr'>Xepher — Client XMPP pour WeeChat</shortdesc>

    <description
            xml:lang='en'
        >WeeChat plugin for accessing XMPP, written in C++23. Requires WeeChat 4.3 or newer; source builds require matching development headers and CMake 3.22 or newer. This fork includes bug fixes and feature enhancements.</description>

    <homepage
            rdf:resource='https://ekollof.github.io/xepher/'
        />
    <bug-database
            rdf:resource='https://github.com/ekollof/xepher/issues'
        />
    <developer-forum rdf:resource='xmpp:xepher@conference.hackerheaven.org?join' />
    <support-forum rdf:resource='xmpp:xepher@conference.hackerheaven.org?join' />

    <license
            rdf:resource='https://github.com/ekollof/xepher/blob/master/LICENSE'
        />

    <language>en</language>

    <programming-language>C++</programming-language>

    <os>Linux</os>
    <os>macOS (best-effort)</os>
    <os>FreeBSD (best-effort)</os>
    <os>OpenBSD (best-effort)</os>
    <os>NetBSD (best-effort)</os>

    <category
            rdf:resource='https://linkmauve.fr/ns/xmpp-doap#category-client'
        />

    <repository>
      <GitRepository>
        <browse
                    rdf:resource='https://github.com/ekollof/xepher'
                />
        <location
                    rdf:resource='https://github.com/ekollof/xepher.git'
                />
      </GitRepository>
    </repository>

    <implements rdf:resource='https://xmpp.org/rfcs/rfc6120.html' />
    <implements rdf:resource='https://xmpp.org/rfcs/rfc6121.html' />
    <implements rdf:resource='https://xmpp.org/rfcs/rfc6122.html' />
    <implements rdf:resource='https://xmpp.org/rfcs/rfc7590.html' />

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0027.html' />
        <xmpp:status>complete</xmpp:status>
        <xmpp:version>1.4.0</xmpp:version>
        <xmpp:note
                    xml:lang='en'
                >Current Jabber OpenPGP Usage (deprecated but supported)</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0030.html' />
        <xmpp:status>complete</xmpp:status>
        <xmpp:version>2.5.0</xmpp:version>
        <xmpp:note xml:lang='en'>Service Discovery - server disco#items queried at connect time to find all components; disco#info sent to each component to detect upload services (XEP-0363), pubsub gateways (XEP-0060), and conference services (XEP-0045); pubsub components with identity category='pubsub' are stored in known_pubsub_services for /feed discover auto-enumeration; /disco summary prints cached domain/component capability matrix; summary auto-printed to account log ~6s after connect</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0045.html' />
        <xmpp:status>partial</xmpp:status>
        <xmpp:version>1.35.5</xmpp:version>
        <xmpp:note xml:lang='en'>Multi-User Chat (MUC) - join/leave, send/receive, IRC-style admin (/kick, /ban, /voice, /devoice, /op, /deop), owner config (/roomconfig full interactive server form on WeeChat 4.3+, /setmodes, /affiliation list|set, /destroy), interactive registration (/mucregister [nick], using jabber:iq:register with muc#register FORM_TYPE; /mucregister query displays current info), direct and mediated invites (/invite, /decline); history maxstanzas='0' on join (MAM catch-up). Interactive configuration and registration support submit/cancel with server acknowledgement, preserve hidden fields and multiple values, and retain answers after rejection.</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0048.html' />
        <xmpp:status>complete</xmpp:status>
        <xmpp:version>1.2</xmpp:version>
        <xmpp:note xml:lang='en'>Bookmark Storage</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0049.html' />
        <xmpp:status>partial</xmpp:status>
        <xmpp:version>1.2</xmpp:version>
        <xmpp:note xml:lang='en'>Private XML Storage (for bookmarks)</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0054.html' />
        <xmpp:status>partial</xmpp:status>
        <xmpp:version>1.3.0</xmpp:version>
        <xmpp:note
                    xml:lang='en'
                >vcard-temp — /whois fetches and displays supported profile fields and photos; /setvcard edits fn, nickname, email, url, desc, org, title, tel, bday, and note while preserving other fields, photos, and additional email/phone entries. Updates are confirmed only after server acknowledgement. Auto-fetch triggered by XEP-0153 presence hash; no vCard PHOTO publishing.</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0292.html' />
        <xmpp:status>partial</xmpp:status>
        <xmpp:version>0.12.0</xmpp:version>
        <xmpp:note
                    xml:lang='en'
                >vCard4 Over XMPP — fetch via /whois (PubSub IQ get + display); no publish support yet</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0084.html' />
         <xmpp:status>complete</xmpp:status>
         <xmpp:version>1.1.4</xmpp:version>
         <xmpp:note
                     xml:lang='en'
                 >User Avatar - receive/cache/display avatars; /setavatar publishes PEP avatar data and metadata and updates the local avatar hash used by subsequent XEP-0153 presences; does not publish a vCard PHOTO or immediately broadcast presence</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0066.html' />
        <xmpp:status>complete</xmpp:status>
        <xmpp:version>1.5.0</xmpp:version>
        <xmpp:note
                    xml:lang='en'
                >Out of Band Data - display URLs shared in messages with optional descriptions</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0085.html' />
        <xmpp:status>complete</xmpp:status>
        <xmpp:version>2.1</xmpp:version>
        <xmpp:note
                    xml:lang='en'
                >Chat State Notifications - all 5 states (active, composing, paused, inactive, gone) with visual indicators</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0092.html' />
        <xmpp:status>complete</xmpp:status>
        <xmpp:version>1.1</xmpp:version>
        <xmpp:note
                    xml:lang='en'
                >Software Version - responds to version queries with client name and version</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0107.html' />
        <xmpp:status>complete</xmpp:status>
        <xmpp:version>1.2.2</xmpp:version>
        <xmpp:note
                    xml:lang='en'
                >User Mood - publish and subscribe to mood updates via PEP</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0108.html' />
        <xmpp:status>complete</xmpp:status>
        <xmpp:version>1.3</xmpp:version>
        <xmpp:note
                    xml:lang='en'
                >User Activity - publish and subscribe to activity updates via PEP</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0115.html' />
        <xmpp:status>complete</xmpp:status>
        <xmpp:version>1.6.0</xmpp:version>
        <xmpp:note
                    xml:lang='en'
                >Entity Capabilities with persistent caching</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0163.html' />
        <xmpp:status>complete</xmpp:status>
        <xmpp:version>1.2.2</xmpp:version>
        <xmpp:note
                    xml:lang='en'
                >Personal Eventing Protocol (PEP) - receives and logs events</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0172.html' />
        <xmpp:status>complete</xmpp:status>
        <xmpp:version>1.1</xmpp:version>
        <xmpp:note
                    xml:lang='en'
                >User Nickname - publishes own nickname via PEP on connect; subscribes to nickname updates from contacts via PEP</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0175.html' />
        <xmpp:status>complete</xmpp:status>
        <xmpp:version>1.2</xmpp:version>
        <xmpp:note
                    xml:lang='en'
                >SASL ANONYMOUS login via /account add --anon. The server assigns a temporary JID; no trace data is sent</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0184.html' />
        <xmpp:status>complete</xmpp:status>
        <xmpp:version>1.4.0</xmpp:version>
        <xmpp:note xml:lang='en'>Message Delivery Receipts</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0199.html' />
        <xmpp:status>complete</xmpp:status>
        <xmpp:version>2.0.1</xmpp:version>
        <xmpp:note xml:lang='en'>XMPP Ping</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0202.html' />
        <xmpp:status>complete</xmpp:status>
        <xmpp:version>2.0</xmpp:version>
        <xmpp:note
                    xml:lang='en'
                >Entity Time - responds to time queries with UTC time and timezone offset</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0203.html' />
        <xmpp:status>complete</xmpp:status>
        <xmpp:version>2.0</xmpp:version>
        <xmpp:note
                    xml:lang='en'
                >Delayed Delivery - proper timestamps for offline messages and MAM history</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0223.html' />
        <xmpp:status>complete</xmpp:status>
        <xmpp:version>1.1</xmpp:version>
        <xmpp:note
                    xml:lang='en'
                >Persistent Storage of Private Data via PubSub - used for bookmarks, mood, and activity with publish-options</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0280.html' />
        <xmpp:status>complete</xmpp:status>
        <xmpp:version>1.0.1</xmpp:version>
        <xmpp:note xml:lang='en'>Message Carbons</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0308.html' />
        <xmpp:status>complete</xmpp:status>
        <xmpp:version>1.2.1</xmpp:version>
        <xmpp:note xml:lang='en'>Last Message Correction</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0313.html' />
        <xmpp:status>complete</xmpp:status>
        <xmpp:version>1.1.3</xmpp:version>
        <xmpp:note
                    xml:lang='en'
                >Message Archive Management (MAM) v2 with persistent local caching; IQ routing fixed to address own bare JID for personal archive queries</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0319.html' />
        <xmpp:status>complete</xmpp:status>
        <xmpp:version>1.0.2</xmpp:version>
        <xmpp:note xml:lang='en'>Last User Interaction in Presence</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0333.html' />
        <xmpp:status>complete</xmpp:status>
        <xmpp:version>1.0.0</xmpp:version>
        <xmpp:note xml:lang='en'>Displayed Markers - sends &lt;displayed/&gt; per v1.0 wire format; &lt;received/&gt; and &lt;acknowledged/&gt; removed per spec; MUC markers use XEP-0359 stanza-id when available</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0363.html' />
        <xmpp:status>complete</xmpp:status>
        <xmpp:version>1.1.0</xmpp:version>
        <xmpp:note
                    xml:lang='en'
                >HTTP File Upload (XEP-0363) - /upload with snapshot for consistent bytes, ESFS layering (+16 slot for OMEMO channels per XEP-0448), rich SFS emission; also drives async multi-file for /feed embeds</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0384.html' />
        <xmpp:status>partial</xmpp:status>
        <xmpp:version>0.3.0</xmpp:version>
        <xmpp:note
                    xml:lang='en'
                >OMEMO Encryption using the legacy axolotl namespace (`eu.siacs.conversations.axolotl`) only. OMEMO:2 (`urn:xmpp:omemo:2`) is not published or supported. BTBV (Blind Trust Before Verification) TOFU trust model (UNTRUSTED=0/VERIFIED=1/UNDECIDED=2/BLIND=3 in LMDB `trust:{jid}:{dev}`); only VERIFIED+BLIND receive keys at encode time. PM OMEMO is production-ready; non-anonymous MUC multi-recipient encryption (encode_muc, real-JID occupant mapping, passive bundle prefetch without key-transport spam) is experimental — see docs/planning-muc-omemo.md. Includes auto-detection, per-device bundle/bootstrap, key-transport, MAM plaintext cache for self-decrypt. XEP-0450 ATM removed.</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0402.html' />
        <xmpp:status>complete</xmpp:status>
        <xmpp:version>1.2.0</xmpp:version>
        <xmpp:note
                    xml:lang='en'
                >PEP Native Bookmarks - modern PEP-based bookmark storage</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0191.html' />
        <xmpp:status>complete</xmpp:status>
        <xmpp:version>1.3.0</xmpp:version>
        <xmpp:note
                    xml:lang='en'
                >Blocking Command for privacy and spam protection</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0198.html' />
        <xmpp:status>complete</xmpp:status>
        <xmpp:version>1.6.3</xmpp:version>
        <xmpp:note
                    xml:lang='en'
                >Stream Management: stanza ack/retransmit, session resume with post-connect deferral, resume-failure enable fallback, server preferred reconnect location, handled-count-too-high stream close, graceful disconnect ack</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0245.html' />
        <xmpp:status>complete</xmpp:status>
        <xmpp:version>1.0.0</xmpp:version>
        <xmpp:note
                    xml:lang='en'
                >The /me Command for IRC-style action messages</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0249.html' />
        <xmpp:status>complete</xmpp:status>
        <xmpp:version>1.2.0</xmpp:version>
        <xmpp:note
                    xml:lang='en'
                >Direct MUC Invitations - invite users to join chat rooms</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0352.html' />
        <xmpp:status>complete</xmpp:status>
        <xmpp:version>1.0.0</xmpp:version>
        <xmpp:note
                    xml:lang='en'
                >Client State Indication for mobile optimization</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0359.html' />
        <xmpp:status>complete</xmpp:status>
        <xmpp:version>0.7.0</xmpp:version>
        <xmpp:note
                    xml:lang='en'
                >Unique and Stable Stanza IDs - stable message identification and deduplication</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0380.html' />
        <xmpp:status>complete</xmpp:status>
        <xmpp:version>0.4.0</xmpp:version>
        <xmpp:note
                    xml:lang='en'
                >Explicit Message Encryption - advertises encryption method (OMEMO/PGP) on messages</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0385.html' />
        <xmpp:status>complete</xmpp:status>
        <xmpp:version>0.2.1</xmpp:version>
        <xmpp:note
                    xml:lang='en'
                >Stateless Inline Media Sharing (SIMS) - sends file metadata + sources on upload; parses received SIMS references to display filename, MIME type, size, and download URL; &lt;reference type='data' uri='…'/&gt; extraction (urn:xmpp:reference:0) fixed for proper URL resolution alongside url-data sources</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0446.html' />
        <xmpp:status>complete</xmpp:status>
        <xmpp:version>0.2.0</xmpp:version>
        <xmpp:note
                    xml:lang='en'
                >File Metadata Element - used inside XEP-0447 file-sharing stanzas with media-type, name, size, hash, width, and height</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0447.html' />
        <xmpp:status>complete</xmpp:status>
        <xmpp:version>0.3.0</xmpp:version>
        <xmpp:note
                    xml:lang='en'
                >Stateless File Sharing (SFS, XEP-0447) - full stanza builder implementation (src/xmpp/xep-0447.inl) for spec-compliant emission of &lt;file-sharing&gt; + XEP-0446 &lt;file&gt; (media-type/name/size/hash/width/height) + sources on /upload (plain + ESFS); legacy SIMS/OOB for compat; parses incoming too. Used for previews in Conversations etc.</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0449.html' />
        <xmpp:status>partial</xmpp:status>
        <xmpp:version>0.2.0</xmpp:version>
        <xmpp:note
                    xml:lang='en'
                >Stickers (receive) — detects &lt;sticker xmlns='urn:xmpp:stickers:0'/&gt; with SFS image payloads; displays inline via weechat-icat when xmpp.look.icat is enabled; Movim stickers without &lt;sticker/&gt; are handled via XEP-0231 BoB (see below); sticker pack pubsub not implemented</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0231.html' />
        <xmpp:status>partial</xmpp:status>
        <xmpp:version>1.1</xmpp:version>
        <xmpp:note
                    xml:lang='en'
                >Bits of Binary — receive: XHTML-IM cid refs and inline &lt;data xmlns='urn:xmpp:bob'/&gt;, IQ-fetch, local cache, weechat-icat display (Movim sticker interop); send: small plaintext images (≤8 KiB) via /upload as BoB + XHTML-IM with sha1 cid hosting and IQ-get responses; advertises urn:xmpp:bob in caps/disco; OMEMO outbound BoB not yet implemented</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0514.html' />
        <xmpp:status>partial</xmpp:status>
        <xmpp:version>0.1.0</xmpp:version>
        <xmpp:note
                    xml:lang='en'
                >Emoji Markup (receive) — resolves &lt;emoji xmlns='urn:xmpp:markup:emoji:0'/&gt; spans in XEP-0394 markup against sibling SFS/SIMS hashes; displays custom emoji images inline via weechat-icat when xmpp.look.icat is enabled; body fallback text retained</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0392.html' />
        <xmpp:status>complete</xmpp:status>
        <xmpp:version>1.0.1</xmpp:version>
        <xmpp:note
                    xml:lang='en'
                >Consistent Color Generation - case-sensitive SHA-1 nickname hashing and HSLuv hue mapping to the 216-color terminal cube, with preferred lightness 73.2 and circular hue distance; canonical palette reference vectors tested. Enabled by xmpp.look.consistent_colors; disable to use WeeChat's configured nickname palette.</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0393.html' />
        <xmpp:status>complete</xmpp:status>
        <xmpp:version>1.1.1</xmpp:version>
        <xmpp:note
                    xml:lang='en'
                >Message Styling - renders *bold*, _italic_, `code`, ~strikethrough~, quotes, and preformatted blocks</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0410.html' />
        <xmpp:status>complete</xmpp:status>
        <xmpp:version>1.1.0</xmpp:version>
        <xmpp:note
                    xml:lang='en'
                >MUC Self-Ping (Schrödinger's Chat) - verify MUC membership; error conditions correctly classified per §3.2-3.3: service-unavailable/feature-not-implemented/item-not-found treated as still-joined, not-acceptable triggers rejoin</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0422.html' />
        <xmpp:status>partial</xmpp:status>
        <xmpp:version>0.2.0</xmpp:version>
        <xmpp:note
                    xml:lang='en'
                >Message Fastening - used by Message Moderation (XEP-0425)</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0425.html' />
        <xmpp:status>complete</xmpp:status>
        <xmpp:version>0.3.0</xmpp:version>
        <xmpp:note
                    xml:lang='en'
                >Message Moderation - allows MUC moderators to retract messages from other users</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0421.html' />
        <xmpp:status>complete</xmpp:status>
        <xmpp:version>1.0.1</xmpp:version>
        <xmpp:note xml:lang='en'>Occupant Identifiers for semi-anonymous MUCs - receive and store occupant-id tag from MUC messages and presences; ignored when room does not advertise urn:xmpp:occupant-id:0 in disco#info (MUST-IGNORE per §4); occupant_id_ line tag used to verify sender identity in XEP-0424 retractions, taking priority over nick matching to handle nick changes</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0004.html' />
        <xmpp:status>partial</xmpp:status>
        <xmpp:version>2.13.2</xmpp:version>
        <xmpp:note xml:lang='en'>Data Forms - reusable interactive editor integrated with Ad-Hoc Commands, MUC room configuration/registration, and account registration (WeeChat 4.3+): core field types, defaults, required-field checks, numbered list choices in server order, multiple values, explicit clearing/omission, hidden-field preservation, and masked private fields without input history. Result forms and reported/item tables are rendered read-only. Manual ad-hoc field=value submission remains available. Extended form validation and media challenges are not implemented.</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0050.html' />
        <xmpp:status>complete</xmpp:status>
        <xmpp:version>1.3.0</xmpp:version>
        <xmpp:note xml:lang='en'>Ad-Hoc Commands (requester role) - /adhoc discovers and executes commands, renders and submits data forms with hidden and multiple values, follows server default actions, and supports next, prev, complete, and cancel. Displays allowed actions, notes, completion, cancellation, and errors; tracks sessions per responder and node. No command responder implementation.</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0059.html' />
        <xmpp:status>partial</xmpp:status>
        <xmpp:version>1.0</xmpp:version>
        <xmpp:note xml:lang='en'>Result Set Management - used internally for MAM paging</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0060.html' />
        <xmpp:status>partial</xmpp:status>
        <xmpp:version>1.30.0</xmpp:version>
        <xmpp:note xml:lang='en'>Publish-Subscribe (PubSub) - passive feed reader receives and renders Atom items from arbitrary PubSub nodes into per-node WeeChat FEED buffers; /feed command fetches items on demand from any service/node pair; retract events trigger re-fetch; /feed subscribe, /feed unsubscribe, /feed subscriptions manage XEP-0060 subscriptions; LMDB deduplication prevents duplicate item display across IQ fetch and push paths; /feed discover lists server pubsub components discovered via XEP-0030 at connect time; /feed (no args) auto-fetches subscriptions from all discovered pubsub services</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0413.html' />
        <xmpp:status>partial</xmpp:status>
        <xmpp:version>0.2</xmpp:version>
        <xmpp:note xml:lang='en'>Order-By for MAM and Pubsub queries (Experimental) - &lt;order xmlns='urn:xmpp:order-by:1' by='creation'/&gt; included in XEP-0442 queries when the service advertises MAM ordering support; ascending order retained for cursor paging. No user-selectable ordering or modification ordering.</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0442.html' />
        <xmpp:status>complete</xmpp:status>
        <xmpp:version>0.2.0</xmpp:version>
        <xmpp:note xml:lang='en'>Pubsub Message Archive Management (client role, Experimental) - discovers service support and queries node archives with explicit query IDs. First restore seeds the latest page; reconnect pages forward from the persisted archive cursor until complete. Checkpoints advance only after a stable complete catch-up; repeated or missing cursors stop paging without advancing. Stale cursors trigger one full archive recovery; other errors fall back to current XEP-0060 items. Atom notifications are deduplicated and rendered with optional forwarded sender attributes supported. Closed feeds and late uncorrelated archive notifications are ignored.</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0394.html' />
        <xmpp:status>partial</xmpp:status>
        <xmpp:version>0.3.0</xmpp:version>
        <xmpp:note xml:lang='en'>Message Markup (Experimental) - receive-only: parses &lt;markup xmlns='urn:xmpp:markup:0'&gt; and applies WeeChat colour codes for &lt;span&gt; (emphasis→italic, strong→bold, code→cyan, deleted→dark-grey), &lt;bcode&gt; (grey monospace block), &lt;bquote&gt; (green prefix per line), and &lt;list&gt;/&lt;li&gt; (bullet markers); when &lt;markup&gt; is present it takes precedence over XEP-0393 ad-hoc styling; urn:xmpp:markup:0 advertised in caps; send side not implemented</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0452.html' />
        <xmpp:status>partial</xmpp:status>
        <xmpp:version>0.2.2</xmpp:version>
        <xmpp:note xml:lang='en'>MUC Mention Notifications (Experimental) - receive side: detects incoming notification messages containing &lt;mentions xmlns='urn:xmpp:mmn:0'&gt; (v0.2.x wire format); §4 MUST source-JID validation: outer from= bare-JID verified to match forwarded message from= bare-JID before processing; renders forwarded groupchat body to MUC buffer with notify_highlight so missed mentions are surfaced even when not present in the room; opt-in publish not yet implemented</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0441.html' />
        <xmpp:status>complete</xmpp:status>
        <xmpp:version>0.2.0</xmpp:version>
        <xmpp:note xml:lang='en'>MAM Preferences (Experimental) - /mam prefs shows current server MAM preferences (default policy, always/never JID lists); /mam prefs default &lt;always|never|roster&gt; sets the default policy; /mam prefs always &lt;jid&gt; and /mam prefs never &lt;jid&gt; add a JID to the respective list; IQ results displayed on the issuing buffer; errors reported with server error type</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0466.html' />
        <xmpp:status>partial</xmpp:status>
        <xmpp:version>0.1.0</xmpp:version>
        <xmpp:note xml:lang='en'>Ephemeral Messages (Experimental) - send: /ephemeral &lt;seconds&gt; &lt;message&gt; sends a message with &lt;ephemeral xmlns='urn:xmpp:ephemeral:0' timer='N'/&gt; and a &lt;no-permanent-store/&gt; hint; receive: &lt;ephemeral&gt; element detected, timer value shown as [⏱ Ns] prefix, weechat_hook_timer scheduled to tombstone the message text after N seconds; urn:xmpp:ephemeral:0 advertised in caps</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0492.html' />
        <xmpp:status>partial</xmpp:status>
        <xmpp:version>0.2.0</xmpp:version>
        <xmpp:note xml:lang='en'>Chat Notification Settings (Experimental) - per-chat preference (always/on-mention/never) stored in XEP-0402 bookmark &lt;extensions&gt;&lt;notify xmlns='urn:xmpp:notification-settings:1'&gt;; /notify [jid] [always|on-mention|never] gets or sets preference and re-publishes bookmark; fallback element without identity-category/identity-type used for cross-client interop</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0448.html' />
        <xmpp:status>partial</xmpp:status>
        <xmpp:version>0.3.0</xmpp:version>
        <xmpp:note xml:lang='en'>Encrypted File Sharing (XEP-0448) - when /upload to OMEMO channel: AES-256-GCM encrypt snapshot before PUT (slot +16), visible body=aesgcm://...#ivkey, stanza uses builder-generated &lt;file-sharing&gt;&lt;sources&gt;&lt;encrypted cipher=...&gt;&lt;key b64/&gt;&lt;iv b64/&gt;&lt;hash cipher/&gt;&lt;sources&gt;&lt;url-data https-for-cipher/&gt;&lt;/sources&gt;&lt;/encrypted&gt;&lt;/sources&gt;&lt;/file-sharing&gt; (plain &lt;file&gt; metadata always); receive side parses &lt;encrypted&gt; for download/decrypt in background. Builder ensures exact nesting per spec examples. (Status upgraded with proper emission support.)</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0454.html' />
        <xmpp:status>partial</xmpp:status>
        <xmpp:version>0.1.0</xmpp:version>
        <xmpp:note xml:lang='en'>OMEMO Media sharing — receive path parses strict aesgcm:// body URLs (converse.js and similar) into ESFS download/decrypt + LMDB cache and icat preview for images; send path already emits aesgcm:// visible links for OMEMO uploads.</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0277.html' />
        <xmpp:status>partial</xmpp:status>
        <xmpp:version>0.6.5</xmpp:version>
        <xmpp:note xml:lang='en'>Microblogging over XMPP (Deferred) - /feed post publishes Atom entries to urn:xmpp:microblog:0 PEP node; /feed reply adds thr:in-reply-to threading with real Atom entry IRI in @ref (RFC 4685); /feed repeat publishes boost entry with &lt;link rel='via'&gt; (XEP-0472 §4.5); /feed retract retracts items; /feed comments fetches the comments/replies node linked via &lt;link rel='replies'&gt;; incoming PEP microblog push events rendered with full Atom metadata: author URI, updated timestamp, categories, enclosures, geolocation (XEP-0080), replies links; XHTML and HTML content rendered with WeeChat formatting; plain-text content rendered with lightweight Markdown-to-WeeChat formatting; feed-level &lt;feed&gt; metadata items update buffer title; deduplication via LMDB; urn:xmpp:microblog:0+notify advertised in caps</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0472.html' />
        <xmpp:status>partial</xmpp:status>
        <xmpp:version>0.2.1</xmpp:version>
        <xmpp:note xml:lang='en'>Pubsub Social Feed (Experimental) - /feed post sets pubsub#type=urn:xmpp:microblog:0 and required publish-options (persist_items, max_items=max, notify_retract, deliver_payloads=false); --open flag sets pubsub#access_model=open; &lt;generator&gt; element included in published entries; urn:xmpp:pubsub-social-feed:1 advertised in disco#info; Atom entry parsing: author name+URI, title, summary, content (text/xhtml/html), published+updated timestamps, categories, enclosures, geolocation, &lt;link rel='replies'&gt; comments links; thr:in-reply-to@ref uses real Atom entry IRI when cached; feed-level &lt;feed&gt; metadata items recognised and displayed; XHTML rendered via XEP-0071 renderer; HTML tag-stripped to plain text; plain-text content rendered with lightweight Markdown-to-WeeChat formatting (headings, bold, italic, inline code, fenced code blocks, blockquotes, lists, links, images, strikethrough, horizontal rules); publish errors reported in buffer</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0071.html' />
        <xmpp:status>partial</xmpp:status>
        <xmpp:version>1.5.4</xmpp:version>
        <xmpp:note xml:lang='en'>XHTML-IM - receives and renders rich text: bold, italic, underline, code, blockquotes, links, CSS color spans</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0153.html' />
        <xmpp:status>partial</xmpp:status>
        <xmpp:version>1.1.1</xmpp:version>
        <xmpp:note xml:lang='en'>vCard-Based Avatars - receives presence photo hashes and fetches roster contacts' vCards; emits the cached own avatar hash in presence and advertises support in caps. /setavatar publishes via XEP-0084 only; no vCard PHOTO publishing or full synchronization between the two avatar protocols.</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0224.html' />
        <xmpp:status>complete</xmpp:status>
        <xmpp:version>1.0</xmpp:version>
        <xmpp:note xml:lang='en'>Attention - receives attention requests and opens a PM buffer; advertised in caps</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0283.html' />
        <xmpp:status>partial</xmpp:status>
        <xmpp:version>0.2.0</xmpp:version>
        <xmpp:note xml:lang='en'>Moved - displays unverified migration notices from incoming subscription requests; PEP verification, automatic roster migration, and publishing an own-account migration are not implemented</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0297.html' />
        <xmpp:status>partial</xmpp:status>
        <xmpp:version>1.0</xmpp:version>
        <xmpp:note xml:lang='en'>Forwarded Messages - used as wrapper for Message Carbons and MAM results</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0300.html' />
        <xmpp:status>partial</xmpp:status>
        <xmpp:version>1.0.0</xmpp:version>
        <xmpp:note xml:lang='en'>Cryptographic Hash Functions - SHA-256 used in SIMS (XEP-0385) file metadata</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0334.html' />
        <xmpp:status>complete</xmpp:status>
        <xmpp:version>1.0.0</xmpp:version>
        <xmpp:note xml:lang='en'>Message Processing Hints - store/no-store/no-copy applied to transient stanzas (typing, reactions, link previews)</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0372.html' />
        <xmpp:status>partial</xmpp:status>
        <xmpp:version>0.5.0</xmpp:version>
        <xmpp:note xml:lang='en'>References - incoming mention references targeting the local JID trigger highlights; data references are used for SIMS media sharing. Outgoing mention references and general reference editing are not implemented.</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0382.html' />
        <xmpp:status>complete</xmpp:status>
        <xmpp:version>0.2.0</xmpp:version>
        <xmpp:note xml:lang='en'>Spoiler Messages - displays spoiler warning prefix when a message contains a spoiler hint</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0424.html' />
        <xmpp:status>complete</xmpp:status>
        <xmpp:version>0.4.2</xmpp:version>
        <xmpp:note xml:lang='en'>Message Retraction - /retract command with tombstone display and MAM cache update</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0428.html' />
        <xmpp:status>complete</xmpp:status>
        <xmpp:version>0.2.1</xmpp:version>
        <xmpp:note xml:lang='en'>Fallback Indication - sent alongside retraction and reply stanzas; reply fallback [start,end) Unicode code-point ranges are converted to UTF-8 byte offsets for trimming on receive</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0444.html' />
        <xmpp:status>complete</xmpp:status>
        <xmpp:version>0.2.1</xmpp:version>
        <xmpp:note xml:lang='en'>Message Reactions - /react command; reactions appended to original message line; empty &lt;reactions&gt; removes reaction display per §3.2</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0461.html' />
        <xmpp:status>complete</xmpp:status>
        <xmpp:version>0.2.1</xmpp:version>
        <xmpp:note xml:lang='en'>Message Replies - /reply command with quoted excerpt displayed on receive</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0490.html' />
        <xmpp:status>complete</xmpp:status>
        <xmpp:version>1.0.1</xmpp:version>
        <xmpp:note xml:lang='en'>Message Displayed Synchronization - publishes MDS PEP item when messages are read (on send, type, and buffer switch); consumes MDS events from other own devices to sync read state</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0511.html' />
        <xmpp:status>complete</xmpp:status>
        <xmpp:version>0.1.1</xmpp:version>
        <xmpp:note xml:lang='en'>Link Metadata - fetches and sends OpenGraph previews for outgoing URLs; renders incoming rdf:Description previews with title, description, URL, and image indicator</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0433.html' />
        <xmpp:status>partial</xmpp:status>
        <xmpp:version>0.1.0</xmpp:version>
        <xmpp:note xml:lang='en'>Extended Channel Search (Searcher role) - /list command queries any XEP-0433-capable search service (default: search.jabber.network) and displays results with name, address, user count and description; advertises urn:xmpp:channel-search:0:search in disco#info</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0437.html' />
        <xmpp:status>partial</xmpp:status>
        <xmpp:version>0.1.0</xmpp:version>
        <xmpp:note xml:lang='en'>Room Activity Indicators — client subscribes by sending presence with &lt;rai xmlns='urn:xmpp:rai:0'/&gt; to own bare JID on connect; displays incoming &lt;activity&gt; notifications in the account buffer; advertises urn:xmpp:rai:0 in disco#info</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <implements>
      <xmpp:SupportedXep>
        <xmpp:xep rdf:resource='https://xmpp.org/extensions/xep-0077.html' />
        <xmpp:status>partial</xmpp:status>
        <xmpp:version>2.4</xmpp:version>
        <xmpp:note xml:lang='en'>In-Band Registration — §3.1 /account register &lt;name&gt; &lt;jid&gt; &lt;password&gt;: new account registration before authentication over verified STARTTLS; supports username/password flat fields, already-registered detection, OOB-redirect, and interactive x:data forms on WeeChat 4.3+. Forms take precedence over flat fields, preserve hidden values, mask passwords, and retain answers after rejection; accounts are added only after server acknowledgement. CAPTCHA/media challenges are unsupported and direct users to web registration. §3.2 /account unregister &lt;account&gt;: cancels the account on the server while authenticated. §3.3 /account password &lt;account&gt; &lt;new-password&gt;: in-band password change while authenticated (TLS required). §10: advertises jabber:iq:register in disco#info.</xmpp:note>
      </xmpp:SupportedXep>
    </implements>

    <release>
      <Version>
        <revision>1.1.1</revision>
        <created>2026-10-29</created>
        <xmpp:note xml:lang='en'>Package builds stay on Clang when RPM or Alpine export g++. SASL ANONYMOUS login via /account add --anon (XEP-0175); the server assigns a temporary JID.</xmpp:note>
      </Version>
    </release>

    <release>
      <Version>
        <revision>1.1.0</revision>
        <created>2026-10-29</created>
        <xmpp:note xml:lang='en'>Displayed markers wait until the buffer is viewed, with a dwell delay. Live PMs and carbons stay ordered after archive catchup. Offline PM delivery waits until chat history finishes. Nix package (flake.nix).</xmpp:note>
      </Version>
    </release>

    <release>
      <Version>
        <revision>1.0.0</revision>
        <created>2026-10-09</created>
        <xmpp:note xml:lang='en'>Requires WeeChat 4.3 or newer and C++23. Interactive ad-hoc, MUC configuration/registration, and account registration forms; verified STARTTLS for account registration; MAM replay/checkpoint and PubSub archive fixes; legacy OMEMO device/key handling fixes; vCard preservation and publication acknowledgement.</xmpp:note>
      </Version>
    </release>

    <release>
      <Version>
        <revision>0.12.0</revision>
        <created>2026-07-24</created>
        <xmpp:note xml:lang='en'>Safe plugin unload/reload and atomic installation; OMEMO multi-client and MUC bootstrap fixes; /omemo prune; upload path handling and picker/preview improvements; faster debug builds.</xmpp:note>
      </Version>
    </release>

    <release>
      <Version>
        <revision>0.11.0</revision>
        <created>2026-07-06</created>
        <xmpp:note
                    xml:lang='en'
                >/disco summary server capability matrix (manual + auto-print to account log after connect); connect probes gated on server disco#info (SM, CSI, MAM, bookmarks, MDS only when advertised); MUC OMEMO experimental status documented. Post-tag fixes on master: FreeBSD build (libdiff jobserver, strophe includes), /disco summary output on BSD, OMEMO libsignal session log sanitization for MUC decrypt.</xmpp:note>
      </Version>
    </release>

    <release>
      <Version>
        <revision>0.9.0</revision>
        <created>2026-06-10</created>
        <xmpp:note
                    xml:lang='en'
                >XEP-0449 sticker and XEP-0514 custom emoji inline display via weechat-icat; XEP-0231 BoB receive (inline data and XHTML-IM cid IQ-fetch) for Movim stickers; outgoing emoticon-to-emoji conversion on the wire (xmpp.look.emoticons). BoB send/hosting added post-release on master.</xmpp:note>
      </Version>
    </release>

    <release>
      <Version>
        <revision>0.7.0</revision>
        <created>2026-06-03</created>
        <xmpp:note
                    xml:lang='en'
                >Fix upload-disconnect bug (unsafe OpenSSL BIO base64 replaced with weechat_string_base_encode, gmtime_r for thread safety, dangling shared_ptr fix); BTBV trust commands (/omemo trust, /omemo distrust with optional device-id, trust levels in /omemo devices); remove stale ATM/XEP-0450 code; XEP-0437 Room Activity Indicators (subscribe on connect, display activity notifications)</xmpp:note>
      </Version>
    </release>

    <release>
      <Version>
        <revision>0.6.0</revision>
        <created>2026-03-31</created>
        <xmpp:note
                    xml:lang='en'
                >Embed tags for /feed post: {{ embed }}, {{ attach }}, {{ video }} upload files via XEP-0363 and publish XEP-0447 &lt;file-sharing&gt; children in Atom entries; async multi-file upload pipeline with draft-save on failure; SFS summary rendering in feed and message buffers; comment Atom structure fix (body in &lt;title&gt;, no &lt;content&gt;, per XEP-0277 §3.2); feed_compose.py context-aware editor suppresses title frontmatter when run from a comments buffer</xmpp:note>
      </Version>
    </release>

    <release>
      <Version>
        <revision>0.5.0</revision>
        <created>2026-03-24</created>
        <xmpp:note
                    xml:lang='en'
                >Bug fixes: XEP-0511 outgoing link preview double-send and missing &lt;body/&gt; element; &lt;title&gt; fallback for pages without OpenGraph metadata; MAM PM queries now correctly addressed to own bare JID instead of bare server domain; first-build no longer requires a pre-existing .depend file</xmpp:note>
      </Version>
    </release>

    <release>
      <Version>
        <revision>0.4.0</revision>
        <created>2026-03-09</created>
        <xmpp:note
                    xml:lang='en'
                >Outgoing link previews (XEP-0511 send), Ad-Hoc Commands (XEP-0050), Data Forms (XEP-0004), XHTML-IM (XEP-0071), References (XEP-0372), Message Displayed Synchronization (XEP-0490), Message Fastening (XEP-0422), Fallback Indication (XEP-0428), Spoiler Messages (XEP-0382), Attention (XEP-0224), Moved (XEP-0283), Consistent Color Generation (XEP-0392), Extended Channel Search (XEP-0433), MUC /kick /ban /topic /nick commands (XEP-0045), XEP-0198 stanza retransmit queue, non-blocking HTTP upload (XEP-0363), own nickname publishing (XEP-0172), MDS read flush on buffer switch (XEP-0490), In-Band Registration (XEP-0077), and further bug fixes</xmpp:note>
      </Version>
    </release>
  </Project>
</rdf:RDF>
