Website/v2 - #90
Website/v2#90
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
commit: |
There was a problem hiding this comment.
1 issue found across 11 files
Prompt for AI agents (unresolved issues)
Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name="apps/website/app/react-grab.tsx">
<violation number="1" location="apps/website/app/react-grab.tsx:11">
P1: Return `null` instead of `undefined`; returning `undefined` from a React component causes a runtime render error.</violation>
</file>
Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review, or fix all with cubic.
There was a problem hiding this comment.
1 issue found across 1 file (changes from recent commits).
Prompt for AI agents (unresolved issues)
Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name="apps/website/app/page.tsx">
<violation number="1">
P2: `BrowserPreview` is no longer remounted per animation cycle, so its `loaded` state can leak across loops and break the browser loading animation sequence.</violation>
</file>
Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review, or fix all with cubic.
| <div className="w-3.75 tracking-[-0.01em] text-[color(display-p3_0.361_0.361_0.361)] dark:text-[color(display-p3_0.588_0.588_0.588)] shrink-0 text-[14.5px]/5 sm:text-[12.5px]/4.5"> | ||
| $ | ||
| <div className="[font-synthesis:none] overflow-x-clip antialiased min-h-screen bg-white flex flex-col items-center"> | ||
| <DialRoot position="top-right" theme="dark" /> |
There was a problem hiding this comment.
Debug panel rendered unconditionally in production
High Severity
DialRoot (a dialkit debug control panel for tweaking animation parameters) is rendered unconditionally on the landing page, meaning it will be visible to all users in production. This contrasts with ReactGrab in the same PR, which correctly gates itself behind a process.env.NODE_ENV !== "development" check. The useDialKit hook in TerminalIllustration also runs unconditionally, adding unnecessary overhead and a visible floating UI panel for end users.
Reviewed by Cursor Bugbot for commit 71b51c1. Configure here.
There was a problem hiding this comment.
1 issue found across 1 file (changes from recent commits).
Prompt for AI agents (unresolved issues)
Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name="apps/website/app/page.tsx">
<violation number="1">
P1: `useDialKit` and its associated `DialRoot` panel are rendered unconditionally, meaning the debug control UI for tweaking animation parameters will be visible to all production users. Gate behind a development-only check (similar to the `ReactGrab` pattern elsewhere in this PR) or conditionally render `DialRoot`.</violation>
</file>
Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review, or fix all with cubic.
- Add "What is Expect?" and "What does it check for?" as top entries - Merge workflow question into product description - Sharpen question phrasing across all entries
- Merge "What is Expect?" and "What does it check for?" into single entry - Add feature checklist UI (Performance, Security, Design, Completeness) under FAQ - Add "Star on GitHub" button below install command - Remove standalone feature section - Fix FAQ toggle so text selection doesn't close it - Fix react-grab returning undefined instead of null - Address PR review comments (cursor terminal movement, status text phases)
- Merge "What is Expect?" and "What does it check for?" into single FAQ entry - Remove em dash, remove CI paragraph, simplify description - Black GitHub button, npx without -y flag - Move click handler to FAQ header so text selection works - Sync CLI README FAQ to match website
…fDuration Made-with: Cursor
- Move animation state reset to key-based remount pattern - Split TerminalIllustration into outer (cycle/dial) and inner (animation) components - Fix ref updates during render, unnamed export, unescaped entity - Remove unused TerminalLine component - Add cursor-to-terminal movement and status text for all phases
Component remounts each cycle via key, so loading/loaded state resets naturally. Derive loading from slid prop instead.
…panel z-order Made-with: Cursor
Made-with: Cursor
Made-with: Cursor
…l command Made-with: Cursor
…network tab Made-with: Cursor
…pper, polish terminal command Made-with: Cursor
…dges and border Made-with: Cursor
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
There are 2 total unresolved issues (including 1 from previous review).
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit b8a92af. Configure here.
| import { cn } from "@/lib/utils"; | ||
| import { useEffect, useRef, useState } from "react"; | ||
| import { AnimatePresence, motion } from "motion/react"; | ||
| import { Stepper } from "pasito"; |
There was a problem hiding this comment.
Unused Stepper import from pasito
Low Severity
Stepper is imported from pasito but never used anywhere in the file. The PR description mentions "a real pasito install stepper" but the component was never integrated into the page. This adds an unnecessary import that may increase the client bundle size.
Reviewed by Cursor Bugbot for commit b8a92af. Configure here.


@ben-million new site
Note
Medium Risk
Large client-side landing page rewrite with new animation state machine, new UI dependencies, and a runtime fetch to the GitHub API; risk is primarily UI regressions/perf and hydration/SSR edge cases rather than backend/data integrity.
Overview
Replaces the existing home page with a redesigned website v2 centered, light-mode landing layout featuring a looping browser+terminal animation demo (multi-phase timeline, animated cursor, diff/fix/reload states) and new marketing sections (install command with copy-to-clipboard, GitHub star button with live count, and collapsible FAQ).
Adds a new
ClaudeSpinnercomponent for Claude-style glyph + shimmering text loading, introducesdialkit-driven debug controls (DialRoot) for tuning animation timings/springs, and updates global styling (importspasitostyles, adds JetBrains Mono, new dialkit/stepper theming utilities, and scrollbar stability).Cleans up dev tooling by moving
react-grabloading to a small client component via dynamic import, fixesnext-env.d.tsroute type reference path, and adds new dependencies (dialkit,pasito,zustand).Reviewed by Cursor Bugbot for commit b8a92af. Bugbot is set up for automated code reviews on this repo. Configure here.
Summary by cubic
Rebuilds the landing page (website v2) into a centered light‑mode layout with a looping browser+terminal agent demo (spinner → diff → alert → fix → reload) and an interactive FAQ. Adds a Test Security section, a real
pasitoinstall stepper, a live GitHub star button, and copy‑to‑clipboard for the install command.New Features
JetBrains Mono, and an inspection overlay.dialkit; loadsreact-grabin dev via a tiny client component; addszustand; Display‑P3 off‑white background.Bug Fixes
pasitostyles, fixnext-env.d.tsroutes path); lockfiles synced fordialkit,pasito,zustand, andreact-grab; workspace linksreact-grablocally.@expect/browser: formattedresponsive/rule.mdand overlay CSS.Written for commit b8a92af. Summary will update on new commits.