**M1**: User authentication and message view
- Extend JMAP client library
- issues tracked at https://github.com/linagora/jmap-client/issues)
- Handling of authentication/authorization failures
- Return to login or require overlay re-authentication
- UI Components
- Treelist (issue #3)
- Tests and CI automation
- Unit tests for core features (issue #4)
- Set up Travis CI <-> Github integration (issue #5)
- Notifications App
- https://git.kolab.org/w/roundcube-next/apps/notifications/
- Configuration App
- Basic "Settings" section
- Hooks for other components to define user preferences
- Core settings:
* Language
* Timezone
* Date/Time format
- Store in local storage
- JMAP extension for syncing settings with server/user account
- Protocol extension
- Server-side support (roundcube-server)
- Mail App
- Folder listing
- Using Treelist component, sorted alphabetically
- special-use folders (Inbox, Drafts, Sent, Trash) in top
- Message list
- paging; endless scrolling
- stateful list items (unread, flagged, selected)
**M2**: Full message view and organizer
- UI Components
- Toolbar
- Menus
- Attachments App
- Rendering of attachment models
- Preview and download through JMAPs 'download' endpoint
- UI components for uploading through JMAPs 'upload' endpoint
- Mail App
- Message list
- control sorting
- expandable threads (or conversation view?)
- Search Messages
- Search via JMAP getMessageList with filter property
- Display snippets (from JMAP getSearchSnippets)
- Message view
- HTML/Plaintext toggle for multipart/alternative
- List attachments (using core app)
- Conversation view (render multiple messages in a thread)
- Message actions
- Set message flags (unread, flagged/starred)
- Move message to folder (drag & drop, button + menu)
- Delete message
- Print message
- Settings panel
- Mark messages as read (immediately, after X seconds, never)
- Display as HTML/Plaintext
- Display remote images (always, from known senders, never)
**M3**: Message composer
- UI Components
- Forms (What forms?)
- Mail app
- Message actions
- Forward (inline, attachment)
- Reply, Reply all (list, all)
- Message composition
- Select sender identity (from accounts)
- Message headers (To, Cc, Bcc, Reply-To, Followup-To)
- Plaintext message text
- Richtext editor (CKEditor, Squire - hopefully plaintext editing can be handled by the same tool)
- Add attachments (using Attachments app)
- Spell check
- Sending options
* Priority
* Save in folder X
- Save as draft
- Settings panel:
* Compose options
* Compose HTML messages
* Safe as draft every X minutes
* Quotation mode
* Message forwarding (inline, attachment)
* ...
**M4**: Contacts integration
- Contacts App
- Address book / group listing
- Collect from all accounts with hasContacts
- List groups below the according address book
- Contact listing
- Paging and endless scrolling
- Contact view
- Visualize contact properties from JMAP spec
- Render photos
- Mail app
- Contact integration
- Autocompletion in recipient fields
- Provide a contacts widget for browsing contacts
- Show contact photo in mail view
- Add contact from mail view (sender, recipient)
**M5**: Full contact management
- Contacts App
- Contact editing
- Dynamic form expansion (add property X)
- Photo upload/adjustment
- Actions
- Delete
- Move/Copy
- Add/remove group
- Compose mail to
- Search
- Settings panel
* Default address book
* Listing mode
* List sorting
**M6**: Folder management
- Mail app
- Add, delete, rename folders