Read pushes on feat/ui-redesign (ported from PR #33): the APNs token asks mod_apush for them (apushRead: 1, never the PushKit one), and a silent background push of kind: read withdraws the chat's delivered notices by its thread, so a chat read or a… #35

Merged
fmodf merged 1 commit from feat/push-read-withdraw-ui into feat/ui-redesign 2026-11-07 08:12:42 +00:00
Contributor

…nswered on another device no longer leaves its notice on the lock screen of a phone whose app is frozen or killed (the user, 2026-11-06: "72 new messages" for a room read on the desktop). anotherim-server feat/read-push (8938a8c) and apushd feat/read-push (0e24a35) send it as an APNs background push with the sealed summary.

AppDelegate (iOS) gets the background-push handler; it reuses ChatNotificationWithdrawal, whose withdraw is now async so the handler waits for it before iOS suspends the app (the OwnRead path runs it in a Task). AppPushPayload reads kind: "read" with a chat as .read(account:chat:). Unlike the master PR, a message summary with count: 0 stays a message (as PushEnvelopeTests pinned since 8846f6a): it comes as an alert through the notification service extension, which shows only a summary. project.yml adds the remote-notification background mode, without which iOS delivers no silent push; wake pushes now reach the app too and are answered .noData.

Tests: PushEnvelopeTests (the read push, one without a chat refused, apushRead only on the APNs token), TackyAPITests' set_target frame. All 572 AnotherIMTests pass on the iOS 27 simulator; the macOS app builds. Not yet tried end to end on a device.

Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com

…nswered on another device no longer leaves its notice on the lock screen of a phone whose app is frozen or killed (the user, 2026-11-06: "72 new messages" for a room read on the desktop). anotherim-server feat/read-push (8938a8c) and apushd feat/read-push (0e24a35) send it as an APNs `background` push with the sealed summary. AppDelegate (iOS) gets the background-push handler; it reuses ChatNotificationWithdrawal, whose `withdraw` is now async so the handler waits for it before iOS suspends the app (the OwnRead path runs it in a Task). AppPushPayload reads `kind: "read"` with a chat as `.read(account:chat:)`. Unlike the master PR, a message summary with `count: 0` stays a message (as PushEnvelopeTests pinned since 8846f6a): it comes as an alert through the notification service extension, which shows only a summary. project.yml adds the `remote-notification` background mode, without which iOS delivers no silent push; wake pushes now reach the app too and are answered `.noData`. Tests: PushEnvelopeTests (the read push, one without a chat refused, apushRead only on the APNs token), TackyAPITests' set_target frame. All 572 AnotherIMTests pass on the iOS 27 simulator; the macOS app builds. Not yet tried end to end on a device. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
AppDelegate (iOS) gets the background-push handler; it reuses ChatNotificationWithdrawal, whose `withdraw` is now async so the handler waits for it before iOS suspends the app (the OwnRead path runs it in a Task). AppPushPayload reads `kind: "read"` with a chat as `.read(account:chat:)`. Unlike the master PR, a message summary with `count: 0` stays a message (as PushEnvelopeTests pinned since 8846f6a): it comes as an alert through the notification service extension, which shows only a summary. project.yml adds the `remote-notification` background mode, without which iOS delivers no silent push; wake pushes now reach the app too and are answered `.noData`.

Tests: PushEnvelopeTests (the read push, one without a chat refused, apushRead only on the APNs token), TackyAPITests' set_target frame. All 572 AnotherIMTests pass on the iOS 27 simulator; the macOS app builds. Not yet tried end to end on a device.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
fmodf force-pushed feat/push-read-withdraw-ui from fb7c26432b to d4900cb588 2026-11-07 08:12:07 +00:00 Compare
fmodf merged commit 14e332f9e9 into feat/ui-redesign 2026-11-07 08:12:42 +00:00
fmodf deleted branch feat/push-read-withdraw-ui 2026-11-07 08:12:42 +00:00
Sign in to join this conversation.
No reviewers
No labels
done
fixed
returned
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
another-im/anotherim-swift!35
No description provided.