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 @@
"add_app": "програми",
"shared": "Спільні"
},
"protocol_handlers": {
"title": "Програми за замовчуванням",
"description": "Виберіть, чи відкривати посилання електронної пошти та календаря в Bulwark. Технічно Bulwark реєструється як обробник протоколу для посилань mailto: і webcal:.",
"unsupported": "Цей браузер або це з'єднання не підтримує ручну реєстрацію обробників протоколів. Можливо, встановлену PWA все одно можна використати через налаштування браузера або системи.",
"mailto_label": "Посилання електронної пошти",
"mailto_description": "Відкриває посилання mailto: у Bulwark із попередньо заповненим редактором листа.",
"protocol_open_mode_label": "Під час відкриття посилань протоколів",
"protocol_open_mode_description": "Виберіть, чи Bulwark має відкривати посилання mailto: і webcal: у новій вкладці, чи повторно використовувати відкритий сеанс. Для варіанта активного сеансу потрібен дозвіл на сповіщення, щоб ви могли натиснути резервне сповіщення й вивести Bulwark на передній план, якщо браузер блокує фокус.",
"protocol_open_mode_active_session": "Якщо можливо, відкривати в активному сеансі",
"protocol_open_mode_new_tab": "Завжди відкривати нову вкладку",
"focus_notification_title": "Відкрити Bulwark",
"focus_notification_body": "Посилання було відкрито в Bulwark. Натисніть, щоб вивести вікно на передній план.",
"webcal_label": "Посилання календаря",
"webcal_description": "Відкриває посилання webcal: у Bulwark із попередньо заповненим діалогом підписки на календар.",
"register_mailto": "Зареєструвати поштову програму",
"register_webcal": "Зареєструвати програму календаря",
"mailto_registered": "Реєстрацію обробника електронної пошти запитано",
"webcal_registered": "Реєстрацію обробника календаря запитано",
"registration_failed": "Не вдалося зареєструвати обробник протоколу",
"opening_mailto": "Відкриття редактора...",
"opening_webcal": "Відкриття календаря...",
"browser_note": "Браузер або операційна система може попросити підтвердження та може вимагати, щоб Bulwark був встановлений, перш ніж його можна буде вибрати програмою за замовчуванням.",
"select_account_title": "Виберіть акаунт",
"select_mailto_account": "Виберіть акаунт, у якому слід відкрити це посилання електронної пошти.",
"select_webcal_account": "Виберіть акаунт, у якому слід відкрити це посилання календаря.",
"select_account_note": "Цей вибір застосовується лише до цього посилання протоколу.",
"detail_to": "Кому",
"detail_subject": "Тема",
"detail_no_subject": "Без теми",
"detail_calendar": "Календар",
"detail_source": "Джерело",
"active_account": "Активний",
"switching_account": "Перемикання акаунта..."
},
"sidebar_apps": {
"modal_title": "Програми бічної панелі",
"add_new": "Додати додаток",
@@ -733,6 +767,7 @@
"files": "Файли",
"contacts": "Контакти",
"encryption": "Шифрування",
"protocol_handlers": "Програми за замовчуванням",
"sidebar_apps": "Програми бічної панелі",
"notifications": "Сповіщення",
"layout": "Макет",
@@ -2431,6 +2466,15 @@
"file_too_large": "Файл перевищує обмеження в 10 Мб",
"invalid_format": "Недійсний формат файлу календаря"
},
"webcal_action": {
"title": "Відкрити посилання календаря",
"description": "Як ви хочете використати \"{name}\"?",
"import_title": "Імпортувати один раз",
"import_description": "Завантажити події зараз і скопіювати їх до одного з ваших календарів.",
"subscribe_title": "Підписатися",
"subscribe_description": "Автоматично синхронізувати цей календар як окремий календар.",
"cancel": "Скасувати"
},
"management": {
"title": "Управління календарем",
"description": "Створюйте, перейменовуйте та налаштовуйте свої календарі. Клацніть правою кнопкою миші календар на бічній панелі, щоб швидко змінити його колір.",