R9 Web Push in decePub: one subscription per persona, each with its own token and registration
Build / Build (push) Successful in 56s
Build / Build (push) Successful in 56s
Settings gets "Notifications on this device" (PushEditor): personas, alerts in four groups, policy, a test
notification, after a one-time notice of what the push service learns. Each persona ticked gets its own service
worker registration (push-worker.js at push/{slot}/), so its own endpoint and keys, subscribed with its own token
(IHttpService's *As); nothing PrivaPub stores ties two personas together and the worker never reads the payload's
token. PushService follows the tokens (re-subscribing after a renewal), reconciles at every session start, turns
off before sign-out and drops deleted or suspended personas. A click opens that persona's notifications; the app
badge counts the unread ones. Exchanges now ask for the push scope.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WpVCoDeM1qUTRp4fXQdfof
This commit is contained in:
1 parent
d33697e3fc
commit
ab17959ed4
29 files changed
+2047
-67
No files matched your search
@@ -3809,4 +3809,106 @@
|
||||
<data name="{0} posts with it, the last on {1}" xml:space="preserve">
|
||||
<value>{0} post con questo hashtag, l'ultimo il {1}</value>
|
||||
</data>
|
||||
<data name="This server does not offer push notifications." xml:space="preserve">
|
||||
<value>Questo server non offre notifiche push.</value>
|
||||
</data>
|
||||
<data name="This browser did not subscribe: {0}" xml:space="preserve">
|
||||
<value>Questo browser non si è iscritto: {0}</value>
|
||||
</data>
|
||||
<data name="Notifications go through your browser's push service" xml:space="preserve">
|
||||
<value>Le notifiche passano dal servizio push del tuo browser</value>
|
||||
</data>
|
||||
<data name="To reach this device while decePub is closed, PrivaPub hands each notification to the push service your browser uses (Google's, Mozilla's, Apple's…). It is encrypted for this browser alone: the push service learns when a notification arrives and how big it is, never what it says, who sent it or which persona it is for. Each persona has a subscription of its own, so PrivaPub keeps nothing that ties your personas together." xml:space="preserve">
|
||||
<value>Per raggiungere questo dispositivo mentre decePub è chiuso, PrivaPub affida ogni notifica al servizio push che usa il tuo browser (quello di Google, di Mozilla, di Apple…). È cifrata per questo solo browser: il servizio push sa quando arriva una notifica e quanto è grande, mai cosa dice, chi l'ha mandata né per quale persona è. Ogni persona ha una propria iscrizione, così PrivaPub non conserva nulla che leghi tra loro le tue persone.</value>
|
||||
</data>
|
||||
<data name="Notifications on this device" xml:space="preserve">
|
||||
<value>Notifiche su questo dispositivo</value>
|
||||
</data>
|
||||
<data name="Notifications reach this device even while decePub is closed, for the personas and the kinds you choose here." xml:space="preserve">
|
||||
<value>Le notifiche raggiungono questo dispositivo anche quando decePub è chiuso, per le persone e i tipi che scegli qui.</value>
|
||||
</data>
|
||||
<data name="This browser blocks notifications from decePub. Allow them in the site's settings, then turn them on here." xml:space="preserve">
|
||||
<value>Questo browser blocca le notifiche di decePub. Consentile nelle impostazioni del sito, poi attivale qui.</value>
|
||||
</data>
|
||||
<data name="Whose notifications reach this device" xml:space="preserve">
|
||||
<value>Di chi sono le notifiche che arrivano su questo dispositivo</value>
|
||||
</data>
|
||||
<data name="People you follow" xml:space="preserve">
|
||||
<value>Chi segui</value>
|
||||
</data>
|
||||
<data name="To try them, show a test notification: this browser shows it by itself, nothing goes to the server. A mention or a favourite from another account arrives the same way, even with decePub closed." xml:space="preserve">
|
||||
<value>Per provarle, mostra una notifica di prova: la mostra questo browser da solo, al server non arriva nulla. Una menzione o un preferito da un altro account arriva allo stesso modo, anche con decePub chiuso.</value>
|
||||
</data>
|
||||
<data name="Show a test notification" xml:space="preserve">
|
||||
<value>Mostra una notifica di prova</value>
|
||||
</data>
|
||||
<data name="Only this device: another device chooses for itself. The push service of this browser (Google's, Mozilla's, Apple's…) learns when a notification arrives, never what it says." xml:space="preserve">
|
||||
<value>Solo questo dispositivo: un altro dispositivo sceglie per sé. Il servizio push di questo browser (quello di Google, di Mozilla, di Apple…) sa quando arriva una notifica, mai cosa dice.</value>
|
||||
</data>
|
||||
<data name="On an iPhone or iPad, add decePub to the Home Screen (Share, then Add to Home Screen) and open it from there: Safari offers notifications only to an installed app." xml:space="preserve">
|
||||
<value>Su iPhone o iPad, aggiungi decePub alla schermata Home (Condividi, poi Aggiungi alla schermata Home) e aprilo da lì: Safari offre le notifiche solo a un'app installata.</value>
|
||||
</data>
|
||||
<data name="Notifications need decePub opened over https." xml:space="preserve">
|
||||
<value>Le notifiche richiedono decePub aperto in https.</value>
|
||||
</data>
|
||||
<data name="This browser can't receive notifications from decePub while it is closed." xml:space="preserve">
|
||||
<value>Questo browser non può ricevere notifiche da decePub mentre è chiuso.</value>
|
||||
</data>
|
||||
<data name="Mentions and posts" xml:space="preserve">
|
||||
<value>Menzioni e post</value>
|
||||
</data>
|
||||
<data name="Mentions" xml:space="preserve">
|
||||
<value>Menzioni</value>
|
||||
</data>
|
||||
<data name="New posts from accounts you get notified of" xml:space="preserve">
|
||||
<value>Nuovi post degli account di cui ricevi avvisi</value>
|
||||
</data>
|
||||
<data name="Quotes of your posts" xml:space="preserve">
|
||||
<value>Citazioni dei tuoi post</value>
|
||||
</data>
|
||||
<data name="Edits of posts you interacted with" xml:space="preserve">
|
||||
<value>Modifiche dei post con cui hai interagito</value>
|
||||
</data>
|
||||
<data name="Polls that ended" xml:space="preserve">
|
||||
<value>Sondaggi terminati</value>
|
||||
</data>
|
||||
<data name="Reactions to your posts" xml:space="preserve">
|
||||
<value>Reazioni ai tuoi post</value>
|
||||
</data>
|
||||
<data name="Boosts of your posts" xml:space="preserve">
|
||||
<value>Condivisioni dei tuoi post</value>
|
||||
</data>
|
||||
<data name="Emoji reactions" xml:space="preserve">
|
||||
<value>Reazioni con emoji</value>
|
||||
</data>
|
||||
<data name="Who follows you" xml:space="preserve">
|
||||
<value>Chi ti segue</value>
|
||||
</data>
|
||||
<data name="New followers" xml:space="preserve">
|
||||
<value>Nuovi follower</value>
|
||||
</data>
|
||||
<data name="From this server's staff" xml:space="preserve">
|
||||
<value>Dallo staff di questo server</value>
|
||||
</data>
|
||||
<data name="Warnings from the staff" xml:space="preserve">
|
||||
<value>Avvisi dello staff</value>
|
||||
</data>
|
||||
<data name="This browser did not allow notifications." xml:space="preserve">
|
||||
<value>Questo browser non ha consentito le notifiche.</value>
|
||||
</data>
|
||||
<data name="Notifications are on for this device." xml:space="preserve">
|
||||
<value>Notifiche attive su questo dispositivo.</value>
|
||||
</data>
|
||||
<data name="Notification settings saved for this device." xml:space="preserve">
|
||||
<value>Impostazioni delle notifiche salvate per questo dispositivo.</value>
|
||||
</data>
|
||||
<data name="Notifications are off for this device." xml:space="preserve">
|
||||
<value>Notifiche disattivate su questo dispositivo.</value>
|
||||
</data>
|
||||
<data name="A test notification: this is how they show on this device." xml:space="preserve">
|
||||
<value>Una notifica di prova: ecco come appaiono su questo dispositivo.</value>
|
||||
</data>
|
||||
<data name="This browser did not show the test notification." xml:space="preserve">
|
||||
<value>Questo browser non ha mostrato la notifica di prova.</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -3809,4 +3809,106 @@
|
||||
<data name="{0} posts with it, the last on {1}" xml:space="preserve">
|
||||
<value>{0} posts with it, the last on {1}</value>
|
||||
</data>
|
||||
<data name="This server does not offer push notifications." xml:space="preserve">
|
||||
<value>This server does not offer push notifications.</value>
|
||||
</data>
|
||||
<data name="This browser did not subscribe: {0}" xml:space="preserve">
|
||||
<value>This browser did not subscribe: {0}</value>
|
||||
</data>
|
||||
<data name="Notifications go through your browser's push service" xml:space="preserve">
|
||||
<value>Notifications go through your browser's push service</value>
|
||||
</data>
|
||||
<data name="To reach this device while decePub is closed, PrivaPub hands each notification to the push service your browser uses (Google's, Mozilla's, Apple's…). It is encrypted for this browser alone: the push service learns when a notification arrives and how big it is, never what it says, who sent it or which persona it is for. Each persona has a subscription of its own, so PrivaPub keeps nothing that ties your personas together." xml:space="preserve">
|
||||
<value>To reach this device while decePub is closed, PrivaPub hands each notification to the push service your browser uses (Google's, Mozilla's, Apple's…). It is encrypted for this browser alone: the push service learns when a notification arrives and how big it is, never what it says, who sent it or which persona it is for. Each persona has a subscription of its own, so PrivaPub keeps nothing that ties your personas together.</value>
|
||||
</data>
|
||||
<data name="Notifications on this device" xml:space="preserve">
|
||||
<value>Notifications on this device</value>
|
||||
</data>
|
||||
<data name="Notifications reach this device even while decePub is closed, for the personas and the kinds you choose here." xml:space="preserve">
|
||||
<value>Notifications reach this device even while decePub is closed, for the personas and the kinds you choose here.</value>
|
||||
</data>
|
||||
<data name="This browser blocks notifications from decePub. Allow them in the site's settings, then turn them on here." xml:space="preserve">
|
||||
<value>This browser blocks notifications from decePub. Allow them in the site's settings, then turn them on here.</value>
|
||||
</data>
|
||||
<data name="Whose notifications reach this device" xml:space="preserve">
|
||||
<value>Whose notifications reach this device</value>
|
||||
</data>
|
||||
<data name="People you follow" xml:space="preserve">
|
||||
<value>People you follow</value>
|
||||
</data>
|
||||
<data name="To try them, show a test notification: this browser shows it by itself, nothing goes to the server. A mention or a favourite from another account arrives the same way, even with decePub closed." xml:space="preserve">
|
||||
<value>To try them, show a test notification: this browser shows it by itself, nothing goes to the server. A mention or a favourite from another account arrives the same way, even with decePub closed.</value>
|
||||
</data>
|
||||
<data name="Show a test notification" xml:space="preserve">
|
||||
<value>Show a test notification</value>
|
||||
</data>
|
||||
<data name="Only this device: another device chooses for itself. The push service of this browser (Google's, Mozilla's, Apple's…) learns when a notification arrives, never what it says." xml:space="preserve">
|
||||
<value>Only this device: another device chooses for itself. The push service of this browser (Google's, Mozilla's, Apple's…) learns when a notification arrives, never what it says.</value>
|
||||
</data>
|
||||
<data name="On an iPhone or iPad, add decePub to the Home Screen (Share, then Add to Home Screen) and open it from there: Safari offers notifications only to an installed app." xml:space="preserve">
|
||||
<value>On an iPhone or iPad, add decePub to the Home Screen (Share, then Add to Home Screen) and open it from there: Safari offers notifications only to an installed app.</value>
|
||||
</data>
|
||||
<data name="Notifications need decePub opened over https." xml:space="preserve">
|
||||
<value>Notifications need decePub opened over https.</value>
|
||||
</data>
|
||||
<data name="This browser can't receive notifications from decePub while it is closed." xml:space="preserve">
|
||||
<value>This browser can't receive notifications from decePub while it is closed.</value>
|
||||
</data>
|
||||
<data name="Mentions and posts" xml:space="preserve">
|
||||
<value>Mentions and posts</value>
|
||||
</data>
|
||||
<data name="Mentions" xml:space="preserve">
|
||||
<value>Mentions</value>
|
||||
</data>
|
||||
<data name="New posts from accounts you get notified of" xml:space="preserve">
|
||||
<value>New posts from accounts you get notified of</value>
|
||||
</data>
|
||||
<data name="Quotes of your posts" xml:space="preserve">
|
||||
<value>Quotes of your posts</value>
|
||||
</data>
|
||||
<data name="Edits of posts you interacted with" xml:space="preserve">
|
||||
<value>Edits of posts you interacted with</value>
|
||||
</data>
|
||||
<data name="Polls that ended" xml:space="preserve">
|
||||
<value>Polls that ended</value>
|
||||
</data>
|
||||
<data name="Reactions to your posts" xml:space="preserve">
|
||||
<value>Reactions to your posts</value>
|
||||
</data>
|
||||
<data name="Boosts of your posts" xml:space="preserve">
|
||||
<value>Boosts of your posts</value>
|
||||
</data>
|
||||
<data name="Emoji reactions" xml:space="preserve">
|
||||
<value>Emoji reactions</value>
|
||||
</data>
|
||||
<data name="Who follows you" xml:space="preserve">
|
||||
<value>Who follows you</value>
|
||||
</data>
|
||||
<data name="New followers" xml:space="preserve">
|
||||
<value>New followers</value>
|
||||
</data>
|
||||
<data name="From this server's staff" xml:space="preserve">
|
||||
<value>From this server's staff</value>
|
||||
</data>
|
||||
<data name="Warnings from the staff" xml:space="preserve">
|
||||
<value>Warnings from the staff</value>
|
||||
</data>
|
||||
<data name="This browser did not allow notifications." xml:space="preserve">
|
||||
<value>This browser did not allow notifications.</value>
|
||||
</data>
|
||||
<data name="Notifications are on for this device." xml:space="preserve">
|
||||
<value>Notifications are on for this device.</value>
|
||||
</data>
|
||||
<data name="Notification settings saved for this device." xml:space="preserve">
|
||||
<value>Notification settings saved for this device.</value>
|
||||
</data>
|
||||
<data name="Notifications are off for this device." xml:space="preserve">
|
||||
<value>Notifications are off for this device.</value>
|
||||
</data>
|
||||
<data name="A test notification: this is how they show on this device." xml:space="preserve">
|
||||
<value>A test notification: this is how they show on this device.</value>
|
||||
</data>
|
||||
<data name="This browser did not show the test notification." xml:space="preserve">
|
||||
<value>This browser did not show the test notification.</value>
|
||||
</data>
|
||||
</root>
|
||||
Reference in new issue
Block a user