Skip to content

[abcd-themed] Clean A/B/C/D in themed impeccable design; live test B vs D - #22

Merged
Smetools merged 2 commits into
mainfrom
hassan-abcd-themed
May 31, 2026
Merged

[abcd-themed] Clean A/B/C/D in themed impeccable design; live test B vs D#22
Smetools merged 2 commits into
mainfrom
hassan-abcd-themed

Conversation

@Smetools

@Smetools Smetools commented May 31, 2026

Copy link
Copy Markdown
Collaborator

What

Consolidates the landing to four clean copies, all in the themed impeccable design (impeccable's craft on Knowcap's 4-theme system — the look you picked from /bt), with the theme switcher in the nav.

Route Copy Tracks In live test?
/a A — control / mechanism-first a review only
/b B — outcome + 80-sec Odoo demo b LIVE (outcome)
/c C — role-first c review only
/d D — show-the-magic + L1/L2/L3 d LIVE (magic)

Homepage / random-rotates b vs d only → copy is the only variable. Theme defaults to baseline; visitor can switch via the nav dots.

How

  • New ThemedShell wraps all four (chrome + theme plumbing + constant body sections: Process → Results → Security → FAQ → Close) so the pages can't drift. Each version-{a,b,c,d}.tsx supplies only its hero + signature section.
  • Reuses the impeccable kit.tsx craft (spacing/scale/layouts) verbatim; re-skins via --t-* theme vars from theme-switcher.tsx.

Removed (clutter cleanup)

  • Brass experiment: /bi /di /e + version-bi/di/e.tsx
  • The /bt proof route + version-bt.tsx
  • Cream chain: sections/shared.tsx, hero-section-general, features-context-section, how-it-works-section, roi-section, beta-testimonials-section, beyond-obvious-section, trust-section, faq-section, personal-note-section-general, floating-cta
  • ruvector.db gitignored

31 files: 7 added, 20 deleted, 4 modified. 0 dangling imports.

Test plan

  1. / rotates b↔d (~50/50), URL stays /, sticky per visitor.
  2. /a /b /c /d all render the themed impeccable design; theme dots switch all 4 themes.
  3. /bi /di /e /bt now 404 (removed).
  4. PostHog/Clarity see a/b/c/d.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Introduced Version A landing page variant for A/B testing
    • Implemented new themed shell architecture for consistent variant styling
  • Refactor

    • Updated A/B test rotation strategy to feature new landing page variants
    • Consolidated landing page component structure for improved consistency

… B vs D

Consolidates the landing to four copies, each in impeccable's craft re-skinned
onto Knowcap's 4-theme system (the /bt look), theme switcher in the nav:
  /a Version A (control/mechanism)   tracks 'a'  — review only
  /b Version B (outcome + Odoo demo) tracks 'b'  — LIVE rotation
  /c Version C (role-first)          tracks 'c'  — review only
  /d Version D (show-the-magic)      tracks 'd'  — LIVE rotation

- New ThemedShell wraps all four (chrome + theme plumbing + constant body
  sections) so they can't drift; each variant supplies only hero + signature.
- middleware: / random-rotates b vs d only; copy is the only variable; theme
  defaults to baseline, visitor switches via nav. Stale a/c/e/bi/di cookies
  fall through the guard and get reassigned.
- Removes the brass experiment (/bi /di /e), the /bt proof route, and the cream
  component chain (sections/shared, hero-section-general, etc.).
- ruvector.db gitignored.

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

vercel Bot commented May 31, 2026

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
app Ready Ready Preview, Comment May 31, 2026 8:17pm

@coderabbitai

coderabbitai Bot commented May 31, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@Smetools, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 50 minutes and 22 seconds. Learn how PR review limits work.

Your organization has run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: f2e1fd0c-1f6e-4599-afcc-2ed8e96f805e

📥 Commits

Reviewing files that changed from the base of the PR and between 727f615 and dca516e.

📒 Files selected for processing (5)
  • app/app/b/page.tsx
  • app/app/c/page.tsx
  • app/app/d/page.tsx
  • app/app/page.tsx
  • app/components/impeccable/kit.tsx
📝 Walkthrough

Walkthrough

This PR consolidates a fragmented landing page variant architecture into a unified ThemedShell-based system. Four variants (A, B, C, D) now share a common composable wrapper that handles theme switching, header navigation, and fixed page sections, replacing the previous scattered implementations with individual font setup and kit component composition. Old routes and components are removed, and middleware A/B rotation is updated to use the new variant identifiers.

Changes

Landing Page Architecture Consolidation

Layer / File(s) Summary
ThemedShell foundation and styling infrastructure
app/components/impeccable/themed-shell.tsx
Introduces ThemedShell default export with theme-aware CSS variable injection, scroll-tracking ThemedHeader for navigation/theme switching, and composition of shared kit sections (process, results, security, FAQ, footer, floating CTA). Exports THEMED_STYLE constant combining font import + base kit CSS + theme overrides.
Version A landing page variant
app/components/version-a.tsx, app/app/a/page.tsx
Adds Version A as a new ThemedShell-based variant with reveal-animated hero section featuring headline, register/book-demo CTAs, and exhibit image, plus direct /a route for review access.
Version B migration to ThemedShell
app/components/version-b.tsx
Refactors existing VersionBImpeccable to VersionB using ThemedShell, removing fontVars parameter and scattered Impeccable kit imports, updating hero structure with new animation markup and consolidated image component syntax.
Version C landing page variant
app/components/version-c.tsx
Adds Version C using ThemedShell with role-track content (three implementer/agency/team bullet sections) and governance section with pill-style control highlights, both driven by internal data structures and reveal animations.
Version D landing page variant
app/components/version-d.tsx
Adds Version D using ThemedShell with three-step escalation flow, including reveal-animated hero and escalation section that maps LEVELS data to step progression with confirmation messaging.
Routing migration and cleanup
app/middleware.ts, app/app/di/page.tsx, app/.gitignore
Updates middleware A/B rotation from variants ['bi', 'di'] to ['b', 'd'] to route new consolidated variants, removes old /di page, and adds ruvector.db to build artifact ignores.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

  • Knowcap-V2/knowcap-landing#20: Both PRs modify app/middleware.ts homepage A/B routing by changing the VARIANTS constant; this PR consolidates ['bi','di'] to ['b','d'].
  • Knowcap-V2/knowcap-landing#21: This PR removes the /bt route and deletes app/components/version-bt.tsx, directly reversing the changes that introduced those components.
  • Knowcap-V2/knowcap-landing#19: This PR removes the /bi and /di page implementations and their corresponding version components that were introduced by the referenced PR.

🐰 A shell so themed, variants now gleam,
From scattered fragments to one dream,
A, B, C, D in sync they play,
One wrapper rules them all today!

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 12.50% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title directly and accurately summarizes the main change: consolidating to four themed landing page variants (A/B/C/D) and setting up live A/B testing between B and D variants on the homepage.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch hassan-abcd-themed

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.

@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)
app/components/version-a.tsx (1)

23-26: ⚖️ Poor tradeoff

Optional: extract the shared doc-id + exhibit blocks.

The doc-id chip (lines 23–26) and the exhibit motion.figure scaffold (lines 46–60) are duplicated verbatim across version-a/b/c/d (only the image src/alt differ). Consider hoisting a small HeroExhibit/DocId helper into kit.tsx so copy stays the only per-variant variable. Applies to the sibling files too.

Also applies to: 46-60

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@app/components/version-a.tsx` around lines 23 - 26, Extract the duplicated
doc-id chip and exhibit scaffold into reusable components (e.g., DocId and
HeroExhibit) in kit.tsx and use them from version-a/b/c/d; specifically, move
the JSX that renders the motion.div with className "ve-docid" (including Tick
and the ve-mono span) into a DocId component and move the motion.figure scaffold
(the exhibit wrapper used in lines that vary only by image src/alt) into a
HeroExhibit component that accepts props for image src and alt; then replace the
inline copies in version-a.tsx (and siblings) with <DocId /> and <HeroExhibit
src={...} alt={...} /> to keep per-variant files focused only on the differing
image values.
app/components/impeccable/themed-shell.tsx (1)

66-66: ⚡ Quick win

Consider using explicit types instead of any.

The theme and onThemeChange parameters use any types, which bypasses TypeScript's type checking. Since both ThemeSwitcher and useThemeColors are imported from @/components/theme-switcher, their proper types should be available for import and use here.

📘 Example type improvement
+import ThemeSwitcher, { useThemeColors, type Theme } from '`@/components/theme-switcher`'
...
-function ThemedHeader({ theme, onThemeChange }: { theme: any; onThemeChange: (k: any) => void }) {
+function ThemedHeader({ theme, onThemeChange }: { theme: Theme; onThemeChange: (theme: Theme) => void }) {

Note: Adjust based on the actual exported type name from theme-switcher.tsx.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@app/components/impeccable/themed-shell.tsx` at line 66, Replace the use of
`any` in ThemedHeader by importing and using the concrete types exported from
"`@/components/theme-switcher`": import the theme type (e.g., Theme or ThemeType)
and the handler type (e.g., ThemeChangeHandler or a typed callback) from that
module, then change the signature of function ThemedHeader to use those types
(for example: function ThemedHeader({ theme, onThemeChange }: { theme: Theme;
onThemeChange: ThemeChangeHandler }) or onThemeChange: (k: Theme) => void),
removing `any` and ensuring the types match the actual exported names from
ThemeSwitcher/useThemeColors.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@app/components/impeccable/themed-shell.tsx`:
- Line 66: Replace the use of `any` in ThemedHeader by importing and using the
concrete types exported from "`@/components/theme-switcher`": import the theme
type (e.g., Theme or ThemeType) and the handler type (e.g., ThemeChangeHandler
or a typed callback) from that module, then change the signature of function
ThemedHeader to use those types (for example: function ThemedHeader({ theme,
onThemeChange }: { theme: Theme; onThemeChange: ThemeChangeHandler }) or
onThemeChange: (k: Theme) => void), removing `any` and ensuring the types match
the actual exported names from ThemeSwitcher/useThemeColors.

In `@app/components/version-a.tsx`:
- Around line 23-26: Extract the duplicated doc-id chip and exhibit scaffold
into reusable components (e.g., DocId and HeroExhibit) in kit.tsx and use them
from version-a/b/c/d; specifically, move the JSX that renders the motion.div
with className "ve-docid" (including Tick and the ve-mono span) into a DocId
component and move the motion.figure scaffold (the exhibit wrapper used in lines
that vary only by image src/alt) into a HeroExhibit component that accepts props
for image src and alt; then replace the inline copies in version-a.tsx (and
siblings) with <DocId /> and <HeroExhibit src={...} alt={...} /> to keep
per-variant files focused only on the differing image values.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: a03ad4e1-d3ee-42b1-ad11-c3f68bf921da

📥 Commits

Reviewing files that changed from the base of the PR and between 300a060 and 727f615.

📒 Files selected for processing (26)
  • app/.gitignore
  • app/app/a/page.tsx
  • app/app/bi/page.tsx
  • app/app/bt/page.tsx
  • app/app/di/page.tsx
  • app/app/e/page.tsx
  • app/components/beta-testimonials-section.tsx
  • app/components/beyond-obvious-section.tsx
  • app/components/faq-section.tsx
  • app/components/features-context-section.tsx
  • app/components/floating-cta.tsx
  • app/components/hero-section-general.tsx
  • app/components/how-it-works-section.tsx
  • app/components/impeccable/themed-shell.tsx
  • app/components/personal-note-section-general.tsx
  • app/components/roi-section.tsx
  • app/components/sections/shared.tsx
  • app/components/trust-section.tsx
  • app/components/version-a.tsx
  • app/components/version-b.tsx
  • app/components/version-bt.tsx
  • app/components/version-c.tsx
  • app/components/version-d.tsx
  • app/components/version-di.tsx
  • app/components/version-e.tsx
  • app/middleware.ts
💤 Files with no reviewable changes (18)
  • app/components/trust-section.tsx
  • app/components/how-it-works-section.tsx
  • app/components/features-context-section.tsx
  • app/app/bt/page.tsx
  • app/components/beyond-obvious-section.tsx
  • app/components/faq-section.tsx
  • app/components/personal-note-section-general.tsx
  • app/components/version-di.tsx
  • app/app/bi/page.tsx
  • app/components/hero-section-general.tsx
  • app/components/version-bt.tsx
  • app/app/di/page.tsx
  • app/app/e/page.tsx
  • app/components/roi-section.tsx
  • app/components/floating-cta.tsx
  • app/components/beta-testimonials-section.tsx
  • app/components/version-e.tsx
  • app/components/sections/shared.tsx

The route pages still held the old cream content importing the deleted
sections/shared (build failed: module not found). Point /b /c /d and the root
fallback at the new themed version-{b,c,d} components. Also fix a stale
/bi /di reference in kit.tsx's header comment.
@Smetools
Smetools merged commit 0f509d3 into main May 31, 2026
3 checks passed
@Smetools
Smetools deleted the hassan-abcd-themed branch May 31, 2026 20:32
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.

1 participant