Skip to content

Website/v2 - #90

Merged
aidenybai merged 62 commits into
first-minorfrom
website/v2
Apr 8, 2026
Merged

aidenybai merged 62 commits into
first-minorfrom
website/v2

Conversation

@aidenybai

@aidenybai aidenybai commented Apr 7, 2026

Copy link
Copy Markdown
Member

@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 ClaudeSpinner component for Claude-style glyph + shimmering text loading, introduces dialkit-driven debug controls (DialRoot) for tuning animation timings/springs, and updates global styling (imports pasito styles, adds JetBrains Mono, new dialkit/stepper theming utilities, and scrollbar stability).

Cleans up dev tooling by moving react-grab loading to a small client component via dynamic import, fixes next-env.d.ts route 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 pasito install stepper, a live GitHub star button, and copy‑to‑clipboard for the install command.

  • New Features

    • Looping terminal+browser demo with a scroll‑based multi‑phase flow, animated agent cursor (click‑to‑focus), Claude‑style spinner, longer diff, and a browser load after the diff; adds a loading bar, network panel highlights, soft springs, subtle scroll fades, JetBrains Mono, and an inspection overlay.
    • Interactive FAQ with merged content, feature checklist, and copy button; redesigned GitHub star button with live count; centered light‑mode layout; replaces custom editor with dialkit; loads react-grab in dev via a tiny client component; adds zustand; Display‑P3 off‑white background.
  • Bug Fixes

    • Animation stability: split illustration components, key‑based remount, accumulative scrolling, ref update fixes, lock terminal x on reset; pointer‑events on cards; FAQ text selection and collapse jitter; clearer phase labels and timing polish.
    • Browser preview: derive loading from prop; z‑order/shadow tweaks; hide login; CSS/types cleanup (import pasito styles, fix next-env.d.ts routes path); lockfiles synced for dialkit, pasito, zustand, and react-grab; workspace links react-grab locally.
    • @expect/browser: formatted responsive/rule.md and overlay CSS.

Written for commit b8a92af. Summary will update on new commits.

@vercel

vercel Bot commented Apr 7, 2026

Copy link
Copy Markdown
Contributor

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

Project Deployment Actions Updated (UTC)
expect Ready Ready Preview, Comment Apr 8, 2026 4:09am

@pkg-pr-new

pkg-pr-new Bot commented Apr 7, 2026

Copy link
Copy Markdown

Open in StackBlitz

npm i https://pkg.pr.new/millionco/expect/expect-cli@90
npm i https://pkg.pr.new/millionco/expect/expect-mcp@90

commit: b8a92af

Comment thread apps/website/app/page.tsx
Comment thread apps/website/app/page.tsx
Comment thread apps/website/app/page.tsx

@cubic-dev-ai cubic-dev-ai Bot left a comment

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.

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.

Comment thread apps/website/app/react-grab.tsx Outdated
Comment thread apps/website/app/page.tsx Outdated
Comment thread apps/website/app/page.tsx Outdated
Comment thread apps/website/app/page.tsx

@cubic-dev-ai cubic-dev-ai Bot left a comment

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.

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.

Comment thread apps/website/app/page.tsx
<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" />

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

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.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 71b51c1. Configure here.

@cubic-dev-ai cubic-dev-ai Bot left a comment

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.

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.

aidenybai and others added 23 commits April 7, 2026 21:03
- 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
- 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.
…pper, polish terminal command

Made-with: Cursor
@aidenybai
aidenybai merged commit 4d3c4ae into first-minor Apr 8, 2026
11 checks passed
@aidenybai
aidenybai deleted the website/v2 branch April 8, 2026 04:10

@cursor cursor 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.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

There are 2 total unresolved issues (including 1 from previous review).

Fix All in Cursor

❌ 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.

Comment thread apps/website/app/page.tsx
import { cn } from "@/lib/utils";
import { useEffect, useRef, useState } from "react";
import { AnimatePresence, motion } from "motion/react";
import { Stepper } from "pasito";

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

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.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit b8a92af. Configure here.

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