Linus Rath
5f464d4ee2
feat: lift 5-account cap on HTTP/2
2026-05-07 12:28:33 +02:00
Linus Rath
178922323d
chore: update version to 1.6.2
2026-05-06 20:07:36 +02:00
Linus Rath
d3d79be64c
feat: multi-server JMAP support
2026-05-06 17:33:55 +02:00
Linus Rath
09302684da
fix: propagate settingsSchema
2026-05-06 01:48:49 +02:00
Linus Rath
a44bd7c3e6
fix: add missing body type assertion in createPluginAPI fetch options
2026-05-05 21:52:58 +02:00
Linus Rath
0885d3c13e
feat: http:fetch permission + httpOrigins manifest field
2026-05-05 21:50:04 +02:00
Linus Rath
9f67bc078a
feat: ingest icon/banner/screenshots from source repo
2026-05-05 21:12:23 +02:00
Linus Rath
da411af6d3
feat: project EmailReadView for email-banner slot, expose auth results
2026-05-05 20:31:11 +02:00
Linus Rath
2a769c2b0a
feat: run onBeforeEmailSend hook before send, expose fromEmail on OutgoingEmail
2026-05-05 20:04:00 +02:00
Linus Rath
1b0ca8967e
feat: bundle plugin src/ on demand via esbuild
2026-05-05 18:35:22 +02:00
Linus Rath
3e336d459c
feat: plugin hot-reload + dev-folder loading
2026-05-05 18:05:17 +02:00
Linus Rath
f68e41d81a
fix: enhance sharing functionality by renaming state
2026-05-04 11:24:05 +02:00
Linus Rath
a6d2efaf74
feat: sanitize identity display name to prevent invalid From headers
2026-05-03 20:06:41 +02:00
Linus Rath
9777dd655c
feat: add share indicators for calendars and contacts, update JMAP capabilities #244
2026-05-02 23:29:21 +02:00
Linus Rath
f970fd1822
feat: add plugin hooks for compose, attachments, search, lifecycle, and routing
2026-05-02 21:27:56 +02:00
Linus Rath
5319562c94
feat: add update-available detection
2026-05-02 01:58:30 +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
2dea33e698
feat: improve new email push notification logic for inbox
2026-05-01 01:57:57 +02:00
Linus Rath
ec0f355c13
feat: allow custom sub-addressing delimiter character #239
2026-05-01 01:48:39 +02:00
Linus Rath
c555973b6b
feat: configurable sub-addressing delimiter #239
2026-05-01 01:42:06 +02:00
Linus Rath
1c3003421e
fix: extend timeout for PushVerification and clean up leftover subscriptions
2026-05-01 00:54:40 +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
65eef4b2b8
fix: persist htmlBody in drafts to preserve rich formatting #236
2026-04-30 15:24:09 +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
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
1b84547211
feat: add Theme API v2 with token compiler, skin slot
2026-04-28 15:39:13 +02:00
Linus Rath
dafc8ace3c
feat: track unique logins
2026-04-28 08:19:46 +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
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
aadf56c27b
fix: emit RFC 9553 name kinds and decode QUOTED-PRINTABLE in vCard import #224 #187
2026-04-26 02:47:19 +02:00
Linus Rath
d657aec391
feat: add support for right-side composer sidebar and update related types
2026-04-25 19:45:45 +02:00
Linus Rath
fe1d4861bb
feat: composer-sidebar slot + plugin-declared frame-src origins
2026-04-25 18:40:54 +02:00
Linus Rath
5aa9b1d5f9
fix: honor SESSION_SECRET_FILE in dashboard warning check #222
2026-04-25 17:21:17 +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
da103ff06f
feat: implement OAuth auto-setup functionality for Stalwart integration
2026-04-25 01:37:18 +02:00
Linus Rath
c30c38a7af
chore: update version to 1.5.0
2026-04-23 00:07:34 +02:00
Linus Rath
cab57f6cd7
feat: add timezone-aware formatting for event start times and update utcEnd on duration change
2026-04-22 21:05:41 +02:00
Linus Rath
27f4fbdce4
feat: optimize layout of overlapping events in calendar
2026-04-22 20:53:04 +02:00
Linus Rath
468851ff25
feat: show full folder path in move/drop toast
2026-04-22 00:14:49 +02:00
Linus Rath
3c9fa5dc25
feat: implement batch archiving of emails
2026-04-22 00:05:38 +02:00
Linus Rath
1810a474a2
fix: enhance error message for mailbox creation failure
2026-04-22 00:00:01 +02:00
Linus Rath
9a44babcf1
feat: add collapsible details to calendar invitation banner and update sanitization config for iframe rendering
2026-04-21 21:21:42 +02:00
Linus Rath
6b7c849332
refactor: remove Stalwart API URL configuration
2026-04-21 17:50:18 +02:00
Linus Rath
30c4afb977
i18n: add missing translation keys
2026-04-21 17:42:52 +02:00