Skip to content

docs: add hypercerts-lexicon v0.11.0 release notes with site-wide banner#116

Merged
holkexyz merged 3 commits into
mainfrom
release-notes-v0.11.0
Apr 8, 2026
Merged

docs: add hypercerts-lexicon v0.11.0 release notes with site-wide banner#116
holkexyz merged 3 commits into
mainfrom
release-notes-v0.11.0

Conversation

@s-adamantine

@s-adamantine s-adamantine commented Apr 8, 2026

Copy link
Copy Markdown
Contributor

Add a dedicated release notes page covering breaking changes (evaluation scores, badge strong refs, funding receipt normalization), new lexicons (EVM identity linking, vendored Leaflet), and schema refinements. A dismissible announcement banner appears site-wide above the header linking directly to the release notes.

Summary by CodeRabbit

  • New Features
    • Dismissible announcement banner for the v0.11.0 release, remembers dismissal across sessions and appears at the top of the site.
  • Documentation
    • New v0.11.0 release notes: new lexicon, breaking schema changes, non-breaking refinements, and upgrade/install guidance.
  • Style
    • Global styles for the announcement banner with responsive and dark-mode rules.
  • Chores
    • Added navigation entry for the v0.11.0 release notes and updated last-updated metadata.

Add a dedicated release notes page covering breaking changes (evaluation
scores, badge strong refs, funding receipt normalization), new lexicons
(EVM identity linking, vendored Leaflet), and schema refinements. A
dismissible announcement banner appears site-wide above the header linking
directly to the release notes.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@vercel

vercel Bot commented Apr 8, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
hypercerts-atproto-documentation Ready Ready Preview, Comment Apr 8, 2026 7:07pm
hypercerts-v0.2-documentation Ready Ready Preview, Comment Apr 8, 2026 7:07pm

Request Review

@coderabbitai

coderabbitai Bot commented Apr 8, 2026

Copy link
Copy Markdown

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: a41bfb44-5b48-429a-aff9-b07a3ea64ca4

📥 Commits

Reviewing files that changed from the base of the PR and between 735249f and 0961e42.

📒 Files selected for processing (4)
  • components/Layout.js
  • lib/lastUpdated.json
  • lib/navigation.js
  • styles/globals.css
✅ Files skipped from review due to trivial changes (2)
  • lib/lastUpdated.json
  • lib/navigation.js
🚧 Files skipped from review as they are similar to previous changes (2)
  • components/Layout.js
  • styles/globals.css

📝 Walkthrough

Walkthrough

A dismissible, localStorage-persisted AnnouncementBanner component and its styles were added and inserted into Layout; a release-notes page for hypercerts-lexicon v0.11.0 and navigation entry were added; a lastUpdated.json entry for the new page was added.

Changes

Cohort / File(s) Summary
Announcement Banner UI
components/AnnouncementBanner.js, components/Layout.js, styles/globals.css
Added a dismissible AnnouncementBanner component rendered at the top of the layout; reads/writes dismissal to localStorage (versioned key); new banner styles, dark-mode and responsive rules.
Release Notes & Nav
pages/reference/release-notes-v0-11-0.md, lib/navigation.js
Added release notes document for hypercerts-lexicon v0.11.0 and a navigation entry at /reference/release-notes-v0-11-0.
Meta Timestamps
lib/lastUpdated.json
Added a last-updated timestamp entry for the new release-notes route (/reference/release-notes-v0-11-0).

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant Banner as AnnouncementBanner (client)
    participant Storage as localStorage
    participant Router as Next.js Link

    User->>Banner: Page load / mount
    Banner->>Storage: read "banner-dismissed-lexicon-v0.11.0"
    alt key absent
        Storage-->>Banner: null
        Banner->>Banner: set dismissed = false (show)
    else key present
        Storage-->>Banner: "true"
        Banner->>Banner: keep dismissed = true (hide)
    end
    User->>Banner: click close
    Banner->>Storage: write "banner-dismissed-lexicon-v0.11.0" = "true"
    User->>Banner: click release link
    Banner->>Router: navigate to /reference/release-notes-v0-11-0
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Poem

🐰 A banner hops into view,
v0.11.0 twinkles bright and new,
localStorage tucks the close away,
Links lead to notes where changes stay,
A tiny hop — docs sing: "Bravo you!" 🎉

🚥 Pre-merge checks | ✅ 2 | ❌ 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 (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely summarizes the main changes: adding release notes documentation and a site-wide dismissible banner for v0.11.0.

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

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch release-notes-v0.11.0

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

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🧹 Nitpick comments (2)
components/AnnouncementBanner.js (2)

9-12: Consider wrapping localStorage access in a try-catch.

localStorage can throw exceptions in certain scenarios (e.g., Safari private browsing, storage quota exceeded). While the component will still work (defaulting to hidden), adding defensive error handling prevents console errors.

🛡️ Proposed defensive localStorage access
   useEffect(() => {
-    const stored = localStorage.getItem(`banner-dismissed-${BANNER_ID}`);
-    if (!stored) setDismissed(false);
+    try {
+      const stored = localStorage.getItem(`banner-dismissed-${BANNER_ID}`);
+      if (!stored) setDismissed(false);
+    } catch {
+      // localStorage unavailable; keep banner hidden
+    }
   }, []);
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@components/AnnouncementBanner.js` around lines 9 - 12, The useEffect in
AnnouncementBanner uses localStorage.getItem with BANNER_ID and can throw in
some environments; wrap the access in a try-catch around the
localStorage.getItem call inside the useEffect (referencing useEffect,
BANNER_ID, and setDismissed) and on error treat it as “no stored value” (e.g.,
leave dismissed false) while optionally logging the caught error to avoid
uncaught exceptions in the console.

14-17: Same defensive handling applies to the dismiss function.

If localStorage.setItem throws, the banner will still be hidden for the current session (state is set first), but the dismissal won't persist.

🛡️ Proposed fix
   const dismiss = () => {
     setDismissed(true);
-    localStorage.setItem(`banner-dismissed-${BANNER_ID}`, 'true');
+    try {
+      localStorage.setItem(`banner-dismissed-${BANNER_ID}`, 'true');
+    } catch {
+      // Persist failed; dismissal is session-only
+    }
   };
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@components/AnnouncementBanner.js` around lines 14 - 17, The dismiss function
currently sets state then calls localStorage.setItem which can throw and prevent
persistence; wrap the localStorage.setItem call in a try/catch (or guard with a
typeof window !== 'undefined' && window.localStorage) inside the dismiss
function, still call setDismissed(true) first, and on error swallow or log the
exception via console.error (or a provided logger) while ensuring the UI remains
dismissed; reference the dismiss function and BANNER_ID/localStorage.setItem
when making this change.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@components/AnnouncementBanner.js`:
- Around line 9-12: The useEffect in AnnouncementBanner uses
localStorage.getItem with BANNER_ID and can throw in some environments; wrap the
access in a try-catch around the localStorage.getItem call inside the useEffect
(referencing useEffect, BANNER_ID, and setDismissed) and on error treat it as
“no stored value” (e.g., leave dismissed false) while optionally logging the
caught error to avoid uncaught exceptions in the console.
- Around line 14-17: The dismiss function currently sets state then calls
localStorage.setItem which can throw and prevent persistence; wrap the
localStorage.setItem call in a try/catch (or guard with a typeof window !==
'undefined' && window.localStorage) inside the dismiss function, still call
setDismissed(true) first, and on error swallow or log the exception via
console.error (or a provided logger) while ensuring the UI remains dismissed;
reference the dismiss function and BANNER_ID/localStorage.setItem when making
this change.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 706dff52-988f-4a69-aa9f-a43fb15ee366

📥 Commits

Reviewing files that changed from the base of the PR and between 39e83bf and dcdcd86.

📒 Files selected for processing (5)
  • components/AnnouncementBanner.js
  • components/Layout.js
  • lib/navigation.js
  • pages/reference/release-notes-v0-11-0.md
  • styles/globals.css

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Resolve merge conflicts:
- Layout.js: keep both AnnouncementBanner and CopyRawButton imports + SEO constants
- lastUpdated.json: use main's newer timestamps and preserve release-notes entry

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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