Add some basic edit replaces previous message functionality. Along the way discover that matrix IDs are terrible CSS selector IDs. Regex our way around that, for now.
Fix our replies being flagged as replies. We would get undefined back if both no relation existed and there was no rel_type field.
Add some reply and edit detection.
Get the room view rendering again with our new structs.
Make getRoomHistory start using our new parsing code. Of course moving all our structs around breaks room rendering, fix that next. Also, find a good spot to download media messages.
Start setting up a global users table. Right now we don't track the room local name/avatar.
Start parsing redactions.
Add m.image parsing.
Add some more to our message event parser. This forced us to clean up our room state parser. Grab the underscore object.merge function and start using it. We'll be seeing more of this later.
Save our room search every now and then (30 seconds) so we don't reload to a *really* stale state.
Move member avatar parsing to parseRoom as it's a room state event. Make parseMessages only deal with message events.
Start implementing a message event parser. Not hooked up to anything yet. Subject to change as other endpoints (/sync?) might send data back differently. Do we want to just handle messages and move m.room.member to our room event parser where it belongs?
Log unknown room state events, and add a few notes on events we'll want to implement later.
Save our room search filter history when we navigate in to a room. Session storage so the filter clears properly when we close the page.
Add a clear button to the room search bar. Also make it a template.
This started as a small refactor of the room event parsing code and ended with a rewrite of the whole avatar fetching function to include color hash support. There are still some bugs around user event parsing, but that's coming next.
Roll the media fetch function in to the main fetch, and return data based on the content type response.
Bind our fetch() function just to the account object, not all objects. Also fix our sync event loop.
Move all external files to the vendor directory. Easier to track there.
Add a search filter for the room list.