trails/e2e
Ullrich Schäfer ceda9f1877
profile-weekly-distance: weekly distance bar chart on the profile
Implements the profile-weekly-distance change (specs/profile-weekly-distance):

- getWeeklyDistance(ownerId, { publicOnly, weeks=12 }) in activities.server.ts:
  one query that gap-fills in SQL — generate_series of week-starts LEFT JOINed
  to activities — so it returns exactly 12 contiguous { weekStart, distance }
  rows with matching Postgres week boundaries, viewer-scoped, no cache, no
  schema change.
- WeeklyDistanceChart: SVG bars normalized to the busiest week (empty weeks keep
  their slot as zero-height bars), per-bar title distance, localized label;
  renders nothing when there's no distance in the window. Mounted under the
  ProfileStats header.
- i18n journal.profileStats.weeklyDistance (en + de).

Tests: WeeklyDistanceChart component (jsdom: bar count incl. zero weeks, empty
→ hidden, normalization); e2e creates an activity with distance and asserts the
chart renders. typecheck + lint + unit (journal 321) green; verified in the
browser.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 07:46:06 +02:00
..
federation feat(journal): two-instance federation harness + trails↔trails Accept fix (§11) 2026-06-07 13:36:35 +02:00
fixtures e2e: close the interact-before-hydration race (cold-start flake) 2026-06-11 14:09:00 +02:00
helpers e2e: close the interact-before-hydration race (cold-start flake) 2026-06-11 14:09:00 +02:00
activity-sport-type.test.ts activity-sport-type: e2e test + register spec in playwright config 2026-06-12 14:16:58 +02:00
auth.test.ts e2e: shared auth + journal seed helpers; flag unregistered specs 2026-06-10 07:31:51 +02:00
demo-bot.test.ts Fix e2e fallout from default-private profile_visibility 2026-04-25 23:46:56 +02:00
elevation-profile.test.ts journal-elevation-profile: elevation chart + map↔chart sync 2026-06-12 15:34:45 +02:00
explore.test.ts e2e: close the interact-before-hydration race (cold-start flake) 2026-06-11 14:09:00 +02:00
integration.test.ts e2e: shared auth + journal seed helpers; flag unregistered specs 2026-06-10 07:31:51 +02:00
journal-planner-save.test.ts e2e: shared auth + journal seed helpers; flag unregistered specs 2026-06-10 07:31:51 +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 e2e: shared auth + journal seed helpers; flag unregistered specs 2026-06-10 07:31:51 +02:00
list-map-previews.test.ts fix: restore list map previews (batch geojson query) 2026-06-12 22:53:14 +02:00
notifications.test.ts e2e: close the interact-before-hydration race (cold-start flake) 2026-06-11 14:09:00 +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
profile-stats.test.ts profile-stats: lifetime roll-up header on the profile 2026-06-13 07:25:06 +02:00
profile-weekly-distance.test.ts profile-weekly-distance: weekly distance bar chart on the profile 2026-06-13 07:46:06 +02:00
public-content.test.ts e2e: shared auth + journal seed helpers; flag unregistered specs 2026-06-10 07:31:51 +02:00
settings.test.ts e2e: register and repair the settings/explore/social specs 2026-06-11 08:32:18 +02:00
social.test.ts e2e: close the interact-before-hydration race (cold-start flake) 2026-06-11 14:09:00 +02:00