Speccing out a full page chat plugin

I’ve gotten a bit of a start on this, which is up on the full-page-chat branch on the babble repo.

Here is a screenshot: (it’s not that pretty yet :dancer:)

In response to the MVP prompts:

  1. A chat topic type: I’m happy to move to a ‘chat’ archetype if it’s necessary.
  2. Autosizing single line composer: This is done with the exception of adding uploads. Uploads may be out of scope for this MVP, but would be happy to have them again.
  3. Override default rate limiter: Babble ignores rate limits at the moment, so we’ll want to put one in there. One per second sounds good.
  4. Remove or significantly increate time-based limits for posts: We’ll have to add this (if we can repro it happening)… I’m surprised I never heard feedback about this one, actually.
  5. Remove or significantly reduce the maximum length for posts in chat topics: This should be easy to add
  6. Remove check for duplicate content: Babble does this
  7. Remove or alter check for ‘descriptive’ posts: Babble does this
  8. A post stream: I think the post stream is Good Enough for this iteration (although things will get hairy around searching through history and such, and we will likely want to revisit it at some point)
  9. Post edit and delete: These work for Babble
  10. Add category sub-route: I think I agree with this approach, but wonder about the unread count (does it just show the unread count for the selected chat? With Slack it’s a single dot, essentially saying ‘there is stuff to read here’)
  11. Tweak notifications produced by chat: Yes. I’m not quite sure how to do this yet, but we’ll want to do it somehow.
  12. Prevent chat topics from producing email alerts: Babble doesn’t currently send emails about chat.

From my end, my checklist looks like:

  1. Make existing widgets flexible enough to appear in shoutbox and full page chat (done)
  2. Add routing and views for a full page chat (done)
  3. Add site settings to allow users to enabled/disable both the shoutbox view and the full page view
  4. Add a ‘who’s in the room’ function to show who’s currently viewing the chat (which will appear underneath the channels list, similar to slack’s layout. Eventually we will make it so that you can send private / quick messages this way.)
  5. Style up everything so it looks good and is responsive
  6. Add a default ‘lounge’ chat channel (since that’s our stated MVP per @erlend_sh)
  7. Figure out where to expose the route to /chat in the UI, and how notifications will work
9 Likes