openspec: archive profile-stats + profile-weekly-distance, sync specs
Both changes are implemented and merged (#539, #541). Promote their deltas into openspec/specs/, move the changes to changes/archive/2026-06-14-*, and add the two capabilities to the CAPABILITIES index. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
7e76bbd447
commit
2ad9898f9c
13 changed files with 80 additions and 0 deletions
|
|
@ -1,40 +0,0 @@
|
|||
## Why
|
||||
|
||||
The profile roll-up header (`profile-stats`) shows lifetime totals and a
|
||||
"last 4 weeks" count, but no sense of *cadence* — is this person ramping up,
|
||||
tapering, or consistent? Strava's weekly bars are the at-a-glance answer. A
|
||||
small weekly-distance bar chart turns the static totals into a trend, and the
|
||||
data is the same cheap aggregate we already lean on.
|
||||
|
||||
## What Changes
|
||||
|
||||
- Add a **weekly distance bar chart** to the profile, under the stats header:
|
||||
one bar per week for the **last 12 weeks**, heights normalized to the busiest
|
||||
week.
|
||||
- Compute it with one indexed aggregate (`sum(distance)` grouped by week) over
|
||||
the same viewer scoping as `profile-stats` (public-only for visitors, full
|
||||
for the owner) — **no cache table, no schema change**.
|
||||
- Hide the chart when the owner has no distance in the window.
|
||||
|
||||
## Capabilities
|
||||
|
||||
### New Capabilities
|
||||
|
||||
- `profile-weekly-distance`: the weekly-distance bar chart on the profile — the
|
||||
window, how empty weeks are shown, and how it is computed and scoped.
|
||||
|
||||
### Modified Capabilities
|
||||
|
||||
<!-- None at the requirement level. Builds alongside `profile-stats` (the
|
||||
header it sits under); that capability's totals are unchanged. -->
|
||||
|
||||
## Impact
|
||||
|
||||
- **Depends on `profile-stats`** (PR #539) — the chart renders beneath that
|
||||
header.
|
||||
- **Journal app**: a `getWeeklyDistance(ownerId, { publicOnly, weeks })` query
|
||||
in `activities.server.ts`; the profile loader passes the series; a small
|
||||
`WeeklyDistanceChart` component (SVG bars, reusing `stats.ts` formatters).
|
||||
- **i18n**: `journal.profileStats.weeklyDistance*` labels (en + de).
|
||||
- **No schema change, no GPX parsing** — `sum(distance)` grouped by
|
||||
`date_trunc('week', …)` over the `owner_id`-leading indexes.
|
||||
Loading…
Add table
Add a link
Reference in a new issue