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>
41 lines
1.8 KiB
Markdown
41 lines
1.8 KiB
Markdown
# profile-stats Specification
|
|
|
|
## Purpose
|
|
TBD - created by archiving change profile-stats. Update Purpose after archive.
|
|
## Requirements
|
|
### Requirement: Lifetime totals on the profile
|
|
The profile page SHALL show a stats header with the owner's lifetime totals: activity count, total distance, total ascent, and total elapsed time.
|
|
|
|
#### Scenario: Totals shown for an athlete with activities
|
|
- **WHEN** a user views a profile whose owner has activities
|
|
- **THEN** a stats header shows the activity count, total distance, total ascent, and total elapsed time
|
|
|
|
#### Scenario: Header hidden when there are none
|
|
- **WHEN** the profile owner has no activities the viewer may see
|
|
- **THEN** no stats header is shown
|
|
|
|
### Requirement: Viewer-scoped roll-ups
|
|
The roll-up SHALL count only the activities the viewer is permitted to see: public-only for other viewers, and all of the owner's activities when the owner views their own profile.
|
|
|
|
#### Scenario: Visitor sees public-only totals
|
|
- **WHEN** a visitor (not the owner) views a profile
|
|
- **THEN** the totals aggregate only the owner's public activities (unlisted and private are excluded)
|
|
|
|
#### Scenario: Owner sees their full totals
|
|
- **WHEN** the owner views their own profile
|
|
- **THEN** the totals aggregate all of the owner's activities regardless of visibility
|
|
|
|
### Requirement: Recent-activity summary
|
|
The stats header SHALL show the count of activities in the last 4 weeks (rolling), under the same viewer scoping as the totals.
|
|
|
|
#### Scenario: Last-4-weeks count
|
|
- **WHEN** the stats header is shown
|
|
- **THEN** it includes the number of the owner's (viewer-scoped) activities started in the last 28 days
|
|
|
|
### Requirement: Localized stat labels
|
|
The stats header SHALL render its labels and units through localized strings.
|
|
|
|
#### Scenario: German labels
|
|
- **WHEN** the UI locale is German
|
|
- **THEN** the stat labels render in German
|
|
|