Skip to content

feat(web): changelog page#186

Open
anirudhprmar wants to merge 3 commits into
getpaykit:mainfrom
anirudhprmar:feat(web)/changelog-page
Open

feat(web): changelog page#186
anirudhprmar wants to merge 3 commits into
getpaykit:mainfrom
anirudhprmar:feat(web)/changelog-page

Conversation

@anirudhprmar
Copy link
Copy Markdown
Contributor

@anirudhprmar anirudhprmar commented May 19, 2026

Issue : #163

added changelog page

preview changelog:
https://github.com/user-attachments/assets/0abe8283-7662-430a-aeb6-d63cdee3d977

updated navbar and footer :
screenshot-2026-05-19_11-55-45
screenshot-2026-05-19_11-55-32

Summary by CodeRabbit

  • New Features
    • Dedicated Changelog page displaying GitHub releases with publication dates, contributor attribution, and expandable full release notes (with empty-state message)
    • Changelog link added to main navigation and footer; footer includes a “View all releases on GitHub” link
  • Chores
    • Sitemap updated to include the changelog
    • Optional server-side GitHub token support for fetching releases
  • Dependencies
    • Added markdown rendering and sanitization libraries for release content

Review Change Stack

@vercel
Copy link
Copy Markdown
Contributor

vercel Bot commented May 19, 2026

@anirudhprmar is attempting to deploy a commit to the maxktz Team on Vercel.

A member of the Team first needs to authorize it.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 19, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 5860cf96-96b0-4ed9-bf47-96962fabb650

📥 Commits

Reviewing files that changed from the base of the PR and between d0463cc and 5d3aec8.

⛔ Files ignored due to path filters (1)
  • bun.lock is excluded by !**/*.lock
📒 Files selected for processing (5)
  • apps/web/src/components/changelog/changelog-footer.tsx
  • apps/web/src/components/changelog/changelog-release.tsx
  • apps/web/src/lib/github.ts
  • apps/web/src/lib/html-parser.tsx
  • package.json
🚧 Files skipped from review as they are similar to previous changes (5)
  • package.json
  • apps/web/src/lib/github.ts
  • apps/web/src/lib/html-parser.tsx
  • apps/web/src/components/changelog/changelog-release.tsx
  • apps/web/src/components/changelog/changelog-footer.tsx

📝 Walkthrough

Walkthrough

A changelog feature is added that fetches GitHub releases (optional token), renders sanitized Markdown release bodies with collapsible UI and contributor links, provides sidebar/release/footer components, and integrates the changelog route into navigation and sitemap.

Changes

Changelog Feature with GitHub Release Integration

Layer / File(s) Summary
Environment, data types, and GitHub API
apps/web/src/env.js, apps/web/src/lib/consts.ts, apps/web/src/lib/releases.ts, apps/web/src/lib/github.ts, package.json
GitHubRelease type is defined. getReleases() fetches releases from GitHub with optional Bearer auth via GITHUB_TOKEN. Helpers extract/deduplicate @handle mentions and format ISO dates. Markdown dependencies (react-markdown, rehype-raw, rehype-sanitize) are added.
Markdown rendering with contributors extraction
apps/web/src/lib/html-parser.tsx, apps/web/src/components/changelog/release-contributors.tsx
ReleaseBody renders sanitized Markdown with custom renderers, computes collapsibility from body length, shows a fade overlay and toggle when collapsed, and conditionally renders extracted contributor links.
Changelog sidebar, release card, and footer components
apps/web/src/components/changelog/changelog-sidebar.tsx, apps/web/src/components/changelog/changelog-release.tsx, apps/web/src/components/changelog/changelog-footer.tsx
ChangelogSidebar shows latest release and counts. ChangelogRelease renders each release article with formatted date, tag link, optional name, and optional body via ReleaseBody. ChangelogFooter renders navigation links, separators, copyright year, and X/GitHub icons.
Changelog page and Next.js layout
apps/web/src/app/changelog/layout.tsx, apps/web/src/app/changelog/page.tsx
MarketingLayout wraps content with CommandMenuProvider, NavigationBar, and PageTransition. Changelog page exports metadata, fetches releases asynchronously, maps releases to ChangelogRelease, and displays an empty state when none exist.
Navigation and sitemap updates
apps/web/src/components/layout/navigation-bar.tsx, apps/web/src/components/sections/footer-section.tsx, apps/web/src/app/sitemap.ts
Added Changelog tab to navTabs, footer nav link to /changelog, and a sitemap entry for URLs.changelog with changeFrequency: "weekly" and priority: 1.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related issues

  • #163: Implements the "changelog page" feature for the web app by adding layout, page, components, GitHub release API integration, and Markdown rendering infrastructure for displaying releases.

Poem

🐰 A changelog flows like clover in the breeze,
GitHub releases dance with graceful ease,
Contributors linked, dates formatted true,
Markdown rendered with styles fresh and new,
The sidebar hums of versions just past.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'feat(web): changelog page' is clear and directly summarizes the main change—adding a new changelog page feature to the web application.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 ESLint

If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.

ESLint skipped: no ESLint configuration detected in root package.json. To enable, add eslint to devDependencies.


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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

🤖 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 `@apps/web/src/components/changelog/changelog-footer.tsx`:
- Line 7: Remove the dead ThemeToggle code by deleting the unused import
"ThemeToggle" and removing the commented-out JSX that references it (the
commented block around ThemeToggle near the bottom of the component, referenced
around the commented lines 82-85); ensure no other references to ThemeToggle
remain in the changelog-footer component and run the linter to confirm the
unused-import warning is resolved.

In `@apps/web/src/components/changelog/changelog-release.tsx`:
- Line 3: Remove the unused Badge import from the module: in
changelog-release.tsx delete the imported symbol Badge from the import statement
(or remove the entire import line if it only imported Badge) so the file no
longer references the unused Badge symbol and lint warnings disappear.

In `@apps/web/src/lib/github.ts`:
- Around line 5-11: The fetch to GitHub that assigns to res currently has no
timeout; update the call to use an AbortSignal with AbortSignal.timeout (e.g.,
create a signal via AbortSignal.timeout(5000)) and pass it in the fetch options
so the request aborts after a reasonable period; ensure the signal is added
alongside next and headers in the same options object and handle the potential
abort by catching the error where this fetch is invoked (the fetch call that
sets const res and uses env.GITHUB_TOKEN/Accept headers).

In `@apps/web/src/lib/html-parser.tsx`:
- Line 10: Remove the unused import "Button" from the module: delete the import
specifier Button from the import statement that currently reads import { Button
} from "`@/components/ui/button`"; (or remove the entire import if that was the
only specifier), ensuring no references remain to the Button symbol in the file
(check functions/classes like any exported parser or component in
html-parser.tsx) so lint errors are resolved.
- Line 7: The rehypeRaw plugin is being used to parse untrusted HTML (body)
which creates an XSS risk; update the rehype plugins array that includes
rehypeRaw to immediately follow it with rehypeSanitize (imported from
"rehype-sanitize") so sanitized output is produced, and ensure the sanitization
plugin is applied before passing HTML into the render path (look for the plugins
array where rehypeRaw is referenced). Also remove the unused Button import (the
`Button` symbol) from this file to clean up unused imports.
🪄 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: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 13b7830f-13e9-48d4-8539-6030c68beb60

📥 Commits

Reviewing files that changed from the base of the PR and between 98acaa3 and d0463cc.

⛔ Files ignored due to path filters (1)
  • bun.lock is excluded by !**/*.lock
📒 Files selected for processing (15)
  • apps/web/src/app/changelog/layout.tsx
  • apps/web/src/app/changelog/page.tsx
  • apps/web/src/app/sitemap.ts
  • apps/web/src/components/changelog/changelog-footer.tsx
  • apps/web/src/components/changelog/changelog-release.tsx
  • apps/web/src/components/changelog/changelog-sidebar.tsx
  • apps/web/src/components/changelog/release-contributors.tsx
  • apps/web/src/components/layout/navigation-bar.tsx
  • apps/web/src/components/sections/footer-section.tsx
  • apps/web/src/env.js
  • apps/web/src/lib/consts.ts
  • apps/web/src/lib/github.ts
  • apps/web/src/lib/html-parser.tsx
  • apps/web/src/lib/releases.ts
  • package.json

Comment thread apps/web/src/components/changelog/changelog-footer.tsx Outdated
Comment thread apps/web/src/components/changelog/changelog-release.tsx Outdated
Comment thread apps/web/src/lib/github.ts
Comment thread apps/web/src/lib/html-parser.tsx
Comment thread apps/web/src/lib/html-parser.tsx Outdated
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