trails/apps/journal/app/jobs
Ullrich Schäfer bf2d8bfbd4 feat(journal): audience-aware social feed with remote activities (§8+§9)
8.1/8.2: listSocialFeed is now a UNION ALL of local and remote
branches, sorted on COALESCE(remote_published_at, created_at):
- local rows: visibility='public' from accepted local follows — and
  the previously missing accepted_at filter is added (the spec's
  'Pending follows contribute nothing' scenario)
- remote rows: gated structurally by joining the viewer's OWN accepted
  follow against the originating actor — which is exactly the
  followers-only audience rule (a row reaches only viewers whose
  follow brought it in); attribution from the remote_actors cache;
  cards link outward to the canonical origin page (no local detail
  page for remote rows)

9.1: annotated — local Pending button shipped with locked accounts;
remote Pending lives on /follows/outgoing.
9.2: already enforced + tested since §3 (actor/webfinger 404).
9.3 hardening: deliver-activity now re-checks the OWNER's profile
visibility at send time, closing the enqueue→delivery flip window
(enqueue-side and inbound-side gates already existed).

Integration tests: the §8 audience-leak guard (A sees followers-only,
B does not), public remote attribution + outward link, pending
contributes nothing, mixed local/remote COALESCE ordering.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-07 12:32:11 +02:00
..
backfill-user-keypairs.ts feat(journal): federation schema + per-user signing keypairs 2026-06-06 14:15:51 +02:00
consumed-jti-sweep.ts fix(journal): single-use JWT enforcement for route callback tokens (#2 Phase B) 2026-05-26 00:38:08 +02:00
deliver-activity.ts feat(journal): audience-aware social feed with remote activities (§8+§9) 2026-06-07 12:32:11 +02:00
demo-bot-generate.ts Upgrade pg-boss from 10 to 12 2026-04-19 23:01:11 +02:00
demo-bot-prune.ts Upgrade pg-boss from 10 to 12 2026-04-19 23:01:11 +02:00
federation-kv-sweep.ts feat(journal): federation inbox — Mastodon follows land here 2026-06-06 14:33:43 +02:00
import-batches-sweep.ts Simplify: typed status, skip-write guard, remove redundant comment 2026-05-23 20:49:09 +02:00
komoot-bulk-import.ts chore(ts): eliminate the remaining 4 \as any\ casts in production code 2026-05-26 07:11:02 +02:00
notifications-fanout.integration.test.ts Cursor-based pagination for /notifications 2026-04-26 01:42:32 +02:00
notifications-fanout.ts feat(journal): outbox-poll ingestion of remote trails activities (§7) 2026-06-07 12:27:10 +02:00
notifications-purge.ts Implement notifications + supporting fixes 2026-04-26 01:28:55 +02:00
poll-remote-actor.ts feat(journal): outbox-poll ingestion of remote trails activities (§7) 2026-06-07 12:27:10 +02:00
poll-remote-outboxes.ts feat(journal): outbox-poll ingestion of remote trails activities (§7) 2026-06-07 12:27:10 +02:00
send-welcome-email.ts fix(journal): architectural audit omnibus 2026-05-24 10:28:33 +02:00