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": "파일이 10MB 제한을 넘었어요",
"invalid_format": "캘린더 파일 형식이 올바르지 않아요"
},
"webcal_action": {
"title": "캘린더 링크 열기",
"description": "\"{name}\"을 어떻게 사용할까요?",
"import_title": "한 번 가져오기",
"import_description": "지금 일정을 가져와 내 캘린더 중 하나에 복사합니다.",
"subscribe_title": "구독",
"subscribe_description": "이 캘린더를 별도의 캘린더로 자동 동기화합니다.",
"cancel": "취소"
},
"management": {
"title": "캘린더 관리",
"description": "캘린더를 만들고 이름을 바꾸거나 색상을 꾸며보세요. 사이드바에서 캘린더를 우클릭하면 색상을 빠르게 바꿀 수 있어요.",