trails/e2e
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
..
fixtures Stabilize e2e against Vite dev hydration race 2026-05-08 01:06:27 +02:00
helpers Split planner E2E tests into focused feature files 2026-05-22 21:58:10 +02:00
auth.test.ts Drop workers=1 — hydration helper is sufficient 2026-05-08 01:10:15 +02:00
demo-bot.test.ts Fix e2e fallout from default-private profile_visibility 2026-04-25 23:46:56 +02:00
explore.test.ts Stabilize e2e against Vite dev hydration race 2026-05-08 01:06:27 +02:00
integration.test.ts fix(journal): single-use JWT enforcement for route callback tokens (#2 Phase B) 2026-05-26 00:38:08 +02:00
journal-planner-save.test.ts test(e2e/journal-planner-save): pass waypoints in URL + mock BRouter 2026-05-26 00:53:16 +02:00
journal.test.ts Rebuild the Journal home around a public feed and flagship marketing 2026-04-24 20:00:23 +02:00
komoot-import.test.ts Make listImportable resilient to Komoot API errors; fix import E2E test 2026-05-23 11:05:15 +02:00
notifications.test.ts Stabilize e2e against Vite dev hydration race 2026-05-08 01:06:27 +02:00
planner-coloring.test.ts test(e2e/planner-coloring): bump canvas timeout 10s→20s 2026-05-25 23:44:53 +02:00
planner-multiday.test.ts Split planner E2E tests into focused feature files 2026-05-22 21:58:10 +02:00
planner-overlays.test.ts Split planner E2E tests into focused feature files 2026-05-22 21:58:10 +02:00
planner-routing.test.ts Split planner E2E tests into focused feature files 2026-05-22 21:58:10 +02:00
planner-session.test.ts Split planner E2E tests into focused feature files 2026-05-22 21:58:10 +02:00
public-content.test.ts Stabilize e2e against Vite dev hydration race 2026-05-08 01:06:27 +02:00
settings.test.ts Redesign navbar with avatar dropdown and mobile drawer 2026-04-26 09:56:20 +02:00
social.test.ts feat(journal): outbound trails-to-trails follows (social-federation §6) 2026-06-07 11:50:35 +02:00