trails/packages
Ullrich Schäfer 62b40a25f3 feat(journal): outbound trails-to-trails follows (social-federation §6)
Tasks 6.1–6.6. A local user can follow a user on another trails
instance: WebFinger-resolve the handle, verify the target runs
trails.cool via NodeInfo — checked against the ACTOR IRI's host, never
the handle's domain (split-domain constraint) — record a Pending
follow row, deliver a signed Follow. The §4 inbox listeners already
settle (Accept) or drop (Reject) the row.

- federation-outbound.server.ts: followRemoteActor / cancelRemoteFollow
  (Undo delivery) / listOutgoingRemoteFollows. Network steps (lookup,
  NodeInfo, delivery) injectable for offline integration tests.
  Software allowlist: trails-cool.
- /follows/outgoing: follow-by-handle form + pending/accepted list +
  cancel; linked from the feed empty state; i18n en+de. Remote actors
  have no local profile page, so the remote Pending state lives here
  (the profile Pending button from locked accounts covers local).
- /.well-known/trails-cool now publishes software: trails-cool (6.2).
- Clear 4xx codes: invalid_handle, local_handle, remote_resolve_failed,
  not_trails (6.3).
- Tests: handle-parser + allowlist units; integration suite for the
  Pending lifecycle (create/idempotent/refuse-non-trails/refuse-
  unresolvable/own-host/cancel+Undo) with injected network deps; e2e
  anonymous-redirect guard for the new page.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-07 11:50:35 +02:00
..
api Bump the production group with 41 updates 2026-05-10 08:42:40 +00:00
db fix(db): allow 'public' credential_kind in connected_services check 2026-06-07 08:48:27 +02:00
fit chore(deps): bump the production group with 28 updates 2026-05-31 08:37:04 +00:00
gpx chore(ts): drop the last 2 \eslint-disable\ comments in prod code 2026-05-26 07:34:09 +02:00
i18n feat(journal): outbound trails-to-trails follows (social-federation §6) 2026-06-07 11:50:35 +02:00
jobs chore(ts): eliminate the remaining 4 \as any\ casts in production code 2026-05-26 07:11:02 +02:00
map fix: extensionless server-side imports + lint rule to catch them 2026-05-26 08:08:19 +02:00
map-core Add tests to all packages, remove passWithNoTests 2026-04-13 00:48:27 +02:00
sentry-config Fix sentry-config typecheck: explicit types: [node] in tsconfig 2026-04-18 00:43:48 +02:00
types Add per-waypoint notes and nearby POI snap to Planner 2026-05-17 23:58:21 +02:00
ui Add tests to all packages, remove passWithNoTests 2026-04-13 00:48:27 +02:00