fix(website): complete site audit — animation, a11y, SEO, security, perf, content fixes (#396–#405)#406
Conversation
|
Claude finished @ajitpratap0's task —— View job PR Review: Website Audit Quick-WinsThis is an excellent and comprehensive website audit implementation! The PR addresses critical SEO, security, and accessibility issues with well-structured fixes. Here's my detailed review: Review Checklist
✅ Excellent WorkSecurity Improvements (next.config.ts:18-40)
SEO Enhancements
Accessibility Compliance
|
8101353 to
a734bf1
Compare
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds content audit covering version currency, blog post coverage gaps, docs completeness, link health, unused large SVG assets, and redirect configuration for gosqlx.dev. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Captures screenshots at 320, 390, 768, 1280, 1440px across homepage, playground, docs, blog, and benchmarks pages. Documents critical issues including homepage sections invisible below hero (scroll-animation bug), widespread horizontal overflow at 320–390px, benchmarks table hidden on mobile, and stats counters stuck at zero. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…, skip-nav, broken links, unused assets - Fix robots.txt sitemap URL (sitemap-index.xml → sitemap.xml) so Googlebot can discover sitemap - Delete 1.28 MB of unused logo assets (logo-text.svg 931KB, logo.svg 309KB, logo.png 44KB) - Fix GitHub owner links site-wide: ajitpsingh → ajitpratap0 in Footer.tsx and Navbar.tsx - Add HSTS (max-age=31536000; includeSubDomains; preload) and Permissions-Policy headers - Remove unsafe-eval from CSP script-src; add frame-ancestors/base-uri/form-action directives - Add alternates.canonical to layout (homepage), docs pages, and blog pages - Add JSON-LD SoftwareApplication structured data in root layout - Fix og:url on docs and blog pages to use per-page URLs - Add skip-to-main-content link (WCAG 2.4.1) and wrap page content in <main id="main-content"> - Remove broken Vercel Analytics component (was causing 2x 404 console errors per page) - Add audit SUMMARY.md with all findings and GitHub issue references (#396–#405) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…TP status (issue #397) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
, #401) - FadeIn: replace whileInView with animate so sections are always visible after mount, regardless of IntersectionObserver timing or SSR context - AnimatedCounter: remove useInView dependency; start spring animation via setTimeout after mount so counters always count up - globals.css: add overflow-x: hidden to html and body to prevent horizontal scroll at any viewport width - Hero: responsive heading (text-3xl sm:text-5xl md:text-6xl lg:text-7xl), flex-wrap on button row, stacked divider fix for code preview grid on mobile - TerminalMockup: add overflow-x-auto and break-all so long command strings don't overflow at 320px Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…cks (issues #399, #400) - Navbar: text-zinc-400 → text-zinc-300 for all nav links and GitHub icon (desktop + mobile) - Footer: text-zinc-500 → text-zinc-400 for description and links; text-zinc-600 → text-zinc-400 for copyright - Sidebar: text-zinc-500 → text-zinc-400 for category heading buttons - mdx-components: add tabIndex={0} and focus:ring-2 to <pre> for keyboard-scrollable code blocks Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…sue #399) - Navbar: text-zinc-400 → text-zinc-300 for all nav links and GitHub icon (desktop + mobile), ~8.7:1 contrast - Footer: text-zinc-500 → text-zinc-400 for description and links; text-zinc-600 → text-zinc-400 for copyright - Sidebar: text-zinc-500 → text-zinc-400 for category heading buttons Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…(issues #398, #405) - Fix relative docs/MIGRATION.md link in CHANGELOG.md (v1.9.2 section) to use absolute GitHub URL, resolving 404 in rendered blog post - Fix CHANGELOG.md v1.12.1 header using hyphen separator instead of em-dash, causing split-changelog.js to skip the entry (regex expects em-dash) - Regenerate all 15 blog posts; v1-12-1.md now generated correctly Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… docs pages (issue #404) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
a734bf1 to
cf79b3e
Compare
|
Claude finished @ajitpratap0's task —— View job PR Review: Website Audit ImplementationI've conducted a comprehensive review of this website audit implementation PR. This is an excellent and thorough approach to addressing critical SEO, security, and accessibility issues. Here's my detailed analysis: Review Tasks
✅ Excellent WorkSecurity Improvements (
|
postbuild crashes with ENOENT when gosqlx.wasm is not present (Lighthouse CI, dependency review, etc.). Guard with existsSync so the build succeeds in environments that don't ship the binary.
|
Claude finished @ajitpratap0's task —— View job PR Review: Website Audit ImplementationI'll conduct a comprehensive code review of this website audit implementation PR, focusing on the specific areas you requested. Review Checklist
✅ Excellent WorkThis is a comprehensive and well-executed website audit implementation that addresses critical security, SEO, and accessibility concerns. The systematic approach to fixing all 10 audit findings is commendable. Security Improvements (
|
The postbuild script hashes public/wasm/gosqlx.wasm to stamp a content-addressed cache key into the service worker. Lighthouse CI was missing the Go + WASM build steps that website.yml already has, so the binary was absent and the build crashed with ENOENT. Added: Setup Go 1.26 → make build in wasm/ → copy binary to public/wasm/ Reverted the existsSync guard hack added in the previous commit. Bumped timeout to 15m to accommodate the Go build.
|
Claude finished @ajitpratap0's task —— View job PR Review: Website Audit ImplementationI've conducted a comprehensive code review of this website audit implementation PR, focusing on the specific areas you requested. This is an excellent and thorough approach to addressing critical SEO, security, and accessibility issues. Review Checklist
✅ Excellent WorkThis is a comprehensive and well-executed website audit implementation that addresses critical security, SEO, and accessibility concerns. The systematic approach to fixing all 10 audit findings is commendable. Security Improvements (
|
… tabpanel, labels, ARIA) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
Claude finished @ajitpratap0's task —— View job PR Review: Website Audit ImplementationI've conducted a comprehensive code review of this website audit implementation PR, focusing on the specific areas you requested. This is an excellent and thorough approach to addressing critical SEO, security, and accessibility issues. Review Checklist
✅ Excellent WorkThis is a comprehensive and well-executed website audit implementation that addresses critical security, SEO, and accessibility concerns. The systematic approach to fixing all 10 audit findings is commendable. Security Improvements (
|
|
Claude finished @ajitpratap0's task —— View job PR Review: Website Audit ImplementationI've conducted a comprehensive code review of this website audit implementation PR, focusing on the specific areas you requested. This is an excellent and thorough approach to addressing critical SEO, security, and accessibility issues. Review Checklist
✅ Excellent WorkThis is a comprehensive and well-executed website audit implementation that addresses critical security, SEO, and accessibility concerns. The systematic approach to fixing all 10 audit findings is commendable. Security Improvements (
|
…ate-400 All text-slate-500, text-slate-600, and text-zinc-500 classes in playground components render ~4.19:1 contrast on the #09090b background, failing WCAG AA (requires 4.5:1 for small text). Bumped to slate-400/zinc-400 which gives ~8:1. Also removed aria-controls from inactive tab buttons — they were pointing to tabpanel IDs that don't exist in the DOM (only the active panel is rendered), which violates aria-valid-attr-value. Files: Playground.tsx, AstTab.tsx, LintTab.tsx, AnalyzeTab.tsx, FormatTab.tsx, WasmErrorBoundary.tsx
|
Claude finished @ajitpratap0's task —— View job PR Review: Website Audit ImplementationI've conducted a comprehensive code review of this website audit implementation PR, focusing on the specific areas you requested. This is an excellent and thorough approach to addressing critical SEO, security, and accessibility issues. Review Checklist
✅ Excellent WorkThis is a comprehensive and well-executed website audit implementation that addresses critical security, SEO, and accessibility concerns. The systematic approach to fixing all 10 audit findings is commendable. Security Improvements (
|
Based on Lighthouse report artifact analysis, 4 weighted audits were failing on /playground: 1. aria-input-field-name (weight=7): CodeMirror's cm-content[role=textbox] had no accessible name. Fixed with EditorView.contentAttributes.of() to pass aria-label directly to the cm-content element. 2. color-contrast (weight=7): oneDark theme's coral (#e06c75) on #282c34 background yields 4.38:1 ratio (fails WCAG AA 4.5:1). Override with custom HighlightStyle (#e87980 → ~5.07:1 contrast) placed before oneDark for higher CM6 precedence. 3. heading-order (weight=3): Footer h3 elements skipped h2 after h1 in Playground, failing sequential heading order. Changed footer section labels from h3 to h2. 4. image-redundant-alt (weight=1): Logo images had alt="GoSQLX" while parent links also contained "GoSQLX" text (redundant). Changed to alt="" (decorative) in Navbar and Footer. Also adds @lezer/highlight as direct dependency (was transitive). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
Claude finished @ajitpratap0's task —— View job PR Review: Website Audit ImplementationI've conducted a comprehensive code review of this website audit implementation PR, focusing on the specific areas you requested. This is an excellent and thorough approach to addressing critical SEO, security, and accessibility issues. Review Checklist
✅ Excellent WorkThis is a comprehensive and well-executed website audit implementation that addresses critical security, SEO, and accessibility concerns. The systematic approach to fixing all 10 audit findings is commendable. Security Improvements (
|
Summary
Full implementation of all 10 audit findings from the 2026-03-17 GoSQLX website audit.
Issues Closed
FadeInchanged fromwhileInViewtoanimate(invisible sections fixed); mobile horizontal overflow withoverflow-x: hiddennot-found.tsxmade a server component so Next.js returns HTTP 404 (was returning 200)split-changelog.jsgenerates the blog posttabIndex={0}+ focus ring on<pre>code blocks for keyboard accessibility (WCAG 2.1.1)AnimatedCounteruseInViewreplaced withsetTimeout(200ms)so counters animate on load<link rel="preload" as="fetch">added to playground pagepostbuildscript auto-stamps on every buildTechArticleadded to blog posts;BreadcrumbListadded to docs pagesAlso included (from quick-wins PR base)
alternatesin layout metadataSoftwareApplicationJSON-LD in root layoutunsafe-evalremoved,frame-ancestors/base-uri/form-actionadded)ajitpsingh→ajitpratap0)robots.txtsitemap URL fixednot-found.tsxserver component (HTTP 404)Test plan
npm run build/playgroundWASM loads without errors; SW cache key matches binary hash/docs/getting-startedhas BreadcrumbList JSON-LD in page source/blog/v1-12-1exists and renders correctly/404-page-that-doesnt-existreturns HTTP 404 status🤖 Generated with Claude Code