Skip to content

[landing-fixes] Audit fixes: structure, themes, colors, a11y - #24

Merged
Smetools merged 1 commit into
mainfrom
hassan-landing-fixes
May 31, 2026
Merged

[landing-fixes] Audit fixes: structure, themes, colors, a11y#24
Smetools merged 1 commit into
mainfrom
hassan-landing-fixes

Conversation

@Smetools

@Smetools Smetools commented May 31, 2026

Copy link
Copy Markdown
Collaborator

Applies the sub-agent audit findings across structure, color, and accessibility. All four themes keep the switcher; the fixes make it coherent instead of removing it.

Structure (shared shell → affects A/B/C/D)

  • Problem section added (dark) — uses the POSITIONING.md approved sentence as the turn. Honest failure-mode framing, no un-shipped claims.
  • Integrations band added — MCP (live) · Odoo (live) · Jira/Asana/ClickUp (roadmap). Was buried in an eyebrow + one FAQ.
  • Testimonials re-added — the 3 real customer quotes (Plementus, BI Solutions, Ariika) that got dropped in the earlier cleanup. = social proof, the 🔐 Add branch protection: Only Abdelaziz can push to master #1 missing lever.
  • Reordered: hero → problem → signature → process → integrations → security → results → testimonials → FAQ → close. Security raised above results (it's a primary objection for this buyer).
  • Two-column hero — product screenshot beside the headline ≥980px, killing the ~37% empty right space you flagged; stacks below 980px.
  • Hero trust strip on B & D + honest pricing note ("Free to start. Partner pricing on a quick call.") on the close.

Color / theme

  • Accent locked to verified-green across all 4 themes (was blue on operator-dark, oxblood on library). Oxblood was the product's own red=risk/unverified color — semantically inverted. Dark sections use a bright green (#4ade80, 9–11:1) so contrast holds; same hue = one identity.
  • Mono body/title killed on both operator themes (was JetBrains Mono for all prose — the costume-technical AI-slop tell). Now Space Grotesk + Inter; mono kept for labels/stats only.

Accessibility (computed WCAG)

  • Hero sub/bullets raised from .35–.5 alpha (failing 2.4–4.5:1) to .66–.85 → now 5–8:1 in every theme. A trust product shipping sub-AA proof-bullets was the on-the-nose contradiction.
  • library muted #7E6E59→#675844 (4.18→5.8); operator card-muted bumped to clear 4.5:1.
  • Fixed the baseline theme-dot bug (advertised grey for a green theme).

NOT done (deliberate, your call)

  • Stats kept — you confirmed the ROI numbers are real, so I did not remove them (the audit flagged them only because it didn't know).
  • Theme switcher kept — audit suggested dropping it; you want the themes, so I fixed the brand-equity problem instead (locked accent) rather than removing it.
  • Pricing — added an honest soft signal, not a real price. Drop in the real number when ready.

Test plan

  1. /a /b /c /d — cycle all 4 themes; accent is green everywhere, no mono paragraphs, hero is two-column on desktop.
  2. New sections render (problem, integrations, testimonials) in all variants.
  3. Contrast: hero sub-text + muted text legible in every theme.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Added Problem section highlighting key challenges
    • Added Integrations section showcasing supported tools and platforms
    • Added Testimonials section with customer feedback
    • Enhanced hero section with trust statements and feature highlights
    • Enhanced closing signature with explanatory note
  • Style

    • Updated theme colors and visual styling for improved contrast

Structure (shared shell — all variants):
- Add a Problem section (dark) using the approved POSITIONING.md sentence as
  the turn ("Most AI agents act on what the AI thinks is true… Knowcap agents
  act only on what a human said is true"). Honest failure-mode, no vapor.
- Add an Integrations band surfacing MCP (live) / Odoo (live) / Jira·Asana·
  ClickUp (roadmap) — was buried in an eyebrow + FAQ.
- Re-add the 3 real customer testimonials (social proof) — removed in cleanup.
- Reorder: hero → problem → signature → process → integrations → security →
  results → testimonials → FAQ → close. Security raised above results.
- Two-column hero (text + framed product shot side-by-side ≥980px) — kills the
  ~37% empty right side; stacks below 980px.
- Hero trust strip ("Built by an Odoo partner · MCP-native · full audit trail")
  on B and D. Honest pricing note on the close CTA.

Color / theme (from the contrast + brand-equity audit):
- Lock the accent to verified-GREEN across all 4 themes (was blue on
  operator-dark, oxblood on library — both broke "green = verified" and oxblood
  collided with the product's own red=risk/unverified semantic). Dark sections
  use a bright verified-green (--t-accent-bright #4ade80, 9-11:1 on the dark
  heroes) so contrast holds; same hue keeps one identity.
- Kill mono BODY + mono TITLE on operator-dark and operator-light (was
  JetBrains Mono for all prose — the "costume-technical" AI-slop tell). Now
  Space Grotesk display + Inter body; mono kept for labels/stats only.
- Fix sub-AA text: hero sub/bullets raised to ~.66-.85 alpha (were .35-.5,
  failing 2.4-4.5:1) → now 5-8:1 in every theme; library muted #7E6E59→#675844
  (was 4.18, now 5.8); operator card-muted bumped to clear 4.5:1.
- Fix the baseline switcher-dot bug (advertised #1a1a1a/grey for a green theme).

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 9:48pm

@coderabbitai

coderabbitai Bot commented May 31, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

This PR extends the landing page marketing narrative by introducing three new impeccable sections (Problem, Integrations, Testimonials), integrating them into the themed shell with expanded CSS styling, updating the theme color palette, and adding trust blocks to hero component variants.

Changes

Landing Page Marketing Sections

Layer / File(s) Summary
New Marketing Sections
app/components/impeccable/kit.tsx
CloseSection gains an explanatory note beneath CTA buttons. Three new exported sections are added: ProblemSection (dark narrative using Mark highlight), IntegrationsSection (data-driven list of integrations), and TestimonialsSection (customer testimonial cards), all using SectionReveal animation wrappers.
Theme Styling & Section Integration
app/components/impeccable/themed-shell.tsx
ProblemSection is imported and rendered after the hero. THEME_OVERRIDES is extended with dark accent contrast rules (bright green #4ade80), desktop two-column hero layout, and dedicated styling for trust strip, problem, integrations, testimonials, and close sections. A new --t-accent-bright theme variable is added.
Theme Color Palette Updates
app/components/theme-switcher.tsx
THEMES array and THEME_MAP color values are updated across baseline, operator-dark, and library themes, adjusting accent, border, hero gradient, badge, and typography opacity fields. No logic or behavior changes.
Hero Trust Blocks
app/components/version-b.tsx, app/components/version-d.tsx
Both version variants receive new animated trust subsections. version-b adds four trust statements with decorative dots; version-d adds three trust statements below the CTA row. Both use the existing rise reveal animation.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

  • Knowcap-V2/knowcap-landing#19: Introduces the impeccable kit foundation; this PR extends it with new sections (Problem/Integrations/Testimonials) and updates CloseSection.
  • Knowcap-V2/knowcap-landing#15: Updates theme color tokens in theme-switcher; this PR overlaps with palette adjustments to accent and badge colors.

Poem

🐰 Three new voices join the chorus,
Problem, trust, and integrations soar us—
With verdant accents and themed embrace,
The landing page finds its marketing grace!

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 57.14% 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 accurately summarizes the main changes: audit-driven structural improvements, theme/color standardization (verified green accent), and accessibility fixes across all landing page variants.
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 docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch hassan-landing-fixes

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.

Actionable comments posted: 3

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

Inline comments:
In `@app/components/impeccable/kit.tsx`:
- Line 585: The paragraph uses class "ve-close-note" which is being overridden
by the more specific ".ve-close p" selector; rename the class in
app/components/impeccable/kit.tsx (change "ve-close-note" to a unique name such
as "ve-close__note") and update the corresponding CSS rule in themed-shell.tsx
(replace or add the ".ve-close__note" rule where the current ".ve-close-note"
rule is defined around the noted spot) so the intended small mono fine-print
styling applies and no longer conflicts with ".ve-close p".

In `@app/components/impeccable/themed-shell.tsx`:
- Line 69: The CSS selector list in themed-shell.tsx mixes dark-scoped and
unscoped rules so .ve-seal and .ve-docid .ve-mono are unintentionally using
--t-accent-bright everywhere; update the selector so those two are scoped under
.ve-dark (e.g. change ".ve-docid .ve-mono" and ".ve-seal" to ".ve-dark .ve-docid
.ve-mono" and ".ve-dark .ve-seal") so only the dark theme uses --t-accent-bright
(this prevents bright green from affecting the light-card exhibit rendered by
version-b.tsx / OdooDemo).
- Line 117: The rule for .ve-close-note is being overridden by .ve-close p due
to lower specificity; update the selector to increase specificity (for example
change it to .ve-close .ve-close-note) and keep the same declarations
(font-family, font-size, letter-spacing, color, margin) so the note renders as
the intended small mono fine-print instead of inheriting .ve-close p styles.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 2b85d264-d35e-4b59-92fe-2729eed8d616

📥 Commits

Reviewing files that changed from the base of the PR and between c6aa66e and 2ce5644.

📒 Files selected for processing (5)
  • app/components/impeccable/kit.tsx
  • app/components/impeccable/themed-shell.tsx
  • app/components/theme-switcher.tsx
  • app/components/version-b.tsx
  • app/components/version-d.tsx

<a className="ve-btn ve-btn--primary" href={`${APP_URL}/register`}>Get Started Free <Arrow /></a>
<Link className="ve-btn ve-btn--ghost" href="/book">Book a Demo</Link>
</div>
<p className="ve-close-note">Free to start. Partner pricing on a quick call.</p>

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

ve-close-note styling is overridden — see root cause in themed-shell.tsx.

This <p> also matches .ve-close p (more specific), so its intended small mono fine-print styling won't apply. Root cause and fix are flagged on the .ve-close-note rule in themed-shell.tsx (Line 117).

🤖 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/kit.tsx` at line 585, The paragraph uses class
"ve-close-note" which is being overridden by the more specific ".ve-close p"
selector; rename the class in app/components/impeccable/kit.tsx (change
"ve-close-note" to a unique name such as "ve-close__note") and update the
corresponding CSS rule in themed-shell.tsx (replace or add the ".ve-close__note"
rule where the current ".ve-close-note" rule is defined around the noted spot)
so the intended small mono fine-print styling applies and no longer conflicts
with ".ve-close p".

stays the brand constant across themes). */
.ve-dark .ve-mark{color:var(--t-accent-bright);background-image:linear-gradient(color-mix(in srgb,var(--t-accent-bright) 26%,transparent),color-mix(in srgb,var(--t-accent-bright) 26%,transparent))}
.ve-dark .ve-mark--ink{color:var(--t-accent-bright);background-image:linear-gradient(color-mix(in srgb,var(--t-accent-bright) 22%,transparent),color-mix(in srgb,var(--t-accent-bright) 22%,transparent))}
.ve-dark .ve-step-no,.ve-dark .ve-step .ve-step-tag,.ve-docid .ve-mono,.ve-seal,.ve-dark .ve-faq .ve-q-sign{color:var(--t-accent-bright)}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Scope .ve-seal (and .ve-docid .ve-mono) under .ve-dark.

This list mixes dark-scoped and unscoped selectors. .ve-seal is unscoped, so it overrides the base --t-accent rule (Line 57) with the bright green --t-accent-bright everywhere — including the on-paper exhibit seal (version-b.tsx OdooDemo, Line 96), where bright green on a light card likely fails the contrast targets this PR is tightening.

🛡️ Proposed fix
-.ve-dark .ve-step-no,.ve-dark .ve-step .ve-step-tag,.ve-docid .ve-mono,.ve-seal,.ve-dark .ve-faq .ve-q-sign{color:var(--t-accent-bright)}
+.ve-dark .ve-step-no,.ve-dark .ve-step .ve-step-tag,.ve-dark .ve-docid .ve-mono,.ve-dark .ve-seal,.ve-dark .ve-faq .ve-q-sign{color:var(--t-accent-bright)}
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
.ve-dark .ve-step-no,.ve-dark .ve-step .ve-step-tag,.ve-docid .ve-mono,.ve-seal,.ve-dark .ve-faq .ve-q-sign{color:var(--t-accent-bright)}
.ve-dark .ve-step-no,.ve-dark .ve-step .ve-step-tag,.ve-dark .ve-docid .ve-mono,.ve-dark .ve-seal,.ve-dark .ve-faq .ve-q-sign{color:var(--t-accent-bright)}
🤖 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 69, The CSS selector list
in themed-shell.tsx mixes dark-scoped and unscoped rules so .ve-seal and
.ve-docid .ve-mono are unintentionally using --t-accent-bright everywhere;
update the selector so those two are scoped under .ve-dark (e.g. change
".ve-docid .ve-mono" and ".ve-seal" to ".ve-dark .ve-docid .ve-mono" and
".ve-dark .ve-seal") so only the dark theme uses --t-accent-bright (this
prevents bright green from affecting the light-card exhibit rendered by
version-b.tsx / OdooDemo).

.ve-quote-org{font-family:var(--t-fmono);font-size:.7rem;letter-spacing:.06em;color:var(--t-ink-prose-dim)}

/* Close section pricing note */
.ve-close-note{margin:22px auto 0;font-family:var(--t-fmono);font-size:.72rem;letter-spacing:.04em;color:var(--t-ink-prose-dim)}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

.ve-close-note is too weak to override .ve-close p.

.ve-close p (kit, specificity 0,1,1) outranks .ve-close-note (0,1,0), so the note keeps the large body font-size and margin:0 auto 38px instead of the intended small mono fine-print. Raise specificity.

🐛 Proposed fix
-.ve-close-note{margin:22px auto 0;font-family:var(--t-fmono);font-size:.72rem;letter-spacing:.04em;color:var(--t-ink-prose-dim)}
+.ve-close .ve-close-note{margin:22px auto 0;font-family:var(--t-fmono);font-size:.72rem;letter-spacing:.04em;color:var(--t-ink-prose-dim)}
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
.ve-close-note{margin:22px auto 0;font-family:var(--t-fmono);font-size:.72rem;letter-spacing:.04em;color:var(--t-ink-prose-dim)}
.ve-close .ve-close-note{margin:22px auto 0;font-family:var(--t-fmono);font-size:.72rem;letter-spacing:.04em;color:var(--t-ink-prose-dim)}
🤖 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 117, The rule for
.ve-close-note is being overridden by .ve-close p due to lower specificity;
update the selector to increase specificity (for example change it to .ve-close
.ve-close-note) and keep the same declarations (font-family, font-size,
letter-spacing, color, margin) so the note renders as the intended small mono
fine-print instead of inheriting .ve-close p styles.

@Smetools
Smetools merged commit 634752d into main May 31, 2026
3 checks passed
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