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": "Apps",
"shared": "Compartilhado"
},
"protocol_handlers": {
"title": "Aplicativos padrão",
"description": "Escolha se links de e-mail e calendário devem abrir no Bulwark. Tecnicamente, o Bulwark se registra como manipulador de protocolo para links mailto: e webcal:.",
"unsupported": "Este navegador ou esta conexão não oferece suporte ao registro manual de manipuladores de protocolo. Talvez você ainda consiga usar o PWA instalado pelas configurações do navegador ou do sistema.",
"mailto_label": "Links de e-mail",
"mailto_description": "Abre links mailto: no Bulwark com o editor preenchido previamente.",
"protocol_open_mode_label": "Ao abrir links de protocolo",
"protocol_open_mode_description": "Escolha se o Bulwark abre links mailto: e webcal: em uma nova guia ou reutiliza uma sessão aberta. A opção de sessão ativa precisa da permissão de notificações para que você possa clicar em uma notificação alternativa e trazer o Bulwark para a frente se o navegador bloquear o foco.",
"protocol_open_mode_active_session": "Abrir na sessão ativa se possível",
"protocol_open_mode_new_tab": "Sempre abrir uma nova guia",
"focus_notification_title": "Abrir Bulwark",
"focus_notification_body": "O link foi aberto no Bulwark. Clique para trazer a janela para a frente.",
"webcal_label": "Links de calendário",
"webcal_description": "Abre links webcal: no Bulwark com uma janela de assinatura de calendário preenchida previamente.",
"register_mailto": "Registrar aplicativo de e-mail",
"register_webcal": "Registrar aplicativo de calendário",
"mailto_registered": "Registro do manipulador de e-mail solicitado",
"webcal_registered": "Registro do manipulador de calendário solicitado",
"registration_failed": "Falha ao registrar manipulador de protocolo",
"opening_mailto": "Abrindo editor...",
"opening_webcal": "Abrindo calendário...",
"browser_note": "Seu navegador ou sistema operacional pode pedir confirmação e pode exigir que o Bulwark esteja instalado antes de poder ser selecionado como aplicativo padrão.",
"select_account_title": "Escolher conta",
"select_mailto_account": "Escolha qual conta deve abrir este link de e-mail.",
"select_webcal_account": "Escolha qual conta deve abrir este link de calendário.",
"select_account_note": "Esta escolha se aplica apenas a este link de protocolo.",
"detail_to": "Para",
"detail_subject": "Assunto",
"detail_no_subject": "Sem assunto",
"detail_calendar": "Calendário",
"detail_source": "Fonte",
"active_account": "Ativa",
"switching_account": "Alternando conta..."
},
"sidebar_apps": {
"modal_title": "Apps da barra lateral",
"add_new": "Adicionar app",
@@ -733,6 +767,7 @@
"encryption": "Criptografia",
"files": "Arquivos",
"contacts": "Contatos",
"protocol_handlers": "Aplicativos padrão",
"sidebar_apps": "Apps da barra lateral",
"notifications": "Notificações",
"layout": "Layout",
@@ -2445,6 +2480,15 @@
"file_too_large": "Arquivo excede o limite de 10 MB",
"invalid_format": "Formato de arquivo de calendário inválido"
},
"webcal_action": {
"title": "Abrir link de calendário",
"description": "Como você gostaria de usar \"{name}\"?",
"import_title": "Importar uma vez",
"import_description": "Busque os eventos agora e copie-os para um dos seus calendários.",
"subscribe_title": "Assinar",
"subscribe_description": "Mantenha este calendário sincronizado automaticamente como um calendário separado.",
"cancel": "Cancelar"
},
"management": {
"title": "Gerenciamento de calendários",
"description": "Crie, renomeie e personalize seus calendários. Clique com o botão direito em um calendário na barra lateral para alterar rapidamente sua cor.",