Skip to content

feat: changelog page to landing page#342

Merged
izadoesdev merged 6 commits intodatabuddy-analytics:stagingfrom
mezotv:feat/notra-changelog
Mar 13, 2026
Merged

feat: changelog page to landing page#342
izadoesdev merged 6 commits intodatabuddy-analytics:stagingfrom
mezotv:feat/notra-changelog

Conversation

@mezotv
Copy link
Contributor

@mezotv mezotv commented Mar 12, 2026

Description

  • Add changelog page with split-view layout (sticky left sidebar, scrollable right content) similar to cursor and better-auth
  • Integrate Notra API for fetching changelog posts
  • Add 'Powered by Notra' badge with SVG logo linking to usenotra.com
  • Add changelog links to main and docs navbars
  • Fix JSX attribute casing in icon components (clipRule, fillRule)
  • Bump Next.js to ^16.1.6
Checklist
  • My code follows the style guidelines of this project
  • I have performed a self-review of my code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works
  • New and existing unit tests pass locally with my changes

mezotv added 4 commits March 13, 2026 00:30
- Add changelog page with split-view layout (sticky left sidebar, scrollable right content)
- Integrate Notra REST API for fetching changelog posts
- Add 'Powered by Notra' badge with SVG logo linking to usenotra.com
- Add changelog links to main and docs navbars
- Fix JSX attribute casing in icon components (clipRule, fillRule)
- Bump Next.js to ^16.1.6
- External links in changelog content open in new tabs
- Add changelog page with split-view layout (sticky left sidebar, scrollable right content)
- Integrate Notra REST API for fetching changelog posts
- Add 'Powered by Notra' badge with SVG logo linking to usenotra.com
- Add changelog links to main and docs navbars
- Fix JSX attribute casing in icon components (clipRule, fillRule)
- Bump Next.js to ^16.1.6
- External links in changelog content open in new tabs
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Mar 12, 2026

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 82e48385-fa92-4f77-bdec-bcc50c8a9d6d

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
📝 Coding Plan
  • Generate coding plan for human review comments

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.

@mezotv mezotv changed the title Feat/notra changelog feat: changelog page to landing page Mar 12, 2026
@greptile-apps
Copy link
Contributor

greptile-apps bot commented Mar 12, 2026

Greptile Summary

This PR adds a changelog page to the Databuddy docs site, integrating with the Notra API to fetch and display changelog posts in a split-view layout (sticky left sidebar, scrollable right content). It also adds changelog links to both navbars, registers the route in the sitemap, fixes JSX attribute casing in icon components, and bumps Next.js to ^16.1.6.

Key changes:

  • New apps/docs/app/(home)/changelog/page.tsx — ISR page (revalidate: 3600s) rendering ChangelogEntry components from Notra posts
  • New apps/docs/lib/changelog-query.ts — typed Notra API client with React cache() and env-var guard
  • New apps/docs/lib/changelog-utils.ts — HTML helpers: externalizeLinks, splitChangelogContent, formatChangelogDate
  • Incomplete JSX attribute fix: clip-rule was correctly renamed to clipRule in hipaa.tsx and iso27001.tsx, but the companion fill-rule attributes were not updated to fillRule — 1 occurrence in hipaa.tsx and 3 occurrences in iso27001.tsx still use invalid HTML kebab-case syntax that will produce React warnings
  • externalizeLinks regex only matches href-first anchor tags, silently skipping links with other attributes before href
  • API errors are silently collapsed into an empty posts array, making production misconfigurations invisible to users

Confidence Score: 3/5

  • Safe to merge after fixing the remaining fill-rule → fillRule syntax issues in hipaa.tsx and iso27001.tsx; the changelog feature itself is functional and well-structured.
  • The core changelog feature is well-implemented with proper ISR caching, env-var guards, and graceful empty-state handling. The score is reduced due to the incomplete JSX attribute fix — the PR's stated goal of fixing kebab-case SVG attributes was only partially accomplished (clipRule fixed, fillRule missed in two files across four locations), which will continue to generate React warnings. The regex limitation in externalizeLinks and silent error swallowing are lower-severity style issues.
  • apps/docs/components/icons/hipaa.tsx and apps/docs/components/icons/iso27001.tsx — fill-rule attributes were not updated to fillRule despite being the stated purpose of the fix.

Important Files Changed

Filename Overview
apps/docs/app/(home)/changelog/page.tsx New changelog page with split-view layout fetching posts from Notra API; error state silently falls back to empty array making API failures invisible.
apps/docs/lib/changelog-query.ts New Notra API client with React cache and env-var guard; error handling is present but returns opaque FetchError objects that are silently swallowed by callers.
apps/docs/lib/changelog-utils.ts HTML utility helpers for the changelog; externalizeLinks regex only matches href-first anchor tags, so links with other attributes before href will not open in a new tab.
apps/docs/components/icons/hipaa.tsx Partial JSX attribute fix — clipRule was updated but fill-rule on line 18 was missed and still uses invalid HTML kebab-case syntax in JSX.
apps/docs/components/icons/iso27001.tsx Partial JSX attribute fix — clipRule was updated on 3 paths but all 3 companion fill-rule attributes (lines 18, 28, 38) were missed and still use HTML syntax.
apps/docs/components/icons/ccpa.tsx Both clipRule and fillRule correctly fixed; no issues found.
apps/docs/components/navbar.tsx Changelog link added to the main navbar navMenu array; straightforward and correct.
apps/docs/components/docs-navbar.tsx Changelog link added to the docs navbar navMenu array; straightforward and correct.
apps/docs/lib/sitemap-generator.ts Changelog route added to sitemap with weekly change frequency and 0.7 priority; correct.
.env.example NOTRA_API_KEY and NOTRA_ORGANIZATION_ID env vars documented as optional; correct placement.
apps/docs/package.json Next.js bumped from ^16.0.9 to ^16.1.6; patch/minor version bump with no breaking changes expected.

Sequence Diagram

sequenceDiagram
    participant Browser
    participant NextJS as Next.js SSR
    participant Cache as React cache()
    participant Notra as Notra API

    Browser->>NextJS: GET /changelog
    NextJS->>Cache: getChangelogs()
    Cache->>Notra: GET /v1/{orgId}/posts?status=published&sort=desc
    Note over Cache,Notra: Bearer {NOTRA_API_KEY} header
    alt API success
        Notra-->>Cache: { posts: [...], pagination: {...} }
        Cache-->>NextJS: NotraPostListResponse
        NextJS->>NextJS: externalizeLinks(post.content)
        NextJS->>NextJS: splitChangelogContent(html)
        NextJS-->>Browser: Rendered changelog HTML (revalidate: 3600s)
    else API failure / missing env vars
        Notra-->>Cache: FetchError { error: true, status, statusText }
        Cache-->>NextJS: FetchError
        NextJS-->>Browser: Empty state ("No releases yet")
    end
Loading

Last reviewed commit: 89111b3

@vercel
Copy link

vercel bot commented Mar 12, 2026

@mezotv is attempting to deploy a commit to the Databuddy OSS Team on Vercel.

A member of the Team first needs to authorize it.

@izadoesdev izadoesdev merged commit a54d9dc into databuddy-analytics:staging Mar 13, 2026
6 of 9 checks passed
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.

2 participants