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": "App",
"shared": "Condiviso"
},
"protocol_handlers": {
"title": "App predefinite",
"description": "Scegli se i link e-mail e calendario devono aprirsi in Bulwark. Tecnicamente, Bulwark si registra come gestore di protocollo per i link mailto: e webcal:.",
"unsupported": "Questo browser o questa connessione non supporta la registrazione manuale dei gestori di protocollo. Potresti comunque poter usare la PWA installata tramite le impostazioni del browser o del sistema.",
"mailto_label": "Link e-mail",
"mailto_description": "Apre i link mailto: in Bulwark con il compositore precompilato.",
"protocol_open_mode_label": "All'apertura dei link di protocollo",
"protocol_open_mode_description": "Scegli se Bulwark deve aprire i link mailto: e webcal: in una nuova scheda o riutilizzare una sessione aperta. L'opzione sessione attiva richiede l'autorizzazione alle notifiche, così puoi fare clic su una notifica di fallback per portare Bulwark in primo piano se il browser blocca il focus.",
"protocol_open_mode_active_session": "Apri nella sessione attiva se possibile",
"protocol_open_mode_new_tab": "Apri sempre una nuova scheda",
"focus_notification_title": "Apri Bulwark",
"focus_notification_body": "Il link è stato aperto in Bulwark. Fai clic per portare la finestra in primo piano.",
"webcal_label": "Link calendario",
"webcal_description": "Apre i link webcal: in Bulwark con una finestra di dialogo di sottoscrizione al calendario precompilata.",
"register_mailto": "Registra app e-mail",
"register_webcal": "Registra app calendario",
"mailto_registered": "Registrazione del gestore e-mail richiesta",
"webcal_registered": "Registrazione del gestore calendario richiesta",
"registration_failed": "Registrazione del gestore di protocollo non riuscita",
"opening_mailto": "Apertura compositore...",
"opening_webcal": "Apertura calendario...",
"browser_note": "Il browser o il sistema operativo potrebbe chiederti di confermare e potrebbe richiedere che Bulwark sia installato prima di poterlo selezionare come app predefinita.",
"select_account_title": "Scegli account",
"select_mailto_account": "Scegli quale account deve aprire questo link e-mail.",
"select_webcal_account": "Scegli quale account deve aprire questo link calendario.",
"select_account_note": "Questa scelta si applica solo a questo link di protocollo.",
"detail_to": "A",
"detail_subject": "Oggetto",
"detail_no_subject": "Senza oggetto",
"detail_calendar": "Calendario",
"detail_source": "Fonte",
"active_account": "Attivo",
"switching_account": "Cambio account..."
},
"sidebar_apps": {
"modal_title": "App della barra laterale",
"add_new": "Aggiungi app",
@@ -733,6 +767,7 @@
"encryption": "Cifratura",
"files": "File",
"contacts": "Contatti",
"protocol_handlers": "App predefinite",
"sidebar_apps": "App nella barra laterale",
"notifications": "Notifiche",
"layout": "Layout",
@@ -2431,6 +2466,15 @@
"file_too_large": "Il file supera il limite di 10 MB",
"invalid_format": "Formato del file calendario non valido"
},
"webcal_action": {
"title": "Apri link calendario",
"description": "Come vuoi usare \"{name}\"?",
"import_title": "Importa una volta",
"import_description": "Recupera subito gli eventi e copiali in uno dei tuoi calendari.",
"subscribe_title": "Abbonati",
"subscribe_description": "Mantieni questo calendario sincronizzato automaticamente come calendario separato.",
"cancel": "Annulla"
},
"management": {
"title": "Gestione calendari",
"description": "Crea, rinomina e personalizza i tuoi calendari. Fai clic destro su un calendario nella barra laterale per cambiarne rapidamente il colore.",