Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature Request] Side-by-Side Interface for Email List and Email Details #336

Closed
no-operation opened this issue Jul 24, 2024 · 12 comments
Closed
Labels
enhancement New feature or request

Comments

@no-operation
Copy link

Currently, the Mailpit interface requires users to switch between different views to navigate emails and read their contents. While this works, it can be less efficient for users who need to manage and read multiple emails quickly.

I propose the following enhancements:

1.	Sidebar Email List: A vertical list of received emails on the left side of the screen, displaying basic information such as sender, subject, and timestamp.
2.	Detail View Pane: A detailed view of the selected email on the right side, allowing users to read the email content without leaving the email list view.

If there are any specific technical considerations or limitations that need to be taken into account for implementing this feature, please let me know. I am open to providing further details or assisting with testing and feedback.

Thank you for considering this feature request. I believe it will significantly improve the user experience for Mailpit users.

@axllent
Copy link
Owner

axllent commented Jul 25, 2024

Thank you for your suggestions / feedback @no-operation. Whilst I think your proposal sounds like an improvement on larger desktop views, it unfortunately has significant limitations for mobile (or smaller screen) use, ie: it would not work, and would also mean less information in the overview on desktop which would also upset some users.

Mailpit is designed to cater for desktop, tablet and mobile viewing, and a lot of consideration was taken when choosing the current UI to handle all of them (as best as possible). The messages overview already has two columns - one for the mailbox & tags, and another the the message summaries. The message summaries include sender & recipients, subject, excerpt, size, relative received time, and message tags. Reducing this into a narrow column would mean we'd have to loose several of those fields, or it would either be extremely cramped or take up 4-6 lines per message.

The alternative is having two completely separate layouts (ie: selectable by the user) which sounds like a great idea until one realises just how much work goes into developing and maintaining two side-by-side interfaces (hint: a LOT).

Had Mailpit been originally written with this in mind then having a selectable interface may have been significantly easier, but that's not the case unfortunately. To now add support for this would take a significant amount of time, and is something I am not willing to spend my time on in the foreseeable future.

So I again thank you again for your suggestion, but I do not see this happening. I hope you understand?

@fabiomlferreira
Copy link

I think this is a great tip. It should be like Mailtrap, working on both mobile and desktop. Currently, when we are inside an email, the left sidebar shows the “Message date” and “Size.” These can be moved to the message header, and the sidebar can display the list of messages. On mobile, this list can be hidden. This change will make it much easier to navigate between messages.

Many mail clients, such as Outlook or the Mac Mail app, work like this.

@axllent, adding this list to the current email detail page won’t be a big change and can improve the usability of Mailtip. You already have that sidebar, it’s just a matter of changing what is displayed there.

@axllent
Copy link
Owner

axllent commented Jul 25, 2024

That's actually a very good suggestion/idea @fabiomlferreira, and not one that includes either dual interfaces. There is still a lot to consider and a fair bit of work to do in order to make that work, but I think that's feasible.

@no-operation What do you think of this idea?

@no-operation
Copy link
Author

@axllent I think it's a great solution, will be very useful

@axllent axllent added enhancement New feature or request in progress Feature currently being developed labels Jul 27, 2024
@axllent
Copy link
Owner

axllent commented Aug 4, 2024

@no-operation & @fabiomlferreira - I have just pushed a huge update to add this feature. It has not officially been released yet, however it is available if you use the Docker images (using the axllent/mailpit:edge tag). Assuming either (or both) of you use Docker, please could you pull the edge version and give me some feedback?

Screenshot

This change was much, much bigger than I had originally planned, mainly because it ended up also requiring "live" message state changes (ie: read/unraed/deleted/tags), which resulted in a significant internal change as to how the UI communicates with websockets. The upside of this is that two separate browsers viewing the same mailbox get immediate updates when the other makes changes.

I have some more testing as well as some other unrelated changes to make, so it'll still be a couple of days before this can get released, but I'd appreciate some feedback if possible (and you use Docker) before I release anything. Thanks.

@axllent axllent removed the in progress Feature currently being developed label Aug 4, 2024
@fabiomlferreira
Copy link

Amazing work @axllent for me this is a huge improvement its way easier to navigate between emails.

@axllent
Copy link
Owner

axllent commented Aug 6, 2024

Thanks for the feedback @fabiomlferreira - very helpful.

@axllent
Copy link
Owner

axllent commented Aug 6, 2024

This feature has been released in v1.20.0. Given the feedback you already provided @fabiomlferreira, I will mark this issue as closed. Please feel free to leave a comment if there are issues.

@no-operation
Copy link
Author

Perfect @axllent, this is working exactly like mailtrap, well done...

@no-operation
Copy link
Author

I noticed a potential improvement for the message details page. When a new email arrives, the side menu list doesn't update. I'm not sure how complex it would be to implement, but adding this feature would significantly enhance the user experience.

@axllent
Copy link
Owner

axllent commented Aug 9, 2024

I agree, but it is complicated.

Only the "inbox" view supports "live messages" because it shows all messages, and the filtered views (ie: searches) are only a subset of results so these can't be "re-filtered for every incoming message ~ so I have some thinking & work to do here.

Another issue is that in the main inbox the results are paginated, so if 10,000 messages arrive while the inbox is open, then only 50 (or whatever the user selected in the view) are shown at any time which isn't a problem for the browser. But the side navigation on the other hand does not paginate, meaning there would be 10,000 messages pushed to the top of the sidebar which would eventually crash the browser. I have to think of a way to try handle this and will need to implement some limits. I realise that 99.9% of users won't have 10k messages arriving while they are in the message view, but I have to consider (and deal with) this before I can add that feature.

@axllent
Copy link
Owner

axllent commented Aug 10, 2024

@no-operation - This has feature been released as part of v1.20.1 👍 Note that it has two limitations (as previously outlined):

  1. It will only automatically show new messages when viewing a message via the inbox
  2. It will only display up to 100 new messages, after which a notification is shown prompting the user to reload the window to load more.

Please confirm his works for you?

tmeijn pushed a commit to tmeijn/dotfiles that referenced this issue Aug 10, 2024
This MR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [axllent/mailpit](https://github.com/axllent/mailpit) | minor | `v1.19.3` -> `v1.20.1` |

MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot).

**Proposed changes to behavior should be submitted there as MRs.**

---

### Release Notes

<details>
<summary>axllent/mailpit (axllent/mailpit)</summary>

### [`v1.20.1`](https://github.com/axllent/mailpit/blob/HEAD/CHANGELOG.md#v1201)

[Compare Source](axllent/mailpit@v1.20.0...v1.20.1)

##### Chore

-   Shift inbox pagination to inbox component
-   Live load up to 100 new messages in sidebar ([#&#8203;336](axllent/mailpit#336))
-   Show icon attachment in new side navigation message listing ([#&#8203;345](axllent/mailpit#345))

##### Fix

-   Correctly decode X-Tags message headers (RFC 2047) ([#&#8203;344](axllent/mailpit#344))

### [`v1.20.0`](https://github.com/axllent/mailpit/blob/HEAD/CHANGELOG.md#v1200)

[Compare Source](axllent/mailpit@v1.19.3...v1.20.0)

##### Feature

-   Add option to control message retention by age ([#&#8203;338](axllent/mailpit#338))
-   **UI:** List messages in side nav when viewing message for easy navigation ([#&#8203;336](axllent/mailpit#336))

##### Chore

-   Update caniemail database
-   Update Go dependencies
-   Update node dependencies
-   Make internal tagging methods private

##### Fix

-   Prevent potential JavaScript errors caused by race condition
-   Better regexp to detect tags in search
-   Prevent Vue race condition to initialize dayjs relativeTime plugin
-   **API:** Return `text/plain` header for message delete request

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this MR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box

---

This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy40NDAuNyIsInVwZGF0ZWRJblZlciI6IjM3LjQ0MC43IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJSZW5vdmF0ZSBCb3QiXX0=-->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants