Commit Graph
1415 Commits
Author SHA1 Message Date
Tobias Genannt decaa07a5a fix(calendar): align month view day columns with the header
The day header in the calendar month view was rendered outside the vertical scroll container, causing each header column to divide the full container width (100%) while the day grid cells below divided the remaining width excluding the vertical scrollbar. On platforms with classic scrollbars, this caused an escalating misalignment between the header columns and the day cells.

Move the day header inside the scroll container as a sticky row (sticky top-0 z-50 bg-background), matching the pattern established in the week and day views, and account for the header height in row minimum height, scrollToFocus, and sampleVisibleMonth.
2026-10-19 12:42:20 +02:00
Linus Rath aeb2aeda66 fix: stop a click on a mention chip from opening the mailto handler in Firefox 2026-10-19 00:47:05 +02:00
Linus Rath 38c983a886 fix: open the mention card on click and show on hover that the chip is clickable 2026-10-19 00:38: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 eb18a13878 feat: show the contact card for @mentions in the composer and in received mail 2026-10-18 18:23:45 +02:00
Linus Rath bfe98b49a0 fix: act on the clicked row when another account has a message with the same id (GHSA-8x23-qw3w-mhrx) 2026-10-18 17:54:48 +02:00
Linus Rath fbae8acfb8 feat: turn @mentions into chips with a hover card 2026-10-18 17:52:11 +02:00
Linus Rath 0ac7bcb385 feat: show the message list as columns with one-line conversation rows #262 2026-10-18 17:37:21 +02:00
Linus Rath 8791fa5176 feat: offer contacts in @ mentions and add the picked one as a recipient 2026-10-18 16:36:28 +02:00
Linus Rath ea1d1e2870 fix: stop re-rendering every row when a search starts 2026-10-18 16:01:43 +02:00
Linus Rath 4fa22200e7 fix: keep vacation forwarding and plugin vetoes when a tag rename rewrites the filters #854 2026-10-18 15:03:20 +02:00
Linus Rath 45840e722a Merge pull request #854 from dev-hive-kazniisa/fix/keyword-rename-sieve-sync
fix: renaming a tag leaves filter rules tagging under the old id
2026-10-18 15:02:15 +02:00
Linus Rath eb100c6aac fix: draw the Estonian flag without a shared clip path id 2026-10-18 14:39:59 +02:00
Linus Rath 1e992e6c7f fix: check plugin dropdown messages before the host draws them 2026-10-18 14:39:59 +02:00
Linus Rath be06956398 test: cover the From pick when replying to another connected account 2026-10-18 14:39:59 +02:00
Linus Rath 811e175cd0 fix: tell today's mail by the time zone setting in the sender line #1259 2026-10-18 14:39:58 +02:00
Linus Rath 2f7873e756 test: update the inline image reply test for the current composer mocks 2026-10-18 14:39:07 +02:00
Linus Rath 402188a4d5 Merge pull request #1125 from guisea/fix/inline-attachments-reply-forward
fix(email-composer): normalize bracketed content-ids for inline reply/forward images
2026-10-18 14:38:13 +02:00
Linus Rath 1ff7db0827 Merge pull request #1254 from raudraido/feat/add-estonian-locale
feat: add Estonian (et) locale
2026-10-18 14:34:37 +02:00
Linus Rath 100da43991 Merge pull request #1247 from lucamzanon/feat/account-archive-passwords
feat: optionally keep mailbox passwords in the account list backup
2026-10-18 14:34:31 +02:00
Linus Rath 5aba2a92c5 Merge pull request #1251 from tobiasge/feat/plugin-ui-kit-combobox
feat(plugins): add Combobox component to UI kit with host floating dropdown portal
2026-10-18 14:34:26 +02:00
Linus Rath 7dd8e93949 Merge pull request #1270 from vixh/fix/multi-account-self-reply
fix: reply to a message from another connected account goes to that account
2026-10-18 14:34:22 +02:00
Linus Rath 58eff0e879 Merge pull request #1258 from HOLOEYE-JZ/feat/archive-feature-gate
feat: admin policy gate to turn off archiving #1257
2026-10-18 14:29:27 +02:00
Linus Rath 5411a9ef50 Merge pull request #1272 from Peterka35/fix/mark-as-read-delay-thread-expand
fix: mark shared conversations read on the owner account, and follow markAsReadDelay when expanding a conversation
2026-10-18 14:21:50 +02:00
Linus RathandFrench-Asgeir 7163a5dcc1 fix: translate contact field types and more French strings
Co-authored-by: French-Asgeir <109287366+French-Asgeir@users.noreply.github.com>
2026-10-18 14:19:07 +02:00
Linus Rath 8e7245b26c feat: let the theme policy set and lock the color mode #1280 2026-10-18 13:46:49 +02:00
Linus Rath 89001ededa fix: open the reader's Move, Tag and Rules flyouts on the side with room #1261 2026-10-18 13:46:48 +02:00
Peterka35 bbc3c2123e fix: follow markAsReadDelay when expanding a conversation or opening a Pro folder row
Expanding a conversation in the message list (row click, expand chevron,
or the `x` shortcut) and clicking a row in a Pro folder tab marked the
messages read straight away. They ignored "Mark as read: Never" and any
delay, which the reading pane and the conversation view follow.

Route them through one helper, scheduleAutoMarkAsRead: -1 never marks,
0 marks at once, any other value marks after that many milliseconds and
returns a cancel function.

- New store action autoMarkExpandedThreadAsRead keeps one pending timer
  per thread key. Collapsing the thread, or collapsing all threads, drops
  it. Both expansion paths (EmailList and the `x` handler in MailApp) use
  it.
- MailApp's handleEmailSelect drops the pending mark of every expanded
  thread other than the one the newly opened message belongs to, through
  cancelAutoMarkThreadAsRead. Moving on with `j`/`k` or a click no longer
  lets the delayed mark land on a conversation the user has left. The
  thread stays expanded.
- ProFolderTabBody schedules the row mark through the helper and drops a
  pending one when another row is opened or the tab unmounts.
2026-10-17 21:01:34 +02:00
Viktor Shulika MacBook Air M5andClaude Opus 5.5 76dbaf532a fix: reply to a message from another connected account goes to that account
With several accounts connected, the composer treated every account's
identities as "own" when deciding whether a message was self-sent (#703).
A message that account B sent to account A therefore looked self-sent
when replying from A, so the reply was addressed to the original To -
account A itself - and From was switched to B.

Self-sent now means "sent by the account holding the original":
buildReplyRecipients takes an optional selfSentEmails list (defaulting to
ownEmails, so single-account behaviour is unchanged), and the composer
passes the source account's identities there and to the From selection.
Reply-all still drops every connected account's addresses.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 20:31:25 +02:00
Linus Rath 107d731af7 feat: remove a message from just the open folder when it is in several #615 2026-10-17 19:18:25 +02:00
Linus Rath 1ad1e31781 feat: set message priority in the composer #970 2026-10-17 19:18:23 +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 03031fcb13 feat: jump to the next unread message with n #514 2026-10-17 19:18:20 +02:00
Linus Rath b611d9c028 feat: refresh sender icons that changed on the sender's website #960 2026-10-17 19:18:18 +02:00
Linus Rath 481665b435 test: pick the role dropdown in the folder order test next to the counter menus #982 2026-10-17 19:18:17 +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 3fd93df4b2 feat: extend the message selection with shift+arrow keys #992 2026-10-17 19:18:15 +02:00
Linus Rath b76624466f feat: show the folder on search results from all folders #1172 2026-10-17 19:18:11 +02:00
Linus Rath 5d5f099cff feat: tick a row by clicking anywhere on it while selecting #1014 2026-10-17 19:18:06 +02:00
Linus Rath f47fe778d0 feat: add a setting to hide the account dot in the unified view #912 2026-10-17 19:18:01 +02:00
Linus Rath 7d882be734 fix: delete only the clicked mail when another account has a message with the same id #857 2026-10-17 19:18:00 +02:00
Linus Rath cbf917372c fix: show the mail's own date in the list and keep it on .eml import #891 2026-10-17 19:17:58 +02:00
Linus Rath ce60099523 fix: decrypt PGP and S/MIME messages inside conversations #902 2026-10-17 19:17:56 +02:00
Linus Rath b646ff0dc1 fix: preview attachments in the installed app instead of opening a blank window #865 2026-10-17 19:17:55 +02:00
Linus Rath 5515297857 fix: keep blank lines in sent mail instead of collapsing them #1015 2026-10-17 19:17:54 +02:00
Linus Rath 0fb4fc53cf test: cover keeping typed text when a template goes into a reply #911 2026-10-17 19:17:53 +02:00
Linus Rath aa112b3397 fix: sign replies whose From is picked after the composer opens #842 2026-10-17 19:17:53 +02:00
Linus Rath 89ffb7270a fix: stop sending a contact group whose member is not an address #795 2026-10-17 19:17:52 +02:00
Linus Rath bfe95e0ebd fix: keep your own address out of reply-all before your identities have loaded #803 2026-10-17 19:17:51 +02:00
Linus Rath d47f26da20 fix: show invitation times in your time zone #1252 2026-10-17 19:17:49 +02:00