- No default chat state on new messages, if you want one you need to set it. Blather version 2.0 and prior set this value to
active
- jabber:client and jabber:component:accept namespaces are no longer erased when parsing, so if you manually select nodes assuming there will be no namespace for these, you need to update
- Breaking change (for release in v3.0.0): Falsy handler return value no longer causes passing to the next handler. Use
pass
explicitly for that. - Breaking change (for release in v3.0.0): Blather::Client uses EM.defer instead of sucker_punch for threadpool, or else no threads when passed async: true
- Bugfix: Blather::Stanza::X#find_or_create only looks at immediate children of parent now
- Feature: Blather::Stanza::X::Field values can be arrays to support multiple-valued fields
- Feature: Add Blather::Stanza::Iq::IBR to implement XEP-0077 In-Band Registration
- Bugfix: Starttls when offered by server; including when the unsecured stream features start with a
- Bugfix: Parser does not drop attribute namespaces
- Bugfix: Require EventMachine >= 1.2.6 to avoid segfault issue
- Bugfix: Fix unsafe threaded use of @tmp_handlers in Blather::Client
- Feature: Bump RSpec to 3.x and convert specs with Transpec
- Feature: Bump Mocha version to 1.x
- Feature: Switch from girl_friday to sucker_punch
- Feature: Unlock Nokogiri to allow >=1.8.3 now that issues are fixed upstream
- Bugfix: Properly sort resources with the same priority but different status
- Bugfix: Lock to Nokogiri <= 1.6.1 because new versions are more broken than old ones
- Bugfix: Avoid repeatedly parsing nodes which are already parsed
- Feature: Implement Blather::Roster#version, which returns version of last processed roster stanza
- Bugfix: Typo in passing through connection options
- Today was a very dark day. I am ashamed of myself.
- Bugfix: Expose alternative authentication ID in DSL (correct default)
- Bugfix: Expose alternative authentication ID in DSL
- Bugfix: Expose alternative authentication ID when setting up a client
- Feature: Permit an alternative authentication ID when connection. Used to support MojoAuth and similar schemes.
- Bugfix: Allow sending errors to the wire directly with correct formatting (previously raised)
- Bugfix: Don't pass service unavailable response to be processed as roster in client_post_init
- Stable API promise
- Bugfix: Fix the DSL module-extended API that was broken by 8327184acc57c20daeaebb975729ff70207eab67
- Bugfix: Warn about local file transfers being disabled by default
- Bugfix: Ensure that file transfers are accepted instantly. See https://groups.google.com/forum/#!topic/xmpp-blather/LMl6pR9qHfA
- Bugfix: Handle stanzas with nested elements that don't have a decorator module or are not stanzas
- Bugfix: Fix the roster which was broken by the DSL being included in Object
- Bugfix: Ensure that session creation always comes immediately after binding. Fixes incompatibility with ejabberd.
- Bugfix: Close streams on next EM tick to avoid hanging.
- Bugfix: Ensure handler methods are available even when including the DSL in Object
- Bugfix: Ensure that binding is always performed before session creation, regardless of the order of elements in the feature set provided by the server. This was causing incompatability with Tigase.
- Bugfix: Only finish stream parser if there is one. This prevents crashes on failure to connect.
- Bugfix: Strange issue causing total failure with 0.8.2 - #108
- Bugfix: General spec fixes
- Bugfix: Fixes for JRuby and Rubinius
- Bugfix: Ensure parsers are shut down correctly
- Update: Bump Nokogiri (1.5.6) and EventMachine (1.0.0) minimum versions
- Project moved to the Adhearsion Foundation
- Fixes for EventMachine 1.0.x
- Simplify booting client using the DSL in the varying supported modes
- Documentation fixes
- Feature(jmkeys): DSL methods for joining and sending messages to MUC rooms
- Feature(jackhong): Inband registration support
- Bugfix(benlangfeld): Ensure that presence nodes which are both status and subscription may be responded to
- Bugfix(benlangfeld): A whole bunch of JRuby fixes
- Documentation updates
- Bugfix(benlangfeld): Relax Nokogiri dependency to allow 1.5
- Bugfix(benlangfeld): Fix some nokogiri 1.5 related bugs on JRuby (some remain)
- Bugfix(benlangfeld): Set namespaces correctly on some tricky nodes
- Bugfix(benlangfeld): Ensure all presence sub-types trigger the correct handlers
- Change(benlangfeld): Drop Ruby 1.8.7 compatability
- Change(bklang): Remove the wire log, which duplicated the parsed logging
- Feature(benlangfeld): Stanza handlers are now executed outside of the EM reactor, so it is not blocked on stanza processing
- Bugfix(benlangfeld): MUC user presence and messages now have separate handler names
- Feature(benlangfeld): Stanzas may now be imported from a string using
XMPPNode.parse
- Bugfix(benlangfeld): All
Blather::Stanza::Presence::C
attributes are now accessible on importing - Bugfix(benlangfeld): Presence stanzas are now composed on import, including all children
- Bugfix(mtrudel): JIDs in roster item stanzas are now stripped of resources
- Feature(benlangfeld): Add password support to
MUCUser
- Feature(benlangfeld): Add support for invitation elements to
MUCUser
messages - Feature(benlangfeld): Add support for MUC invite declines
- Bugfix(benlangfeld): Don't implicitly create an invite node when checking invite status
- Bugfix(benlangfeld): Ensure that form nodes are not duplicated on muc/muc_user presence stanzas
- Bugfix(benlangfeld): Ensure MUC presence nodes (joining) have a form element on creation
- Feature(benlangfeld): Very basic MUC and delayed message support
- Bugfix(theozaurus): Disable connection timeout timer if client deliberately disconnects
- Bugfix(mtrudel): Fix
Roster#each
to return roster_items as per documentation
- Bugfix(benlangfeld): Allow specifying the connection timeout in DSL setup
- Feature(benlangfeld): Allow specifying a connection timeout
- Raise
Blather::Stream::ConnectionTimeout
if timeout is exceeded - Default to 180 seconds
- Raise
- Feature(juandebravo): Allow configuring the wire log level
- Bugfix(benlangfeld): Checking connection status before the stream is established
- Bugfix(benlangfeld): Failed connections now raise a Blather::Stream::ConnectionFailed exception
- Bugfix(crohr): Blather now supports EventMachine 1.0
- Bugfix(benlangfeld): JIDs now maintain case, but still compare case insensitively
- Bugfix(jmazzi): Development dependencies now resolve correctly on JRuby and Rubinius
- Bugfix(benlangfeld): Don't install BlueCloth as a development dependency when on JRuby
- Changes from 0.5.5, this time without a bug when using the namespaced DSL approach
- Bugfix(benlangfeld/kibs): ActiveSupport was overriding the presence DSL method
- Feature(fyafighter): Adds SSL peer verification to TLS
- Bugfix(fyafighter): Regression related to earlier refactoring: https://github.com/sprsquish/blather/issues/53
- Feature(fyafighter): Make it much easier to allow private network addresses
- Bugfix(benlangfeld): Fix the Nokogiri dependency to the 1.4.x series, due to a bug in 1.5.x
- Bugfix(zlu): Replace class_inheritable_attribute with class_attribute because it is deprecated in ActiveSupport 3.1
- Feature(benlangfeld): Add XMPP Ping (XEP-0199) support
- Bugfix(benlangfeld): Remove specs for the Nokogiri extensions which were moved out
- Feature(benlangfeld): Abstract out Nokogiri extensions and helpers into new Niceogiri gem for better sharing
- Documentation(benlangfeld)
- Feature(radsaq): Add a #connected? method on Blather::Client
- Feature(benlangfeld)[API change]: Allow the removal of child nodes from an IQ reply
- Bugfix(zlu): Use rubygems properly in examples
- Bugfix(benlangfeld): Remove code borrowed from ActiveSupport and instead depend on it to avoid version conflicts
- Documentation(sprsquish)
- Feature(benlangfeld): switch from jeweler to bundler
- Feature(benlangfeld): add cap support (XEP-0115)
- Bugfix(sprsquish): Better equality checking
- Bugfix(sprsquish): Fix #to_proc
- Bugfix(mironov): Skip private IPs by default
- Feature(mironov): Implement XEP-0054: vcard-temp
- Feature(benlangfeld): Basic support for PubSub subscription notifications as PubSub events
- Feature(mironov): Ability to clear handlers
- Feature(mironov): Implement incoming file transfers (XEP-0096, XEP-0065, XEP-0047)
- Bugfix(mironov): Fix for importing messages with chat states
- Bugfix(mironov): Added Symbol#to_proc method to work on ruby 1.8.6
- Bugfix(mironov): Fix roster items .status method to return highest priority presence
- Bugfix(mironov): Remove old unavailable presences while adding new one
- Bugfix(mironov): Use Nokogiri::XML::ParseOptions::NOENT to prevent double-encoding of entities
- Bugfix(benlangfeld): Disco Info Identities should have an xml:lang attribute
- Bugfix(mironov): Fix lookup path for ruby 1.9
- Bugfix(mironov): stanza_error.to_node must set type of the error
- Bugfix(mironov): Allow message to have iq child
- Bugfix(mironov): Find xhtml body in messages sent from iChat 5.0.3
- Tests: get specs fully passing on rubinius
- Feature(mironov): Implement XEP-0085 Chat State Notifications
- Bugfix(mironov): send stanzas unformatted
- Bugfix(mironov): Message#xhtml uses inner_html so tags aren't escaped
- Bugfix(mironov): Message#xhtml= now works with multiple root nodes
- Bugfix: Place form child of command inside command element
- API Change: Switch order of var and type arguments to X::Field.new since var is always required but type is not
- API Change: PubSub payloads can be strings or nodes and can be set nil. PubSub#payload will always return a string
- Feature: Add forms to Message stanzas
- Bugfix: command nodes where generating the wrong xml
- Bugfix: x nodes where generating the wrong xml
- Feature: ability to set identities and features on disco info nodes
- Feature: ability to set items on disco item nodes
- no change
- Feature: XEP-0004 x:data (benlangfeld)
- Feature: XEP-0050 Ad-Hoc commands (benlangfeld)
- Minor bugfixes for the specs
- Feature: add xhtml getter/setter to Message stanza
- Bugfix: heirarchy -> hierarchy spelling mistake
- Hella documentation
- Update to work with Nokogiri 1.4.0
- Bugfix: prioritize authentication mechanisms
- Bugfix: Change DSL#write to DSL#write_to_stream. Previous way was messing with YAML
- Add "disconnected" handler type to handle connection termination
- Bugfix: Fix error with pubsub using the wrong client connection
- Bugfix: status stanza with a blank state will be considered :available (GH-23)
- Bugfix: ensure regexp guards try to match against a string (GH-24)
- Stream creation is now evented. The stream object will be sent to #post_init
- Parser debugging disabled by default
- Update parser to work with Nokogiri 1.3.2
- Bugfix: discover helper now calls the correct method on client
- Bugfix: ensure XMPPNode#inherit properly sets namespaces on inherited nodes
- Bugfix: xpath guards with namespaces work properly (GH-25)
- Fix -D option to actually put Blather in debug mode
- Stanzas over a client connection will either have the full JID or no JID
- Regexp guards can be anything that implements #last_match (Regexp or Oniguruma)
- Add "halt" and "pass" to allow handlers to either halt the handler chain or pass to the next handler
- Fix default status handler so it doesn't eat the stanza
- Add before and after filters. Filters, like handlers, can have guards.
- Bugfix in roster: trying to call the wrong method on client
- Switch from LibXML-Ruby to Nokogiri
- Update test suite to run on Ruby 1.9
- Add "<<" style writer to the DSL to provide for chaining outbound writes
- SRV lookup support
- Add XPath type of handler guard
- PubSub support
- Remove unneeded functions from the push parser.
- Create a ParseWarning error that doesn't kill the stream.
- When a parse error comes in the reply should let the other side know it screwed up before dying.
- Add the LibXML::XML::Error node to the ParseError/ParseWarning objects.
- Fix the load error related to not pushing Blather's dir into the load path
- Switch the push parser from chunking to streaming.
- Don't push Blather's dir into the load paths
- Small changes to the DSL due to handler collisions: "status" -> "set_status" "roster" -> "my_roster"
- Small changes to the Blather::Client API to keep it feeling more like EM's API: #stream_started -> #post_init #call -> #receive_data #stop -> #close #stopped -> #unbind
- Refactored some of the code internal to Blather::Client
- Added command line option handler to default use method (see README)
- require libxml-ruby >=1.1.2 (1.1.3 has an inconsistent malloc err on OS X 10.5)
- complete specs
- add single process ping-pong example
- Remove autotest discover.rb (created all sorts of conflicts)
- Added Hash with Array guard
- Added a hirrarchy printer to examples directory
- Moved Disco to be in the Stanza namespace (staves off deeply namespaced classes)
- Namespaced the DSL methods to Blather::DSL. These can be included in any object you like now. "require 'blather/client'" will still include them directly in Kernel to keep the simple one-file dsl
- Stopped doing one class per error type. This created a giant hierarchy tree that was just unnecessary. The error name is now #name. Errors can be matched with a combination of handler and guard.
- Fixed XML namespaces. Previous versions weren't actually adding the node to the namespace making xpath queries inconsistent at best.
- Added support for anonymous authentication by providing a blank node on the jid ("@[host]")
- Go back to using the master branch for gems (stupid mistake)
- Switch to Jeweler.
- Move from custom libxml to just a custom push parser
- Add guards to handlers