Feature/protocol handlers

* Added account selection for protocol links when multiple connected accounts are available, including mailto: links
* Added support for handling mailto: links in an already-open PWA/session instead of always opening a new tab
* Added webcal: protocol handling for calendar links
* Added account selection for webcal: links when multiple calendar-capable accounts are connected
* Added an import-or-subscribe choice for detected webcal calendars
* Added protocol handler settings for registering mail and calendar handlers and choosing the open mode
* Added service worker/session coordination for passing protocol requests between browser/PWA contexts
* Added tests and translations for the new protocol handler flows
This commit is contained in:
Lucas Gaitzsch
2026-05-12 20:49:05 +02:00
committed by Linus Rath
parent 8b0e2052cf
commit 3f444a8912
40 changed files with 2514 additions and 55 deletions
+44
View File
@@ -134,6 +134,40 @@
"nav_label": "Navigation",
"add_app": "Apps"
},
"protocol_handlers": {
"title": "Default apps",
"description": "Choose whether email and calendar links open in Bulwark. Technically, Bulwark registers as a protocol handler for mailto: and webcal: links.",
"unsupported": "This browser or connection does not support manual protocol-handler registration. You may still be able to use the installed PWA via browser or OS settings.",
"mailto_label": "Email links",
"mailto_description": "Open mailto: links in Bulwark with a prefilled composer.",
"protocol_open_mode_label": "When opening protocol links",
"protocol_open_mode_description": "Choose whether Bulwark opens mailto: and webcal: links in a new tab or reuses an open session. The active-session option needs notification permission so you can click a fallback notification to bring Bulwark to the front if the browser blocks focus.",
"protocol_open_mode_active_session": "Open in active session if possible",
"protocol_open_mode_new_tab": "Always open a new tab",
"focus_notification_title": "Open Bulwark",
"focus_notification_body": "The link was opened in Bulwark. Click to bring the window to the front.",
"webcal_label": "Calendar links",
"webcal_description": "Open webcal: links in Bulwark with a prefilled calendar subscription dialog.",
"register_mailto": "Register email app",
"register_webcal": "Register calendar app",
"mailto_registered": "Email handler registration requested",
"webcal_registered": "Calendar handler registration requested",
"registration_failed": "Protocol handler registration failed",
"opening_mailto": "Opening composer...",
"opening_webcal": "Opening calendar...",
"browser_note": "Your browser or operating system may ask you to confirm this and may require Bulwark to be installed before it can be selected as the default app.",
"select_account_title": "Choose account",
"select_mailto_account": "Choose which account should open this email link.",
"select_webcal_account": "Choose which account should open this calendar link.",
"select_account_note": "This only applies to this protocol link.",
"detail_to": "To",
"detail_subject": "Subject",
"detail_no_subject": "No subject",
"detail_calendar": "Calendar",
"detail_source": "Source",
"active_account": "Active",
"switching_account": "Switching account..."
},
"sidebar_apps": {
"modal_title": "Sidebar Apps",
"add_new": "Add App",
@@ -736,6 +770,7 @@
"files": "Files",
"contacts": "Contacts",
"encryption": "Encryption",
"protocol_handlers": "Default apps",
"sidebar_apps": "Sidebar Apps",
"notifications": "Notifications",
"layout": "Layout",
@@ -2445,6 +2480,15 @@
"file_too_large": "File exceeds 10MB limit",
"invalid_format": "Invalid calendar file format"
},
"webcal_action": {
"title": "Open calendar link",
"description": "How would you like to use \"{name}\"?",
"import_title": "Import once",
"import_description": "Fetch the events now and copy them into one of your calendars.",
"subscribe_title": "Subscribe",
"subscribe_description": "Keep this calendar synced automatically as a separate calendar.",
"cancel": "Cancel"
},
"management": {
"title": "Calendar Management",
"description": "Create, rename, and customize your calendars. Right-click a calendar in the sidebar to quickly change its color.",