Skip to content

Wave Reports page: contributor & maintainer performance reports#1931

Open
efstajas wants to merge 1 commit into
mainfrom
feat/wave-reports
Open

Wave Reports page: contributor & maintainer performance reports#1931
efstajas wants to merge 1 commit into
mainfrom
feat/wave-reports

Conversation

@efstajas

@efstajas efstajas commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

Frontend for drips-network/wave#692.

What

A new Reports entry in the Wave sidebar (above Reward Grants) at /wave/reports, with settings-style tab routes:

  • Contributor tab (/wave/reports/contributor): the user's personal report for the selected wave — a prominent AI summary card (summary, strengths, growth areas, review-count footnote), stat tiles (points earned, issues resolved, applications, reviews received) with wave-over-wave delta badges, maintainer rating meters + overall-experience distribution, and per-day points/applications column charts.
  • Maintainer tab (/wave/reports/maintainer): an org selector (avatars, large dropdown) over the same layout with org-centric metrics — points awarded, issues completed, applications received, unique contributors, and contributor-feedback ratings (maintainer communication, repo code quality, issue clarity, timeliness).

Behavior

  • Wave program + wave selectors in the header (first program + latest non-upcoming wave by default); program, wave, and org selection persist via query params and survive tab switches.
  • /wave/reports redirects to the Contributor tab by default, or to Maintainer when the user has no contributor report for the wave but one of their orgs does.
  • Per-status states: no report (404) → empty state; pending/failed → 'being prepared'; insufficient_data → stats with an unlock hint instead of the AI summary.
  • Charts are hand-rolled (design tokens, CSS tooltips, sparse axis labels) — no chart dependency, dark mode + primary-color themes work via tokens.

Notes

  • ScrollableTabs got a small backward-compatible tweak: tab hrefs may now carry a query string (ignored for active matching), so the Reports tabs can preserve selection params.
  • New Stars icon (used on the AI summary card), themed via IconWrapper like all other icons.
  • Stable view-transition names on the header/selectors so shared chrome hands over cleanly between tab navigations.
  • svelte-check 0 errors; eslint + prettier clean.

…orts

New 'Reports' sidebar entry with settings-style tab routes at /wave/reports:
a Contributor tab showing the user's per-wave performance report (AI summary
of maintainer feedback, stat tiles with wave-over-wave deltas, rating meters,
per-day activity charts) and a Maintainer tab with an org selector showing
the same layout for org-wide reports built from contributor feedback. Wave
program, wave, and org selection persist via query params; the default tab
falls back to Maintainer when only an org report exists.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new Wave Reports section that surfaces per-wave performance reports for both contributors and maintainers, with program/wave (and org) selection persisted via query params.

Changes:

  • Introduces /wave/reports with tabbed subroutes for Contributor and Maintainer reports, including default redirect behavior.
  • Adds Wave report fetching utilities and Zod DTO schemas for user + org report payloads.
  • Adds reusable UI components for the report layout (AI summary card, stat tiles w/ delta badges, ratings breakdown, daily activity charts) and updates ScrollableTabs to ignore query strings for active matching.

Reviewed changes

Copilot reviewed 15 out of 15 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
src/routes/(pages)/wave/(base-layout)/reports/maintainer/+page.svelte Maintainer/org report page with org selector, AI summary, stats, ratings, and charts.
src/routes/(pages)/wave/(base-layout)/reports/contributor/+page.svelte Contributor/personal report page with AI summary, stats, ratings, and charts.
src/routes/(pages)/wave/(base-layout)/reports/+page.ts Redirects /wave/reports to the most relevant default tab.
src/routes/(pages)/wave/(base-layout)/reports/+layout.ts Loads wave programs/waves and fetches selected report + org reports based on query params.
src/routes/(pages)/wave/(base-layout)/reports/+layout.svelte Shared Reports layout: header, selectors, and tabs with query-param persistence.
src/routes/(pages)/wave/(base-layout)/+layout.svelte Adds “Reports” entry to the Wave sidebar navigation.
src/lib/utils/wave/waveReports.ts Adds authenticated API helpers to fetch wave reports and org wave reports.
src/lib/utils/wave/types/waveReport.ts Adds Zod schemas/types for wave report DTOs and stats payloads.
src/lib/components/wave/wave-report/wave-report-stat-tiles.svelte Reusable stat-tiles grid used by both report pages.
src/lib/components/wave/wave-report/wave-report-ratings.svelte Ratings breakdown UI: distribution bar + per-dimension meters.
src/lib/components/wave/wave-report/wave-report-ai-summary.svelte AI summary card rendering summary paragraphs + strengths/growth areas + footnote.
src/lib/components/wave/wave-report/delta-badge.svelte Wave-over-wave delta badge with tooltip.
src/lib/components/wave/wave-report/daily-activity-chart.svelte Hand-rolled daily bar chart with sparse axis labels and CSS tooltips.
src/lib/components/scrollable-tabs/scrollable-tabs.svelte Adjusts active tab matching to ignore query strings in tab hrefs.
src/lib/components/icons/Stars.svelte Adds new Stars icon used by the AI summary card.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/lib/components/wave/wave-report/delta-badge.svelte
Comment thread src/lib/components/wave/wave-report/daily-activity-chart.svelte
Comment thread src/lib/components/wave/wave-report/wave-report-ratings.svelte
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants