feat: add Weekly Progress Matrix tracker dashboard - #131
Conversation
|
Warning Review limit reached
Next review available in: 46 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
WalkthroughAdds a ChangesWeekly Progress Tracker
Estimated code review effort: 4 (Complex) | ~45 minutes Sequence Diagram(s)sequenceDiagram
participant ProgressTrackerPage
participant GitHubSearchAPI
participant pullsData
ProgressTrackerPage->>GitHubSearchAPI: Fetch issues and merged pull requests
GitHubSearchAPI-->>ProgressTrackerPage: Return paginated contribution items
ProgressTrackerPage->>pullsData: Resolve pull request merge status
pullsData-->>ProgressTrackerPage: Return local merge matches
ProgressTrackerPage->>ProgressTrackerPage: Aggregate items into weekly matrix statistics
Suggested labels: Suggested reviewers: Poem
🚥 Pre-merge checks | ✅ 4✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 7
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@src/pages/ProgressTrackerPage.jsx`:
- Around line 240-262: Optimize getWeeklyStats by precomputing contributor/week
statistics in a useMemo keyed by cache and weeks, rather than filtering and
parsing items during each render invocation. Parse each item’s created_at
timestamp once while building the memoized buckets, preserve the existing
merged/open/closed/issues counts and items, and have getWeeklyStats read the
precomputed result.
- Around line 422-436: The contributor selector around toggleSelect must be
keyboard accessible: replace the clickable div with a real checkbox, or add
checkbox semantics, focusability, and Enter/Space handling while preserving
checked state. Also update src/pages/ProgressTrackerPage.jsx lines 511-530 so
the weekly detail modal trigger uses a type="button" inside the table cell when
total > 0, rather than attaching onClick to the td.
- Around line 104-113: Update the week-end normalization in the weekly range
construction around current, weekEnd, and endLimit to use UTC hour mutation
rather than local-time mutation. Replace the local-time boundary operation with
its UTC equivalent so weekEnd remains aligned with the UTC-based values used by
getWeeklyStats and the existing endLimit comparison.
- Around line 208-222: Update toggleSelect so the setSelectedLogins updater only
computes and returns the toggled Set, without aborting requests or mutating
abortControllersRef. Determine whether the login is being deselected in the
handler body, then perform the corresponding abort and ref cleanup outside the
state updater.
- Around line 555-581: Update the modal rendered by the modalData conditional to
provide dialog semantics with role="dialog", aria-modal="true", and an
accessible label; close it on Escape and backdrop clicks while stopping
propagation from the inner card. Add focus management that moves focus into the
modal, traps Tab navigation within it, and restores focus to the triggering
element when setModalData(null) closes the dialog.
- Around line 198-205: Update the progress-fetch catch flow in the effect
containing the AbortError branch to clear loadingMap[login] and remove the
login’s stale controller before returning for an aborted request. Replace the
stale closure reads used by toggleSelect’s cache/loading guard with a ref-backed
in-flight tracking mechanism, keeping it synchronized with fetch start,
completion, and abort so re-selection can refetch correctly.
- Around line 142-145: Update the GitHub search URLs in the data-fetching logic
to include a created-date qualifier spanning startDate through endDate, and
ensure both issue and merged-PR queries use it. Include startDate and endDate in
the relevant effect dependencies so changing the range refetches data, and
include both dates in the cache key to prevent reuse across ranges.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: 8fa32d1a-4c10-4bcc-a1da-fb5332c108a1
📒 Files selected for processing (3)
src/App.jsxsrc/components/Navbar.jsxsrc/pages/ProgressTrackerPage.jsx
…s on progress tracker
📝 Description of Changes
This Pull Request implements the Weekly Progress Tracker & Contribution Matrix dashboard (originally suggested in Wishlist Item #2 of
FeatureWishlist.md).It provides an interactive, centralized spreadsheet-like grid that lists organization contributors along with a week-by-week chronological breakdown of their development activity (PRs opened, merged, closed, and issues raised) for any specified date range (such as GSoC coding period limits).
Key Features:
AbortControllercancelation context bindings to prevent memory leaks and minimize rate-limiting footprints.weekly-progress-matrix-*.csv) to easily transfer data directly into spreadsheets.Addressed Issues:
Fixes #130
Screenshots/Recordings:
Additional Notes:
vite build(1225 modules transformed cleanly).Checklist
Summary by CodeRabbit