## Summary
- Moves `themeColor` from the `metadata` export to a separate `viewport`
export in the root layout
- Fixes the Next.js warning: "Unsupported metadata themeColor is
configured in metadata export. Please move it to viewport export
instead."
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Parse Co-authored-by trailers to show initials badges alongside commit
authors, and add inline expand/collapse for multi-line commit messages
across the commits list, commit detail, and PR conversation views.
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
When multiple users view the same public repo page, each independently
fetches from GitHub's API and stores their own copy in Redis. This adds
a shared cache layer (ghpub: prefix, 5-min TTL) so the first user to
fetch populates a shared entry that subsequent users read from, reducing
redundant API calls and sync jobs.
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
The GitHub Events API caps the commits array at 20 entries and may
return it empty, but always provides payload.size with the true count.
Use size as the primary source and fall back gracefully to "pushed to
{branch}" when the count is still zero.
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Parallelize sequential server-side fetches across 5 pages to remove
request waterfalls, and add Suspense-based skeleton loading UIs for the
4 top-level pages that were missing them.
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add Suspense boundary around ActivityMarquee with a skeleton loading
fallback, as required by foxact's noSSR() usage.
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
The GitHub profile menu button was using `session.user.name` (display name) instead of `session.githubUser.login` (GitHub username) for the profile URL. This caused incorrect redirects to GitHub when the display name differs from the username.
Changed:
- Use `session.githubUser?.login` instead of `session.user.name` for the GitHub profile URL
- Updated the conditional check to use `session.githubUser?.login`
The greeting and date strings are computed using `new Date()` which
produces different results on the server vs client when timezones differ.
Add `suppressHydrationWarning` so React silently accepts the mismatch
and the client value wins after hydration.
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Show a top-of-page progress bar during route transitions for immediate
visual feedback, and add a Suspense loading skeleton for repo pages so
the layout stays interactive while page content streams in.
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Replace manual CSS transitions with motion/react for sidebar
collapse/expand. Clicking the resize bar now collapses the sidebar
with a spring animation, and a floating expand button appears on
hover at the left edge.
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>