Skip to content

docs: add v4 release banner and changelog entry#3337

Merged
talkor merged 2 commits intomasterfrom
v4-changlog-banner
Mar 18, 2026
Merged

docs: add v4 release banner and changelog entry#3337
talkor merged 2 commits intomasterfrom
v4-changlog-banner

Conversation

@talkor
Copy link
Copy Markdown
Member

@talkor talkor commented Mar 18, 2026

Summary

  • Adds a Vibe4Banner component to the Storybook welcome page, styled similarly to the previous Monday Vibe banner (pastel purple/blue gradient bubbles, inline text)
  • Banner shows "Vibe 4 is here! Check out the migration guide" with an inline link — only visible on the welcome page
  • Adds a v4.0.0 entry to @vibe/core CHANGELOG with a concise summary of breaking changes and a link to the full migration guide

talkor added 2 commits March 18, 2026 14:35
- Add Vibe4Banner component to storybook welcome page with a pastel
  purple/blue gradient and inline migration guide link
- Add v4.0.0 entry to @vibe/core CHANGELOG with a summary of breaking
  changes and a link to the full migration guide
@talkor talkor requested a review from a team as a code owner March 18, 2026 13:01
@qodo-free-for-open-source-projects
Copy link
Copy Markdown
Contributor

Review Summary by Qodo

Add v4 release banner and changelog entry

📝 Documentation

Grey Divider

Walkthroughs

Description
• Adds Vibe4Banner component to Storybook welcome page
• Displays v4 release announcement with migration guide link
• Adds v4.0.0 CHANGELOG entry documenting breaking changes
• Banner styled with pastel purple/blue gradient bubbles
Diagram
flowchart LR
  A["Vibe4Banner Component"] -->|"Styled with gradients"| B["SCSS Module"]
  A -->|"Integrated into"| C["Storybook Preview"]
  D["v4.0.0 CHANGELOG Entry"] -->|"Documents"| E["Breaking Changes"]
  E -->|"Links to"| F["Migration Guide"]
Loading

Grey Divider

File Changes

1. packages/docs/src/pages/welcome/banner/Vibe4Banner.tsx ✨ Enhancement +26/-0

Create Vibe4Banner React component

• New React component displaying v4 release announcement
• Contains inline migration guide link opening in new tab
• Uses SCSS module for styling with gradient bubbles

packages/docs/src/pages/welcome/banner/Vibe4Banner.tsx


2. packages/docs/src/pages/welcome/banner/Vibe4Banner.module.scss ✨ Enhancement +76/-0

Style Vibe4Banner with gradient bubbles

• Defines banner container with flexbox layout and padding
• Creates two blurred gradient bubbles (purple #d4b8ff, blue #90d0ff)
• Styles text, title, and link with Poppins font family
• Implements hover effect on migration guide link

packages/docs/src/pages/welcome/banner/Vibe4Banner.module.scss


3. packages/docs/.storybook/preview.tsx ✨ Enhancement +2/-0

Integrate Vibe4Banner into Storybook preview

• Imports Vibe4Banner component
• Conditionally renders banner on welcome page only
• Positioned before FloatingObjects in container layout

packages/docs/.storybook/preview.tsx


View more (1)
4. packages/core/CHANGELOG.md 📝 Documentation +17/-0

Add v4.0.0 CHANGELOG with breaking changes

• Adds v4.0.0 release entry with date 2026-03-18
• Documents major breaking changes across 30+ components
• Highlights enum removal, Dropdown rewrite, Dialog migration to Floating UI
• Includes Icon prop renames and TipseenImage removal with migration link

packages/core/CHANGELOG.md


Grey Divider

Qodo Logo

@qodo-free-for-open-source-projects
Copy link
Copy Markdown
Contributor

qodo-free-for-open-source-projects bot commented Mar 18, 2026

Code Review by Qodo

🐞 Bugs (2) 📘 Rule violations (3) 📎 Requirement gaps (0) 📐 Spec deviations (0)

Grey Divider


Action required

1. Vibe4Banner missing data-vibe 📘 Rule violation ✓ Correctness
Description
The Vibe4Banner root element is missing the required [data-vibe] attribute, reducing consistency
for test automation and DOM identification. This violates the component root-attribute requirement.
Code

packages/docs/src/pages/welcome/banner/Vibe4Banner.tsx[6]

+    <div className={styles.vibe4Banner}>
Evidence
PR Compliance ID 4 requires every component root element to include [data-vibe]. In Vibe4Banner,
the root <div> only has className and no [data-vibe] attribute.

CLAUDE.md
packages/docs/src/pages/welcome/banner/Vibe4Banner.tsx[6-22]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`Vibe4Banner` is missing the required `[data-vibe]` attribute on its root element.

## Issue Context
The compliance checklist requires all components to render a root element that includes `[data-vibe]` for consistent DOM identification and testing.

## Fix Focus Areas
- packages/docs/src/pages/welcome/banner/Vibe4Banner.tsx[6-22]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


2. Welcome detection may fail 🐞 Bug ✓ Correctness
Description
Vibe4Banner rendering depends on isWelcomePage checking
window.location.href.includes("id=welcome"), which won’t match the repo’s common
/?path=/docs/... routing; the banner can silently never render on the Welcome docs page. This
breaks the PR’s intended behavior (banner shown on Welcome only) for path-based navigation.
Code

packages/docs/.storybook/preview.tsx[R71-75]

        return (
          <>
+            {isWelcomePage && <Vibe4Banner />}
            {isWelcomePage && <FloatingObjects />}
Evidence
The banner is gated by a string search for id=welcome, but the docs app uses ?path=/docs/...
URLs for navigation; when the URL uses path instead of id, isWelcomePage is false and the
banner won’t render.

packages/docs/.storybook/preview.tsx[69-76]
packages/docs/src/layout/related-components/descriptions/box-description.tsx[20-26]
packages/docs/src/pages/welcome/banner/Vibe4Banner.tsx[11-16]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`Vibe4Banner` is currently shown only when `window.location.href.includes(&quot;id=welcome&quot;)`. In this repo, many internal Storybook links use `/?path=/docs/...`, so Welcome can be reached without any `id=...` query param. As a result, the banner can fail to appear even on the Welcome page.

## Issue Context
- You already have access to the Storybook `context` object in the docs `container`.
- The codebase uses `/?path=/docs/...` links for internal navigation.

## Fix Focus Areas
- packages/docs/.storybook/preview.tsx[69-83]

## Suggested direction
Prefer using `context` (e.g., `context.title === &quot;Welcome&quot;`, `context.id === &quot;welcome--docs&quot;`, and/or `context.viewMode === &quot;docs&quot;`) instead of parsing `window.location.href`. If you want to preserve compatibility with older URL formats, you can support both by checking `URLSearchParams` for `id` and `path`.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Remediation recommended

3. Vibe4Banner missing standard structure 📘 Rule violation ⚙ Maintainability
Description
A new component was added without the expected standard component file layout (e.g., *.types.ts
and index.ts). This makes the component harder to maintain and inconsistent with repository
conventions.
Code

packages/docs/src/pages/welcome/banner/Vibe4Banner.tsx[R1-26]

+import React from "react";
+import styles from "./Vibe4Banner.module.scss";
+
+const Vibe4Banner: React.FC = () => {
+  return (
+    <div className={styles.vibe4Banner}>
+      <div className={styles.bubble1}></div>
+      <div className={styles.bubble2}></div>
+      <div className={styles.content}>
+        <div className={styles.text}>
+          <span className={styles.title}>Vibe 4 is here!</span> Check out the{" "}
+          <a
+            href="https://vibe.monday.com/?path=/docs/migration-guide--docs"
+            target="_blank"
+            rel="noreferrer"
+            className={styles.link}
+          >
+            migration guide
+          </a>
+        </div>
+      </div>
+    </div>
+  );
+};
+
+export default Vibe4Banner;
Evidence
PR Compliance ID 1 requires components to follow a standard folder/file structure (including
Component.tsx, Component.types.ts, and index.ts). The PR adds Vibe4Banner.tsx and
Vibe4Banner.module.scss but no corresponding Vibe4Banner.types.ts or index.ts in the shown
changes.

CLAUDE.md
packages/docs/src/pages/welcome/banner/Vibe4Banner.tsx[1-26]
packages/docs/src/pages/welcome/banner/Vibe4Banner.module.scss[1-76]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`Vibe4Banner` was introduced without the standard component file structure (notably missing `Vibe4Banner.types.ts` and an `index.ts`).

## Issue Context
The repo expects predictable component structure for easier navigation and consistent tooling patterns.

## Fix Focus Areas
- packages/docs/src/pages/welcome/banner/Vibe4Banner.tsx[1-26]
- packages/docs/src/pages/welcome/banner/Vibe4Banner.module.scss[1-76]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


4. Hardcoded styles in Vibe4Banner 📘 Rule violation ⚙ Maintainability
Description
The new banner styling uses hardcoded hex colors and a hardcoded font family instead of design
tokens, reducing theme consistency. This conflicts with the requirement to use design tokens where
applicable.
Code

packages/docs/src/pages/welcome/banner/Vibe4Banner.module.scss[R17-75]

+    .text {
+      color: #323338;
+      font-family: Poppins;
+      font-size: 16px;
+      font-style: normal;
+      font-weight: 400;
+      line-height: 100%;
+      letter-spacing: -0.12px;
+      display: flex;
+      align-items: center;
+      align-self: center;
+      gap: var(--space-4);
+    }
+
+    .title {
+      color: #323338;
+      font-family: Poppins;
+      font-size: 16px;
+      font-style: normal;
+      font-weight: 600;
+      line-height: 100%;
+      letter-spacing: -0.12px;
+    }
+
+    .link {
+      color: #323338;
+      text-decoration: underline;
+      font-size: 16px;
+      font-weight: 400;
+
+      &:hover {
+        opacity: 0.7;
+      }
+    }
+  }
+
+  .bubble1 {
+    width: 307.5px;
+    height: 232.5px;
+    position: absolute;
+    right: 518.5px;
+    bottom: -184.5px;
+    border-radius: 307.5px;
+    opacity: 0.4;
+    background: #d4b8ff;
+    filter: blur(120px);
+  }
+
+  .bubble2 {
+    width: 307.5px;
+    height: 232.5px;
+    position: absolute;
+    left: 358px;
+    top: -194px;
+    border-radius: 307.5px;
+    opacity: 0.4;
+    background: #90d0ff;
+    filter: blur(120px);
+  }
Evidence
PR Compliance ID 7 requires CSS Modules *and* design tokens for styling. While CSS Modules are used,
multiple values are hardcoded (e.g., #323338, #d4b8ff, #90d0ff, and font-family: Poppins)
rather than referenced via tokens.

CLAUDE.md
packages/docs/src/pages/welcome/banner/Vibe4Banner.module.scss[17-39]
packages/docs/src/pages/welcome/banner/Vibe4Banner.module.scss[53-75]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`Vibe4Banner.module.scss` uses hardcoded colors and font family values instead of design tokens.

## Issue Context
To keep styling consistent across the design system (including theming), component styling should rely on design tokens where applicable.

## Fix Focus Areas
- packages/docs/src/pages/welcome/banner/Vibe4Banner.module.scss[17-39]
- packages/docs/src/pages/welcome/banner/Vibe4Banner.module.scss[53-75]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


5. Blank-target link missing noopener 🐞 Bug ⛨ Security
Description
The migration guide link uses target="_blank" with rel="noreferrer" only; for defensive
tabnabbing protection and consistency, it should include noopener too. This is inconsistent with
other links in the docs codebase that already use noopener noreferrer.
Code

packages/docs/src/pages/welcome/banner/Vibe4Banner.tsx[R12-16]

+          <a
+            href="https://vibe.monday.com/?path=/docs/migration-guide--docs"
+            target="_blank"
+            rel="noreferrer"
+            className={styles.link}
Evidence
The new banner link opens a new tab but omits noopener. Other components in this repo include
noopener alongside noreferrer for the same pattern.

packages/docs/src/pages/welcome/banner/Vibe4Banner.tsx[12-19]
packages/docs/src/layout/footer/FooterCard.tsx[18-21]
packages/docs/src/pages/welcome/hero/ResourceButton.tsx[16-21]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`Vibe4Banner` opens an external link in a new tab (`target=&quot;_blank&quot;`) but sets `rel=&quot;noreferrer&quot;` only. For consistency with other links in this repo and stronger protection, add `noopener`.

## Issue Context
Other code already uses `rel=&quot;noopener noreferrer&quot;` or `rel=&quot;noreferrer noopener&quot;` for `_blank` links.

## Fix Focus Areas
- packages/docs/src/pages/welcome/banner/Vibe4Banner.tsx[12-16]

## Suggested change
Update to `rel=&quot;noreferrer noopener&quot;` (or `rel=&quot;noopener noreferrer&quot;`).

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

ⓘ The new review experience is currently in Beta. Learn more

Grey Divider

Qodo Logo


const Vibe4Banner: React.FC = () => {
return (
<div className={styles.vibe4Banner}>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Action required

1. vibe4banner missing data-vibe 📘 Rule violation ✓ Correctness

The Vibe4Banner root element is missing the required [data-vibe] attribute, reducing consistency
for test automation and DOM identification. This violates the component root-attribute requirement.
Agent Prompt
## Issue description
`Vibe4Banner` is missing the required `[data-vibe]` attribute on its root element.

## Issue Context
The compliance checklist requires all components to render a root element that includes `[data-vibe]` for consistent DOM identification and testing.

## Fix Focus Areas
- packages/docs/src/pages/welcome/banner/Vibe4Banner.tsx[6-22]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Comment on lines 71 to 75

return (
<>
{isWelcomePage && <Vibe4Banner />}
{isWelcomePage && <FloatingObjects />}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Action required

2. Welcome detection may fail 🐞 Bug ✓ Correctness

Vibe4Banner rendering depends on isWelcomePage checking
window.location.href.includes("id=welcome"), which won’t match the repo’s common
/?path=/docs/... routing; the banner can silently never render on the Welcome docs page. This
breaks the PR’s intended behavior (banner shown on Welcome only) for path-based navigation.
Agent Prompt
## Issue description
`Vibe4Banner` is currently shown only when `window.location.href.includes("id=welcome")`. In this repo, many internal Storybook links use `/?path=/docs/...`, so Welcome can be reached without any `id=...` query param. As a result, the banner can fail to appear even on the Welcome page.

## Issue Context
- You already have access to the Storybook `context` object in the docs `container`.
- The codebase uses `/?path=/docs/...` links for internal navigation.

## Fix Focus Areas
- packages/docs/.storybook/preview.tsx[69-83]

## Suggested direction
Prefer using `context` (e.g., `context.title === "Welcome"`, `context.id === "welcome--docs"`, and/or `context.viewMode === "docs"`) instead of parsing `window.location.href`. If you want to preserve compatibility with older URL formats, you can support both by checking `URLSearchParams` for `id` and `path`.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

@talkor talkor enabled auto-merge (squash) March 18, 2026 13:11
@talkor talkor merged commit 727b673 into master Mar 18, 2026
15 checks passed
@talkor talkor deleted the v4-changlog-banner branch March 18, 2026 13:13
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