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} 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