diff --git a/app/api/fetch-ical/route.ts b/app/api/fetch-ical/route.ts index 63fd7a87c..c90b2cec8 100644 --- a/app/api/fetch-ical/route.ts +++ b/app/api/fetch-ical/route.ts @@ -101,7 +101,7 @@ export async function POST(request: NextRequest) { for (let i = 0; i <= MAX_REDIRECTS; i++) { const headers: Record = { 'Accept': 'text/calendar, application/ics, text/plain, */*', - 'User-Agent': 'JMAP-Webmail/1.0 Calendar-Fetcher', + 'User-Agent': 'Bulwark-Webmail-Calendar (+https://bulwarkmail.org)', }; if (authHeader && new URL(currentUrl).origin === originalOrigin) { headers['Authorization'] = authHeader; diff --git a/app/api/translate/route.ts b/app/api/translate/route.ts index 7507303f6..c53e0bcb0 100644 --- a/app/api/translate/route.ts +++ b/app/api/translate/route.ts @@ -176,7 +176,7 @@ async function mymemoryRequest( const res = await fetch(url.toString(), { signal, - headers: { 'User-Agent': 'JMAP-Webmail/1.0 Translate-Plugin' }, + headers: { 'User-Agent': 'Bulwark-Webmail-Translate (+https://bulwarkmail.org)' }, }); const data = (await res.json().catch(() => null)) as | { responseStatus?: number | string; responseData?: { translatedText?: string }; responseDetails?: string } diff --git a/app/manifest.ts b/app/manifest.ts index 4e878bdd1..1a06f3b58 100644 --- a/app/manifest.ts +++ b/app/manifest.ts @@ -51,7 +51,7 @@ export default async function manifest(): Promise { const shortName = branded("appShortName", "") || appName; const description = branded("appDescription", "") || - "A modern webmail client built for Stalwart Mail Server"; + "Self-hosted webmail for mail, calendar, contacts and files, built on JMAP"; const themeColor = branded("pwaThemeColor", "") || "#ffffff"; const backgroundColor = branded("pwaBackgroundColor", "") || "#ffffff"; diff --git a/lib/__tests__/fetch-ical-route.test.ts b/lib/__tests__/fetch-ical-route.test.ts index 35a8bede8..7a4db9d42 100644 --- a/lib/__tests__/fetch-ical-route.test.ts +++ b/lib/__tests__/fetch-ical-route.test.ts @@ -125,7 +125,7 @@ describe('POST /api/fetch-ical', () => { expect(guardedFetch).toHaveBeenCalledTimes(1); expect(guardedFetch).toHaveBeenCalledWith( 'https://calendar.example.com/feed.ics', - expect.objectContaining({ headers: expect.objectContaining({ 'User-Agent': 'JMAP-Webmail/1.0 Calendar-Fetcher' }) }), + expect.objectContaining({ headers: expect.objectContaining({ 'User-Agent': 'Bulwark-Webmail-Calendar (+https://bulwarkmail.org)' }) }), ); }); diff --git a/lib/__tests__/vcard.test.ts b/lib/__tests__/vcard.test.ts index b996a0d74..5f956778a 100644 --- a/lib/__tests__/vcard.test.ts +++ b/lib/__tests__/vcard.test.ts @@ -575,7 +575,7 @@ describe("vCard 4.0 export (issue #1407)", () => { expect(vcf).toBe([ "BEGIN:VCARD", "VERSION:4.0", - "PRODID:-//JMAP-Webmail//EN", + "PRODID:-//Bulwark Mail//Bulwark Webmail//EN", "UID;VALUE=text:sabre-vobject-5e64d0ac-69da-4393-bfe4-87844b9a7db6", "REV:20250728T121700Z", "N:Doe;Jane;;;", diff --git a/lib/calendar-ics-export.ts b/lib/calendar-ics-export.ts index 83c1c0f2e..795147bae 100644 --- a/lib/calendar-ics-export.ts +++ b/lib/calendar-ics-export.ts @@ -116,7 +116,7 @@ export function eventToICS(event: CalendarEvent): string { const now = formatNow(); const lines: string[] = [ "BEGIN:VCALENDAR", - "PRODID:-//JMAP-Webmail//EN", + "PRODID:-//Bulwark Mail//Bulwark Webmail//EN", "VERSION:2.0", "CALSCALE:GREGORIAN", "METHOD:PUBLISH", diff --git a/lib/jmap/client.ts b/lib/jmap/client.ts index 54e40b8fc..285bd9569 100644 --- a/lib/jmap/client.ts +++ b/lib/jmap/client.ts @@ -5318,7 +5318,7 @@ export class JMAPClient implements IJMAPClient { const lines: string[] = [ 'BEGIN:VCALENDAR', - 'PRODID:-//JMAP-Webmail//EN', + 'PRODID:-//Bulwark Mail//Bulwark Webmail//EN', 'VERSION:2.0', 'CALSCALE:GREGORIAN', 'METHOD:REPLY', @@ -5507,7 +5507,7 @@ export class JMAPClient implements IJMAPClient { const lines: string[] = [ 'BEGIN:VCALENDAR', - 'PRODID:-//JMAP-Webmail//EN', + 'PRODID:-//Bulwark Mail//Bulwark Webmail//EN', 'VERSION:2.0', 'CALSCALE:GREGORIAN', 'METHOD:REQUEST', @@ -5685,7 +5685,7 @@ export class JMAPClient implements IJMAPClient { const lines: string[] = [ 'BEGIN:VCALENDAR', - 'PRODID:-//JMAP-Webmail//EN', + 'PRODID:-//Bulwark Mail//Bulwark Webmail//EN', 'VERSION:2.0', 'CALSCALE:GREGORIAN', 'METHOD:CANCEL', diff --git a/lib/vcard.ts b/lib/vcard.ts index ea664a802..b52d69aca 100644 --- a/lib/vcard.ts +++ b/lib/vcard.ts @@ -1178,7 +1178,7 @@ function buildContact(raw: Record): ContactCard | null { // PRODID names the product that wrote the file, not the one that first made // the card, so the card's own prodId is not written back. -const VCARD_PRODID = "-//JMAP-Webmail//EN"; +const VCARD_PRODID = "-//Bulwark Mail//Bulwark Webmail//EN"; function hasUriScheme(value: string): boolean { return /^[a-z][a-z0-9+.-]*:/i.test(value); diff --git a/package.json b/package.json index d51009a05..58bd3c4ff 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "bulwark-webmail", "version": "1.19.1", - "description": "Bulwark Webmail - a modern webmail client built for Stalwart Mail Server", + "description": "Bulwark Webmail: self-hosted webmail for mail, calendar, contacts and files, built on JMAP", "author": "Bulwark Mail ", "license": "AGPL-3.0-only", "repository": {