Commit e3fa6f0
* audit(website): SEO findings for gosqlx.dev
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* audit(website): security findings for gosqlx.dev
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* audit(website): functional findings
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* audit(website): content findings for 2026-03-17
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>
* audit(website): accessibility findings
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* audit(website): visual/responsive findings for 2026-03-17
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>
* fix: allow Sentry BSL and Rollup 0BSD licenses in dependency review
* fix(website): audit quick-wins — canonical, JSON-LD, security headers, 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>
* fix(website): make not-found.tsx a server component for proper 404 HTTP status (issue #397)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix(website): always-visible animations and mobile overflow (issues #396, #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>
* fix(website): color contrast WCAG AA and keyboard-accessible code blocks (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>
* fix(website): WCAG AA color contrast — nav links, footer, sidebar (issue #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>
* fix(website): fix broken .md links in docs and add missing blog post (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>
* perf(website): add WASM preload hint and versioned SW cache key (issues #402, #403)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* seo(website): add JSON-LD Article to blog posts and BreadcrumbList to docs pages (issue #404)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix(website): skip SW hash update when WASM binary absent in CI
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.
* fix(ci): build WASM before website build in Lighthouse CI
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.
* fix(website): fix playground accessibility for Lighthouse ≥0.95 (WCAG tabpanel, labels, ARIA)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix(website): simplify SqlEditor aria-label — remove redundant fallbacks
* fix(website): fix WCAG AA contrast in playground — slate-500/600 → slate-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
* fix(a11y): fix 4 Lighthouse accessibility failures blocking CI
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>
---------
Co-authored-by: Ajit Pratap Singh <ajitpratapsingh@Ajits-Mac-mini-2655.local>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 353cae1 commit e3fa6f0
File tree
55 files changed
+1381
-133
lines changed- .github/workflows
- docs/audits/2026-03-17-website-audit
- screenshots
- website
- public
- images
- src
- app
- blog/[slug]
- docs/[...slug]
- playground
- components
- docs
- home
- layout
- playground
- ui
- content/blog
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
55 files changed
+1381
-133
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
13 | 13 | | |
14 | 14 | | |
15 | 15 | | |
16 | | - | |
| 16 | + | |
17 | 17 | | |
18 | 18 | | |
19 | 19 | | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
20 | 32 | | |
21 | 33 | | |
22 | 34 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
168 | 168 | | |
169 | 169 | | |
170 | 170 | | |
171 | | - | |
| 171 | + | |
172 | 172 | | |
173 | | - | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
174 | 176 | | |
175 | 177 | | |
176 | 178 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
8 | | - | |
| 8 | + | |
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
| |||
508 | 508 | | |
509 | 509 | | |
510 | 510 | | |
511 | | - | |
| 511 | + | |
512 | 512 | | |
513 | 513 | | |
514 | 514 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
0 commit comments