* #6142: Don't update buddy properties without a key (cassidy)

Snapshot 76984f3f28

* #5368: Delay setting a buddy's current activity (morgs)

Snapshot 5650e153bd

* #4965: Add SyncFriends method as temporary measure for synchronising friends
  list to roster group on Jabber server.

Snapshot 150051a3a9

* #4920: Harden _add_buddies to cope with no handle when calling
  BuddyHandleJoined (morgs)
* #4993: Only approve subscriptions coming from a trusted server (cassidy)

Snapshot 4c8e8b71b5

* #4896: Make subscribe/presence channel tracking not dependent on which order
  they appear in
* #4920: Make logging more robust in BuddyHandleJoined (morgs)

Snapshot 128c59c612

* #4936: Enable SSL so we can use DEFLATE compression (robot101)
* #4896: Wait for NewChannel with roster channels to avoid timeout leaving
  you with no buddies (daf)
* #2522: Use an exponential backoff when trying to reconnect CM (cassidy)
* #4907: Try to reconnect Gabble if initial attempt failed (cassidy)

Snapshot 89c33bcf93

* #4660: Fix regression when sharing an activity (cassidy)

Snapshot 43d1d48b27

* #4692: Don't put activity sharer in 'private' property (correcting a wrong
  part of the patch for #4585) (smcv)
* #4660: when calling ShareActivity(), allow private, tags, color to be set
  by putting them in the properties dict, which was previously ignored (smcv)

Snapshot 944c5280b4

* #4585: Watch activity unique names on D-Bus for disappearences, implying
  the activity crashed; this time, treat that as the local user leaving,
  not as the activity disappearing! (smcv)
* #4659: Revert part of #4585 fix (this part didn't make sense anyway)
  to fix inability to join activities (smcv)
* #4661: don't break the debug log if names are non-ASCII (smcv)

Snapshot 0d8c69c14b

* #4585: Watch activity unique names on D-Bus for disappearances implying
  the activity crashed (morgs)

Snapshot 1effa5a10d

Snapshot f2411a6161

* #2412: improve our ability to cope with disconnections and CM crashes (morgs)

Snapshot 11d8103108

* #4537: actually set registered = True (again) (smcv)

Snapshot 25577b1486

* #4027: associate activity debug messages with the relevant activity (smcv)

Snapshot 439e31672b

* Emit BuddyHandleJoined with Buddy and handle so sugar.presence can
  track handles without calling PS (morgs)
* Create Tubes Channel during join process (morgs)

Snapshot 6d79687f8b

* #3683: don't use (potentially long) user-supplied nickname in mDNS instance
  names, this can break Salut activity advertisement (smcv)
* #3422: don't emit spurious CurrentActivityChanged signal when changing from
  no current activity to no current activity (smcv)
* #3465: don't keep invite-only activities in the mesh view after we leave
  them (smcv)

Snapshot 6df1f3eca5

* #3506: LL and server plugins are mutually exclusive for trial-3 (dcbw)

Snapshot 46898a3e00

* Adapt to sugar API change (marco)

Snapshot b8d04713ac

* #3380: de-restrict invitations so non-initiator can invite people to an
  activity (only effective if you also have Gabble trial3a 20070912 snapshot)
  (smcv)
* #3369: avoid Gabble invite-only activities disappearing from the
  mesh view when we join them (smcv)
* #3370: fix error reporting in logs by working around dbus-python bug#12403
  (smcv)

Snapshot bff163d57b

* #3328: when we join an activity on Salut, don't stop it from being
  the other participants' current activity (smcv)
* #3327: don't let a slower connection manager delete current activity
  advertised by a faster one (smcv)
* #2299: Be sure buddies keys are converted to string (cassidy)
* #3291: Further improve activity participant tracking (smcv)
* Correctly pick up existing Salut connections (smcv)
* Don't crash if a buddy property is None (smcv)
* #3290: When a buddy goes offline, consider them to have left all their
  activities (smcv)

Snapshot 3ed091301b

* Improve tracking of who's in activities with us (smcv)
* Refactor joining/sharing so we don't claim to have succeeded,
  or try to SetProperties(), until we're actually in the chatroom
  (fixes regression with Salut darcs HEAD) (smcv)

Snapshot 3b1f4a0c42

* #3147: Set _PROP_CURACT to current activity when sharing an activity
  or joining (morgs)

Snapshot a79f7b6488

* Fix non-ASCII activity names (smcv)
* Notify local processes when we change an activity name, so the mesh
  view can update (smcv)
* Fix bug where activities initially had empty title in mesh view (smcv)

Snapshot 25218b4642

* Support invitations and non-public activities (smcv)
* Support mutable name/tags/color/private properties (smcv)

Snapshot 1c58a0be88

* Update LinkLocal plugin's protocol to "local-xmpp"

Snapshot 970ca27db7

* Make buddy-left async (morgs)

Snapshot 8dc589f5b0

* #2214: Gracefully handle blank server field (dcbw)

Snapshot fbc25c93ad

Snapshot bc7fc5f02d

* Cope with arbitrary Unicode in nicknames, bug#2611 (smcv)

Snapshot ce62f752b2

* Text channel creation minor fixes (smcv)
* #2062: Handle trying to register if the server says already registered
  (cassidy)

Snapshot 79251459e5

* Return buddy properties as a byte array, not an array of bytes (dcbw)
* Don't list the owner twice in GetBuddies method (danw)

Snapshot 650c323462

* Don't send None over D-Bus when updating current activity (danw)
* Make locally-originated shared activities disappear when everyone leaves (dcbw)

Snapshot 6c86d827b5

* Set Buddy current-activity property to none if leaving the current activity
* Hook up to owner current activity change signal so current activity changes
  get propagated
* Fix re-appearance of buddies by actually forgetting about the buddy completely
  when a buddy disappears

Snapshot b539f146e9

* Disable avatars. The cache was causing high cpu usage at startup (smcv) 

Snapshot e9c851eb8f

* Reapply (with fix) the patch for Better backoffs with connection
  retries to avoid hogging the CPU (morgs)

Snapshot 6f2584d5eb

* Revert: Better backoffs with connection retries... as it stopped
  the server plugin from connecting (morgs)

Snapshot e26e3c0294

* Better backoffs with connection retries to avoid hogging the CPU (smcv)
* Cope with CMs with no presence interface (smcv)
* Warn if dbus-python is older than 0.82.0 (smcv)
* Implement PS calls to leave a shared activity (morgs)
* Fix buddy-left signals (morgs)
* Fixed regressions from adding salut (smcv, morgs)
