Added text parsing (for emoticons, links, etc), replaced ng-repeat with more flexible custom directive, escaping user HTML in backend