feat: add health score coverage report scaffold - #2164
Merged
Conversation
Signed-off-by: Gašper Grom <gasper.grom@gmail.com>
Signed-off-by: Gašper Grom <gasper.grom@gmail.com>
Client QueryClient defaults lacked retryOnMount:false, so TanStack Query's default retryOnMount:true immediately re-fetched (and discarded) any hydrated error-status query the instant a component subscribed to it on mount, flipping the UI back to its loading skeleton. Adds isError empty-state branches to the affected organization-overview components and the health-score-coverage KPI row/config scaffold that surfaced the bug. Signed-off-by: Gašper Grom <gasper.grom@gmail.com>
Contributor
There was a problem hiding this comment.
Pull request overview
Adds the Health Score Coverage report scaffold and improves error-state handling for SSR-hydrated queries.
Changes:
- Adds the report page, KPI API/data layer, configuration, caching, and public access.
- Adds loading and error states for report and organization widgets.
- Changes global TanStack Query SSR dehydration and retry behavior.
Reviewed changes
Copilot reviewed 18 out of 18 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
frontend/types/report/health-score-coverage.types.ts |
Defines KPI data types. |
frontend/setup/caching.ts |
Adds report caching rules. |
frontend/server/middleware/jwt-auth.ts |
Makes the report API public. |
frontend/server/data/tinybird/report/health-score-coverage.ts |
Maps Tinybird KPI data. |
frontend/server/data/tinybird/report/health-score-coverage.test.ts |
Tests KPI mapping and empty results. |
frontend/server/api/report/health-score-coverage/glance.get.ts |
Exposes the KPI endpoint. |
frontend/app/plugins/vue-query.ts |
Changes SSR query dehydration and retries. |
frontend/app/pages/report/health-score-coverage.vue |
Registers the report page and SEO metadata. |
frontend/app/components/shared/types/tanstack.ts |
Adds the report query key. |
frontend/app/components/modules/report/health-score-coverage/views/health-score-coverage-report.vue |
Builds the report layout. |
frontend/app/components/modules/report/health-score-coverage/services/health-score-coverage.api.service.ts |
Adds KPI query service. |
frontend/app/components/modules/report/health-score-coverage/config/signals.ts |
Defines health-score signals. |
frontend/app/components/modules/report/health-score-coverage/config/lifecycle.ts |
Defines lifecycle labels. |
frontend/app/components/modules/report/health-score-coverage/config/bands.ts |
Defines score bands. |
frontend/app/components/modules/report/health-score-coverage/components/kpi-row.vue |
Renders KPI loading/error states. |
frontend/app/components/modules/organization/components/overview/kpi-row.vue |
Adds KPI error handling. |
frontend/app/components/modules/organization/components/overview/contributors-chart.vue |
Adds contributor error handling. |
frontend/app/components/modules/organization/components/overview/activity-chart.vue |
Adds activity error handling. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| // silently re-fetches any error query with no data the instant a component | ||
| // subscribes to it on mount, discarding the hydrated error and flipping the | ||
| // UI back to its loading skeleton. | ||
| retryOnMount: false, |
Comment on lines
+63
to
+67
| await Promise.race([ | ||
| Promise.allSettled( | ||
| queryClient | ||
| .getQueryCache() | ||
| .getAll() |
This was referenced Sep 9, 2026
epipav
approved these changes
Sep 9, 2026
gaspergrom
merged commit Sep 9, 2026
e9bbb56
into
release/IN-1276-health-score-coverage
6 checks passed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Scaffolds the new
/report/health-score-coveragepage (IN-1276 epic): header, freshness/version badges, 5-value KPI row, and two empty section headers for later widget tickets. Mirrors thereport/agentic-ai-momentumpage/module/service/API-route/types structure.Also fixes a client-side hydration bug in the shared
vue-query.tsplugin surfaced while building this page: TanStack Query's defaultretryOnMount: truewas silently re-fetching (and discarding) any SSR-hydrated error-status query the instant a component subscribed on mount, so a genuine server-side fetch failure rendered as a permanent loading skeleton instead of the intended empty state. Fixed withretryOnMount: falseon the client query defaults, plusisErrorempty-state branches added to this page's KPI row and to the threeorganization/overviewcomponents already using the same query pattern.Base branch is release/IN-1276-health-score-coverage (IN-1276 epic release branch), not main. Merge into the release branch once approved; do not merge into main directly.
Tinybird pipe
health_score_report_kpismust be live in production before this PR is QA'd or merged. (Already deployed — see linuxfoundation/crowd.dev#4578.)No footer/nav link — this report is unannounced.
Test plan
release/IN-1276-health-score-coverage-