Linus Rath
d78f245b40
fix: make the shell's small buttons easy to tap on phones: notifications, account menu, welcome tips, tour, toasts and the search clear button
2026-10-28 04:19:21 +01:00
Linus Rath
d65cdba181
fix: put the Apps dialog on the shared dialog shell, with a named close button and a backdrop that closes it
2026-10-28 04:12:58 +01:00
Linus Rath
a62317ba63
fix: translate the shell's resize, close, folder count and update labels, and announce a waiting update on the admin entry
2026-10-28 04:06:12 +01:00
Linus Rath
1386b12908
fix: open Out of Office from the vacation banner instead of the last settings page
2026-10-28 03:43:51 +01:00
Linus Rath
d3c6e7f5db
fix: close the rail's storage popover with Escape
2026-10-28 03:42:37 +01:00
Linus Rath
cca8b617e6
fix: confirm account removal in the app's dialog, show its remove button on touch screens, and draw every sign-out row the same
2026-10-28 03:41:24 +01:00
Linus Rath
04f45e0b29
fix: point the plugin sidebar section arrows the right way in right-to-left languages
2026-10-28 03:36:44 +01:00
Linus Rath
b5dcb04c53
fix: mirror the login page's theme button and password toggle, and the rail badges, in right-to-left languages
2026-10-28 03:36:01 +01:00
Linus Rath
2c4e259ddc
fix: point the phone tour at the bottom tab bar and skip steps with nothing on screen to show
2026-10-28 03:19:00 +01:00
Linus Rath
8d43023c48
fix: keep the keyboard shortcuts button and All inboxes in the Mountain View top bar outside Mail
2026-10-28 03:12:59 +01:00
Linus Rath
ae412e0cda
feat: show notifications, the command palette and the account avatar in every app's phone header
2026-10-28 03:05:41 +01:00
Linus Rath
03304a3cdc
fix: show toasts above the phone's bottom bars, newest at the bottom, and let a swipe dismiss them
2026-10-28 01:48:36 +01:00
Linus Rath
e159ca1420
fix: name the rail's Mail entry Mail for screen readers instead of its unread count
2026-10-26 16:49:44 +01:00
Linus Rath
cf2c27157d
Merge branch 'main' into feat/stalwart-1.0
...
# Conflicts:
# components/contacts/contacts-app.tsx
# components/email/__tests__/composer-discard.test.tsx
# components/email/calendar-invitation-banner.tsx
# components/email/email-composer.tsx
# components/mail/mail-app.tsx
# components/pro/pro-compose-tab-body.tsx
# components/pro/pro-email-tab-body.tsx
# components/ui/__tests__/avatar.test.tsx
# components/ui/avatar.tsx
# hooks/use-mailbox-drop.ts
# lib/__tests__/calendar-alerts.test.ts
# lib/__tests__/jmap-calendar-tasks.test.ts
# lib/__tests__/jmap-send-threading.test.ts
# lib/demo/demo-client.ts
# lib/demo/fixtures/calendars.ts
# lib/jmap/client-interface.ts
# lib/jmap/client.ts
# lib/web-push.ts
# stores/__tests__/contact-store.test.ts
# stores/__tests__/email-store-thread-key.test.ts
# stores/calendar-store.ts
# stores/contact-store.ts
# stores/email-store.ts
2026-10-26 10:14:12 +01:00
Linus Rath
e31f55064e
fix: use the current calendar and contacts icons in the Mountain View side panel
2026-10-25 12:56:48 +01:00
Linus Rath
1bd1a6b123
Merge pull request #1334 from HOLOEYE-JZ/feat/sidebar-tags-first
...
feat: admin policy gate to list the Tags above the shared mailboxes
2026-10-24 17:55:01 +02:00
Jacob Zeitz and Claude Opus 5.5
96526c1b41
feat: admin policy gate to list the Tags above the shared mailboxes
...
A new feature gate, tagsAboveSharedEnabled (default off, so the sidebar
keeps its order), lists the Tags section above the shared mailboxes
instead of below them. With many shared mailboxes expanded, the tags
otherwise end up out of sight. In Mountain View the tags then follow the
Labels list directly, also when More is open.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-24 08:54:23 +02:00
lsamc
51404ed015
feat(plugins): allow inline actions beside sidebar section headings
2026-10-21 21:20:29 -04:00
Linus Rath
1d9e908e63
fix: stop the pane divider from following the mouse after the button is released over a frame
2026-10-20 17:53:18 +02:00
Linus Rath
2319f6a0f0
feat: let the user drag the composer's plugin panels wider or narrower
2026-10-20 17:21:13 +02:00
Linus Rath
416e59fa54
fix: give the admin panel the real navigation rail, extension icons and the plugin settings last
...
The admin drew its own copy of the rail, with a logo and only the app
links, next to a sidebar that signed out from its footer. It now renders
the webmail's NavigationRail (desktop and phone), which needs the
translation, theme and tour providers under /admin, so the admin layout
loads the message catalog itself; the rail marks Admin as the current
app for password admins too. The sidebar footer carries the admin
session links and the same about footer as the settings. Plugin and
theme rows and the detail header show the extension's icon from the
directory listing instead of a generic one, and a plugin's own settings
move to the bottom of its page, after availability, permissions and
versions.
2026-10-20 15:38:55 +02:00
Linus Rath
dd8aa05151
feat: use simpler calendar, contacts and files icons in the app switcher
2026-10-19 21:08:25 +02:00
Linus Rath
401d49471e
feat: let settings links name a section and add a jump row to each page
2026-10-19 18:14:01 +02:00
Linus Rath
4c0017d0c1
feat: rework the demo around one persona with two accounts and a shared mailbox
...
The demo user becomes Nora Lindqvist, engineering lead at Meridian Labs,
in the week of a product launch. The fixtures tell one story across mail,
contacts, calendar, tasks and files, and exercise the features the
screenshots and the public demo should show:
- a second, mail-only login (her personal domain) and the shared Support
mailbox delegated to the work account, so the account switcher, the
shared section and the merged inbox have real content
- raw headers the way Stalwart writes them: the sender check fails on
the phishing mail, newsletters carry a one-click unsubscribe, one mail
asks for a read receipt, and spam scores show in the details
- an iMIP invitation with a served .ics, an event waiting for the answer
on the calendar, and RSVP patches applied in the demo client
- @mentions as mailto links in a received mail, a verification code
twelve minutes old, nested folders, named tags on the mail, contact
groups, a scheduled message and tasks switched on
- every attachment and file backed by real bytes under public/demo,
generated by `scripts/demo-assets/generate.mjs`; contact photos are
bundled portraits instead of requests to randomuser.me
- folder counts computed from the mail instead of hand-kept numbers
Demo login seeds the tags, templates and merged-inbox settings once per
device and switches the cross-account gate on for the session; "Reset"
restores them. `bulwark-demo-simulate=off` in localStorage stops the
simulated incoming mail for screenshot runs.
2026-10-18 19:48:11 +02:00
Linus Rath
edf675b2f4
feat: list your own folders in a separate section of the sidebar #1205
2026-10-17 19:18:22 +02:00
Linus Rath
1c3cc35a7c
feat: set the counter per folder, e.g. keep the Drafts count with totals off #982
2026-10-17 19:18:16 +02:00
Linus Rath
41a0716c50
Merge branch 'main' into feat/stalwart-1.0
2026-10-16 01:41:48 +02:00
Linus Rath
dd2104cdda
feat: mute notifications for single folders or whole accounts #1169
2026-10-15 21:50:08 +02:00
Linus Rath
6ef0d97900
fix: count storage quota against softLimit when the server sets one #1242
2026-10-15 14:31:09 +02:00
Linus Rath
84a53e9ea3
perf: stop re-rendering the folder sidebar when a message opens
2026-10-15 02:20:56 +02:00
Linus Rath
b59e3520f8
perf: stop re-rendering the message rows and mail view on unrelated store changes
2026-10-15 00:00:28 +02:00
Linus Rath
93c40024d9
fix: show user folders named like system folders with the plain folder icon #1235
2026-10-14 22:57:57 +02:00
Linus Rath
f8448c6a45
fix: stop reporting calendar, task and contact changes as done when a plugin stopped them
2026-10-14 19:56:06 +02:00
Linus Rath
9d8f762b1d
feat: let a plugin title its sidebar section
2026-10-14 11:47:25 +02:00
Linus Rath
8bf4df4513
feat: add a notifications panel for plugin notifications and app errors
2026-10-14 05:25:16 +02:00
Linus Rath
86e593a752
feat: add a command palette on Ctrl+K where plugins can add their own commands
2026-10-14 05:10:10 +02:00
Linus Rath
b8b7a4ed15
feat: let plugins add pages of their own with an entry in the navigation
2026-10-14 04:57:00 +02:00
Linus Rath
b57fa64557
feat: let plugins add buttons to the top bar, and to the header menu on phones
2026-10-14 04:50:21 +02:00
Linus Rath
37846bec44
feat: let plugins add collapsible sections to the mail sidebar
2026-10-14 04:45:24 +02:00
Linus Rath
3788446271
feat: let users hide shared mail accounts from the sidebar #1228
2026-10-13 15:55:54 +02:00
Linus Rath
4d733aa598
chore: remove unused exports and the dead plugin error boundary
2026-10-13 13:36:51 +02:00
Linus Rath
c633185cda
Merge branch 'main' into feat/stalwart-1.0
...
# Conflicts:
# CONTRIBUTING.md
# LICENSE
# README.md
# app/api/calendar-agenda/route.ts
# app/api/wopi/files/[fileId]/contents/route.ts
# app/api/wopi/launch/route.ts
# components/calendar/calendar-app.tsx
# components/calendar/calendar-day-view.tsx
# components/calendar/calendar-month-view.tsx
# components/calendar/calendar-week-view.tsx
# components/calendar/event-modal.tsx
# components/contacts/contact-detail.tsx
# components/email/email-composer.tsx
# components/email/email-list.tsx
# components/files/file-browser.tsx
# components/files/files-app.tsx
# components/files/folder-tree-sidebar.tsx
# components/filters/filter-rule-modal.tsx
# components/mail/mail-app.tsx
# hooks/use-mailbox-drop.ts
# integration/run-tests.sh
# lib/__tests__/calendar-agenda-route.test.ts
# lib/__tests__/jmap-draft-lifecycle.test.ts
# lib/__tests__/web-push.test.ts
# lib/account-state-manager.ts
# lib/jmap/client-interface.ts
# lib/jmap/client.ts
# lib/jmap/types.ts
# lib/message-list-order.ts
# lib/sieve/generator.ts
# lib/sieve/parser.ts
# lib/telemetry/payload.ts
# lib/thread-utils.ts
# lib/unified-mailbox.ts
# lib/web-push.ts
# lib/wopi/token.ts
# locales/ar/common.json
# locales/ca/common.json
# locales/cs/common.json
# locales/da/common.json
# locales/de/common.json
# locales/en/common.json
# locales/es/common.json
# locales/fa/common.json
# locales/fr/common.json
# locales/he/common.json
# locales/hu/common.json
# locales/it/common.json
# locales/ja/common.json
# locales/ko/common.json
# locales/lv/common.json
# locales/mn/common.json
# locales/nb/common.json
# locales/nl/common.json
# locales/pl/common.json
# locales/pt/common.json
# locales/ro/common.json
# locales/ru/common.json
# locales/sk/common.json
# locales/tr/common.json
# locales/uk/common.json
# locales/zh-TW/common.json
# locales/zh/common.json
# scripts/lite/lib.mjs
# stores/__tests__/calendar-store-synthetic-ids.test.ts
# stores/__tests__/email-store-shared-folder-keywords.test.ts
# stores/__tests__/email-store-unified-actions.test.ts
# stores/__tests__/file-store.test.ts
# stores/email-store.ts
# stores/file-store.ts
# stores/message-list-tabs-store.ts
2026-10-12 08:35:08 +02:00
Linus Rath
c587ad459e
fix: keep the dark body backdrop full width in Mountain View and show Gmail's help button
2026-10-12 02:00:02 +02:00
Linus Rath
0a82835626
feat: lay out Mountain View's account card like Gmail's
2026-10-12 01:53:19 +02:00
Linus Rath
986daef90b
feat: add Gmail's side panel with calendar, tasks and contacts to Mountain View
2026-10-12 01:40:30 +02:00
Linus Rath
cf558e7e9f
feat: lay out Mountain View's navigation like Gmail's, with a Labels section
2026-10-12 00:46:48 +02:00
Linus Rath
ae151cec25
feat: set Mountain View's content on a rounded card over a tinted canvas
2026-10-12 00:37:59 +02:00
Linus Rath
11cf2415d6
Merge pull request #1210 from lucamzanon/fix/mv-collapsed-rail
...
fix(mountain-view): let the collapsed rail fill its 72px column
2026-10-11 21:09:30 +02:00
Linus Rath
e7237e1d05
feat: run saved rules on a folder from its context menu #1166
2026-10-11 19:16:51 +02:00
lucamzanon
26ae483577
fix(mountain-view): let the collapsed rail fill its 72px column
...
With the navigation collapsed, Mountain View gives the sidebar a 72px
column, but the sidebar inside kept the default layout's 48px width. The
round compose button was cut in half, the selected folder's highlight
ran off the edge, and an empty strip showed before the message list.
2026-10-11 13:30:11 +02:00