1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244
|
# Changelog
## Tx-XMPP
This is a friendly fork of [Wokkel](https://github.com/ralphm/wokkel) created on 2026-03-20.
The project uses [Semantic Versioning](https://semver.org/) (SemVer).
### v0.10.1.post1 (2026-03-24)
- `README.md` update.
### v0.10.1 (2026-03-24)
- Rename `twisted/plugins/server.py` to `twisted/plugins/tx_xmpp_server.py` to avoid
conflict with existing Wokkel installation.
### v0.10.0 (2026-03-24)
- Package renamed from `wokkel` to `tx_xmpp`: The module directory has been renamed from
`wokkel/` to `tx_xmpp/`. The initial version kept the `wokkel` name for ease of
migration, but there are some backwards incompatible changes, so it's not a drop-in
replacement. GNU/Linux distribution maintainers have requested this change to avoid
conflicts with existing `wokkel` packages in their repositories. Both packages can now
coexist.
- Internal imports have been converted to relative imports.
- Build backend changed from `uv_build` to `hatchling` (per Debian packager request).
- LICENSE updated to include copyright for Adrien Cossa and Jérôme Poisson.
### v0.9.0 (2026-03-21)
- Modernized tooling: migrated to `pyproject.toml` and `uv`
- Integrated RSM "Result Set Management" (XEP-0059)
- Integrated MAM "Message Archive Management" (XEP-0313)
- Merged pull requests for MAM, RSM, and removal of legacy Python 2 support code
- Integrated changes from `sat_tmp` project:
- MAM namespace updated to v2
- Order-by support (XEP-0413)
- Publish-options support (XEP-0060)
- PubSub `subscriptionsGet` response handling
- `notifyPurge` method for PubSub
- XML Element fields support in `data_form`
- Progressive addition of modern type hints
- Removed deprecated APIs
---
## Wokkel (Original Project History)
The following changelog entries are from the original Wokkel project by Ralph Meijer.
> Versions after 0.7.1 follow [CalVer](http://calver.org) with a strict backwards compatibility policy.
> The third digit is only for regressions.
### Wokkel 18.0.0 (2018-12-04)
#### Features
- Wokkel has been ported to Python 3. (#81)
- wokkel.pubsub.PubSubClient now supports retrieving items by identifier. (#82)
#### Fixes
- wokkel.generic.Request.stanzaType now defaults to the value of the class variable if `stanzaType` is not passed to `__init__`. (#80)
- wokkel.delay.Delay.fromElement now also catches `TypeError` when parsing timestamps, to work around a bug in dateutil. (#83)
- wokkel.muc.MUCClientProtocol now properly updates user role and affiliation upon presence updates. (#84)
#### Deprecations and Removals
- wokkel.generic.prepareIDNName is deprecated in favor of `unicode.encode('idna')`. (#85)
- Python 2.6 and older are no longer supported. (#86)
- wokkel.compat no longer includes named and value constants (now in `twisted.python.constants` through `constantly`). (#87)
- wokkel.compat no longer includes `BootstrapMixin` and `XmlStreamServerFactory`, as they are included in the required version of Twisted. (#88)
#### Misc
- #89
### 0.7.1 (2013-01-12)
#### Features
- wokkel.generic.Request.parseRequest is a new convenience hook for parsing the payload of incoming requests using fromElement.
- wokkel.xmppim.RosterItem can now represent item removals and has methods for XML (de-)serialization (#71).
- wokkel.xmppim.RosterRequest is a new class to represent roster request stanzas (#71).
- wokkel.xmppim.RosterClientProtocol.getRoster now returns the roster indexed by JID (#71).
- wokkel.xmppim.RosterClientProtocol uses the new RosterRequest for sending outgoing requests, using the new request semantics (#71).
- wokkel.xmppim.RosterClientProtocol uses the new RosterRequest to provide access to addressing and roster version information in the new callbacks for roster pushes (#71).
- wokkel.xmppim.RosterPushIgnored can be raised for unwanted roster pushes (#71).
- wokkel.xmppim.RosterClientProtocol and RosterRequest now support roster versioning.
- With the new wokkel.xmppim.RosterClientProtocol.setItem roster items can be added or updated (#56).
#### Fixes
- wokkel.component.Component now reconnects if first attempt failed (#75).
- wokkel.xmppim.RosterClientProtocol now properly checks sender addresses for roster pushes (#71).
- Make sure twistd plugins are installed properly (#76).
- wokkel.component.Router.route now sends back an error if there is no known route to the stanza's destination.
- Properly encode IDN domain names for establishing client and server connections. This resolves an issue with Twisted 12.3.0 that made it impossible to initiate any connection using Wokkel (#77).
#### Deprecations
- wokkel.xmppim.RosterItem.jid is deprecated in favor of entity (#71).
- wokkel.xmppim.RosterItem.ask is deprecated in favor of pendingOut (#71).
- wokkel.xmppim.RosterClientProtocol.onRosterSet is deprecated in favor of setReceived (#71).
- wokkel.xmppim.RosterClientProtocol.onRosterRemove is deprecated in favor of removeReceived (#71).
### 0.7.0 (2012-01-23)
#### Features
- Added method wokkel.data_form.Form.typeCheck for type checking incoming Data Forms submissions against field definitions.
- Added method wokkel.data_form.Form.makeFields to add fields from a dictionary mapping field names to values.
- Added public function wokkel.data_form.findForm for extracting Data Forms from stanzas.
- PubSubRequest.options is now a wokkel.data_form.Form.
- wokkel.data_form.Form can now be used as a read-only dictionary.
- Added support for configuration options in Publish-Subscribe node create requests.
- Added support for subscription options in Publish-Subscribe subscribe requests (#63).
- Added support for Publish Subscribe subscription identifiers.
- wokkel.pubsub.Item can now be used to send out notifications, too.
- Added a twistd plugin to set up a basic XMPP server that accepts component connections and provides server-to-server (dialback) connectivity.
- Added support for managing affiliations of Publish-Subscribe nodes, server-side.
- Added iq request (set/get) tracking to StreamManager and provide a new base class for such requests: wokkel.generic.Request. Unlike twisted.words.protocols.jabber.xmlstream.IQ, Such requests can be queued until the connection is initialized, with timeouts running from the moment `request` was called (instead of when it was sent over the wire).
- Added support for Delayed Delivery information formats.
- Added support for XMPP Multi-User Chat, client side (#24).
#### Fixes
- XMPP Ping handler now marks incoming ping requests as handled, so the FallbackHandler doesn't respond, too. (#66)
- Incorporate Twisted changes for component password hashes.
- Completed test coverage for Data Forms.
- Made sure Data Forms field labels don't get overwritten (#60).
- Service Discovery identity is now reported correctly for legacy PubSubService use (#64).
- Various smaller Service Discovery fixes for PubSubService.
- Completed test coverage for Service Discovery support.
- Publish Subscribe events with stanza type error are now ignored (#69).
- Publish Subscribe requests with multiple 'verbs' are now properly parsed (#72).
- Publish Subscribe requests that have no legacy support in PubSubService will now result in a feature-not-implemented error (#70).
- Publish Subscribe subscription elements now have the correct namespace when sent out.
- Incorporated Twisted changes for passing on a reason Failure upon stream disconnect.
- Fixed race condition and nesting issues when adding subprotocol handlers to their StreamManager (#48).
- Reimplemented Service Discovery requests using new Request class. By reusing common code, this fixes a problem with requests without addressing (#73).
#### Deprecations
- wokkel.compat.BootstrapMixin is deprecated in favor of twisted.words.xish.xmlstream.BootstrapMixin (Twisted 8.2.0).
- wokkel.compat.XmlStreamServerFactory is deprecated in favor of twisted.words.protocols.jabber.xmlstream.XmlStreamServerFactory (Twisted 8.2.0).
- wokkel.iwokkel.IXMPPHandler is deprecated in favor of twisted.words.protocols.jabber.ijabber.IXMPPHandler (Twisted 8.1.0).
- wokkel.iwokkel.IXMPPHandlerCollection is deprecated in favor of twisted.words.protocols.jabber.ijabber.IXMPPHandlerCollection (Twisted 8.1.0).
- wokkel.subprotocols.XMPPHandlerCollection is deprecated in favor of twisted.words.protocols.jabber.xmlstream.XMPPHandlerCollection (Twisted 8.1.0).
### 0.6.3 (2009-08-20)
#### Features
- Add a jid attribute to XMPPClient (#18).
- Add a better presence protocol handler PresenceProtocol. This handler is also useful for component or in-server use.
#### Fixes
- Use fallback port 5222 for failed SRV lookups for clients (#26).
### 0.6.2 (2009-07-08)
#### Features
- Add support for XMPP Ping (XEP-0199), doubling as example protocol handler (#55).
- Provide examples for setting up clients, components and servers (#55).
- Make Service Discovery support accept non-deferred results from getDiscoInfo and getDiscoItems (#55).
### 0.6.1 (2009-07-06)
#### Features
- Add an optional sender parameter for Service Discovery requests (#52).
#### Fixes
- Fix regression in DeferredClientFactory (#51).
- Make IQ timeouts work with InternalComponent (#53).
### 0.6.0 (2009-04-22)
#### Features
- Server-to-server support, based on the dialback protocol (#33).
- Enhancement to InternalProtocol to support multiple domains (#43).
- Publish-subscribe request abstraction (#45).
- Publish-subscribe abstraction to implement a node in code (#47).
- Enhancement to PubSubClient to send requests from a specific JID (#46).
#### Fixes
- Remove type interpretation in Data Forms field parsing code (#44).
### 0.5.0 (2009-04-07)
This release drops support for Twisted versions older than 8.0, including Twisted 2.5 / Twisted Words 0.5.
#### Features
- Support for sending and receiving Publish-Subscribe node delete notifications with redirect.
- Service Discovery client support, including an overhaul of disco data classes (#28).
- Initial support for building XMPP servers has been added:
- XmlStreamServerFactory has been backported from Twisted Words (#29).
- An XMPP router has been added (#30).
- A server-side component authenticator has been added (#30).
- A new server-side component service, that connects to a router within the same process, was added (#31).
#### Fixes
- Publish-Subscribe subscriptions requests work again (#22).
- Publish-Subscribe delete node requests now have the correct namespace (#27).
- NodeIDs in Service Discovery requests are now returned in responses (#7).
- The presence of stanzaType in toResponse is now checked correctly (#34).
- Data Form fields are now rendered depending on form type (#40).
- Data Form type checking issues were addressed (#41).
- Some compatibility fixes for Twisted 8.0 and 8.1.
- Various other fixes (#37, #42) and tracking changes to code already in Twisted.
### 0.4.0 (2008-08-05)
- Refactoring of Data Forms support (#13).
- Added support for Stanza Headers and Internet Metadata (SHIM) (#14).
- API change for PubSubClient's methods called upon event reception (#14).
- Added client-side support for removing roster items.
- Implement type checking for data forms (#15).
- Added support for publish-subscribe collections:
- Correct handling for the root node (empty node identifier).
- Send out SHIM 'Collection' header when appropriate.
- New Subscription class for working with subscriptions.
- API change for PubSubService:
- The subscribe method returns a deferred that fires a Subscription
- The subscriptions method returns a deferred that fires a list of Subscriptions.
- notifyPublish's notifications parameter now expects a list of tuples that includes a list of subscriptions.
- Added PubSubService.notifyDelete to allow sending out node deletion notifications.
### 0.3.1 (2008-04-22)
- Fix broken version request handler.
### 0.3.0 (2008-04-21)
First release.
|