mux: let ServeMux register stanza handlers Previously the multiplexer was too generalized and only handled top level elements. To handle children different types of alternative muxers had to be registered. Instead, move all the functionality for matching against different stanza types into the main muxer and separate the stanza handlers from the generic top level handlers. Fixes #25
design: add new stanzamux design proposal The previous iqmux design was incomplete, and ended up being cumbersome in practice. This proposal aims to solve those issues.
mux: add IQ option types that take a func Previously there were only option shortcuts for regular handlers and not for the function adapter. This adds more shortcuts for the function adapter types to make registering handlers with inline functions easier.
mux: add IQ matcher Adding a separate IQ muxer to the mux package will allow us to easily match based on the payload of an IQ without requiring special handling in the standard muxer. See https://mellium.im/design/18_iqmux Fixes #18
mux: return wildcard handlers from Handler method Previously the Handler method would only return a handler if an exact match for the name was found, and would otherwise return the fallback handler. This change moves the logic for selecting wildcard handlers into Handler so that what Handler returns is always what would be selected if an incoming payload matching the name were handed to HandleXMPP.
design: accept iqmux proposal
mux: remove warning in package docs While this package isn't guaranteed to be stable until 1.0, it's been in here long enough that I think it's time to remove the explicit warning. The package will still change, but we don't need to scare away the early adopters of this module.
design: fix whitespace in markdown docs Previously there was no line break between the status and discussion lines.
design: rename documents based on issue number Also add a link to the issue in the docs to make going back and forth between the document and the discussion simpler.
design: answer a question in iqmux proposal Update the IQ mux proposal to make it clear that Error and Result type IQs are also handled by the multiplexer, and add some shortcut functions for handling them in a reasonable way.
design: rename iqmux proposal Previously the file had a .txt extension but it is a markdown file. Changing to a .md extension will allow renderers to show formatting properly.
design: add iqmux proposal
all: update changelog with unreleased section From now on I will try to keep the changelog up to date instead of updating it only when a release happens so that users can get an overview of what is different on master.
all: add chat badge to the readme Add a link to the general Go chat room on my server which can serve as a support channel until I get the new system setup.
design: shorten filename of IBB proposal This change also fixes some minor whitespace issues (it removes two excessive lines).
all: update godoc link in readme Update the documentation links and badges in the readme to point to pkg.go.dev since godoc will shortly redirect there anyways and most users are likely using Go Modules at this point anyways so pkg.go.dev will show the version that will be selected for them instead of the latest commit on master.
all: mention examples in readme Mention the examples in the readme to help new users get started, also clean up some minor inaccuracies in other parts of the readme.
all: add review section to contributing doc Adds a section about code review to the contributing docs and also makes several minor changes to other sections that were left out of the last update. The goal of this change is to ensure that new contributors aren't suprised by our code review process which may require more changes than they're used to.
all: drop support for Go versions below 1.13 Fixes #3
examples/im: new example similar to sendxmpp(1)
all: update the code of conduct This updates the code of conduct to be based on version 2.0 of the Contributor Covenant (https://www.contributor-covenant.org/version/2/0/code_of_conduct.html).