~singpolyma/cheogram

No one cares about join/part

SMS users rarely do it, and social cues might be in place to handle that
anyway.  Data users flap way to much to be useful, and usually can read
backscroll anyway so they'll see you message when they come back.

If you really want to see join/part messages, you can explicitly ask for
them, with a set debounce (in seconds)
Debound both joins and parts
Advertise jabber:iq:gateway support
Merge presences into old_presences

In case rejoin attempts happen without a sucessful join in the middle.
Rejoin on status 332

Closes #36
Rejoin even if remote server takes awhile to come back

Make sure that on rejoin we end up with a correct list of who is in the
room.

Almost done #36
Replace startup join logic with constant pings

We might restart, the remote might restart, best way is to just
constantly check if we're still in the room.  On startup, re-check each
of our users and rejoin anyone who does not respond to ping.  Then keep
pinging.

Partial for #36
Persist rooms we create, allow anyone to send invites

The latter is not supported on Prosody
<https://prosody.im/issues/issue/254> which is why we still set everyone
to owner when inviting.
Respond to iq pings
Put time in logs
Room presence manager

We now store on a per-tel basis who they have seen join/part the room.
Joins/parts are stored based on what they have actually seen (via
debounce) and so should always map to SMS we actually sent.

If we get a join from someone we already thought was in the room, that
information is useless.  Do not send it.  Closes #34

We also update the global list in the same place, which I think is now
only used for the re-join on daemon restart.  This is related to #30,
but may not complete it yet.
There can be more than one status

Closes #29
Preserve JID mappings we know about
I think this should prevent unneeded rejoins
Log exact items in MUC on restart
Debounce join/part SMS notifications

We don't tell you someone left the group until they are gone for 2
minutes.  If they come back in that time, we never tell you anything.

This is for people on bad internet who keep leaving and reconnecting
right away. The stream of SMS messages is very annoying.  They will see
your messages when they come back (usually) because of MUC scrollback
features.  If they are gone longer, we will tell you and hopefully you
didn't say a lot of stuff while they were gone.

Closes #33
Stop printing all the vitelity in Nothing lines
Always send join/part SMS

This was causing only one person to get the SMS messages, since we
record that the person left as soon as we hear about it, and we process
stanzas in order, so no one else would get notified.

If we turn out to need this kind of filter, we can do a per-person list
of who they think is in the room or something?
Responding to probes instead of broadcasts

I think this is what we're actually supposed to do.
Next