From 69345ed26ce736567d9ae947e6ec3c4be8efe774 Mon Sep 17 00:00:00 2001 From: binwiederhier Date: Wed, 4 Jan 2023 09:38:21 -0500 Subject: [PATCH 01/41] Downgrade smtp lib --- go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go.mod b/go.mod index 6b0588ac..dda12d4c 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ require ( cloud.google.com/go/storage v1.28.1 // indirect github.com/BurntSushi/toml v1.2.1 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect - github.com/emersion/go-smtp v0.16.0 + github.com/emersion/go-smtp v0.15.0 github.com/gabriel-vasile/mimetype v1.4.1 github.com/gorilla/websocket v1.5.0 github.com/mattn/go-sqlite3 v1.14.16 From 264deab637504de3e75a02adb323787372d830a8 Mon Sep 17 00:00:00 2001 From: binwiederhier Date: Wed, 4 Jan 2023 09:38:52 -0500 Subject: [PATCH 02/41] Thank you @thebino for your sponsorship --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index adeb1507..8defa56a 100644 --- a/README.md +++ b/README.md @@ -108,6 +108,7 @@ appreciated. A big fat **Thank You** to the folks already sponsoring ntfy: + I'd also like to thank JetBrains for providing their awesome [IntelliJ IDEA](https://www.jetbrains.com/idea/) to me for free, and [DigitalOcean](https://www.digitalocean.com/) for supporting the project with $60/yr: From 82df434d19e3ef45ada9c00dfe9fc0f8dfba15e6 Mon Sep 17 00:00:00 2001 From: binwiederhier Date: Thu, 5 Jan 2023 20:52:21 -0500 Subject: [PATCH 03/41] Projects --- docs/integrations.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/integrations.md b/docs/integrations.md index ae92ca31..7de05dbc 100644 --- a/docs/integrations.md +++ b/docs/integrations.md @@ -54,6 +54,8 @@ and uptime of third party servers, so use of each server is **at your own discre - [ntfy-dotnet](https://github.com/nwithan8/ntfy-dotnet) - .NET client library to interact with a ntfy server (C# / .NET) - [node-ntfy-publish](https://github.com/cityssm/node-ntfy-publish) - A Node package to publish notifications to an ntfy server (Node) - [ntfy](https://github.com/jonocarroll/ntfy) - Wraps the ntfy API with pipe-friendly tooling (R) +- [ntfy-for-delphi](https://github.com/hazzelnuts/ntfy-for-delphi) - A friendly library to push instant notifications ntfy (Delphi) +- [ntfy](https://github.com/ffflorian/ntfy) - Send notifications over ntfy (JS) ## CLIs + GUIs From 57171f57e40280134e3e96e431f3281bb9f0c4cc Mon Sep 17 00:00:00 2001 From: Sophie Tauchert Date: Sun, 8 Jan 2023 18:26:23 +0100 Subject: [PATCH 04/41] Add maubot-ntfy to projects --- docs/integrations.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/integrations.md b/docs/integrations.md index 7de05dbc..278d55b1 100644 --- a/docs/integrations.md +++ b/docs/integrations.md @@ -104,6 +104,7 @@ and uptime of third party servers, so use of each server is **at your own discre - [ntfy_ynh](https://github.com/YunoHost-Apps/ntfy_ynh) - ntfy app for YunoHost - [drone-ntfy](https://github.com/Clortox/drone-ntfy) - Drone.io plugin for sending ntfy notifications from a pipeline (Shell) - [ignition-ntfy-module](https://github.com/Kyvis-Labs/ignition-ntfy-module) - Adds support for sending notifications via a ntfy server to Ignition (Java) +- [maubot-ntfy](https://gitlab.com/999eagle/maubot-ntfy) - Matrix bot to subscribe to ntfy topics and send messages to Matrix (Python) ## Blog + forum posts From 81cb055375980acb5e08324ce72204620c572110 Mon Sep 17 00:00:00 2001 From: binwiederhier Date: Tue, 10 Jan 2023 08:00:27 -0500 Subject: [PATCH 05/41] Blog posts --- docs/integrations.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/integrations.md b/docs/integrations.md index 7de05dbc..426bdb7e 100644 --- a/docs/integrations.md +++ b/docs/integrations.md @@ -107,6 +107,8 @@ and uptime of third party servers, so use of each server is **at your own discre ## Blog + forum posts +- [Comment envoyer des notifications push sur votre téléphone facilement et gratuitement?](https://korben.info/notifications-push-telephone.html) - 1/2023 +- [UnifiedPush: a decentralized, open-source push notification protocol](https://f-droid.org/en/2022/12/18/unifiedpush.html) ⭐ - 12/2022 - [ntfy setup instructions](https://docs.benjamin-altpeter.de/network/vms/1001029-ntfy/) - benjamin-altpeter.de - 12/2022 - [Ntfy Self-Hosted Push Notifications](https://lachlanlife.net/posts/2022-12-ntfy/) - lachlanlife.net - 12/2022 - [ntfy.sh](https://paramdeo.com/til/ntfy-sh) - paramdeo.com - 11/2022 From 1aa716de555767840b84bfe59d2b7537ab11b0f4 Mon Sep 17 00:00:00 2001 From: binwiederhier Date: Tue, 10 Jan 2023 10:01:28 -0500 Subject: [PATCH 06/41] Add ntfy-wrapper project --- README.md | 2 +- docs/integrations.md | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 8defa56a..bffd990f 100644 --- a/README.md +++ b/README.md @@ -111,7 +111,7 @@ appreciated. A big fat **Thank You** to the folks already sponsoring ntfy: I'd also like to thank JetBrains for providing their awesome [IntelliJ IDEA](https://www.jetbrains.com/idea/) to me for free, -and [DigitalOcean](https://www.digitalocean.com/) for supporting the project with $60/yr: +and [DigitalOcean](https://www.digitalocean.com/) for supporting the project: diff --git a/docs/integrations.md b/docs/integrations.md index f699d762..737a86fe 100644 --- a/docs/integrations.md +++ b/docs/integrations.md @@ -105,6 +105,7 @@ and uptime of third party servers, so use of each server is **at your own discre - [drone-ntfy](https://github.com/Clortox/drone-ntfy) - Drone.io plugin for sending ntfy notifications from a pipeline (Shell) - [ignition-ntfy-module](https://github.com/Kyvis-Labs/ignition-ntfy-module) - Adds support for sending notifications via a ntfy server to Ignition (Java) - [maubot-ntfy](https://gitlab.com/999eagle/maubot-ntfy) - Matrix bot to subscribe to ntfy topics and send messages to Matrix (Python) +- [ntfy-wrapper](https://github.com/vict0rsch/ntfy-wrapper) - Wrapper around ntfy (Python) ## Blog + forum posts From 8ee85a40077f1e7f0530f7e87bb50cfd9f1ee733 Mon Sep 17 00:00:00 2001 From: Zoe Date: Tue, 10 Jan 2023 17:26:45 +0000 Subject: [PATCH 07/41] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegian?= =?UTF-8?q?=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 100.0% (189 of 189 strings) Translation: ntfy/Web app Translate-URL: https://hosted.weblate.org/projects/ntfy/web/nb_NO/ --- web/public/static/langs/nb_NO.json | 73 ++++++++++++++++++++++++++++-- 1 file changed, 69 insertions(+), 4 deletions(-) diff --git a/web/public/static/langs/nb_NO.json b/web/public/static/langs/nb_NO.json index 1dab51b3..2303e5a4 100644 --- a/web/public/static/langs/nb_NO.json +++ b/web/public/static/langs/nb_NO.json @@ -102,7 +102,7 @@ "publish_dialog_topic_label": "Emnenavn", "prefs_notifications_delete_after_one_day_description": "Merknader slettes automatisk etter én dag", "notifications_click_copy_url_button": "Kopier lenke", - "error_boundary_title": "Oida. Ntfy krasjet.", + "error_boundary_title": "Oida, ntfy krasjet", "publish_dialog_message_placeholder": "Skriv en melding her", "publish_dialog_button_cancel": "Avbryt", "prefs_notifications_min_priority_title": "Minimumsprioritet", @@ -118,9 +118,74 @@ "prefs_users_table_base_url_header": "Tjeneste-nettadresse", "prefs_users_dialog_button_cancel": "Avbryt", "prefs_users_dialog_button_add": "Legg til", - "publish_dialog_chip_attach_url_label": "Legg ved fil per nettadresse", + "publish_dialog_chip_attach_url_label": "Legg til fil med nettadresse", "publish_dialog_tags_placeholder": "Kommainndelt liste over etiketter, f.eks. advarsel, srv1-sikkerhetskopi", - "prefs_notifications_sound_description_none": "Merknader er lydløse når de mottas", + "prefs_notifications_sound_description_none": "Merknader spiller ikke lyd når de mottas", "subscribe_dialog_subscribe_topic_placeholder": "Emnenavn, f.eks. phil_varsler", - "prefs_notifications_min_priority_default_and_higher": "Forvalgt prioritet og høyere" + "prefs_notifications_min_priority_default_and_higher": "Forvalgt prioritet og høyere", + "notifications_no_subscriptions_title": "Det ser ut til at du ikke har noen abonnementer ennå.", + "publish_dialog_attachment_limits_file_and_quota_reached": "overskrider {{fileSizeLimit}} filgrense og kvote, {{remainingBytes}} gjenstår", + "publish_dialog_attachment_limits_file_reached": "overskrider filgrensen på {{fileSizeLimit}}", + "publish_dialog_title_label": "Tittel", + "publish_dialog_title_placeholder": "Varslingstittel, f.eks. Diskplassvarsel", + "publish_dialog_topic_placeholder": "Emnenavn, f.eks. halgeir_varsler", + "publish_dialog_chip_click_label": "Klikk URL", + "publish_dialog_chip_delay_label": "Forsink leveringen", + "publish_dialog_details_examples_description": "For eksempler og en detaljert beskrivelse av alle sendefunksjoner, se dokumentasjonen.", + "publish_dialog_base_url_placeholder": "Tjeneste-URL, f.eks. https://example.com", + "alert_grant_description": "Gi nettleseren din tillatelse til å vise skrivebordsvarsler.", + "alert_not_supported_description": "Varsler støttes ikke i nettleseren din.", + "notifications_attachment_file_app": "Android-app-fil", + "notifications_no_subscriptions_description": "Klikk på \"{{linktext}}\"-koblingen for å opprette eller abonnere på et emne. Etter det kan du sende meldinger via PUT eller POST, og du vil motta varsler her.", + "notifications_actions_http_request_title": "Send HTTP {{metode}} til {{url}}", + "notifications_none_for_any_description": "For å sende varsler til et emne, bare PUT eller POST til emne-URLen. Her er et eksempel som bruker et av emnene dine.", + "notifications_more_details": "For mer informasjon, sjekk ut nettstedet eller dokumentasjonen.", + "publish_dialog_attachment_limits_quota_reached": "overskrider kvoten, {{remainingBytes}} gjenstår", + "publish_dialog_click_reset": "Fjern klikk-URL", + "publish_dialog_delay_placeholder": "Forsinket levering, f.eks. {{unixTimestamp}}, {{relativeTime}} eller \"{{naturalLanguage}}\" (bare på engelsk)", + "emoji_picker_search_clear": "Tøm søk", + "subscribe_dialog_subscribe_description": "Det kan hende emner ikke er passordsbeskyttet, så velg et navn som ikke er enkelt å gjette. Når du har abonnert kan du utføre PUT/POST av merknader.", + "publish_dialog_checkbox_publish_another": "Publiser enda en", + "subscribe_dialog_login_description": "Dette emnet er passordbeskyttet. Vennligst skriv inn brukernavn og passord for å abonnere.", + "prefs_notifications_sound_play": "Spill av valgt lyd", + "subscribe_dialog_error_user_not_authorized": "Bruker {{brukernavn}} ikke autorisert", + "prefs_users_delete_button": "Slett bruker", + "error_boundary_unsupported_indexeddb_description": "ntfy-nettappen trenger IndexedDB for å fungere, og nettleseren din støtter ikke IndexedDB i privat nettlesingsmodus.

Selv om dette er uheldig, gir det heller ikke så mye mening å bruke ntfy-nettappen i privat surfemodus uansett, fordi alt er lagret i nettleserlagringen. Du kan lese mer om det i denne GitHub-feilmeldingen, eller snakk med oss på Discord eller Matrix.", + "action_bar_show_menu": "Vis meny", + "action_bar_toggle_mute": "Aktiver/deaktiver notifikasjoner", + "prefs_notifications_min_priority_description_max": "Vis merknader hvis prioritet er 5 (maks.)", + "prefs_notifications_min_priority_any": "Hvilken som helst prioritet", + "prefs_notifications_min_priority_low_and_higher": "Lav prioritet og høyere", + "prefs_users_description": "Legg til/fjern brukere for dine beskyttede emner her. Vær oppmerksom på at brukernavn og passord er lagret i nettleserens lokale lagring.", + "error_boundary_description": "Dette skal åpenbart ikke skje. Beklager dette.
Hvis du har et minutt, vennligst rapporter dette på GitHub, eller gi oss beskjed via Discord eller Matrix.", + "action_bar_logo_alt": "ntfy logo", + "message_bar_publish": "Publiser melding", + "action_bar_toggle_action_menu": "Åpne/lukk handlingsmeny", + "message_bar_show_dialog": "Vis publiseringsdialog", + "nav_button_muted": "Varsler dempet", + "nav_button_connecting": "kobler til", + "notifications_list": "Varslingsliste", + "notifications_list_item": "Varsling", + "notifications_mark_read": "Merk som lest", + "notifications_delete": "Slett", + "notifications_priority_x": "Prioritet {{prioritet}}", + "notifications_new_indicator": "Nytt varsel", + "notifications_attachment_image": "Vedlagt bilde", + "notifications_attachment_file_image": "bildefil", + "notifications_attachment_file_video": "videofil", + "notifications_attachment_file_audio": "lydfil", + "notifications_attachment_file_document": "annet dokument", + "notifications_actions_not_supported": "Handling støttes ikke i nettappen", + "notifications_none_for_topic_description": "For å sende varsler til dette emnet, bare PUT eller POST til emne-URLen.", + "publish_dialog_emoji_picker_show": "Velg emoji", + "publish_dialog_topic_reset": "Tilbakestill emne", + "publish_dialog_click_label": "Klikk URL", + "publish_dialog_email_reset": "Fjern videresending av e-post", + "publish_dialog_attach_reset": "Fjern URL vedlegg", + "publish_dialog_delay_reset": "Fjern forsinket levering", + "publish_dialog_attached_file_remove": "Fjern vedlagt fil", + "subscribe_dialog_subscribe_base_url_label": "Tjeneste-URL", + "prefs_users_table": "Brukertabell", + "prefs_users_edit_button": "Rediger bruker", + "error_boundary_unsupported_indexeddb_title": "Privat surfing støttes ikke" } From c916eeb9d7badee52f059e8556ca561be26565f7 Mon Sep 17 00:00:00 2001 From: Nifou Date: Wed, 11 Jan 2023 15:00:52 +0000 Subject: [PATCH 08/41] Translated using Weblate (French) Currently translated at 100.0% (189 of 189 strings) Translation: ntfy/Web app Translate-URL: https://hosted.weblate.org/projects/ntfy/web/fr/ --- web/public/static/langs/fr.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/web/public/static/langs/fr.json b/web/public/static/langs/fr.json index e5e4402c..d6458c8b 100644 --- a/web/public/static/langs/fr.json +++ b/web/public/static/langs/fr.json @@ -7,7 +7,7 @@ "message_bar_type_message": "Tapez un message ici", "notifications_attachment_open_button": "Ouvrir la pièce jointe", "notifications_attachment_link_expires": "le lien expire {{date}}", - "message_bar_error_publishing": "Notification d'erreur de publication", + "message_bar_error_publishing": "Erreur lors de la publication de la notification", "nav_button_all_notifications": "Toutes les notifications", "nav_button_settings": "Paramètres", "nav_button_documentation": "Documentation", @@ -80,7 +80,7 @@ "subscribe_dialog_login_title": "Connexion nécessaire", "prefs_notifications_min_priority_low_and_higher": "Priorité basse et au-dessus", "prefs_users_dialog_button_cancel": "Annuler", - "error_boundary_button_copy_stack_trace": "Copier la stack strace", + "error_boundary_button_copy_stack_trace": "Copier la trace d'appels", "publish_dialog_attached_file_title": "Fichier joint :", "publish_dialog_checkbox_publish_another": "Publier un autre", "publish_dialog_attached_file_filename_placeholder": "Nom du fichier joint", @@ -129,7 +129,7 @@ "prefs_users_table_user_header": "Utilisateur", "prefs_users_dialog_title_edit": "Éditer l'utilisateur", "prefs_users_dialog_button_add": "Ajouter", - "error_boundary_description": "Ceci ne devrait évidemment pas arriver. Désolé pour ça.
Si vous avez une minute, merci de signaler ceci sur GitHub, ou faites-le nous savoir par Discord ou Matric.", + "error_boundary_description": "Ceci ne devrait évidemment pas arriver. Désolé pour ça.
Si vous avez une minute, merci de signaler ceci sur GitHub, ou faites-le nous savoir par Discord ou Matrix.", "prefs_users_dialog_title_add": "Ajouter un utilisateur", "error_boundary_stack_trace": "Trace de pile d'appels", "error_boundary_gathering_info": "Récupérer plus d'information…", From 2ec13c64f3f9c21c2dbc423c193e22f588df3c00 Mon Sep 17 00:00:00 2001 From: ssantos Date: Tue, 10 Jan 2023 13:05:05 +0000 Subject: [PATCH 09/41] Translated using Weblate (Portuguese) Currently translated at 100.0% (189 of 189 strings) Translation: ntfy/Web app Translate-URL: https://hosted.weblate.org/projects/ntfy/web/pt/ --- web/public/static/langs/pt.json | 192 +++++++++++++++++++++++++++++++- 1 file changed, 191 insertions(+), 1 deletion(-) diff --git a/web/public/static/langs/pt.json b/web/public/static/langs/pt.json index 0967ef42..44293249 100644 --- a/web/public/static/langs/pt.json +++ b/web/public/static/langs/pt.json @@ -1 +1,191 @@ -{} +{ + "action_bar_clear_notifications": "Limpar todas as notificações", + "action_bar_send_test_notification": "Enviar notificação de teste", + "action_bar_unsubscribe": "Desinscrever", + "action_bar_toggle_mute": "Ativa/Desativa notificações", + "action_bar_toggle_action_menu": "Abrir/fechar menu de ação", + "message_bar_type_message": "Escreva uma mensagem aqui", + "message_bar_error_publishing": "Erro ao publicar notificação", + "message_bar_publish": "Publicar mensagem", + "nav_topics_title": "Tópicos inscritos", + "nav_button_all_notifications": "Todas notificações", + "nav_button_settings": "Configurações", + "nav_button_documentation": "Documentação", + "nav_button_publish_message": "Publicar notificação", + "nav_button_subscribe": "Inscrever no tópico", + "nav_button_muted": "Notificações desativadas", + "nav_button_connecting": "Conectando", + "alert_grant_title": "Notificações estão desativadas", + "alert_grant_description": "Conceder ao navegador permissão para mostrar notificações.", + "alert_not_supported_title": "Notificações não são suportadas", + "notifications_list": "Lista de notificações", + "alert_not_supported_description": "Notificações não são suportadas pelo seu navagador.", + "notifications_list_item": "Notificação", + "notifications_mark_read": "Marcar como lido", + "notifications_delete": "Apagar", + "notifications_copied_to_clipboard": "Copiado para a área de transferência", + "notifications_tags": "Etiquetas", + "notifications_priority_x": "Prioridade {{priority}}", + "notifications_new_indicator": "Nova notificação", + "notifications_attachment_image": "Imagem anexada", + "notifications_attachment_copy_url_title": "Copiar URL do anexo para a área de transferência", + "notifications_attachment_copy_url_button": "Copiar URL", + "notifications_attachment_open_title": "Ir para {{url}}", + "notifications_attachment_link_expired": "a ligação à transferência expirou", + "notifications_attachment_open_button": "Abrir anexo", + "notifications_attachment_link_expires": "a ligação expira em {{date}}", + "notifications_attachment_file_image": "Ficheiro de imagem", + "notifications_attachment_file_video": "Ficheiro de vídeo", + "notifications_attachment_file_audio": "Ficheiro de áudio", + "notifications_attachment_file_app": "Ficheiro apk android", + "notifications_attachment_file_document": "Outros documentos", + "notifications_click_copy_url_title": "Copiar URL da ligação para a área de transferência", + "notifications_click_copy_url_button": "Copiar ligação", + "notifications_click_open_button": "Abrir ligação", + "notifications_actions_open_url_title": "Ir para {{url}}", + "notifications_actions_not_supported": "Ação não suportada na app web", + "notifications_actions_http_request_title": "Enviar HTTP {{method}} para {{url}}", + "notifications_none_for_topic_title": "Ainda não recebeu nenhuma notificação para esse tópico.", + "notifications_none_for_topic_description": "Para enviar notificações para esse tópico, basta usar os métodos PUT ou POST na URL do tópico.", + "notifications_none_for_any_title": "Ainda não recebeu nenhuma notificação.", + "notifications_none_for_any_description": "Para enviar notificações a um tópico, basta usar os métodos PUT ou POST para o URL do tópico. Aqui um exemplo usando um dos seus tópicos.", + "notifications_no_subscriptions_title": "Parece que ainda não tem nenhuma inscrição.", + "notifications_no_subscriptions_description": "Clique na ligação \"{{linktext}}\" para criar ou inscrever num tópico. Depois disso, poderá enviar mensagens via PUT ou POST e receberá notificações aqui.", + "notifications_example": "Exemplo", + "notifications_more_details": "Para mais informações, confira site ou documentação.", + "notifications_loading": "Carregando notificações…", + "publish_dialog_title_topic": "Publicar em {{topic}}", + "publish_dialog_title_no_topic": "Publicar notificação", + "publish_dialog_progress_uploading": "Enviando …", + "publish_dialog_progress_uploading_detail": "Fazendo upload de {{loaded}}/{{total}} ({{percent}}%)…", + "publish_dialog_message_published": "Notificação publicada", + "publish_dialog_attachment_limits_file_and_quota_reached": "excede {{fileSizeLimit}} limite de ficheiro e cota, {{remainingBytes}} restante", + "publish_dialog_attachment_limits_quota_reached": "excede a cota, {{remainingBytes}} restantes", + "publish_dialog_priority_min": "Prioridade mínima", + "publish_dialog_priority_low": "Baixa prioridade", + "publish_dialog_priority_default": "Prioridade padrão", + "publish_dialog_priority_high": "Alta prioridade", + "publish_dialog_base_url_label": "URL de serviço", + "publish_dialog_base_url_placeholder": "URL de serviço, por exemplo https://example.com", + "publish_dialog_topic_label": "Nome do tópico", + "publish_dialog_topic_placeholder": "Nome do tópico, por exemplo, phil_alerts", + "publish_dialog_topic_reset": "Resetar tópico", + "publish_dialog_title_placeholder": "Título da notificação, por exemplo Alerta de espaço em disco", + "publish_dialog_message_label": "Mensagem", + "publish_dialog_message_placeholder": "Digite uma mensagem aqui", + "publish_dialog_tags_label": "Etiquetas", + "publish_dialog_tags_placeholder": "Lista de etiquetas, separadas por vírgula, por exemplo: srv1-backup", + "publish_dialog_priority_label": "Prioridade", + "publish_dialog_click_label": "Clique em URL", + "publish_dialog_click_placeholder": "URL que é aberto quando a notificação é clicada", + "publish_dialog_click_reset": "Remover URL clicável", + "publish_dialog_email_label": "Email", + "publish_dialog_filename_placeholder": "Nome do ficheiro anexado", + "publish_dialog_email_placeholder": "Email para encaminhar a notificação, por exemplo phil@example.com", + "publish_dialog_email_reset": "Remover encaminhar email", + "publish_dialog_attach_label": "URL de anexo", + "publish_dialog_attach_placeholder": "Anexar ficheiro por URL, por exemplo, https://f-droid.org/F-Droid.apk", + "publish_dialog_attach_reset": "Remover URL do anexo", + "publish_dialog_filename_label": "Nome do ficheiro", + "publish_dialog_delay_label": "Atraso", + "publish_dialog_delay_placeholder": "Atraso na entrega, por exemplo {{{unixTimestamp}}, {{relativeTime}}, ou \"{{naturalLanguage}}\" (apenas em inglês)", + "publish_dialog_other_features": "Outros recursos:", + "publish_dialog_chip_click_label": "Clique em URL", + "publish_dialog_chip_topic_label": "Alterar tópico", + "publish_dialog_details_examples_description": "Para obter exemplos e uma descrição detalhada de todos os recursos de envio, consulte a documentação.", + "publish_dialog_button_cancel_sending": "Cancelar o envio", + "publish_dialog_attached_file_filename_placeholder": "Nome do ficheiro anexado", + "publish_dialog_attached_file_remove": "Remover ficheiro anexado", + "emoji_picker_search_clear": "Limpar", + "subscribe_dialog_subscribe_description": "Os tópicos podem não ser protegidos por palavra-passe, então escolha um nome que não seja fácil de adivinhar. Uma vez inscrito, pode PUT/POST notificações.", + "subscribe_dialog_subscribe_use_another_label": "Usar outro servidor", + "subscribe_dialog_error_user_not_authorized": "Utilizador {{username}} não autorizado", + "prefs_notifications_min_priority_description_max": "Mostrar notificações se prioridade for 5 (máxima)", + "prefs_notifications_delete_after_one_week": "Após uma semana", + "prefs_notifications_delete_after_one_month": "Após um mês", + "prefs_notifications_delete_after_never_description": "Notificações nunca serão auto excluídas", + "prefs_notifications_delete_after_one_week_description": "Notificações são automaticamente excluídas após uma semana", + "prefs_notifications_delete_after_one_month_description": "Notificações são automaticamente excluídas após um mês", + "prefs_users_dialog_username_label": "Utilizador, por exemplo phil", + "prefs_users_dialog_password_label": "Palavra-passe", + "prefs_users_dialog_button_cancel": "Cancelar", + "prefs_users_dialog_button_add": "Adicionar", + "error_boundary_description": "Isto obviamente não deveria ter acontecido. Lamentamos muito por isto.
Se tiver um minuto, por favor relate isto no GitHub, ou informe-nos através de Discord ou Matrix.", + "error_boundary_stack_trace": "Rastreamento de pilha", + "error_boundary_gathering_info": "Coletar mais informações …", + "error_boundary_unsupported_indexeddb_title": "Navegação anônima não suportada", + "error_boundary_unsupported_indexeddb_description": "O ntfy web app precisa do IndexedDB para funcionar e o seu navegador não suporta IndexedDB no modo de navegação privada.

Embora isso seja lamentável, também não faz muito sentido usar o ntfy web app no modo de navegação privada de qualquer maneira, porque tudo é armazenado no armazenamento do navegador. Pode ler mais sobre isso nesta edição do GitHub, ou falar conosco em Discord ou Matrix.", + "action_bar_show_menu": "Mostrar menu", + "action_bar_logo_alt": "nfty logo", + "action_bar_settings": "Configurações", + "message_bar_show_dialog": "Mostrar caixa de publicação", + "alert_grant_button": "Conceder agora", + "publish_dialog_attachment_limits_file_reached": "excede o limite de ficheiro {{fileSizeLimit}}", + "publish_dialog_emoji_picker_show": "Escolher emoji", + "publish_dialog_priority_max": "Prioridade máxima", + "publish_dialog_title_label": "Título", + "publish_dialog_delay_reset": "Remover entrega adiada da notificação", + "publish_dialog_chip_email_label": "Encaminhar para email", + "publish_dialog_chip_attach_url_label": "Anexar ficheiro por URL", + "publish_dialog_chip_attach_file_label": "Anexar ficheiro local", + "publish_dialog_chip_delay_label": "Atraso na entrega", + "publish_dialog_button_cancel": "Cancelar", + "publish_dialog_button_send": "Enviar", + "publish_dialog_checkbox_publish_another": "Publicar outro", + "publish_dialog_attached_file_title": "Ficheiro anexado:", + "publish_dialog_drop_file_here": "Solte o ficheiro aqui", + "emoji_picker_search_placeholder": "Pesquisar emoji", + "subscribe_dialog_subscribe_title": "Inscrever no tópico", + "subscribe_dialog_subscribe_topic_placeholder": "Nome do tópico, por exemplo phil_alerts", + "subscribe_dialog_subscribe_base_url_label": "URL de subscrição", + "subscribe_dialog_subscribe_button_cancel": "Cancelar", + "subscribe_dialog_subscribe_button_subscribe": "Inscrever", + "subscribe_dialog_login_title": "Login necessário", + "subscribe_dialog_login_description": "Esse tópico é protegido por palavra-passe. Por favor digite o nome de utilizador e palavra-passe para inscrever.", + "subscribe_dialog_login_username_label": "Nome, por exemplo phil", + "subscribe_dialog_login_password_label": "Palavra-passe", + "subscribe_dialog_login_button_back": "Voltar", + "subscribe_dialog_login_button_login": "Login", + "subscribe_dialog_error_user_anonymous": "anônimo", + "prefs_notifications_title": "Notificações", + "prefs_notifications_sound_title": "Som de notificações", + "prefs_notifications_sound_description_none": "Notificações não reproduzem nenhum som quando chegam", + "prefs_notifications_sound_description_some": "Notificações reproduzem som {{sound}} quando chegam", + "prefs_notifications_sound_no_sound": "Sem som", + "prefs_notifications_sound_play": "Reproduzir som selecionado", + "prefs_notifications_min_priority_title": "Mínima prioridade", + "prefs_notifications_min_priority_description_any": "Mostrando todas as notificações, independente da prioridade", + "prefs_notifications_min_priority_description_x_or_higher": "Mostrar notificações se prioridade for {{number}} ({{name}}) ou acima", + "prefs_notifications_min_priority_any": "Qualquer prioridade", + "prefs_notifications_min_priority_low_and_higher": "Baixa prioridade e acima", + "prefs_notifications_min_priority_default_and_higher": "Prioridade padrão e acima", + "prefs_notifications_min_priority_high_and_higher": "Alta prioridade e acima", + "prefs_notifications_min_priority_max_only": "Apenas prioridade máxima", + "prefs_notifications_delete_after_title": "Apagar notificações", + "prefs_notifications_delete_after_never": "Nunca", + "prefs_notifications_delete_after_three_hours": "Após três horas", + "prefs_notifications_delete_after_one_day": "Após um dia", + "prefs_notifications_delete_after_three_hours_description": "Notificações são automaticamente excluídas após três horas", + "prefs_notifications_delete_after_one_day_description": "Notificações são automaticamente excluídas após um dia", + "prefs_users_title": "Gerir utilizadores", + "prefs_users_description": "Adicionar/remover utilizadores nos seus tópicos protegidos. Note que o utilizador e palavra-passe são salvos no armazenamento local do navegador.", + "prefs_users_table": "Tabela de utilizadores", + "prefs_users_add_button": "Adicionar utilizador", + "prefs_users_edit_button": "Editar utilizador", + "prefs_users_delete_button": "Apagar utilizador", + "prefs_users_table_user_header": "Utilizador", + "prefs_users_table_base_url_header": "URL de serviço", + "prefs_users_dialog_title_add": "Adicionar utilizador", + "prefs_users_dialog_title_edit": "Editar utilizador", + "prefs_users_dialog_base_url_label": "URL de serviço, exemplo https://ntfy.sh", + "prefs_users_dialog_button_save": "Gravar", + "prefs_appearance_title": "Aparência", + "prefs_appearance_language_title": "LInguagem", + "priority_min": "minima", + "priority_low": "baixa", + "priority_default": "padrão", + "priority_high": "alta", + "priority_max": "máxima", + "error_boundary_title": "Ah não, ntfy parou de funcionar", + "error_boundary_button_copy_stack_trace": "Copiar rastreamento de pilha" +} From 96599df89f80cf9eefe2b2fcb9fede0641275bee Mon Sep 17 00:00:00 2001 From: binwiederhier Date: Thu, 12 Jan 2023 10:25:13 -0500 Subject: [PATCH 10/41] Thank to @sky4055 for your sponsorship --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index bffd990f..72d2aa14 100644 --- a/README.md +++ b/README.md @@ -109,6 +109,7 @@ appreciated. A big fat **Thank You** to the folks already sponsoring ntfy: + I'd also like to thank JetBrains for providing their awesome [IntelliJ IDEA](https://www.jetbrains.com/idea/) to me for free, and [DigitalOcean](https://www.digitalocean.com/) for supporting the project: From 1fd166d5c795c50f4f200716b4170c8d3affdca6 Mon Sep 17 00:00:00 2001 From: binwiederhier Date: Thu, 12 Jan 2023 10:28:00 -0500 Subject: [PATCH 11/41] Remove upx step from builds --- .goreleaser.yml | 7 ------- docs/releases.md | 3 ++- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/.goreleaser.yml b/.goreleaser.yml index 39642ba4..9ba8bb49 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -13,9 +13,6 @@ builds: - "-linkmode=external -extldflags=-static -s -w -X main.version={{.Version}} -X main.commit={{.Commit}} -X main.date={{.Date}}" goos: [linux] goarch: [amd64] - hooks: - post: - - upx "{{ .Path }}" # apt install upx - id: ntfy_linux_armv6 binary: ntfy @@ -28,7 +25,6 @@ builds: goos: [linux] goarch: [arm] goarm: [6] - # No "upx" for ARM, see https://github.com/binwiederhier/ntfy/issues/191#issuecomment-1083406546 - id: ntfy_linux_armv7 binary: ntfy @@ -41,7 +37,6 @@ builds: goos: [linux] goarch: [arm] goarm: [7] - # No "upx" for ARM, see https://github.com/binwiederhier/ntfy/issues/191#issuecomment-1083406546 - id: ntfy_linux_arm64 binary: ntfy @@ -53,7 +48,6 @@ builds: - "-linkmode=external -extldflags=-static -s -w -X main.version={{.Version}} -X main.commit={{.Commit}} -X main.date={{.Date}}" goos: [linux] goarch: [arm64] - # No "upx" for ARM, see https://github.com/binwiederhier/ntfy/issues/191#issuecomment-1083406546 - id: ntfy_windows_amd64 binary: ntfy @@ -64,7 +58,6 @@ builds: - "-X main.version={{.Version}} -X main.commit={{.Commit}} -X main.date={{.Date}}" goos: [windows] goarch: [amd64] - # No "upx" for Windows to hopefully avoid Virus warnings - id: ntfy_darwin_all binary: ntfy diff --git a/docs/releases.md b/docs/releases.md index c1c78a6b..ad513f45 100644 --- a/docs/releases.md +++ b/docs/releases.md @@ -9,9 +9,10 @@ and the [ntfy Android app](https://github.com/binwiederhier/ntfy-android/release * Preliminary `/v1/health` API endpoint for service monitoring (no ticket) * Add basic health check to `Dockerfile` ([#555](https://github.com/binwiederhier/ntfy/pull/555), thanks to [@bt90](https://github.com/bt90)) -**Bug fixes:** +**Bug fixes + maintenance:** * Fix `chown` issues with RHEL-like based systems ([#566](https://github.com/binwiederhier/ntfy/issues/566)/[#565](https://github.com/binwiederhier/ntfy/pull/565), thanks to [@danieldemus](https://github.com/danieldemus)) +* Removed `upx` (binary packing) for all builds due to false virus warnings ([#576](https://github.com/binwiederhier/ntfy/issues/576), thanks to [@shawnhwei](https://github.com/shawnhwei) for reporting) **Documentation:** From 0dd07d10a0f0fdb74ca3550b729bdb9add1037ac Mon Sep 17 00:00:00 2001 From: Vojtech Balak Date: Fri, 13 Jan 2023 19:29:44 +0100 Subject: [PATCH 12/41] Fix small issues in the K8s sts documentation The flag --cache-file and its argument need to be passed as two separate arguments, otherwise it gets parsed as a single long flag and results in an "incorrect usage" error. The pvc needs to be mounted to actually get used. --- docs/install.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/install.md b/docs/install.md index 00b03639..7bf42ca0 100644 --- a/docs/install.md +++ b/docs/install.md @@ -371,7 +371,7 @@ unmanned pod. containers: - name: ntfy image: binwiederhier/ntfy - args: ["serve", "--cache-file /var/cache/ntfy/cache.db"] + args: ["serve", "--cache-file", "/var/cache/ntfy/cache.db"] ports: - containerPort: 80 name: http @@ -379,6 +379,8 @@ unmanned pod. - name: config mountPath: "/etc/ntfy" readOnly: true + - name: cache + mountPath: "/var/cache/ntfy" volumes: - name: config configMap: From ee062c13d42ced173f3fa517b05a2776f1333ea3 Mon Sep 17 00:00:00 2001 From: binwiederhier Date: Sat, 14 Jan 2023 06:46:42 -0500 Subject: [PATCH 13/41] Release notes --- docs/releases.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/releases.md b/docs/releases.md index ad513f45..7165e310 100644 --- a/docs/releases.md +++ b/docs/releases.md @@ -18,6 +18,7 @@ and the [ntfy Android app](https://github.com/binwiederhier/ntfy-android/release * Add HTTP/2 and TLSv1.3 support to nginx docs ([#553](https://github.com/binwiederhier/ntfy/issues/553), thanks to [@bt90](https://github.com/bt90)) * Small wording change for `client.yml` ([#562](https://github.com/binwiederhier/ntfy/pull/562), thanks to [@fleopaulD](https://github.com/fleopaulD)) +* Fix K8s install docs ([#582](https://github.com/binwiederhier/ntfy/pull/582), thanks to [@Remedan](https://github.com/Remedan)) ## ntfy server v1.30.1 Released December 23, 2022 🎅 From a589705e6df4b05d94d0ea1d91ddb7d6b1cbd82f Mon Sep 17 00:00:00 2001 From: binwiederhier Date: Sat, 14 Jan 2023 13:29:57 -0500 Subject: [PATCH 14/41] Add Scrt.link integration --- docs/integrations.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/integrations.md b/docs/integrations.md index 737a86fe..7c7397da 100644 --- a/docs/integrations.md +++ b/docs/integrations.md @@ -32,6 +32,7 @@ and uptime of third party servers, so use of each server is **at your own discre - [Gatus](https://gatus.io/) ⭐ - Automated service health dashboard - [Automatisch](https://automatisch.io/) ⭐ - Open source Zapier alternative / workflow automation tool - [FlexGet](https://flexget.com/Plugins/Notifiers/ntfysh) ⭐ - Multipurpose automation tool for all of your media +- [Scrt.link](https://scrt.link/) - Share a secret - [Platypush](https://docs.platypush.tech/platypush/plugins/ntfy.html) - Automation platform aimed to run on any device that can run Python ## [UnifiedPush](https://unifiedpush.org/users/apps/) integrations From 87f54796624b9b0dcda1322f5b44b4e9c94d7a61 Mon Sep 17 00:00:00 2001 From: Jesse Laning <1132336+jamolnng@users.noreply.github.com> Date: Wed, 18 Jan 2023 23:16:34 -0500 Subject: [PATCH 15/41] add blog post for unRAID notifications --- docs/integrations.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/integrations.md b/docs/integrations.md index 7c7397da..adbf4f2f 100644 --- a/docs/integrations.md +++ b/docs/integrations.md @@ -127,6 +127,7 @@ and uptime of third party servers, so use of each server is **at your own discre - [Ntfy.sh – Send push notifications to your phone via PUT/POST](https://news.ycombinator.com/item?id=33517944) ⭐ - news.ycombinator.com - 11/2022 - [Ntfy et Jeedom : un plugin](https://lunarok-domotique.com/2022/11/ntfy-et-jeedom/) - lunarok-domotique.com - 11/2022 - [Crea tu propio servidor de notificaciones con Ntfy](https://blog.parravidales.es/crea-tu-propio-servidor-de-notificaciones-con-ntfy/) - blog.parravidales.es - 11/2022 +- [unRAID Notifications with ntfy.sh](https://lder.dev/posts/ntfy-Notifications-With-unRAID/) - lder.dev - 10/2022 - [Zero-cost push notifications to your phone or desktop via PUT/POST ](https://lobste.rs/s/41dq13/zero_cost_push_notifications_your_phone) - lobste.rs - 10/2022 - [A nifty push notification system: ntfy](https://jpmens.net/2022/10/30/a-nifty-push-notification-system-ntfy/) - jpmens.net - 10/2022 - [Alarmanlage der dritten Art (YouTube video)](https://www.youtube.com/watch?v=altb5QLHbaU&feature=youtu.be) - youtube.com - 10/2022 From cff8f8892059dc46f85c6cf0853deaf7c0698695 Mon Sep 17 00:00:00 2001 From: "Philipp C. Heckel" Date: Thu, 19 Jan 2023 12:05:26 -0500 Subject: [PATCH 16/41] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 72d2aa14..b7b2cd24 100644 --- a/README.md +++ b/README.md @@ -112,9 +112,9 @@ appreciated. A big fat **Thank You** to the folks already sponsoring ntfy: I'd also like to thank JetBrains for providing their awesome [IntelliJ IDEA](https://www.jetbrains.com/idea/) to me for free, -and [DigitalOcean](https://www.digitalocean.com/) for supporting the project: +and [DigitalOcean](https://m.do.co/c/442b929528db) (*referral link*) for supporting the project: - + ## Code of Conduct We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, caste, color, religion, or sexual identity and orientation. From c863c86f4c51bb22176a9dca3c54f488aa2c5fc8 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Sat, 21 Jan 2023 13:57:42 -0500 Subject: [PATCH 17/41] Update integrations.md +nodebb --- docs/integrations.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/integrations.md b/docs/integrations.md index adbf4f2f..47791dd9 100644 --- a/docs/integrations.md +++ b/docs/integrations.md @@ -107,6 +107,7 @@ and uptime of third party servers, so use of each server is **at your own discre - [ignition-ntfy-module](https://github.com/Kyvis-Labs/ignition-ntfy-module) - Adds support for sending notifications via a ntfy server to Ignition (Java) - [maubot-ntfy](https://gitlab.com/999eagle/maubot-ntfy) - Matrix bot to subscribe to ntfy topics and send messages to Matrix (Python) - [ntfy-wrapper](https://github.com/vict0rsch/ntfy-wrapper) - Wrapper around ntfy (Python) +- [nodebb-plugin-ntfy](https://github.com/NodeBB/nodebb-plugin-ntfy) - Push notifications for NodeBB forums ## Blog + forum posts From 6ae200e338bd7129531ff7db3947dc72efcea092 Mon Sep 17 00:00:00 2001 From: binwiederhier Date: Sat, 21 Jan 2023 15:17:30 -0500 Subject: [PATCH 18/41] Added Portuguese --- docs/releases.md | 4 ++++ web/src/components/Preferences.js | 1 + 2 files changed, 5 insertions(+) diff --git a/docs/releases.md b/docs/releases.md index 7165e310..f5fa37b4 100644 --- a/docs/releases.md +++ b/docs/releases.md @@ -20,6 +20,10 @@ and the [ntfy Android app](https://github.com/binwiederhier/ntfy-android/release * Small wording change for `client.yml` ([#562](https://github.com/binwiederhier/ntfy/pull/562), thanks to [@fleopaulD](https://github.com/fleopaulD)) * Fix K8s install docs ([#582](https://github.com/binwiederhier/ntfy/pull/582), thanks to [@Remedan](https://github.com/Remedan)) +**Additional languages:** + +* Portuguese (thanks to [@ssantos](https://hosted.weblate.org/user/ssantos/)) + ## ntfy server v1.30.1 Released December 23, 2022 🎅 diff --git a/web/src/components/Preferences.js b/web/src/components/Preferences.js index 2bafa7e9..a1754189 100644 --- a/web/src/components/Preferences.js +++ b/web/src/components/Preferences.js @@ -463,6 +463,7 @@ const Language = () => { Nederlands Norsk bokmål Українська + Português Português (Brasil) Polski Русский From 167656b38e3ecfe67d3d07580c3183ea9dd3aac0 Mon Sep 17 00:00:00 2001 From: binwiederhier Date: Sat, 21 Jan 2023 15:19:52 -0500 Subject: [PATCH 19/41] Blog post --- docs/integrations.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/integrations.md b/docs/integrations.md index 47791dd9..e01ea211 100644 --- a/docs/integrations.md +++ b/docs/integrations.md @@ -111,6 +111,7 @@ and uptime of third party servers, so use of each server is **at your own discre ## Blog + forum posts +- [January 2023 Developer Update](https://community.nodebb.org/topic/16908/january-2023-developer-update) - nodebb.org - 1/2023 - [Comment envoyer des notifications push sur votre téléphone facilement et gratuitement?](https://korben.info/notifications-push-telephone.html) - 1/2023 - [UnifiedPush: a decentralized, open-source push notification protocol](https://f-droid.org/en/2022/12/18/unifiedpush.html) ⭐ - 12/2022 - [ntfy setup instructions](https://docs.benjamin-altpeter.de/network/vms/1001029-ntfy/) - benjamin-altpeter.de - 12/2022 From b82794df0597e3ac1bf81e1a974aaaa0aa3b4a3e Mon Sep 17 00:00:00 2001 From: binwiederhier Date: Sat, 21 Jan 2023 16:20:24 -0500 Subject: [PATCH 20/41] Thank you @julianlam for your sponsorship --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index b7b2cd24..3da225b9 100644 --- a/README.md +++ b/README.md @@ -110,6 +110,7 @@ appreciated. A big fat **Thank You** to the folks already sponsoring ntfy: + I'd also like to thank JetBrains for providing their awesome [IntelliJ IDEA](https://www.jetbrains.com/idea/) to me for free, and [DigitalOcean](https://m.do.co/c/442b929528db) (*referral link*) for supporting the project: From 75c07221efd9d17cbd87804836fadf4ced2d98d2 Mon Sep 17 00:00:00 2001 From: binwiederhier Date: Sat, 21 Jan 2023 16:23:15 -0500 Subject: [PATCH 21/41] Added n8n-ntfy --- docs/integrations.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/integrations.md b/docs/integrations.md index e01ea211..b9198ef6 100644 --- a/docs/integrations.md +++ b/docs/integrations.md @@ -108,6 +108,7 @@ and uptime of third party servers, so use of each server is **at your own discre - [maubot-ntfy](https://gitlab.com/999eagle/maubot-ntfy) - Matrix bot to subscribe to ntfy topics and send messages to Matrix (Python) - [ntfy-wrapper](https://github.com/vict0rsch/ntfy-wrapper) - Wrapper around ntfy (Python) - [nodebb-plugin-ntfy](https://github.com/NodeBB/nodebb-plugin-ntfy) - Push notifications for NodeBB forums +- [n8n-ntfy](https://github.com/raghavanand98/n8n-ntfy.sh) - n8n community node that lets you use ntfy in your workflows ## Blog + forum posts From 804ee3b298be5cd05b1a0300c33c436a7012be77 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Baril Date: Sun, 22 Jan 2023 04:32:30 -0500 Subject: [PATCH 22/41] Elements requiring chown to run non-root Docker We also have to chown the attachments directory otherwise the docker container does not start and crashes. BTW, all that should be automated at the container creation. Because it took me at least an hour to understand that the only way to accomplish that chown command was to first launch the container as root, run the commands, and only then edit docker-compose.yml to add uid/gid. After that I could restart the container and it would now not crash. --- docs/install.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/install.md b/docs/install.md index 7bf42ca0..70ee219d 100644 --- a/docs/install.md +++ b/docs/install.md @@ -287,7 +287,7 @@ services: restart: unless-stopped ``` -If using a non-root user when running the docker version, be sure to chown the server.yml, user.db, and cache.db files to the same uid/gid. +If using a non-root user when running the docker version, be sure to chown the server.yml, user.db, and cache.db files and attachments directory to the same uid/gid. Alternatively, you may wish to build a customized Docker image that can be run with fewer command-line arguments and without delivering the configuration file separately. ``` From 8668143127fdb4251ed43630e6f057917829cc2d Mon Sep 17 00:00:00 2001 From: "Philipp C. Heckel" Date: Tue, 24 Jan 2023 10:25:56 -0500 Subject: [PATCH 23/41] Update FUNDING.yml --- .github/FUNDING.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index d1cf5011..e1eb0619 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1 +1,2 @@ github: [binwiederhier] +liberapay: ntfy From 3d84bdf77bc19cca17fe166a27d5fb4a9c46bfaf Mon Sep 17 00:00:00 2001 From: binwiederhier Date: Tue, 24 Jan 2023 10:32:11 -0500 Subject: [PATCH 24/41] Thanks to @andreapx for your donation --- README.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 3da225b9..c74b292e 100644 --- a/README.md +++ b/README.md @@ -61,9 +61,9 @@ for the server and the Android app. Or, if you'd like to help translate 🇩🇪 ## Sponsors -I have just very recently started accepting donations via [GitHub Sponsors](https://github.com/sponsors/binwiederhier). -I would be humbled if you helped me carry the server and developer account costs. Even small donations are very much -appreciated. A big fat **Thank You** to the folks already sponsoring ntfy: +I have just very recently started accepting donations via [GitHub Sponsors](https://github.com/sponsors/binwiederhier), +and [Liberapay](https://liberapay.com/ntfy). I would be humbled if you helped me carry the server and developer +account costs. Even small donations are very much appreciated. A big fat **Thank You** to the folks already sponsoring ntfy: @@ -111,6 +111,7 @@ appreciated. A big fat **Thank You** to the folks already sponsoring ntfy: + I'd also like to thank JetBrains for providing their awesome [IntelliJ IDEA](https://www.jetbrains.com/idea/) to me for free, and [DigitalOcean](https://m.do.co/c/442b929528db) (*referral link*) for supporting the project: From 471775ae493662c6e0d3d6f5bf78a9c95a2e41d0 Mon Sep 17 00:00:00 2001 From: binwiederhier Date: Tue, 24 Jan 2023 14:57:50 -0500 Subject: [PATCH 25/41] Remove upx references --- Makefile | 2 -- docs/develop.md | 1 - go.sum | 33 --------------------------------- 3 files changed, 36 deletions(-) diff --git a/Makefile b/Makefile index 5cf44613..32c6502c 100644 --- a/Makefile +++ b/Makefile @@ -88,7 +88,6 @@ build-deps-ubuntu: curl \ gcc-aarch64-linux-gnu \ gcc-arm-linux-gnueabi \ - upx \ jq which pip3 || sudo apt install -y python3-pip @@ -201,7 +200,6 @@ cli-deps-static-sites: touch server/docs/index.html server/site/app.html cli-deps-all: - which upx || { echo "ERROR: upx not installed. On Ubuntu, run: apt install upx"; exit 1; } go install github.com/goreleaser/goreleaser@latest cli-deps-gcc-armv6-armv7: diff --git a/docs/develop.md b/docs/develop.md index 23a6c1bb..5e7004b7 100644 --- a/docs/develop.md +++ b/docs/develop.md @@ -92,7 +92,6 @@ sudo apt install \ gcc-arm-linux-gnueabi \ gcc-aarch64-linux-gnu \ python3-pip \ - upx \ git ``` diff --git a/go.sum b/go.sum index c3085ff1..0ad00577 100644 --- a/go.sum +++ b/go.sum @@ -1,18 +1,12 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.107.0 h1:qkj22L7bgkl6vIeZDlOY2po43Mx/TIa2Wsa7VR+PEww= cloud.google.com/go v0.107.0/go.mod h1:wpc2eNrD7hXUTy8EKS10jkxpZBjASrORK7goS+3YX2I= -cloud.google.com/go/compute v1.13.0 h1:AYrLkB8NPdDRslNp4Jxmzrhdr03fUAIDbiGFjLWowoU= -cloud.google.com/go/compute v1.13.0/go.mod h1:5aPTS0cUNMIc1CE546K+Th6weJUNQErARyZtRXDJ8GE= cloud.google.com/go/compute v1.14.0 h1:hfm2+FfxVmnRlh6LpB7cg1ZNU+5edAHmW679JePztk0= cloud.google.com/go/compute v1.14.0/go.mod h1:YfLtxrj9sU4Yxv+sXzZkyPjEyPBZfXHUvjxega5vAdo= -cloud.google.com/go/compute/metadata v0.2.2 h1:aWKAjYaBaOSrpKl57+jnS/3fJRQnxL7TvR/u1VVbt6k= -cloud.google.com/go/compute/metadata v0.2.2/go.mod h1:jgHgmJd2RKBGzXqF5LR2EZMGxBkeanZ9wwa75XHJgOM= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= cloud.google.com/go/firestore v1.9.0 h1:IBlRyxgGySXu5VuW0RgGFlTtLukSnNkpDiEOMkQkmpA= cloud.google.com/go/firestore v1.9.0/go.mod h1:HMkjKHNTtRyZNiMzu7YAsLr9K3X2udY2AMwDaMEQiiE= -cloud.google.com/go/iam v0.7.0 h1:k4MuwOsS7zGJJ+QfZ5vBK8SgHBAvYN/23BWsiihJ1vs= -cloud.google.com/go/iam v0.7.0/go.mod h1:H5Br8wRaDGNc8XP3keLc4unfUUZeyH3Sfl9XpQEYOeg= cloud.google.com/go/iam v0.9.0 h1:bK6Or6mxhuL8lnj1i9j0yMo2wE/IeTO2cWlfUrf/TZs= cloud.google.com/go/iam v0.9.0/go.mod h1:nXAECrMt2qHpF6RZUZseteD6QyanL68reN4OXPw0UWM= cloud.google.com/go/longrunning v0.3.0 h1:NjljC+FYPV3uh5/OwWT6pVU+doBqMg2x/rZlE+CamDs= @@ -21,14 +15,11 @@ cloud.google.com/go/storage v1.28.1 h1:F5QDG5ChchaAVQhINh24U99OWHURqrW8OmQcGKXcb cloud.google.com/go/storage v1.28.1/go.mod h1:Qnisd4CqDdo6BGs2AD5LLnEsmSQ80wQ5ogcBBKhU86Y= firebase.google.com/go/v4 v4.10.0 h1:dgK/8uwfJbzc5LZK/GyRRfIkZEDObN9q0kgEXsjlXN4= firebase.google.com/go/v4 v4.10.0/go.mod h1:m0gLwPY9fxKggizzglgCNWOGnFnVPifLpqZzo5u3e/A= -github.com/AlekSi/pointer v1.0.0/go.mod h1:1kjywbfcPFCmncIxtk6fIEub6LKrfMz3gc5QKVOSOA8= github.com/AlekSi/pointer v1.2.0 h1:glcy/gc4h8HnG2Z3ZECSzZ1IX1x2JxRVuDzaJwQE0+w= github.com/AlekSi/pointer v1.2.0/go.mod h1:gZGfd3dpW4vEc/UlyfKKi1roIqcCgwOIvb0tSNSBle0= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak= github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= -github.com/MicahParks/keyfunc v1.7.0 h1:LBd4tBj6FwGs2S4GXniQbgrG0PXzIldyGDKWch8slhg= -github.com/MicahParks/keyfunc v1.7.0/go.mod h1:IdnCilugA0O/99dW+/MkvlyrsX8+L8+x95xuVNtM5jw= github.com/MicahParks/keyfunc v1.9.0 h1:lhKd5xrFHLNOWrDc4Tyb/Q1AJ4LCzQ48GVJyVIID3+o= github.com/MicahParks/keyfunc v1.9.0/go.mod h1:IdnCilugA0O/99dW+/MkvlyrsX8+L8+x95xuVNtM5jw= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= @@ -44,8 +35,6 @@ github.com/emersion/go-sasl v0.0.0-20220912192320-0145f2c60ead h1:fI1Jck0vUrXT8b github.com/emersion/go-sasl v0.0.0-20220912192320-0145f2c60ead/go.mod h1:iL2twTeMvZnrg54ZoPDNfJaJaqy0xIQFuBdrLsmspwQ= github.com/emersion/go-smtp v0.15.0 h1:3+hMGMGrqP/lqd7qoxZc1hTU8LY8gHV9RFGWlqSDmP8= github.com/emersion/go-smtp v0.15.0/go.mod h1:qm27SGYgoIPRot6ubfQ/GpiPy/g3PaZAVRxiO/sDUgQ= -github.com/emersion/go-smtp v0.16.0 h1:eB9CY9527WdEZSs5sWisTmilDX7gG+Q/2IdRcmubpa8= -github.com/emersion/go-smtp v0.16.0/go.mod h1:qm27SGYgoIPRot6ubfQ/GpiPy/g3PaZAVRxiO/sDUgQ= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= @@ -86,8 +75,6 @@ github.com/google/martian/v3 v3.2.1 h1:d8MncMlErDFTwQGBK1xhv026j9kqhvw1Qv9IbWT1V github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/enterprise-certificate-proxy v0.2.0 h1:y8Yozv7SZtlU//QXbezB6QkpuE6jMD2/gfzk4AftXjs= -github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= github.com/googleapis/enterprise-certificate-proxy v0.2.1 h1:RY7tHKZcRlk788d5WSo/e83gOyyy742E8GSs771ySpg= github.com/googleapis/enterprise-certificate-proxy v0.2.1/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= github.com/googleapis/gax-go/v2 v2.7.0 h1:IcsPKeInNvYi7eqSaDjiZqDDKu5rsmunY0Y1YupQSSQ= @@ -96,11 +83,8 @@ github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWm github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/mattn/go-sqlite3 v1.14.16 h1:yOQRA0RpS5PFz/oikGwBEqvAWhWg5ufRz4ETLjwpU1Y= github.com/mattn/go-sqlite3 v1.14.16/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= -github.com/olebedev/when v0.0.0-20211212231525-59bd4edcf9d6 h1:oDSPaYiL2dbjcArLrFS8ANtwgJMyOLzvQCZon+XmFsk= -github.com/olebedev/when v0.0.0-20211212231525-59bd4edcf9d6/go.mod h1:DPucAeQGDPUzYUt+NaWw6qsF5SFapWWToxEiVDh2aV0= github.com/olebedev/when v0.0.0-20221205223600-4d190b02b8d8 h1:0uFGkScHef2Xd8g74BMHU1jFcnKEm0PzrPn4CluQ9FI= github.com/olebedev/when v0.0.0-20221205223600-4d190b02b8d8/go.mod h1:T0THb4kP9D3NNqlvCwIG4GyUioTAzEhB4RNVzig/43E= -github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= @@ -111,13 +95,10 @@ github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQD github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/urfave/cli/v2 v2.23.6 h1:iWmtKD+prGo1nKUtLO0Wg4z9esfBM4rAV4QRLQiEmJ4= -github.com/urfave/cli/v2 v2.23.6/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc= github.com/urfave/cli/v2 v2.23.7 h1:YHDQ46s3VghFHFf1DdF+Sh7H4RqhcM+t0TmZRJx4oJY= github.com/urfave/cli/v2 v2.23.7/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= @@ -126,8 +107,6 @@ go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.3.0 h1:a06MkbcxBrEFc0w0QIZWXrH/9cCX6KJyWbBOIwAn+7A= -golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.4.0 h1:UVQgzMY87xqpKNgb+kDsll2Igd33HszWHFLmpaRMq/8= golang.org/x/crypto v0.4.0/go.mod h1:3quD/ATkf6oY+rnes5c3ExXTbLc8mueNue5/DoinL80= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -143,13 +122,9 @@ golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20220708220712-1185a9018129/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.2.0 h1:sZfSu1wtKLGlWI4ZZayP0ck9Y73K1ynO6gqzTdBVdPU= -golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.4.0 h1:Q5QPcMlvfxFTAPV0+07Xz/MpK9NTXu2VDUuy0FeMfaU= golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.2.0 h1:GtQkldQ9m7yvzCL1V+LrYow3Khe0eJH0w7RbX/VbaIU= -golang.org/x/oauth2 v0.2.0/go.mod h1:Cwn6afJ8jrQwYMxQDTpISoXmXW9I6qF6vDeuuoX3Ibs= golang.org/x/oauth2 v0.3.0 h1:6l90koy8/LaBLmLu8jpHeHexzMwEita0zFfYlggy2F8= golang.org/x/oauth2 v0.3.0/go.mod h1:rQrIauxkUhJ6CuwEXwymO2/eh4xz2ZWF1nBkcxS+tGk= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -166,8 +141,6 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.3.0 h1:w8ZOecv6NaNa/zC8944JTU3vz4u6Lagfk4RPQxv92NQ= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.2.0 h1:z85xZCsEl7bi/KwbNADeBYoOP0++7W1ipu+aGnpwzRM= -golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.3.0 h1:qoo4akIqOcDME5bhc/NgxUdovd6BSS2uMsVjB56q1xI= golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -186,8 +159,6 @@ golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBn golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -google.golang.org/api v0.103.0 h1:9yuVqlu2JCvcLg9p8S3fcFLZij8EPSyvODIY1rkMizQ= -google.golang.org/api v0.103.0/go.mod h1:hGtW6nK1AC+d9si/UBhw8Xli+QMOf6xyNAyJw4qU9w0= google.golang.org/api v0.105.0 h1:t6P9Jj+6XTn4U9I2wycQai6Q/Kz7iOT+QzjJ3G2V4x8= google.golang.org/api v0.105.0/go.mod h1:qh7eD5FJks5+BcE+cjBIm6Gz8vioK7EHvnlniqXBnqI= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= @@ -199,10 +170,6 @@ google.golang.org/appengine/v2 v2.0.2/go.mod h1:PkgRUWz4o1XOvbqtWTkBtCitEJ5Tp4Ho google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20221202195650-67e5cbc046fd h1:OjndDrsik+Gt+e6fs45z9AxiewiKyLKYpA45W5Kpkks= -google.golang.org/genproto v0.0.0-20221202195650-67e5cbc046fd/go.mod h1:cTsE614GARnxrLsqKREzmNYJACSWWpAWdNMwnD7c2BE= -google.golang.org/genproto v0.0.0-20221207170731-23e4bf6bdc37 h1:jmIfw8+gSvXcZSgaFAGyInDXeWzUhvYH57G/5GKMn70= -google.golang.org/genproto v0.0.0-20221207170731-23e4bf6bdc37/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= google.golang.org/genproto v0.0.0-20221227171554-f9683d7f8bef h1:uQ2vjV/sHTsWSqdKeLqmwitzgvjMl7o4IdtHwUDXSJY= google.golang.org/genproto v0.0.0-20221227171554-f9683d7f8bef/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= From b941551fffadb4ac0dd6661f86efffd92b394e0b Mon Sep 17 00:00:00 2001 From: "Philipp C. Heckel" Date: Wed, 25 Jan 2023 22:27:47 -0500 Subject: [PATCH 26/41] Thanks to @billycao for your sponsorship --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index c74b292e..e4e0100d 100644 --- a/README.md +++ b/README.md @@ -112,6 +112,7 @@ account costs. Even small donations are very much appreciated. A big fat **Thank + I'd also like to thank JetBrains for providing their awesome [IntelliJ IDEA](https://www.jetbrains.com/idea/) to me for free, and [DigitalOcean](https://m.do.co/c/442b929528db) (*referral link*) for supporting the project: From df6f53a1619fcab58212b4ad6c647fd24a5d35f6 Mon Sep 17 00:00:00 2001 From: binwiederhier Date: Thu, 26 Jan 2023 11:26:11 -0500 Subject: [PATCH 27/41] Add Shoutrrr integration --- docs/integrations.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/integrations.md b/docs/integrations.md index b9198ef6..b56cbed5 100644 --- a/docs/integrations.md +++ b/docs/integrations.md @@ -32,6 +32,7 @@ and uptime of third party servers, so use of each server is **at your own discre - [Gatus](https://gatus.io/) ⭐ - Automated service health dashboard - [Automatisch](https://automatisch.io/) ⭐ - Open source Zapier alternative / workflow automation tool - [FlexGet](https://flexget.com/Plugins/Notifiers/ntfysh) ⭐ - Multipurpose automation tool for all of your media +- [Shoutrrr](https://containrrr.dev/shoutrrr/v0.7/services/ntfy/) ⭐ - Notification library for gophers and their furry friends. - [Scrt.link](https://scrt.link/) - Share a secret - [Platypush](https://docs.platypush.tech/platypush/plugins/ntfy.html) - Automation platform aimed to run on any device that can run Python From facf4684aed15e60b7a3fad9a9e5450039f7fdeb Mon Sep 17 00:00:00 2001 From: bjornclauw Date: Thu, 26 Jan 2023 11:41:59 +0000 Subject: [PATCH 28/41] Translated using Weblate (Dutch) Currently translated at 100.0% (189 of 189 strings) Translation: ntfy/Web app Translate-URL: https://hosted.weblate.org/projects/ntfy/web/nl/ --- web/public/static/langs/nl.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/web/public/static/langs/nl.json b/web/public/static/langs/nl.json index 2b7990ec..39ead926 100644 --- a/web/public/static/langs/nl.json +++ b/web/public/static/langs/nl.json @@ -1,13 +1,13 @@ { "action_bar_settings": "Instellingen", - "action_bar_send_test_notification": "Stuur test notificatie", + "action_bar_send_test_notification": "Verstuur testnotificatie.", "action_bar_clear_notifications": "Wis alle notificaties", "message_bar_type_message": "Typ hier een bericht", "action_bar_unsubscribe": "Afmelden", "message_bar_error_publishing": "Fout bij publiceren notificatie", "nav_topics_title": "Geabonneerde onderwerpen", "nav_button_settings": "Instellingen", - "alert_not_supported_description": "Notificaties worden niet ondersteund in je browser.", + "alert_not_supported_description": "Notificaties worden niet ondersteund door je browser.", "notifications_none_for_any_title": "Je hebt nog geen notificaties ontvangen.", "publish_dialog_tags_label": "Tags", "publish_dialog_chip_attach_file_label": "Lokaal bestand bijvoegen", @@ -26,20 +26,20 @@ "action_bar_show_menu": "Toon menu", "action_bar_logo_alt": "ntfy logo", "action_bar_toggle_mute": "Notificaties dempen/opheffen", - "action_bar_toggle_action_menu": "Actie menu openen/sluiten", + "action_bar_toggle_action_menu": "Open/Sluit actiemenu", "message_bar_show_dialog": "Toon publicatie venster", "message_bar_publish": "Bericht publiceren", "nav_button_all_notifications": "Alle notificaties", "nav_button_documentation": "Documentatie", "nav_button_publish_message": "Notificatie publiceren", - "nav_button_subscribe": "Onderwerp abonneren", + "nav_button_subscribe": "Abonneer op onderwerp", "nav_button_muted": "Notificaties gedempt", "nav_button_connecting": "verbinden", "alert_grant_title": "Notificaties zijn uitgeschakeld", - "alert_grant_description": "Geef je browser toestemming om meldingen weer te geven.", + "alert_grant_description": "Verleen je browser toestemming voor het weergeven van notificaties.", "alert_grant_button": "Nu toestaan", "alert_not_supported_title": "Notificaties zijn niet ondersteund", - "notifications_list": "Notificaties lijst", + "notifications_list": "Notificatielijst", "notifications_list_item": "Notificatie", "notifications_mark_read": "Markeer als gelezen", "notifications_delete": "Verwijder", @@ -59,7 +59,7 @@ "notifications_attachment_file_audio": "audiobestand", "notifications_attachment_file_app": "Android app bestand", "notifications_attachment_file_document": "overig document", - "notifications_click_copy_url_title": "URL naar klembord kopiëren", + "notifications_click_copy_url_title": "link URL naar klembord kopiëren", "notifications_click_copy_url_button": "Link kopiëren", "notifications_click_open_button": "Link openen", "notifications_none_for_topic_description": "Om notificaties naar dit onderwerp te sturen, doe een PUT of POST naar de URL van het onderwerp.", @@ -73,7 +73,7 @@ "publish_dialog_title_no_topic": "Notificatie publiceren", "publish_dialog_progress_uploading": "Uploaden …", "notifications_actions_open_url_title": "Ga naar {{url}}", - "notifications_actions_not_supported": "Deze actie is niet ondersteund in de web applicatie", + "notifications_actions_not_supported": "Actie wordt niet ondersteund in de webapplicatie", "notifications_actions_http_request_title": "Stuur HTTP {{method}} naar {{url}}", "notifications_none_for_topic_title": "Je hebt nog geen notificaties ontvangen voor dit onderwerp.", "publish_dialog_priority_low": "Lage prioriteit", From 8da46afab489ba50bdec9dfe90f3ad107802808d Mon Sep 17 00:00:00 2001 From: binwiederhier Date: Thu, 2 Feb 2023 15:21:35 -0500 Subject: [PATCH 29/41] Thank you @zoic21 for your donation --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index e4e0100d..48af9872 100644 --- a/README.md +++ b/README.md @@ -113,6 +113,7 @@ account costs. Even small donations are very much appreciated. A big fat **Thank + I'd also like to thank JetBrains for providing their awesome [IntelliJ IDEA](https://www.jetbrains.com/idea/) to me for free, and [DigitalOcean](https://m.do.co/c/442b929528db) (*referral link*) for supporting the project: From 5f8ecfaf81c0d0de3f3ea8793306309f649bb386 Mon Sep 17 00:00:00 2001 From: Tmpod Date: Thu, 2 Feb 2023 11:11:18 +0000 Subject: [PATCH 30/41] Translated using Weblate (Portuguese) Currently translated at 100.0% (189 of 189 strings) Translation: ntfy/Web app Translate-URL: https://hosted.weblate.org/projects/ntfy/web/pt/ --- web/public/static/langs/pt.json | 162 ++++++++++++++++---------------- 1 file changed, 81 insertions(+), 81 deletions(-) diff --git a/web/public/static/langs/pt.json b/web/public/static/langs/pt.json index 44293249..a1024caa 100644 --- a/web/public/static/langs/pt.json +++ b/web/public/static/langs/pt.json @@ -1,25 +1,25 @@ { "action_bar_clear_notifications": "Limpar todas as notificações", "action_bar_send_test_notification": "Enviar notificação de teste", - "action_bar_unsubscribe": "Desinscrever", + "action_bar_unsubscribe": "Anular subscrição", "action_bar_toggle_mute": "Ativa/Desativa notificações", "action_bar_toggle_action_menu": "Abrir/fechar menu de ação", "message_bar_type_message": "Escreva uma mensagem aqui", "message_bar_error_publishing": "Erro ao publicar notificação", "message_bar_publish": "Publicar mensagem", - "nav_topics_title": "Tópicos inscritos", + "nav_topics_title": "Tópicos subscritos", "nav_button_all_notifications": "Todas notificações", "nav_button_settings": "Configurações", "nav_button_documentation": "Documentação", "nav_button_publish_message": "Publicar notificação", - "nav_button_subscribe": "Inscrever no tópico", + "nav_button_subscribe": "Subscrever tópico", "nav_button_muted": "Notificações desativadas", - "nav_button_connecting": "Conectando", - "alert_grant_title": "Notificações estão desativadas", - "alert_grant_description": "Conceder ao navegador permissão para mostrar notificações.", - "alert_not_supported_title": "Notificações não são suportadas", + "nav_button_connecting": "A ligar", + "alert_grant_title": "As notificações estão desativadas", + "alert_grant_description": "Conceder permissão ao seu navegador para mostrar notificações.", + "alert_not_supported_title": "Notificações não suportadas", "notifications_list": "Lista de notificações", - "alert_not_supported_description": "Notificações não são suportadas pelo seu navagador.", + "alert_not_supported_description": "As notificações não são suportadas pelo seu navegador.", "notifications_list_item": "Notificação", "notifications_mark_read": "Marcar como lido", "notifications_delete": "Apagar", @@ -31,144 +31,144 @@ "notifications_attachment_copy_url_title": "Copiar URL do anexo para a área de transferência", "notifications_attachment_copy_url_button": "Copiar URL", "notifications_attachment_open_title": "Ir para {{url}}", - "notifications_attachment_link_expired": "a ligação à transferência expirou", + "notifications_attachment_link_expired": "a ligação de transferência expirou", "notifications_attachment_open_button": "Abrir anexo", "notifications_attachment_link_expires": "a ligação expira em {{date}}", - "notifications_attachment_file_image": "Ficheiro de imagem", - "notifications_attachment_file_video": "Ficheiro de vídeo", - "notifications_attachment_file_audio": "Ficheiro de áudio", - "notifications_attachment_file_app": "Ficheiro apk android", - "notifications_attachment_file_document": "Outros documentos", + "notifications_attachment_file_image": "ficheiro de imagem", + "notifications_attachment_file_video": "ficheiro de vídeo", + "notifications_attachment_file_audio": "ficheiro de áudio", + "notifications_attachment_file_app": "ficheiro apk Android", + "notifications_attachment_file_document": "outros documentos", "notifications_click_copy_url_title": "Copiar URL da ligação para a área de transferência", "notifications_click_copy_url_button": "Copiar ligação", "notifications_click_open_button": "Abrir ligação", "notifications_actions_open_url_title": "Ir para {{url}}", "notifications_actions_not_supported": "Ação não suportada na app web", "notifications_actions_http_request_title": "Enviar HTTP {{method}} para {{url}}", - "notifications_none_for_topic_title": "Ainda não recebeu nenhuma notificação para esse tópico.", - "notifications_none_for_topic_description": "Para enviar notificações para esse tópico, basta usar os métodos PUT ou POST na URL do tópico.", + "notifications_none_for_topic_title": "Ainda não recebeu nenhuma notificação deste tópico.", + "notifications_none_for_topic_description": "Para enviar notificações deste tópico, basta usar os métodos PUT ou POST no URL do tópico.", "notifications_none_for_any_title": "Ainda não recebeu nenhuma notificação.", - "notifications_none_for_any_description": "Para enviar notificações a um tópico, basta usar os métodos PUT ou POST para o URL do tópico. Aqui um exemplo usando um dos seus tópicos.", + "notifications_none_for_any_description": "Para enviar notificações dum tópico, basta usar os métodos PUT ou POST no URL do tópico. Eis um exemplo usando um dos seus tópicos.", "notifications_no_subscriptions_title": "Parece que ainda não tem nenhuma inscrição.", - "notifications_no_subscriptions_description": "Clique na ligação \"{{linktext}}\" para criar ou inscrever num tópico. Depois disso, poderá enviar mensagens via PUT ou POST e receberá notificações aqui.", + "notifications_no_subscriptions_description": "Clique na ligação \"{{linktext}}\" para criar ou subscrever um tópico. Depois, poderá enviar mensagens via PUT ou POST e receberá notificações aqui.", "notifications_example": "Exemplo", - "notifications_more_details": "Para mais informações, confira site ou documentação.", - "notifications_loading": "Carregando notificações…", + "notifications_more_details": "Para mais informações, aceda ao site ou à documentação.", + "notifications_loading": "A carregar notificações…", "publish_dialog_title_topic": "Publicar em {{topic}}", "publish_dialog_title_no_topic": "Publicar notificação", - "publish_dialog_progress_uploading": "Enviando …", - "publish_dialog_progress_uploading_detail": "Fazendo upload de {{loaded}}/{{total}} ({{percent}}%)…", + "publish_dialog_progress_uploading": "A enviar …", + "publish_dialog_progress_uploading_detail": "A enviar {{loaded}}/{{total}} ({{percent}}%)…", "publish_dialog_message_published": "Notificação publicada", - "publish_dialog_attachment_limits_file_and_quota_reached": "excede {{fileSizeLimit}} limite de ficheiro e cota, {{remainingBytes}} restante", - "publish_dialog_attachment_limits_quota_reached": "excede a cota, {{remainingBytes}} restantes", + "publish_dialog_attachment_limits_file_and_quota_reached": "excede limite de ficheiro de {{fileSizeLimit}} e cota, {{remainingBytes}} restante(s)", + "publish_dialog_attachment_limits_quota_reached": "excede a cota, {{remainingBytes}} restante(s)", "publish_dialog_priority_min": "Prioridade mínima", - "publish_dialog_priority_low": "Baixa prioridade", + "publish_dialog_priority_low": "Prioridade baixa", "publish_dialog_priority_default": "Prioridade padrão", - "publish_dialog_priority_high": "Alta prioridade", + "publish_dialog_priority_high": "Prioridade alta", "publish_dialog_base_url_label": "URL de serviço", - "publish_dialog_base_url_placeholder": "URL de serviço, por exemplo https://example.com", + "publish_dialog_base_url_placeholder": "URL de serviço, por exemplo: https://exemplo.com", "publish_dialog_topic_label": "Nome do tópico", - "publish_dialog_topic_placeholder": "Nome do tópico, por exemplo, phil_alerts", - "publish_dialog_topic_reset": "Resetar tópico", - "publish_dialog_title_placeholder": "Título da notificação, por exemplo Alerta de espaço em disco", + "publish_dialog_topic_placeholder": "Nome do tópico, por exemplo: \"avisos_do_filipe\"", + "publish_dialog_topic_reset": "Limpar tópico", + "publish_dialog_title_placeholder": "Título da notificação, por exemplo: \"Alerta de espaço em disco\"", "publish_dialog_message_label": "Mensagem", - "publish_dialog_message_placeholder": "Digite uma mensagem aqui", + "publish_dialog_message_placeholder": "Escreva uma mensagem aqui", "publish_dialog_tags_label": "Etiquetas", - "publish_dialog_tags_placeholder": "Lista de etiquetas, separadas por vírgula, por exemplo: srv1-backup", + "publish_dialog_tags_placeholder": "Lista de etiquetas, separadas por vírgula, por exemplo: aviso, srv1-backup", "publish_dialog_priority_label": "Prioridade", - "publish_dialog_click_label": "Clique em URL", + "publish_dialog_click_label": "URL de clique", "publish_dialog_click_placeholder": "URL que é aberto quando a notificação é clicada", - "publish_dialog_click_reset": "Remover URL clicável", + "publish_dialog_click_reset": "Remover URL de clique", "publish_dialog_email_label": "Email", "publish_dialog_filename_placeholder": "Nome do ficheiro anexado", - "publish_dialog_email_placeholder": "Email para encaminhar a notificação, por exemplo phil@example.com", - "publish_dialog_email_reset": "Remover encaminhar email", + "publish_dialog_email_placeholder": "Endereça para o qual encaminhar a notificação, por exemplo: filipe@exemplo.com", + "publish_dialog_email_reset": "Remover encaminhamento por email", "publish_dialog_attach_label": "URL de anexo", - "publish_dialog_attach_placeholder": "Anexar ficheiro por URL, por exemplo, https://f-droid.org/F-Droid.apk", - "publish_dialog_attach_reset": "Remover URL do anexo", + "publish_dialog_attach_placeholder": "Anexar ficheiro por URL, por exemplo: https://f-droid.org/F-Droid.apk", + "publish_dialog_attach_reset": "Remover URL de anexo", "publish_dialog_filename_label": "Nome do ficheiro", "publish_dialog_delay_label": "Atraso", - "publish_dialog_delay_placeholder": "Atraso na entrega, por exemplo {{{unixTimestamp}}, {{relativeTime}}, ou \"{{naturalLanguage}}\" (apenas em inglês)", - "publish_dialog_other_features": "Outros recursos:", - "publish_dialog_chip_click_label": "Clique em URL", + "publish_dialog_delay_placeholder": "Atraso na entrega, por exemplo \"{{{unixTimestamp}}\", \"{{relativeTime}}\", ou \"{{naturalLanguage}}\" (apenas em Inglês)", + "publish_dialog_other_features": "Outras funcionalidades:", + "publish_dialog_chip_click_label": "URL de clique", "publish_dialog_chip_topic_label": "Alterar tópico", - "publish_dialog_details_examples_description": "Para obter exemplos e uma descrição detalhada de todos os recursos de envio, consulte a documentação.", + "publish_dialog_details_examples_description": "Para obter exemplos e uma descrição detalhada de todas as funcionalidades de envio, consulte a documentação.", "publish_dialog_button_cancel_sending": "Cancelar o envio", "publish_dialog_attached_file_filename_placeholder": "Nome do ficheiro anexado", "publish_dialog_attached_file_remove": "Remover ficheiro anexado", - "emoji_picker_search_clear": "Limpar", - "subscribe_dialog_subscribe_description": "Os tópicos podem não ser protegidos por palavra-passe, então escolha um nome que não seja fácil de adivinhar. Uma vez inscrito, pode PUT/POST notificações.", + "emoji_picker_search_clear": "Limpar pesquisa", + "subscribe_dialog_subscribe_description": "Os tópicos podem não ser protegidos por palavra-passe, por isso escolha um nome que não seja fácil de adivinhar. Uma vez subscrito, pode usar os métodos PUT/POST para publicar notificações.", "subscribe_dialog_subscribe_use_another_label": "Usar outro servidor", "subscribe_dialog_error_user_not_authorized": "Utilizador {{username}} não autorizado", "prefs_notifications_min_priority_description_max": "Mostrar notificações se prioridade for 5 (máxima)", "prefs_notifications_delete_after_one_week": "Após uma semana", "prefs_notifications_delete_after_one_month": "Após um mês", - "prefs_notifications_delete_after_never_description": "Notificações nunca serão auto excluídas", - "prefs_notifications_delete_after_one_week_description": "Notificações são automaticamente excluídas após uma semana", - "prefs_notifications_delete_after_one_month_description": "Notificações são automaticamente excluídas após um mês", - "prefs_users_dialog_username_label": "Utilizador, por exemplo phil", + "prefs_notifications_delete_after_never_description": "As notificações nunca serão eliminadas automaticamente", + "prefs_notifications_delete_after_one_week_description": "As notificações serão eliminadas automaticamente após uma semana", + "prefs_notifications_delete_after_one_month_description": "As notificações serão eliminadas automaticamente após um mês", + "prefs_users_dialog_username_label": "Utilizador, por exemplo: \"filipe\"", "prefs_users_dialog_password_label": "Palavra-passe", "prefs_users_dialog_button_cancel": "Cancelar", "prefs_users_dialog_button_add": "Adicionar", - "error_boundary_description": "Isto obviamente não deveria ter acontecido. Lamentamos muito por isto.
Se tiver um minuto, por favor relate isto no GitHub, ou informe-nos através de Discord ou Matrix.", - "error_boundary_stack_trace": "Rastreamento de pilha", - "error_boundary_gathering_info": "Coletar mais informações …", - "error_boundary_unsupported_indexeddb_title": "Navegação anônima não suportada", - "error_boundary_unsupported_indexeddb_description": "O ntfy web app precisa do IndexedDB para funcionar e o seu navegador não suporta IndexedDB no modo de navegação privada.

Embora isso seja lamentável, também não faz muito sentido usar o ntfy web app no modo de navegação privada de qualquer maneira, porque tudo é armazenado no armazenamento do navegador. Pode ler mais sobre isso nesta edição do GitHub, ou falar conosco em Discord ou Matrix.", + "error_boundary_description": "Obviamente, isto não devia acontecer, lamentamos o sucedido.
Se tiver um minuto, por favor relate isto no GitHub, ou informe-nos através de Discord ou Matrix.", + "error_boundary_stack_trace": "Erro (\"stack trace\")", + "error_boundary_gathering_info": "A recolher mais informações …", + "error_boundary_unsupported_indexeddb_title": "Navegação anónima não suportada", + "error_boundary_unsupported_indexeddb_description": "A aplicação web ntfy necessita da \"IndexedDB\" para funcionar e o seu navegador não a suporta no modo de navegação privada.

Embora isso seja inconveniente, também não faz muito sentido usar a aplicação no modo de navegação privada de qualquer maneira, visto que tudo é guardado no armazenamento do navegador. Pode ler mais sobre isso nesta questão no GitHub, ou falar connosco por Discord ou Matrix.", "action_bar_show_menu": "Mostrar menu", - "action_bar_logo_alt": "nfty logo", + "action_bar_logo_alt": "logótipo do ntfy", "action_bar_settings": "Configurações", "message_bar_show_dialog": "Mostrar caixa de publicação", "alert_grant_button": "Conceder agora", - "publish_dialog_attachment_limits_file_reached": "excede o limite de ficheiro {{fileSizeLimit}}", + "publish_dialog_attachment_limits_file_reached": "excede o limite de ficheiro de {{fileSizeLimit}}", "publish_dialog_emoji_picker_show": "Escolher emoji", "publish_dialog_priority_max": "Prioridade máxima", "publish_dialog_title_label": "Título", - "publish_dialog_delay_reset": "Remover entrega adiada da notificação", + "publish_dialog_delay_reset": "Remover atraso de entrega", "publish_dialog_chip_email_label": "Encaminhar para email", "publish_dialog_chip_attach_url_label": "Anexar ficheiro por URL", "publish_dialog_chip_attach_file_label": "Anexar ficheiro local", - "publish_dialog_chip_delay_label": "Atraso na entrega", + "publish_dialog_chip_delay_label": "Atraso de entrega", "publish_dialog_button_cancel": "Cancelar", "publish_dialog_button_send": "Enviar", - "publish_dialog_checkbox_publish_another": "Publicar outro", + "publish_dialog_checkbox_publish_another": "Publicar outra", "publish_dialog_attached_file_title": "Ficheiro anexado:", - "publish_dialog_drop_file_here": "Solte o ficheiro aqui", + "publish_dialog_drop_file_here": "Arraste o ficheiro para aqui", "emoji_picker_search_placeholder": "Pesquisar emoji", - "subscribe_dialog_subscribe_title": "Inscrever no tópico", - "subscribe_dialog_subscribe_topic_placeholder": "Nome do tópico, por exemplo phil_alerts", - "subscribe_dialog_subscribe_base_url_label": "URL de subscrição", + "subscribe_dialog_subscribe_title": "Subscrever tópico", + "subscribe_dialog_subscribe_topic_placeholder": "Nome do tópico, por exemplo: \"alertas_do_filipe\"", + "subscribe_dialog_subscribe_base_url_label": "URL de serviço", "subscribe_dialog_subscribe_button_cancel": "Cancelar", - "subscribe_dialog_subscribe_button_subscribe": "Inscrever", - "subscribe_dialog_login_title": "Login necessário", - "subscribe_dialog_login_description": "Esse tópico é protegido por palavra-passe. Por favor digite o nome de utilizador e palavra-passe para inscrever.", - "subscribe_dialog_login_username_label": "Nome, por exemplo phil", + "subscribe_dialog_subscribe_button_subscribe": "Subscrever", + "subscribe_dialog_login_title": "Autenticação necessária", + "subscribe_dialog_login_description": "Esse tópico é protegido por palavra-passe. Por favor insira um nome de utilizador e palavra-passe para subscrever.", + "subscribe_dialog_login_username_label": "Nome, por exemplo: \"filipe\"", "subscribe_dialog_login_password_label": "Palavra-passe", "subscribe_dialog_login_button_back": "Voltar", - "subscribe_dialog_login_button_login": "Login", - "subscribe_dialog_error_user_anonymous": "anônimo", + "subscribe_dialog_login_button_login": "Autenticar", + "subscribe_dialog_error_user_anonymous": "anónimo", "prefs_notifications_title": "Notificações", "prefs_notifications_sound_title": "Som de notificações", "prefs_notifications_sound_description_none": "Notificações não reproduzem nenhum som quando chegam", "prefs_notifications_sound_description_some": "Notificações reproduzem som {{sound}} quando chegam", "prefs_notifications_sound_no_sound": "Sem som", "prefs_notifications_sound_play": "Reproduzir som selecionado", - "prefs_notifications_min_priority_title": "Mínima prioridade", - "prefs_notifications_min_priority_description_any": "Mostrando todas as notificações, independente da prioridade", + "prefs_notifications_min_priority_title": "Prioridade mínima", + "prefs_notifications_min_priority_description_any": "A mostrar todas as notificações, independentemente da prioridade", "prefs_notifications_min_priority_description_x_or_higher": "Mostrar notificações se prioridade for {{number}} ({{name}}) ou acima", "prefs_notifications_min_priority_any": "Qualquer prioridade", - "prefs_notifications_min_priority_low_and_higher": "Baixa prioridade e acima", + "prefs_notifications_min_priority_low_and_higher": "Prioridade baixa e acima", "prefs_notifications_min_priority_default_and_higher": "Prioridade padrão e acima", - "prefs_notifications_min_priority_high_and_higher": "Alta prioridade e acima", + "prefs_notifications_min_priority_high_and_higher": "Prioridade alta e acima", "prefs_notifications_min_priority_max_only": "Apenas prioridade máxima", - "prefs_notifications_delete_after_title": "Apagar notificações", + "prefs_notifications_delete_after_title": "Eliminar notificações", "prefs_notifications_delete_after_never": "Nunca", "prefs_notifications_delete_after_three_hours": "Após três horas", "prefs_notifications_delete_after_one_day": "Após um dia", - "prefs_notifications_delete_after_three_hours_description": "Notificações são automaticamente excluídas após três horas", - "prefs_notifications_delete_after_one_day_description": "Notificações são automaticamente excluídas após um dia", + "prefs_notifications_delete_after_three_hours_description": "As notificações serão eliminadas automaticamente após três horas", + "prefs_notifications_delete_after_one_day_description": "As notificações serão eliminadas automaticamente após um dia", "prefs_users_title": "Gerir utilizadores", - "prefs_users_description": "Adicionar/remover utilizadores nos seus tópicos protegidos. Note que o utilizador e palavra-passe são salvos no armazenamento local do navegador.", + "prefs_users_description": "Adicionar/remover utilizadores aos seus tópicos protegidos. Note que o utilizador e palavra-passe são guardados no armazenamento local do navegador.", "prefs_users_table": "Tabela de utilizadores", "prefs_users_add_button": "Adicionar utilizador", "prefs_users_edit_button": "Editar utilizador", @@ -177,15 +177,15 @@ "prefs_users_table_base_url_header": "URL de serviço", "prefs_users_dialog_title_add": "Adicionar utilizador", "prefs_users_dialog_title_edit": "Editar utilizador", - "prefs_users_dialog_base_url_label": "URL de serviço, exemplo https://ntfy.sh", + "prefs_users_dialog_base_url_label": "URL de serviço, por exemplo: https://ntfy.sh", "prefs_users_dialog_button_save": "Gravar", "prefs_appearance_title": "Aparência", - "prefs_appearance_language_title": "LInguagem", - "priority_min": "minima", + "prefs_appearance_language_title": "Idioma", + "priority_min": "mínima", "priority_low": "baixa", "priority_default": "padrão", "priority_high": "alta", "priority_max": "máxima", - "error_boundary_title": "Ah não, ntfy parou de funcionar", - "error_boundary_button_copy_stack_trace": "Copiar rastreamento de pilha" + "error_boundary_title": "Oh não, o ntfy parou de funcionar", + "error_boundary_button_copy_stack_trace": "Copiar erro (\"stack trace\")" } From 0905016b1f3f81fc5895ca168c9afe564d3f1bbc Mon Sep 17 00:00:00 2001 From: Yonggan <30302975+Y0ngg4n@users.noreply.github.com> Date: Tue, 7 Feb 2023 14:03:13 +0100 Subject: [PATCH 31/41] Update Jellyseerr/Overseerr docs --- docs/examples.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/examples.md b/docs/examples.md index b9adf443..c15f7fcd 100644 --- a/docs/examples.md +++ b/docs/examples.md @@ -413,7 +413,11 @@ alerting: ## Jellyseerr/Overseerr webhook Here is an example for [jellyseerr](https://github.com/Fallenbagel/jellyseerr)/[overseerr](https://overseerr.dev/) webhook -JSON payload. Remember to change the `https://requests.example.com` to your jellyseerr/overseerr URL. +JSON payload. +⚠️ Remember to change the following: +- `https://requests.example.com` to your jellyseerr/overseerr URL at `click +- `topic` to your ntfy topic. E.g. your ntfy url is https://ntfy.sh/jellyseerr change `topic` to `jellyseerr`. +- Remove your topic in the request URL in jellyseerr/overseerr. E.g. your ntfy url is https://ntfy.sh/jellyseerr, then only write https://ntfy.sh in the webhook URL in jellyseerr/overseerr. ``` json { From 9738e4a22525ebccf7520589be95b586c2d5e576 Mon Sep 17 00:00:00 2001 From: Yonggan <30302975+Y0ngg4n@users.noreply.github.com> Date: Tue, 7 Feb 2023 14:04:09 +0100 Subject: [PATCH 32/41] Fix identation --- docs/examples.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/examples.md b/docs/examples.md index c15f7fcd..071659b5 100644 --- a/docs/examples.md +++ b/docs/examples.md @@ -414,7 +414,7 @@ alerting: ## Jellyseerr/Overseerr webhook Here is an example for [jellyseerr](https://github.com/Fallenbagel/jellyseerr)/[overseerr](https://overseerr.dev/) webhook JSON payload. -⚠️ Remember to change the following: +### ⚠️ Remember to change the following: - `https://requests.example.com` to your jellyseerr/overseerr URL at `click - `topic` to your ntfy topic. E.g. your ntfy url is https://ntfy.sh/jellyseerr change `topic` to `jellyseerr`. - Remove your topic in the request URL in jellyseerr/overseerr. E.g. your ntfy url is https://ntfy.sh/jellyseerr, then only write https://ntfy.sh in the webhook URL in jellyseerr/overseerr. From 3779b4a923e724bc3f81f9e1c50e0639648d087b Mon Sep 17 00:00:00 2001 From: Yonggan <30302975+Y0ngg4n@users.noreply.github.com> Date: Tue, 7 Feb 2023 15:00:21 +0100 Subject: [PATCH 33/41] Update examples.md --- docs/examples.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/docs/examples.md b/docs/examples.md index 071659b5..6aa25b2e 100644 --- a/docs/examples.md +++ b/docs/examples.md @@ -414,10 +414,7 @@ alerting: ## Jellyseerr/Overseerr webhook Here is an example for [jellyseerr](https://github.com/Fallenbagel/jellyseerr)/[overseerr](https://overseerr.dev/) webhook JSON payload. -### ⚠️ Remember to change the following: -- `https://requests.example.com` to your jellyseerr/overseerr URL at `click -- `topic` to your ntfy topic. E.g. your ntfy url is https://ntfy.sh/jellyseerr change `topic` to `jellyseerr`. -- Remove your topic in the request URL in jellyseerr/overseerr. E.g. your ntfy url is https://ntfy.sh/jellyseerr, then only write https://ntfy.sh in the webhook URL in jellyseerr/overseerr. +Remember to change the `https://request.example.com` to your url as the value of the json key, click. And if you're not using the request `topic`, make sure to change it in the json payload to your topic. ``` json { From e449f0bda472715c4c482a6f869a6dc1ba29c635 Mon Sep 17 00:00:00 2001 From: binwiederhier Date: Tue, 7 Feb 2023 23:22:29 -0500 Subject: [PATCH 34/41] Examples --- docs/examples.md | 4 ++-- docs/releases.md | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/examples.md b/docs/examples.md index 6aa25b2e..0c892e64 100644 --- a/docs/examples.md +++ b/docs/examples.md @@ -413,8 +413,8 @@ alerting: ## Jellyseerr/Overseerr webhook Here is an example for [jellyseerr](https://github.com/Fallenbagel/jellyseerr)/[overseerr](https://overseerr.dev/) webhook -JSON payload. -Remember to change the `https://request.example.com` to your url as the value of the json key, click. And if you're not using the request `topic`, make sure to change it in the json payload to your topic. +JSON payload. Remember to change the `https://request.example.com` to your URL as the value of the JSON key click. +And if you're not using the request `topic`, make sure to change it in the JSON payload to your topic. ``` json { diff --git a/docs/releases.md b/docs/releases.md index f5fa37b4..a688bf85 100644 --- a/docs/releases.md +++ b/docs/releases.md @@ -19,6 +19,7 @@ and the [ntfy Android app](https://github.com/binwiederhier/ntfy-android/release * Add HTTP/2 and TLSv1.3 support to nginx docs ([#553](https://github.com/binwiederhier/ntfy/issues/553), thanks to [@bt90](https://github.com/bt90)) * Small wording change for `client.yml` ([#562](https://github.com/binwiederhier/ntfy/pull/562), thanks to [@fleopaulD](https://github.com/fleopaulD)) * Fix K8s install docs ([#582](https://github.com/binwiederhier/ntfy/pull/582), thanks to [@Remedan](https://github.com/Remedan)) +* Updated Jellyseer docs ([#604](https://github.com/binwiederhier/ntfy/pull/604), thanks to [@Y0ngg4n](https://github.com/Y0ngg4n)) **Additional languages:** From aea8a6d04b9bb5ba967e20ee32273834ba61a5a5 Mon Sep 17 00:00:00 2001 From: binwiederhier Date: Tue, 7 Feb 2023 23:23:00 -0500 Subject: [PATCH 35/41] Thanks @IanKulin for your donation --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 48af9872..2d563432 100644 --- a/README.md +++ b/README.md @@ -114,6 +114,7 @@ account costs. Even small donations are very much appreciated. A big fat **Thank + I'd also like to thank JetBrains for providing their awesome [IntelliJ IDEA](https://www.jetbrains.com/idea/) to me for free, and [DigitalOcean](https://m.do.co/c/442b929528db) (*referral link*) for supporting the project: From 432cc2003e878665f337d487afc72e01df9d0258 Mon Sep 17 00:00:00 2001 From: Rycoh Date: Fri, 10 Feb 2023 18:55:34 +0100 Subject: [PATCH 36/41] Added translation using Weblate (Romanian) --- web/public/static/langs/ro.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 web/public/static/langs/ro.json diff --git a/web/public/static/langs/ro.json b/web/public/static/langs/ro.json new file mode 100644 index 00000000..0967ef42 --- /dev/null +++ b/web/public/static/langs/ro.json @@ -0,0 +1 @@ +{} From 020f561ad49e83739926175dfaf75b70536f251d Mon Sep 17 00:00:00 2001 From: Rycoh Date: Fri, 10 Feb 2023 17:55:50 +0000 Subject: [PATCH 37/41] Translated using Weblate (Romanian) Currently translated at 4.7% (9 of 189 strings) Translation: ntfy/Web app Translate-URL: https://hosted.weblate.org/projects/ntfy/web/ro/ --- web/public/static/langs/ro.json | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/web/public/static/langs/ro.json b/web/public/static/langs/ro.json index 0967ef42..394b9dd3 100644 --- a/web/public/static/langs/ro.json +++ b/web/public/static/langs/ro.json @@ -1 +1,11 @@ -{} +{ + "action_bar_show_menu": "Afișează meniu", + "action_bar_send_test_notification": "Trimite notificare de probă", + "action_bar_clear_notifications": "Șterge toate notificările", + "action_bar_settings": "Setări", + "action_bar_unsubscribe": "Dezabonare", + "action_bar_logo_alt": "logo-ul ntfy", + "action_bar_toggle_mute": "Oprire/activare notificări", + "message_bar_type_message": "Scrie un mesaj aici", + "message_bar_error_publishing": "Eroare la publicarea notificării" +} From 8bde80a3d23e3be787fc63028050f96eb926744e Mon Sep 17 00:00:00 2001 From: SticksDev Date: Sun, 12 Feb 2023 21:08:37 -0500 Subject: [PATCH 38/41] Add iOS docs to the dev docs Imports old dev docs Also adds my currently open PR #10 on the docs to improve them. --- docs/develop.md | 77 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 75 insertions(+), 2 deletions(-) diff --git a/docs/develop.md b/docs/develop.md index 5e7004b7..8bc4a470 100644 --- a/docs/develop.md +++ b/docs/develop.md @@ -327,7 +327,80 @@ To build your own version with Firebase, you must: ``` ## iOS app -The ntfy iOS app source code is available [on GitHub](https://github.com/binwiederhier/ntfy-ios). + +## Requirements +!!! note + These requirements are strictly based off of my development on this app. There may be other versions of macOS / XCode that work. Feel free to test on other versions! + +1. macOS Monterey or later +1. XCode 13.2+ +1. A physical iOS device (for push notifications, I could not get them to work in the XCode simulator) +1. The [macOS development branch for ntfy](https://github.com/Copephobia/ntfy/tree/macos-development) (for APNS configuration) +1. Firebase account +1. Apple Developer license? (I forget if its possible to do testing without purchasing the license) + +## Setup - Apple Developer/iOS Instant Notification Setup !!! info - I haven't had time to move the build instructions here. Please check out the repository instead. + Along with this step, the "Setup - PLIST Deployment and Configuration" step is also required for these changes to take effect in the iOS app. + +1. [Create a new key in Apple Developer Member Center](https://developer.apple.com/account/resources/authkeys/add) + 1. Select "Apple Push Notifications service (APNs)" +1. Download the newly created key (should have a file name similar to `AuthKey_ZZZZZZ.p8`, where `ZZZZZZ` is the **Key ID**) +1. Record your **Team ID** - it can be seen in the top-right corner of the page, or on your Account > Membership page +1. Next, navigate to "Project Settings" in the firebase console for your project, and select the iOS app you created. Then, click "Cloud Messaging" in the left sidebar, and scroll down to the "APNs Authentication Key" section. Click "Upload Key", and upload the key you downloaded from Apple Developer. + +!!! warning + If you don't do the above setups for APNS, **notifications will not post instantly or sometimes at all**. This is because of the missing APNS key, which is required for firebase to send notifications to the iOS app. See below for a snip from the firebase docs. + +> If you don't have an APNs authentication key, you can still send notifications to iOS devices, but they won't be delivered instantly. Instead, they'll be delivered when the device wakes up to check for new notifications or when your application sends a firebase request to check for them. The time to check for new notifications can vary from a few seconds to hours, days or even weeks. Enabling APNs authentication keys ensures that notifications are delivered instantly and is strongly recommended. + +## Setup - Firebase + +1. If you haven't already, create a Google / Firebase account +1. Visit the [Firebase console](https://console.firebase.google.com) +1. Create a new Firebase project: + 1. Enter a project name + 1. Disable Google Analytics (currently iOS app does not support analytics) +1. On the "Project settings" page, add an iOS app + 1. Apple bundle ID - "com.copephobia.ntfy-ios" (this can be changed to match XCode's ntfy.sh target > "Bundle Identifier" value) + 1. Register the app + 1. Download the config file - GoogleInfo.plist (this will need to be included in the ntfy-ios repository / XCode) +1. Generate a new service account private key for the ntfy server + 1. Go to "Project settings" > "Service accounts" + 1. Click "Generate new private key" to generate and download a private key to use for sending messages via the ntfy server + +## Setup - ntfy server + +1. Checkout the [macOS development branch for ntfy](https://github.com/Copephobia/ntfy/tree/macos-development) +1. If not already made, make the `/etc/ntfy/` directory and move the service account private key to that folder +1. Copy the `server/server.yml` file from the ntfy repository to `/etc/ntfy/` +1. Modify the `/etc/ntfy/server.yml` file `firebase-key-file` value to the path of the private key +1. Install go: `brew install go` +1. In the ntfy repository, run `make build-simple` + +## Setup - XCode + +1. Follow step 4 of [https://firebase.google.com/docs/ios/setup](Add Firebase to your Apple project) to install the firebase-ios-sdk in XCode, if it's not already present - you can select any packages in addition to Firebase Core / Firebase Messaging +1. Similarly, install the SQLite.swift package dependency in XCode +1. When running the debug build, ensure XCode is pointed to the connected iOS device - registering for push notifications does not work in the iOS simulators + +## Setup - PLIST Deployment and Configuration +To have intstant notifications/better notification delivery when using firebase, you will need to add the `GoogleService-Info.plist` file to your project. Here's how to do that: + +1. In XCode, find the NTFY app target. **Not** the NSE app target. +1. Find the Asset/ folder in the project navigator +1. Drag the `GoogleService-Info.plist` file into the Asset/ folder that you get from the firebase console. It can be found in the "Project settings" > "General" > "Your apps" with a button labled "GoogleService-Info.plist" + +After that, you should be all set! + +## Useful resources + +- https://www.raywenderlich.com/14958063-modern-efficient-core-data +- https://www.hackingwithswift.com/books/ios-swiftui/how-to-combine-core-data-and-swiftui +- https://stackoverflow.com/a/41783666/1440785 +- https://stackoverflow.com/questions/47374903/viewing-core-data-data-from-your-app-on-a-device +- https://debashishdas3100.medium.com/save-push-notifications-to-coredata-userdefaults-ios-swift-5-ea074390b57 +- https://cocoacasts.com/cocoa-fundamentals-how-to-access-builds-settings-in-swifti +- https://www.hackingwithswift.com/articles/216/complete-guide-to-navigationview-in-swiftui +- https://stackoverflow.com/a/70731861/1440785 From 9e20ee35e1a93d07eec4fe5f240745a61787aba6 Mon Sep 17 00:00:00 2001 From: binwiederhier Date: Sun, 12 Feb 2023 21:13:26 -0500 Subject: [PATCH 39/41] Thanks to @overtone1000 and @Joachim256 for your sponsorship and donation --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 2d563432..ca977ec0 100644 --- a/README.md +++ b/README.md @@ -115,6 +115,8 @@ account costs. Even small donations are very much appreciated. A big fat **Thank + + I'd also like to thank JetBrains for providing their awesome [IntelliJ IDEA](https://www.jetbrains.com/idea/) to me for free, and [DigitalOcean](https://m.do.co/c/442b929528db) (*referral link*) for supporting the project: From 31a87935a5dd48352bd3d487a9288039a40a0ecc Mon Sep 17 00:00:00 2001 From: binwiederhier Date: Tue, 14 Feb 2023 14:39:22 -0500 Subject: [PATCH 40/41] Refine iOS docs --- docs/develop.md | 56 +++++++++++++++++++++++-------------------------- 1 file changed, 26 insertions(+), 30 deletions(-) diff --git a/docs/develop.md b/docs/develop.md index 8bc4a470..a53c5033 100644 --- a/docs/develop.md +++ b/docs/develop.md @@ -327,22 +327,21 @@ To build your own version with Firebase, you must: ``` ## iOS app +Building the iOS app is very involved. Please report any inconsistencies or issues with it. The requirements are +strictly based off of my development on this app. There may be other versions of macOS / XCode that work. -## Requirements -!!! note - These requirements are strictly based off of my development on this app. There may be other versions of macOS / XCode that work. Feel free to test on other versions! - +### Requirements 1. macOS Monterey or later 1. XCode 13.2+ -1. A physical iOS device (for push notifications, I could not get them to work in the XCode simulator) -1. The [macOS development branch for ntfy](https://github.com/Copephobia/ntfy/tree/macos-development) (for APNS configuration) +1. A physical iOS device (for push notifications, Firebase does not work in the XCode simulator) 1. Firebase account -1. Apple Developer license? (I forget if its possible to do testing without purchasing the license) +1. Apple Developer license? (I forget if it's possible to do testing without purchasing the license) -## Setup - Apple Developer/iOS Instant Notification Setup +### Apple setup !!! info - Along with this step, the "Setup - PLIST Deployment and Configuration" step is also required for these changes to take effect in the iOS app. + Along with this step, the [PLIST Deployment](#plist-deployment-and-configuration) step is also required + for these changes to take effect in the iOS app. 1. [Create a new key in Apple Developer Member Center](https://developer.apple.com/account/resources/authkeys/add) 1. Select "Apple Push Notifications service (APNs)" @@ -353,9 +352,13 @@ To build your own version with Firebase, you must: !!! warning If you don't do the above setups for APNS, **notifications will not post instantly or sometimes at all**. This is because of the missing APNS key, which is required for firebase to send notifications to the iOS app. See below for a snip from the firebase docs. -> If you don't have an APNs authentication key, you can still send notifications to iOS devices, but they won't be delivered instantly. Instead, they'll be delivered when the device wakes up to check for new notifications or when your application sends a firebase request to check for them. The time to check for new notifications can vary from a few seconds to hours, days or even weeks. Enabling APNs authentication keys ensures that notifications are delivered instantly and is strongly recommended. +If you don't have an APNs authentication key, you can still send notifications to iOS devices, but they won't be delivered +instantly. Instead, they'll be delivered when the device wakes up to check for new notifications or when your application +sends a firebase request to check for them. The time to check for new notifications can vary from a few seconds to hours, +days or even weeks. Enabling APNs authentication keys ensures that notifications are delivered instantly and is strongly +recommended. -## Setup - Firebase +### Firebase setup 1. If you haven't already, create a Google / Firebase account 1. Visit the [Firebase console](https://console.firebase.google.com) @@ -370,37 +373,30 @@ To build your own version with Firebase, you must: 1. Go to "Project settings" > "Service accounts" 1. Click "Generate new private key" to generate and download a private key to use for sending messages via the ntfy server -## Setup - ntfy server +### ntfy server +Note that the ntfy server is not officially supported on macOS. It should, however, be able to run on macOS using these +steps: -1. Checkout the [macOS development branch for ntfy](https://github.com/Copephobia/ntfy/tree/macos-development) 1. If not already made, make the `/etc/ntfy/` directory and move the service account private key to that folder 1. Copy the `server/server.yml` file from the ntfy repository to `/etc/ntfy/` 1. Modify the `/etc/ntfy/server.yml` file `firebase-key-file` value to the path of the private key 1. Install go: `brew install go` -1. In the ntfy repository, run `make build-simple` +1. In the ntfy repository, run `make cli-darwin-server`. -## Setup - XCode +### XCode setup -1. Follow step 4 of [https://firebase.google.com/docs/ios/setup](Add Firebase to your Apple project) to install the firebase-ios-sdk in XCode, if it's not already present - you can select any packages in addition to Firebase Core / Firebase Messaging +1. Follow step 4 of [https://firebase.google.com/docs/ios/setup](Add Firebase to your Apple project) to install the + `firebase-ios-sdk` in XCode, if it's not already present - you can select any packages in addition to Firebase Core / Firebase Messaging 1. Similarly, install the SQLite.swift package dependency in XCode 1. When running the debug build, ensure XCode is pointed to the connected iOS device - registering for push notifications does not work in the iOS simulators -## Setup - PLIST Deployment and Configuration -To have intstant notifications/better notification delivery when using firebase, you will need to add the `GoogleService-Info.plist` file to your project. Here's how to do that: +### PLIST config +To have instant notifications/better notification delivery when using firebase, you will need to add the +`GoogleService-Info.plist` file to your project. Here's how to do that: 1. In XCode, find the NTFY app target. **Not** the NSE app target. 1. Find the Asset/ folder in the project navigator -1. Drag the `GoogleService-Info.plist` file into the Asset/ folder that you get from the firebase console. It can be found in the "Project settings" > "General" > "Your apps" with a button labled "GoogleService-Info.plist" +1. Drag the `GoogleService-Info.plist` file into the Asset/ folder that you get from the firebase console. It can be + found in the "Project settings" > "General" > "Your apps" with a button labled "GoogleService-Info.plist" After that, you should be all set! - -## Useful resources - -- https://www.raywenderlich.com/14958063-modern-efficient-core-data -- https://www.hackingwithswift.com/books/ios-swiftui/how-to-combine-core-data-and-swiftui -- https://stackoverflow.com/a/41783666/1440785 -- https://stackoverflow.com/questions/47374903/viewing-core-data-data-from-your-app-on-a-device -- https://debashishdas3100.medium.com/save-push-notifications-to-coredata-userdefaults-ios-swift-5-ea074390b57 -- https://cocoacasts.com/cocoa-fundamentals-how-to-access-builds-settings-in-swifti -- https://www.hackingwithswift.com/articles/216/complete-guide-to-navigationview-in-swiftui -- https://stackoverflow.com/a/70731861/1440785 From 5472c8513f8bd4508b8a8f86268665adad08d4e5 Mon Sep 17 00:00:00 2001 From: binwiederhier Date: Tue, 14 Feb 2023 14:40:41 -0500 Subject: [PATCH 41/41] Release notes --- docs/releases.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/releases.md b/docs/releases.md index a688bf85..1ae47792 100644 --- a/docs/releases.md +++ b/docs/releases.md @@ -20,6 +20,7 @@ and the [ntfy Android app](https://github.com/binwiederhier/ntfy-android/release * Small wording change for `client.yml` ([#562](https://github.com/binwiederhier/ntfy/pull/562), thanks to [@fleopaulD](https://github.com/fleopaulD)) * Fix K8s install docs ([#582](https://github.com/binwiederhier/ntfy/pull/582), thanks to [@Remedan](https://github.com/Remedan)) * Updated Jellyseer docs ([#604](https://github.com/binwiederhier/ntfy/pull/604), thanks to [@Y0ngg4n](https://github.com/Y0ngg4n)) +* Updated iOS developer docs ([#605](https://github.com/binwiederhier/ntfy/pull/605), thanks to [@SticksDev](https://github.com/SticksDev)) **Additional languages:**