Linus Rath
f970fd1822
feat: add plugin hooks for compose, attachments, search, lifecycle, and routing
2026-05-02 21:27:56 +02:00
Linus Rath
5e096240b3
feat: refresh update status on every dev reload
2026-05-02 13:23:58 +02:00
Linus Rath
bc97a1ac10
feat: make update notice non-dismissible
2026-05-02 13:07:34 +02:00
Linus Rath
5319562c94
feat: add update-available detection
2026-05-02 01:58:30 +02:00
Linus Rath
affa239d75
Merge branch 'main' of https://github.com/bulwarkmail/webmail
2026-05-01 21:35:53 +02:00
Linus Rath
5d292fa43f
fix: scroll apps list in navigation rail to prevent overflow
2026-05-01 21:35:29 +02:00
Linus Rath
231a9017d2
refactor: make settings panel mobile friendly
2026-05-01 20:30:15 +02:00
Linus Rath
9a5bb78b18
refactor: make admin panel mobile friendly
2026-05-01 20:22:29 +02:00
Linus Rath
eecf16daa2
fix: stop silently destroying emails when trash mailbox isnt found #195
2026-05-01 20:01:13 +02:00
Vadim Belov and Linus Rath
210150a02e
Fix push preview JMAP query
...
Resolve the Inbox mailbox id before running Email/query.
The previous query passed a JMAP result reference object directly into the inMailbox filter, which can make the preview endpoint return 502 and cause push notifications to fall back to the generic “New mail” text.
2026-05-01 19:53:25 +02:00
Linus Rath
e9c9be84ad
fix: preserve list scroll position when tagging an email
2026-05-01 17:18:11 +02:00
Linus Rath
841513e510
feat: support subpath deployment with NEXT_PUBLIC_BASE_PATH environment variable
2026-05-01 14:57:49 +02:00
Linus Rath
31d17098d6
feat: open mail from push notification clicks
2026-05-01 02:13:25 +02:00
Linus Rath
3f97e6ed8d
fix: scope email notifications to genuine inbox deliveries
2026-05-01 02:08:13 +02:00
Linus Rath
f3d9115ecd
feat: web push notifications for PWA #233
2026-05-01 00:26:48 +02:00
Linus Rath
45a4db1c22
fix: pin JMAP auth verification to configured server URL #237
2026-04-30 15:34:14 +02:00
Linus Rath
25de7d996c
feat: add tables to composer #236
2026-04-30 15:16:51 +02:00
Linus Rath
7188abc9bc
fix: set In-Reply-To and References on replies #234
2026-04-30 01:25:04 +02:00
Linus Rath
3667c842c6
fix: light-mode override to body content only
2026-04-29 20:17:59 +02:00
Linus Rath
0f6e4f995f
fix: prevent iframe flash on Load images or Trust sender
2026-04-29 18:29:48 +02:00
Linus Rath
419382d25d
feat: add contacts feature gate and update telemetry payload
2026-04-28 17:54:11 +02:00
Linus Rath
8935b81f12
chore: update version to 1.5.3
2026-04-28 17:34:06 +02:00
Linus Rath
81d8465a79
fix: block telemetry endpoint from pointing at internal hosts
2026-04-28 17:16:30 +02:00
Linus Rath
0f3b506604
feat: add extension preview page and API for detailed extension information
2026-04-28 15:55:23 +02:00
Linus Rath
dafc8ace3c
feat: track unique logins
2026-04-28 08:19:46 +02:00
Linus Rath
2c419cc4fe
feat: add right-click context menu on empty calendar space
2026-04-28 01:56:15 +02:00
Linus Rath
90acf181f3
fix: harden plugin config, TOTP token exchange, and branding file serving
2026-04-28 01:44:37 +02:00
Linus Rath
54af07f2af
feat: add anonymous instance telemetry
...
Adds a once-per-day heartbeat that lets the project see how many
instances run Bulwark, on what platforms, with what features enabled,
and roughly how many accounts they have. No email addresses, hostnames,
IPs, or any end-user data are ever sent.
- lib/telemetry: state file, payload builder, jittered scheduler,
instance_id persistence at <data-dir>/.telemetry-id (delete to reset)
- app/api/admin/telemetry: admin API for status / set-consent /
set-endpoint / send-now (all audit-logged)
- app/admin/telemetry: settings page with status, JSON payload preview,
endpoint editor, send-now button, link to the privacy page
- instrumentation.node.ts: starts the scheduler on boot
Default state is enabled. The first heartbeat fires 1 hour after boot
so an admin who installs and immediately disables produces zero pings.
Disable via the settings UI, BULWARK_TELEMETRY=off (or
BULWARK_TELEMETRY_DISABLED=1), or by clearing the endpoint.
Account counts are bucketed (1, 2-5, 6-10, 11-50, 51-200, 201+) so a
small instance can't be re-identified by exact size. The /.telemetry-id
file can be deleted to mint a fresh instance_id.
Receiving collector is open source at bulwarkmail/dashboard. Self-host
your own and point at it via BULWARK_TELEMETRY_URL. Full schema,
retention (90d raw → aggregates), and lawful basis are documented at
bulwarkmail.org/docs/legal/privacy/telemetry.
2026-04-28 01:28:41 +02:00
Linus Rath
68f1fabc4b
fix: batch shortcuts act on multi-selection when present #228
2026-04-28 00:04:29 +02:00
Linus Rath
55099bdcbb
fix: disable Stalwart admin check when custom JMAP endpoints allowed
2026-04-27 22:41:51 +02:00
Linus Rath
3043639d2d
fix: validate URLs before outbound fetch
2026-04-27 22:23:39 +02:00
Linus Rath
3e1de10213
feat: add JMAP sharing for calendars and address books
2026-04-26 20:10:04 +02:00
Linus Rath
fe1d4861bb
feat: composer-sidebar slot + plugin-declared frame-src origins
2026-04-25 18:40:54 +02:00
Linus Rath
29197ea355
feat: replace folder prompt() calls with proper modal dialog
2026-04-25 16:30:18 +02:00
Linus Rath
4788e8a91a
feat: add right-click context menu to mail folders sidebar
2026-04-25 16:26:05 +02:00
Linus Rath
4f7c9c332b
feat: enhance OAuth auto-setup with dialog and validation for origin and issuer URLs
2026-04-25 02:53:12 +02:00
Linus Rath
da103ff06f
feat: implement OAuth auto-setup functionality for Stalwart integration
2026-04-25 01:37:18 +02:00
Linus Rath
2111c77870
fix: restore admin panel after Stalwart v0.16 REST API removal
2026-04-25 01:13:17 +02:00
Linus Rath
e5083ec1df
fix: restore admin panel after Stalwart v0.16 REST API removal
2026-04-25 01:12:33 +02:00
Linus Rath
df8d04e233
fix: restore broken viewer toolbar actions and improve mobile menu #220
2026-04-24 19:31:38 +02:00
Linus Rath
c30c38a7af
chore: update version to 1.5.0
2026-04-23 00:07:34 +02:00
Linus Rath
7494fc1776
chore: update version to 1.5.0
2026-04-22 23:49:44 +02:00
Linus Rath
dd1f3e11e6
fix: retry mailbox fetch on first login to handle lazy provisioning #217
2026-04-22 22:45:49 +02:00
Linus Rath
39a228b20e
feat: streamline mobile email viewer header layout
2026-04-22 20:50:12 +02:00
Linus Rath
3ade1c6473
fix: update mailbox retrieval logic in archive handling to use fresh state
2026-04-22 00:00:43 +02:00
Linus Rath
40982bc37b
fix: align hover styles and selection-toggle target with focused item
2026-04-21 23:50:55 +02:00
Linus Rath
f9aa5cbaee
fix: skip checkAuth on route change when already authenticated
2026-04-21 22:54:02 +02:00
Linus Rath
3f36045990
feat: reorganize settings into 6 groups with clearer tabs
2026-04-21 22:22:02 +02:00
Linus Rath
f032758303
feat: revamp contact detail, filters, and add photo/print/duplicate
2026-04-21 21:16:54 +02:00
Linus Rath
92c7f74420
feat: add right-click context menu to contacts
2026-04-21 19:33:00 +02:00