trails/apps/journal/app
Ullrich Schäfer 20be961177 fix(journal): retract federated activities only on public→non-public
A received Delete is recorded by Mastodon as a permanent tombstone —
later Creates for the same URI are silently refused forever. The old
code sent Delete on every non-public save 'just in case' (the comment
even called over-sending harmless); on the 2026-06-07 soak this
tombstoned an unlisted activity's URI before its first real publish,
making its later flip to public invisible on the remote with no error
anywhere.

- visibilityTransitionAction(previous, next): Create on any transition
  to public (re-publish doubles as back-delivery; remotes dedupe by
  id), Delete only when leaving public, nothing for
  non-public→non-public.
- updateActivityVisibility reads the previous visibility and acts on
  the transition.
- design.md documents the tombstone permanence + the user-facing
  consequence (un-publish then re-publish won't resurrect the post on
  remotes that processed the retraction — same as Mastodon's own
  delete-and-redraft).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-07 08:52:23 +02:00
..
components chore(ts): drop two more redundant casts 2026-05-26 01:02:49 +02:00
hooks Implement notifications + supporting fixes 2026-04-26 01:28:55 +02:00
jobs feat(journal): federation outbox + push delivery to remote followers 2026-06-06 15:32:52 +02:00
lib fix(journal): retract federated activities only on public→non-public 2026-06-07 08:52:23 +02:00
routes feat(journal): dereferenceable Note objects at /activities/:id 2026-06-06 23:18:30 +02:00
entry.client.tsx Add legal pages, ToS acceptance, and alpha banner 2026-04-18 00:08:48 +02:00
entry.server.tsx Consolidate Sentry config into shared package; fix inconsistencies 2026-04-18 00:30:09 +02:00
root.tsx fix(journal): remove ineffective dynamic imports 2026-05-24 12:05:08 +02:00
routes.ts feat(journal): federation outbox + push delivery to remote followers 2026-06-06 15:32:52 +02:00