'x' means: is done! - keep an eye on disco_feature stuff. - fix MUC documentation! X make the MUC extension not be tied to a specific connection. Let it discover new connections itself. => for this the join_room function might need a connection argument to discover the right connection. => maybe use the %args hash for this, as the default should be 'the first' connection we can grab. => think about get_room and the implications in general that 'multiple' connections are handled by one extension. - vcard retrieve sends out presence, but the 'last sent presence' info isn't available in the connection or to the vcard extension. => introduce storing the 'last sent presence' and offer a 'send_presence_update' method (at least internally), to repeat the last sent presence (be careful not to repeat directed presences!). - think more about $dont_retrieve_vcard. - make exponential falloff in Client.pm when an account couldn't be connected. - remove XML::Twig dependency from debug => ... - map the domain part correctly w.r.t. IDNA - rename 'domain' parameter to 'host', and rename the internal host/port to peer_host and peer_port. - add nick_change to documentation - Implement XEP-0045: Multi-User Chat x store full jid info on entering room x implement delayed delivery for messages x WRITE TEST! - to mark history of room x 7.8 Sending a Private Message x 7.9 Sending a Message to All Occupants - visitor error (when room not allow without voice to chat) - improve room info handler class to retrieve interesting information eaasier - room occupant query - implement status code mappings - that room logged - non anonymous x look over error reporting (more conclusive errors!) x change presenceerror to something more clear x entering members only x banned x nickname conflict - with resolution x max users x locked x 11. Error and Status Codes x 11.1 Error Codes - 11.2 Status Codes - managing of discussion history when entering - maxchars, maxstanzas, seconds, since x nickname changes x make own possible x log changes of other people nicknames - according errors - test changing of presence of a user - invitations - 7.10 Registering with a Room - 7.11 Discovering Reserved Room Nickname - 7.12 Requesting Voice - 8. Moderator Use Cases x 8.1 Modifying the Room Subject - test error handling of subject_change_error - 8.2 Kicking an Occupant - 8.3 Granting Voice to a Visitor - 8.4 Revoking Voice from a Participant - 8.5 Modifying the Voice List - 8.6 Approving Voice Requests - 9. Admin Use Cases - 9.1 Banning a User - 9.2 Modifying the Ban List - 9.3 Granting Membership - 9.4 Revoking Membership - 9.5 Modifying the Member List - 9.6 Granting Moderator Privileges - 9.7 Revoking Moderator Privileges - 9.8 Modifying the Moderator List - 9.9 Approving Registration Requests - 10. Owner Use Cases x 10.1.1 General Considerations x 10.1.2 Creating an Instant Room x 10.1.3 Creating a Reserved Room x entering password protected rooms - 7.7 Occupant Modification of the Room Subject - 10.1.4 Requesting a Unique Room Name - 10.2 Subsequent Room Configuration - 10.2.1 Notification of Configuration Changes - 10.3 Granting Ownership Privileges - 10.4 Revoking Ownership Privileges - 10.5 Modifying the Owner List - 10.6 Granting Administrative Privileges - 10.7 Revoking Administrative Privileges - 10.8 Modifying the Admin List - 10.9 Destroying a Room - 7.6 Converting a One-to-One Chat Into a Conference - write a tutorial for simxml - improve the SSL/TLS handling - make more tests - oob - data forms - jabber component - fix the inaviodable memoryleaks with the callbacks the circular object structs. - put some serious stuff in the synopsises - look at attribute namespace preservation! (if they got prefixes, how to parse this with expat? see also http://www.w3.org/TR/REC-xml-names/#scoping-defaulting ) - fix problem that xml::writer writes after <stream/> ahs been written - reproduce by conflicting resources! - test the xml parse error object somehow! - add context field to IQ error for all the places origin from IQ errors (bind_error, session_error, ...) - AnyEvent::XMPP::Client - find a way to distinguish presences from JIDs that are in multiple account's roster. - AnyEvent::XMPP missing functionality to be RFC 3920 conform: - improve error handling for SASL to support retries as specified in RFC 3920. (eg. by supporting a method sasl_retry() which takes the changed credentials) x SRV record lookup - weight handling! - AnyEvent::XMPP::IM missing functionality to be RFC 3921 conform: - 7.2. Business Rules - Implement XEP-0115: Entity Capabilities - Implement XEP-0190: Best Practice for Closing Idle Streams x Implement XEP-0030: Service Discovery - see also: XEP-0128: Service Discovery Extensions - missing feature: building up a item tree for discovery - see also: grep 'XXX\|FIXME\|TODO' * -r - lib/AnyEvent/XMPP/Writer.pm: # XXX: removed authname, because it ensures maximum connectivitiy long term? ========== x Implement XEP-0082: XMPP Date and Time Profiles - provide maybe _to functions for the old format, it's still in use out there - make dns resolution async! - Maybe implement XEP-0146: Remote Controlling Clients x keep an eye on: - TLS: implemented, just do some extensive testing WRT blocking, i don't trust the current way the watchers are handled, i'm in fear of deadlocks...