feat(a11y): add scroll-progress bar + normalize typography letter-spa…#3225
feat(a11y): add scroll-progress bar + normalize typography letter-spa…#3225Shan7Usmani wants to merge 2 commits into
Conversation
GSSoC Label Checklist 🏷️@Priyanshu-byte-coder — please apply the appropriate labels before merging: Difficulty (pick one):
Quality (optional):
Validation (required to score):
|
|
Hi @Priyanshu-byte-coder! The \star-required\ check is failing due to a workflow bug — not because I haven't starred the repo. The \GITHUB_TOKEN\ in \pr-star-required.yml\ gets a 403 when calling the stargazers API: ` This causes \hasStarred()\ to throw an unhandled error, which crashes the script before it can set the status. The \permissions\ block in the workflow only declares \pull-requests: write\ and \statuses: write\ — the stargazers endpoint likely needs \contents: read\ to work. Quick fix options:
I've confirmed via the GitHub API that I have starred the repo. Thanks! |
0cf2569 to
c07e284
Compare
- Add scroll-progress bar at header bottom edge (accent color + glow) - Track scroll position via CSS scaleX for GPU-friendly animation - Normalize letter-spacing to 0.08em across nav links, badge, and stat labels - Optical alignment of triangle logo mark with DEVTRACK wordmark - Respects prefers-reduced-motion via existing CSS media query Closes Priyanshu-byte-coder#3222
c07e284 to
1843519
Compare
|
Hi! All 4 of my PRs (#3225, #3226, #3227, #3233) are failing the Star required check with Resource not accessible by integration. The issue is in .github/workflows/pr-star-required.yml - the permissions block only declares pull-requests: write and statuses: write, but the listStargazersForRepo API call requires contents: read (or starring: read). Since the workflow uses pull_request_target, the GITHUB_TOKEN is scoped to only the explicitly declared permissions, which do not include stargazers access. Could you add contents: read to the permissions block? This would fix the check for all fork contributors. Thanks! |
Summary
Adds a scroll-progress bar to the header and normalizes typography letter-spacing across the landing page for a more cohesive visual experience.
Closes #3222
Type of Change
What Changed
src/components/AppNavbar.tsx— AddedscrollProgressstate, extended existing scroll listener to calculatescrollTop / docHeight, added scroll-progress bar markup at header bottom edge, normalized nav linktracking-[0.08em], addedtranslate-y-[1px]to triangle logo mark for optical alignmentsrc/app/globals.css— Added.scroll-progress-trackand.scroll-progress-barCSS classes with cyan accent glow,transform-origin: left,scaleXanimation, andprefers-reduced-motionmedia query to disable transitionsrc/components/landing/LandingPage.tsx— Normalizedletter-spacingto0.08emonwLabel(was0.1em), stat labels (was0.12em), "ABOUT DEVTRACK" header (was0.12em), heatmap label (was0.1em), "OPEN SOURCE" header (was0.12em), and stat tile labels (was0.1em)How to Test
pnpm devand open the landing pageprefers-reduced-motionin OS settings and scroll — the progress bar should snap instantly without transitionExpected result: Progress bar fills smoothly with a subtle cyan glow as you scroll. All monospace labels share the same
0.08emletter-spacing. Logo mark is visually balanced with the wordmark. No layout shift or conflict with the sticky translucent header.Checklist
console.log, debug code, or commented-out blocksnpm run lintpasses locallynpm run type-check)Accessibility (UI changes only)
Additional Context
The scroll progress bar uses
transform: scaleX()for GPU-accelerated animation, avoiding layout thrash. Theprefers-reduced-motionmedia query disables the CSS transition so the bar snaps instantly for users who prefer reduced animations. The progress bar is purely decorative (aria-hidden="true") and does not convey information to screen readers.