Commit bdb7cd4
authored
feat(push): reader content and reply notification fan-out (#2812)
* feat(push): add reader content and reply notification fan-out
Extend push-protocol, relay bindings/preferences, and core push APIs so Yohaku readers can receive published content and comment-reply alerts without changing Space admin push.
* feat(push): scope relay binding API to the owning installation
Devices now read, update, and revoke their own binding with Installation
credentials, and a source claim no longer overwrites device-owned
preferences while it replaces or clears reader_id.
* refactor(push): anonymous activation with optional reader association
Remove reader-scoped push endpoints and PushAuth in favor of a single
public POST /notifications/push/activate that claims relay tickets with
an optional session reader_id. Relay owns device binding preferences;
core stores source metadata with nullable owner_id.
* test(push): assert single public activate route in OpenAPI manifest
Also simplify push repository PG e2e owner lookup with a direct eq() import.
* fix(push): make the rewritten binding-owner migration actually apply
Migration 0033 was rewritten in place from an expand-only
push_reader_preferences table into the owner_id relaxation, but kept the
abandoned revision's journal timestamp. The schema migrator draws its
waterline from ledger rows that match no bundled hash, so any database
that ran the abandoned revision recorded the rewrite as applied and
silently skipped its SQL, leaving owner_id NOT NULL and the orphaned
preferences table in place. Re-tag it with a later timestamp, drop the
abandoned table, and repair the 0033 snapshot id/prevId that had been
copied from 0032 (drizzle-kit check reported the collision).
Activation also takes the optional reader id last, matching how the other
public reader-aware controllers declare it.
* feat(push): enrich reply and content notifications for APNs UI
Project public display metadata into push events, skip content publishes
without a summary, and build localized APNs payloads with mutable-content
for Communication Notifications on comment replies.
* fix(push): close review blockers before reader push merge
Prevent private content metadata from reaching push payloads, reject encoded
path traversal, and move Space iOS binding status and revoke operations to the
installation-authenticated Relay API after removing the legacy core routes.1 parent 8fa0c6f commit bdb7cd4
48 files changed
Lines changed: 11016 additions & 622 deletions
File tree
- apps
- core
- src
- common/openapi
- database/migrations
- meta
- modules/push
- test/src
- common/openapi
- database
- modules/push
- ios
- Packages/SpaceCore
- Sources/SpaceCore
- Tests/SpaceCoreTests
- Space/Notifications
- push-relay
- migrations
- scripts
- src
- test
- packages
- db-schema/src/schema
- push-protocol
- src
- test
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
46 | 46 | | |
47 | 47 | | |
48 | 48 | | |
| 49 | + | |
| 50 | + | |
49 | 51 | | |
50 | 52 | | |
51 | 53 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
245 | 245 | | |
246 | 246 | | |
247 | 247 | | |
248 | | - | |
| 248 | + | |
249 | 249 | | |
250 | 250 | | |
251 | 251 | | |
252 | 252 | | |
253 | | - | |
254 | | - | |
255 | | - | |
256 | | - | |
257 | | - | |
258 | 253 | | |
259 | 254 | | |
260 | 255 | | |
| |||
310 | 305 | | |
311 | 306 | | |
312 | 307 | | |
313 | | - | |
314 | | - | |
315 | | - | |
316 | | - | |
317 | | - | |
318 | | - | |
319 | | - | |
320 | | - | |
321 | | - | |
322 | | - | |
323 | | - | |
324 | | - | |
325 | | - | |
326 | | - | |
327 | | - | |
328 | | - | |
329 | | - | |
330 | | - | |
331 | | - | |
332 | | - | |
333 | | - | |
334 | | - | |
335 | | - | |
336 | | - | |
337 | | - | |
338 | | - | |
339 | | - | |
340 | | - | |
341 | | - | |
342 | | - | |
343 | | - | |
344 | | - | |
345 | | - | |
346 | | - | |
347 | | - | |
348 | | - | |
349 | | - | |
350 | | - | |
351 | | - | |
352 | | - | |
353 | | - | |
354 | | - | |
355 | | - | |
356 | | - | |
357 | | - | |
358 | | - | |
359 | | - | |
360 | | - | |
361 | | - | |
362 | | - | |
363 | | - | |
364 | | - | |
365 | | - | |
366 | | - | |
367 | | - | |
368 | | - | |
369 | | - | |
370 | | - | |
371 | | - | |
372 | | - | |
373 | | - | |
374 | | - | |
375 | | - | |
376 | | - | |
377 | | - | |
378 | | - | |
379 | | - | |
380 | | - | |
381 | | - | |
382 | | - | |
383 | | - | |
384 | | - | |
385 | | - | |
386 | | - | |
387 | | - | |
388 | | - | |
389 | | - | |
390 | | - | |
391 | | - | |
392 | | - | |
393 | | - | |
394 | | - | |
395 | | - | |
396 | | - | |
397 | | - | |
398 | | - | |
399 | | - | |
400 | | - | |
401 | | - | |
402 | | - | |
403 | | - | |
404 | | - | |
405 | | - | |
406 | | - | |
407 | | - | |
408 | | - | |
409 | | - | |
410 | | - | |
411 | | - | |
412 | | - | |
413 | | - | |
414 | | - | |
415 | | - | |
416 | | - | |
417 | | - | |
418 | | - | |
419 | | - | |
420 | | - | |
421 | | - | |
422 | 308 | | |
423 | 309 | | |
424 | 310 | | |
| |||
2236 | 2122 | | |
2237 | 2123 | | |
2238 | 2124 | | |
2239 | | - | |
2240 | | - | |
2241 | | - | |
2242 | | - | |
2243 | | - | |
2244 | | - | |
2245 | | - | |
2246 | | - | |
2247 | | - | |
2248 | | - | |
2249 | | - | |
2250 | | - | |
2251 | | - | |
2252 | | - | |
2253 | | - | |
2254 | | - | |
2255 | | - | |
2256 | | - | |
2257 | | - | |
2258 | | - | |
2259 | | - | |
2260 | | - | |
2261 | | - | |
2262 | 2125 | | |
2263 | 2126 | | |
2264 | 2127 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
26 | 26 | | |
27 | 27 | | |
28 | 28 | | |
29 | | - | |
30 | | - | |
31 | 29 | | |
32 | 30 | | |
33 | 31 | | |
| |||
148 | 146 | | |
149 | 147 | | |
150 | 148 | | |
151 | | - | |
152 | | - | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
153 | 152 | | |
154 | 153 | | |
155 | 154 | | |
| |||
159 | 158 | | |
160 | 159 | | |
161 | 160 | | |
162 | | - | |
163 | | - | |
164 | | - | |
165 | | - | |
166 | | - | |
167 | | - | |
168 | | - | |
169 | | - | |
170 | | - | |
171 | | - | |
172 | | - | |
173 | | - | |
174 | | - | |
175 | | - | |
176 | | - | |
177 | | - | |
178 | | - | |
179 | | - | |
180 | | - | |
181 | | - | |
182 | | - | |
183 | 161 | | |
184 | 162 | | |
185 | 163 | | |
| |||
Lines changed: 10 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
0 commit comments