# 23-Jun-2026 — single-pane mobile UX, committee role emails, inline images, reply addressing, diagram...

## [build 717](https://github.com/nbarrett/ngx-ramblers/actions/runs/27992416765) — [commit 715cc45](https://github.com/nbarrett/ngx-ramblers/commit/715cc45fe8888178d3125159b913bf750351961c)

_____

A round of improvements to the inbox, the email composer and committee notifications, plus a fix that makes diagrams render reliably on technical articles.

## Inbox on mobile

- Phones now show the conversation list and the open message one at a time: tap a conversation to open it, use the back button (in the toolbar) to return. The cramped desktop two-pane grid is no longer forced onto narrow screens.
- Bigger touch targets for conversation rows and reply buttons.
- Landscape phones (wide but short) are treated as mobile, so they get the single-pane layout too.

## Inbox toolbar

- Two rows at every size: inbox icon and mailbox picker on the first row, action buttons on the second.
- On mobile the action buttons form a two-column grid with the last button spanning full width; on desktop they sit in a single row.
- When the inbox is maximised the toolbar collapses to one row, with the logo, icon, picker and buttons all in line.

## Unread filter

- The passive "N unread" badge has been removed; the funnel filter button is now the single unread control.
- Its label reflects the current view ("All messages", or "N unread" when filtered), and when active it shows a pressed grey state rather than a colour fill.

## Maximise and restore

- Maximise is hidden on phones, for both the inbox and the composer.
- On desktop the Maximise/Restore button now sits inline in the action row instead of floating out of line, and the maximised header is a single row.
- Replying from a maximised inbox opens the composer maximised too.

## Email composer

- Full-width stepper, with the active step's label and hint shown as a caption below the circles.
- The send button now reads "Send", with the full description in a tooltip.
- The page title shares one row with Exit composer and Maximise; Exit composer is full width on mobile.
- Removed the "New draft" / "Reply draft" status labels.
- On the inbox, the page title and breadcrumb are hidden on mobile so the icon and mailbox picker are the first thing on screen.

## Messages

- Inline images now render. Gmail messages that embed images by Content-ID were previously dropped; they are now stored, and their `cid:` references are rewritten to the hosted image URL.
- Plain emails read as they would in a normal mail client: the message frame now defaults to a system sans-serif font and comfortable line spacing instead of the browser's Times serif. Emails that carry their own fonts still use them.
- The most recent message in a thread is expanded by default.

## Replying

- Reply and Reply all now appear on every message, including ones you sent.
- A reply is addressed to the person the thread is with (the address they actually wrote from), whichever message you reply from.
- One-to-one replies no longer start with a merge-field greeting placeholder; you write your own greeting. (The merge greeting only applies to campaign sends.)

## Committee notifications use the role email

- Notifications addressed to a committee member now go to the committee (role) email rather than the member's personal email. If the member holds a role with an email, that role email is used; otherwise it falls back to their personal email so nobody is missed.
- A member with several roles uses the first role that has an email.
- Ordinary members (for example, someone who submitted an expense) are unaffected.
- Sender, reply-to and bcc were already role-based; this aligns the To address as well.

## Login

- The username field no longer auto-capitalises on mobile, so usernames stay lowercase.

## Notification digest

- The digest de-duplicates rows by sender and subject, and builds each preview from cleaned text (no raw URLs, view-in-browser preheaders or logo noise).

## Diagrams on technical articles

- Diagrams now render reliably when a page has several of them across separate content rows, and when a diagram is added anywhere on a page. Rendering is queued so diagrams no longer race each other and paint blank; diagrams already drawn are skipped.

## Under the hood

- The "Replying from a shared inbox" notice is now a shared alert component, so its responsive layout lives in one place.
- Inbox styling moved to Bootstrap 5 conventions: styles in the component sass file, the Ramblers palette and Bootstrap tokens instead of hardcoded colours, utility classes and themed buttons. Tiptap editor toolbar icons are themed to match.