Skip to content

feat: display Health Score v2, Impact Score, and Lifecycle columns IN-1196 - #2035

Merged
gaspergrom merged 4 commits into
mainfrom
feat/IN-1196
Aug 25, 2026
Merged

feat: display Health Score v2, Impact Score, and Lifecycle columns IN-1196#2035
gaspergrom merged 4 commits into
mainfrom
feat/IN-1196

Conversation

@gaspergrom

Copy link
Copy Markdown
Collaborator

Summary

  • Adds Lifecycle and Impact Score columns to the Collections projects table, alongside a reworked Health Score pill, surfacing the new Health Score v2 (Akrites methodology) fields: healthScoreV2, healthLabel, lifecycleLabel, impactScore, impactLabel.
  • New collection-lifecycle-badge.vue and collection-impact-score-pill.vue components, following the existing pill/chip pattern already used for Health Score.
  • Adds excellent/fair health-score tiers and foundational/major/moderate/minor impact-score tiers as Figma-exact color tokens.
  • collection-lifecycle-badge.vue renders an "Unavailable" chip whenever lifecycleLabel is falsy (null/undefined/empty) — matches the upstream Tinybird pipe's behavior, which returns NULL for repos with no usable activity signal at all (see the paired crowd.dev PR) rather than a placeholder string, so the existing falsy check already covers it without any special-casing.

Dependency

Depends on the crowd.dev PR adding the healthScoreV2/healthLabel/lifecycleLabel/impactScore/impactLabel fields to the project_insights Tinybird pipe — that PR must be deployed to production Tinybird before this is merged, or these columns will render "Unavailable"/"N/A" for every project.

Test plan

  • pnpm tsc-check passes
  • Pre-commit hooks (license headers, lint-staged, type-check) pass on all changed files
  • Manual QA once the upstream Tinybird deploy is live: confirm Lifecycle/Impact/Health Score columns render correctly for a mix of active, archived, and no-signal projects in the Collections table (both desktop row and mobile card layouts)

…table IN-1196

Signed-off-by: Gašper Grom <gasper.grom@gmail.com>
The Tinybird lifecycle pipe now emits a genuine 'unavailable' string
(added alongside active/stable/declining/abandoned/archived) for repos
with no usable activity signal at all. The component's v-if only
checked for a falsy lifecycleLabel, so 'unavailable' fell through to
the tag branch and rendered as a gray tag reading Unavailable styled
identically to archived, rather than the dedicated unavailable chip
already built for the null/missing case.

Signed-off-by: Gašper Grom <gasper.grom@gmail.com>
The Tinybird pipe was changed to return a real NULL for repos with no
usable activity signal instead of the literal string 'unavailable', so
the original falsy check on lifecycleLabel already renders the
Unavailable chip correctly without a separate string comparison.

Signed-off-by: Gašper Grom <gasper.grom@gmail.com>
Copilot AI balanced review requested due to automatic review settings July 24, 2026 13:40

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 Akrites Health Score v2, Lifecycle, and Impact metrics to collection project views.

Changes:

  • Adds new Tinybird insight fields and score-tier color tokens.
  • Adds Lifecycle and Impact badge components.
  • Updates desktop and mobile collection layouts with the new metrics.

Reviewed changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
frontend/types/project.ts Adds new insight fields.
frontend/tailwind.config.js Safelists score-tier classes.
frontend/app/config/styles/colors.ts Defines Health and Impact colors.
frontend/app/components/modules/collection/views/collection-details.vue Adds and sizes table columns.
frontend/app/components/modules/collection/components/details/collection-project-item.vue Renders new metrics.
frontend/app/components/modules/collection/components/details/collection-lifecycle-badge.vue Adds Lifecycle badges.
frontend/app/components/modules/collection/components/details/collection-impact-score-pill.vue Adds Impact pills.
frontend/app/components/modules/collection/components/details/collection-health-score-pill.vue Updates Health Score pills for v2.

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

Comment on lines +65 to +66
<td class="py-4 px-2 whitespace-nowrap">
<lfx-collection-lifecycle-badge :lifecycle-label="props.project.lifecycleLabel" />
Comment on lines 176 to +177
<template v-if="isOnboarded">
<lfx-collection-lifecycle-badge :lifecycle-label="props.project.lifecycleLabel" />
Comment on lines +80 to +82
<lfx-collection-health-score-pill
:score="project.healthScoreV2 ?? 0"
:health-label="props.project.healthLabel"
Comment on lines +13 to +16
<lfx-tooltip
v-else
placement="top"
content="Tooltip copy pending"
Comment on lines +13 to +16
<lfx-tooltip
v-else
placement="top"
content="Tooltip copy pending"
Comment on lines +13 to +16
<lfx-tooltip
v-else
type="bordered"
size="small"
class="flex items-center gap-1"
placement="top"
content="Tooltip copy pending"
Copilot AI review requested due to automatic review settings August 25, 2026 08:11

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

Copilot reviewed 8 out of 8 changed files in this pull request and generated no new comments.

Suppressed comments (3)

frontend/app/components/modules/collection/components/details/collection-impact-score-pill.vue:16

  • Users hovering a populated impact score will see the literal placeholder “Tooltip copy pending.” Replace it with approved explanatory copy, or remove the tooltip until that copy is available.
    content="Tooltip copy pending"

frontend/app/components/modules/collection/components/details/collection-lifecycle-badge.vue:16

  • Users hovering a populated lifecycle badge will see the literal placeholder “Tooltip copy pending.” Replace it with approved explanatory copy, or remove the tooltip until that copy is available.
    content="Tooltip copy pending"

frontend/app/components/modules/collection/components/details/collection-health-score-pill.vue:16

  • Users hovering a populated health score will see the literal placeholder “Tooltip copy pending.” Replace it with approved explanatory copy, or remove the tooltip until that copy is available.
    content="Tooltip copy pending"

@gaspergrom
gaspergrom merged commit c8b1a29 into main Aug 25, 2026
11 checks passed
@gaspergrom
gaspergrom deleted the feat/IN-1196 branch August 25, 2026 08:14
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.

3 participants