Skip to content

feat(website): highlight open calls and thank community contributors - #1457

Closed
Cedric Vidal (cedricvidal) wants to merge 9 commits into
microsoft:mainfrom
cedricvidal:cedricvidal-website-contribution-issues
Closed

Cedric Vidal (cedricvidal) wants to merge 9 commits into
microsoft:mainfrom
cedricvidal:cedricvidal-website-contribution-issues

Conversation

@cedricvidal

Copy link
Copy Markdown
Collaborator

Supersedes #1456 (same branch, now pushed from the cedricvidal/scope fork).

Summary

Newcomers have no easy way to find issues where we want outside help. This PR shows those issues on the website: open, unassigned issues labeled good first issue or help wanted.

Data source. The browser fetches a static issues.jsonl file from an orphan website-data branch through raw.githubusercontent.com. It does not call the GitHub API, so there are no rate limits or tokens in the browser. You can point it at a different file with PUBLIC_CONTRIBUTION_ISSUES_URL.

  • Each line is {labels, number, title} with keys sorted and labels sorted, and lines are ordered by issue number.
  • There are no timestamps or other fields that change on every run. The file only changes when the set of open calls changes, so diffs stay minimal.

Landing page. A new "Help build Scope" section shows 4 issue cards at a time with an animated count pill.

  • The cards rotate every 7 s. The dots double as a progress bar, and there is a pause/play toggle.
  • Rotation pauses on hover, on keyboard focus, when the section is offscreen, and when the tab is hidden.
  • Animations use the Web Animations API (no GSAP, because of its license): a staggered entrance, the count going up, and a glow that follows the pointer. With reduced motion turned on there is no autoplay and no motion, but the dots still work.

Contribute page. A new Community → Contribute page lists all the issues.

  • Good first issues come first, then newest first.
  • area:, difficulty: and type: labels show as chips.
  • Contributors just open a PR with Fixes #123; there is no "comment to claim" step.

Thank you, contributors. Both pages also thank external authors of merged PRs (author association not MEMBER, OWNER or COLLABORATOR; bots excluded).

  • Data: contributors.jsonl on the same website-data branch, one {"login":"...","prs":N} per line, sorted by login, no avatar URLs or timestamps. Override with PUBLIC_CONTRIBUTORS_URL.
  • Landing: an avatar wall under the open calls. Avatars pop in (WAAPI), lift on hover with a tooltip showing the merged-PR count, and a "+N" bubble links to the full list when there are more than 24. The heading has a beating heart and a count pill ("N contributors - M merged PRs").
  • Contribute page: a new "Thank you" section with a card grid. Each person links to their merged PRs. A missing avatar falls back to the login's initial.
  • The dev sample lists only the 4 real external contributors.

Implementation notes.

  • The cards, avatars and logins are built with textContent and attributes only, never innerHTML.
  • The loading, empty and error states all keep a fallback link to the GitHub issue search.
  • In astro dev, a sample file (contribution-issues.sample.jsonl) is loaded and marked "Sample data · dev only". It is not included in production builds. Its help wanted labels exist only in that sample; no real issue was changed.

Follow-up needed (not in this PR). The hourly workflow that publishes issues.jsonl to website-data is not included because I couldn't push workflow files. A maintainer needs to add .github/workflows/contribution-issues.yml (schedule + workflow_dispatch), which writes both issues.jsonl and contributors.jsonl, and run it once manually after merge to create the branch. Until then, the sections show their fallback link.

Demos

Walkthrough recorded against astro dev, so the cards use the dev-only sample data (hence the "Sample data - dev only" tag). It shows the landing section rotating, pausing on hover, the dots and the pause toggle, the contributors wall with tooltips, then the full Contribute page with chips, "Help wanted" badges and the "Thank you" grid.

Before

N/A (new section)

After

contribution-walkthrough.mp4

Testing

  • cd website && pnpm test: passed (26 tests, 0 failures). Covers parsing, sorting, chips, pagination with wraparound, that the sample covers every label combination, and contributor parsing, deduping, sorting and "+N" overflow.
  • pnpm build (public site): passed. It builds 215 pages, and the sample data is absent from the production JS.
  • Dry-ran the jq pipeline for issues.jsonl against live gh issue list output: the output was identical across runs. Same for the GraphQL + jq pipeline for contributors.jsonl (4 contributors, 5 merged PRs), and the publish step against a local bare repo (creates the branch, skips when unchanged, commits on change).
  • Manual check in a browser against astro dev:
    • Rotation autoplays.
    • Pause/play, clicking a dot and pausing on hover all work.
    • Badges show correctly for good first issue only, help wanted only, and both labels.
    • Contributors: wall, tooltips, "+N" overflow (with a smaller limit), grid in light and dark, and the broken-avatar initial. No console errors besides the expected 404 for the not-yet-created data branch.

Documentation and compatibility

  • Updated website/AGENTS.md (new "Contribution issues" section and the page count), a "Community contributors" section, website/README.md, the labels table in CONTRIBUTING.md, and a note in its "Close the loop" step that merged external authors appear on the site.
  • Breaking changes: None.

Checklist

  • If Portal features changed, keep CLI capabilities in sync. N/A
  • If Portal components changed, update their Storybook stories. N/A
  • If database changes require a migration, include up() / down() and keep it CosmosDB-compatible. N/A
  • If dependencies changed, update the lockfile and regenerate NOTICE / NOTICE-REVIEW.txt with pnpm notice as needed. N/A
  • Video showing the behavior before the suggested change. N/A (new section)
  • Video showing the behavior after the suggested change

Add helpers that parse the issues.jsonl list published to the website-data branch, order it for display, and build chips and GitHub links, plus a dev-only sample and node:test coverage.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Add an animated "Help build Scope" section to the landing page and a Community > Contribute page listing open, unassigned good first issue and help wanted issues. Uses the Web Animations API (no library), respects reduced motion, and falls back to GitHub search links without JavaScript.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Cycle through all open calls 4 at a time every 7 seconds, with page dots that fill as a progress bar and a pause button. Rotation holds on hover, focus, off screen, and hidden tabs, and never autoplays under reduced motion.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Add help wanted and dual-labeled issues to the sample, and assert it covers every contribution label combination.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
…ontribution-issues

# Conflicts:
#	website/README.md
Add data helpers and tests for the contributors.jsonl file published on the website-data branch, plus a dev sample with the current external contributors.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Add a <scope-contributors> element: an avatar wall with tooltips and a
+N bubble on the landing page, and a card grid in a new Thank you
section on Community > Contribute. Avatars pop in with WAAPI, the count
pill counts up, and motion is skipped when reduced motion is preferred.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@cedricvidal Cedric Vidal (cedricvidal) changed the title feat(website): highlight open calls for contributions feat(website): highlight open calls and thank community contributors Oct 2, 2026
@cedricvidal

Copy link
Copy Markdown
Collaborator Author

Opened by mistake from the fork; the changes will go to #1456 on the upstream branch instead.

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.

1 participant