Ethan

Making products people love πŸ”₯πŸš€

Load email bodies from the emailContents table in IndexedDB into the email viewer iframe

Created a new and improved emailViewer object to store data for the email viewer

Updated the board interface code to work with the new thread-based storage format

Created a new updateThreads function which will replace the updateEmails function β€” it fetches the threads from Gmail/Outlook and converts them into the correct data structure for storage straight into IndexedDB

Finally redid the schema for email storage and transitioned from email objects to thread objects containing message objects! Now there will be a ton less weird edge case behaviours when it comes to threads

Made more parts of the KanbanMail codebase work with the new IndexedDB code

Removed insane IndexedDB lag and memory leaks by putting email contents (body + attachments) in a separate table

Spent six hours straight trying to take full advantage of IndexedDB, didn't manage to get it working yet, we'll see where it ends up. Thanks @jivings for being super helpful!

Added compact versions of the "Move to Done" and "Unsubscribe" buttons