Thursday, January 21, 2010

Messaging updates, round 2: conversations and an "unread" tab

When we added the ability to mark messages as unread last month, one of the maintenance problems that became apparent was a need to be able to find those unread messages once they fell off the first page, never to be seen again. So, we added an unread tab to the inbox page. Priming that listing required a little bit of db churn (enough to postpone this announcement for a couple of days actually), and we think we got everyone, but let us know if your unread tab looks sub-par.

The other half of this upgrade is to include something like threaded messages to keep track of your conversations. All of the new UI lives in the messages tab, which now looks like this:
In this way, we'll show both the messages you've received and sent in a given conversation, in order of their creation. You can reply in place and change their read/unread status just like anywhere else in the inbox. Also, in this view, messages are collapsable, and they'll retain that state from one load to the next. To conserve resources (screen, CPU, bandwidth, etc.), we've also allowed for collapsed conversations to only show the most recent response with a link to load the rest of the conversation (think gmail).

Other than this your inbox should look generally unchanged except:

  • We swapped the title and author line on comments. This makes it a little more consistent with the comment layouts we already use, and also helps with the threading layout.

  • Messages now have a "permalink" button which bring you to the messages page with their position in a conversation highlighted (just like comment permalinks).


We're still working on getting the UI right, and are open to suggestions (not like I don't think you'd be providing them anyway).

And, for those who don't like the change, no worry: new preferences:
The first will disable the new rendering style, unless you go to a message permalink. The second will auto-collapse read messages to keep your inbox nice and condensed.

And, last of all, with all of these changes to the inbox, we realized it was time to upgrade our API a little bit. There really hasn't been a great way via JSON to check if you have mail, and we broke some of the schemes/workarounds that have been developed when we last upgraded messaging. So, we added a "has_mail" attr to /user/username/about.json which will return true if you have mail and are logged in as that user.
discuss this post on reddit