@classytic/arc-notifications 0.8.0 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -129,6 +129,21 @@ sseHub.onConnect((userId, orgId) => backfill.onConnect(userId, orgId)); // debou
129
129
  badge's axis). Both stay host-owned in the repository.
130
130
  - All realtime is **best-effort on top of the durable feed** — a dead socket never
131
131
  fails a request or a send; clients converge via `GET /notifications/`.
132
+ - **Cursor replay.** Pass the client's last-seen time on connect —
133
+ `backfill.onConnect(userId, orgId, { since: req.headers['last-event-id'] })` — and
134
+ a repository that also implements `listSince(org, user, since, limit)` replays the
135
+ gap, including rows an earlier connection received but dropped; they merge with the
136
+ claimed rows into the same single bulk event.
137
+ - **List envelope and verbs.** `inAppFeedResource({ listEnvelope: 'offset' })` answers
138
+ repo-core's `OffsetPaginationResult` (`feedListResult` is the same conversion);
139
+ `{ actions: true }` also mounts `markRead` / `markAllRead` as arc action-router verbs.
140
+ - **One push per recipient.** The package calls `port.push` once per recipient and event
141
+ and never publishes on a bus itself. If your port forwards frames onto an event bus,
142
+ give each frame its own correlation id (it is a transport hop, not a second publish of
143
+ one logical event), or arc's dev duplicate-publish detector will warn on every
144
+ multi-recipient notification.
145
+ - **Clock.** `createUnreadCountCache({ clock })` and
146
+ `createRepositoryDeliveryLog(repo, { clock })` take a `{ now(): Date }`.
132
147
 
133
148
  ### 5. Durable dispatch — crash-safe bulk sends (10k+)
134
149