Skip to content

Responsive & Lighthouse audit (1.00 mobile + desktop) + remove dormant blog engine#1

Merged
xergioalex merged 11 commits into
mainfrom
feature/responsive-quality-audit
Jun 2, 2026
Merged

Responsive & Lighthouse audit (1.00 mobile + desktop) + remove dormant blog engine#1
xergioalex merged 11 commits into
mainfrom
feature/responsive-quality-audit

Conversation

@xergioalex
Copy link
Copy Markdown
Member

PR: Responsive & Lighthouse audit (100 on mobile + desktop) + remove dormant blog engine

Repo: DailybotHQ/deepworkplan-website
Base: mainHead: feature/responsive-quality-audit
Create: https://github.com/DailybotHQ/deepworkplan-website/compare/main...feature/responsive-quality-audit?expand=1

Title:

Responsive & Lighthouse audit (1.00 mobile + desktop) + remove dormant blog engine

Summary

Two workstreams landed on this branch:

  1. Responsive & quality audit (PLAN_responsive_quality_audit, Tasks 1–9) — audit the whole site across breakpoints, get the codebase fully green, and drive Lighthouse to a perfect 1.00 in all four categories on both mobile and desktop.
  2. Remove the dormant blog engine (concurrent session) — the site is now a focused methodology + spec + kit documentation site (137 → 131 pages).

Results

Goal Outcome
Responsive (320→1920px, en+es) No overflow anywhere; reader Markdown tables now scroll on mobile instead of breaking layout
Codecheck biome clean · astro check 0 errors / 0 warnings · 64 tests · md parity · build OK
Lighthouse mobile 1.00 / 1.00 / 1.00 / 1.00 (gate exits 0)
Lighthouse desktop 1.00 all four categories on all 14 URLs (new config; gate exits 0)

Audit changes

  • Desktop Lighthouse coverage (new): lighthouserc.desktop.cjs (preset: 'desktop', full 14-URL set, 1.0 assertions) + lighthouse:desktop script. Both configs intentionally skip robots-txt (the site's robots.txt carries the IETF Content-Signal directive that Lighthouse's RFC-9309 audit rejects).
  • Reader table overflow: dependency-free rehype plugin src/lib/rehype-responsive-tables.mjs wraps every Markdown <table> in .table-responsive (mobile-scroll CSS already in global.css).
  • Accessibility — label-content-name-mismatch (was failing on all 14 URLs): fixed the header logo, the Origin "Learn about Dailybot" CTA, and the footer "Powered by Dailybot" link (localized aria-label, decorative logos alt="", decorative arrow/strapline aria-hidden).
  • Accessibility — heading-order (/contact/): contact-card titles h3 → h2 (visual unchanged) → /contact/ desktop a11y 0.98 → 1.00.
  • Performance: loading="lazy" on the four below-fold footer logos; corrected logo intrinsic dimensions to the real 270×160.
  • New skill: /responsive-lighthouse-audit captures the full audit playbook (cataloged).

Blog-engine removal

Removes blog components, routes (incl. /es), blog content collections, blog API endpoints, blog lib + search, blog tests/fixtures, and references in translations/middleware/content-config/layouts.

QA

git switch feature/responsive-quality-audit && pnpm install
pnpm run biome:check && pnpm run astro:check && pnpm run test && pnpm run md:check && pnpm run build
# No other lhci/dev server running (they collide on .lighthouseci):
pnpm run lighthouse          # mobile gate → exit 0
pnpm run lighthouse:desktop  # desktop gate → exit 0

Commits

d9cd059 baseline + desktop config · 885f9de green baseline · 795cb61 a11y brand links · c7e53f1 home verify · 2f660c8 reader tables + contact headings · 543f495 footer lazy-load · 723c060 remove dormant blog engine · 22e9793 add responsive-lighthouse-audit skill (+ 7a52445 theme default).

🤖 Generated with Claude Code

xergioalex and others added 10 commits June 2, 2026 00:31
…PLAN_responsive_quality_audit

Add desktop Lighthouse config (lighthouserc.desktop.cjs, desktop preset, full
14-URL set, 1.0 assertions) and a lighthouse:desktop npm script. Captures the
baseline: code quality fully green; Lighthouse mobile 1.0 (core URLs) and
desktop 1.0 on 13/14 (/contact/ a11y 0.98). Full prioritized findings in the
gitignored .dwp/ baseline report.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…- Task 2 of PLAN_responsive_quality_audit

No fixes required — the repository was already at a fully green baseline.
Re-ran all five validation commands (with the carried-over logo-dimension
edits present): biome clean, astro 0/0/0, 193 tests, md 110/110, build OK.
Empty commit kept for plan traceability; logo edits remain for Task 3.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…lor-scheme

First-time visitors now always get light mode regardless of the OS dark
preference; dark applies only when the user has explicitly toggled it (stored
as theme=dark). Remove the prefers-color-scheme detection from the first-load
init in all three layouts (Main/Showcase/Internal); stored preference still
wins, and the toggle is unchanged.

Also decouple the browser-chrome theme-color from the device: it now defaults
to light and is synced to the chosen theme by the init script and the toggle
(previously it followed prefers-color-scheme, which would dark the address bar
on a light page). Docs updated.

Gates: biome, astro:check 0 errors, test 193, build, md:check 110/110.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
… Task 3 of PLAN_responsive_quality_audit

Resolves the global Lighthouse label-content-name-mismatch a11y audit, which
spanned three labeled Dailybot/brand links:

- Header logo link: mark the decorative strapline aria-hidden so the accessible
  name (aria-label "Deep Work Plan") matches the visible wordmark.
- Origin "Learn about Dailybot" CTA: set logo imgs alt="" and wrap the decorative
  arrow in aria-hidden (the img alt injected a conflicting token).
- Footer "Powered by Dailybot": localize the previously hardcoded English
  aria-label to `${t.footer.poweredBy} Dailybot` and set logo imgs alt=""
  (the EN aria-label mismatched the ES visible text, failing /es/).

Also folds in the carried-over logo intrinsic-dimension corrections
(Header/Footer 270x160, matching the real PNGs — better aspect-ratio/CLS).

Verified: desktop Lighthouse label-content-name-mismatch now passes on all 14
URLs; every URL accessibility 1.0 except /contact/ 0.98 (heading-order, Task 5).
No regressions (biome/astro/tests/build green).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ask 4 of PLAN_responsive_quality_audit

Static + built-HTML responsive review of HomePage and all home sections: scaling
type, grids that step down (e.g. 2->sm:3->lg:5), stacking CTAs, wrapped comparison
table, constrained prose. No fixed-pixel widths, nowrap, or overflow-prone content.
The only genuine home defect (Origin label-content-name-mismatch) was already fixed
in Task 3, so no new home changes are needed. Empty commit for plan traceability.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… of PLAN_responsive_quality_audit

R1 — reader Markdown tables overflowed on mobile because nothing wrapped them.
Add a dependency-free rehype plugin (src/lib/rehype-responsive-tables.mjs) that
wraps every <table> in <div class="table-responsive">, wired into astro.config
markdown.rehypePlugins. The .table-responsive mobile-scroll CSS already existed
in global.css. Verified: every methodology/spec/kit reader table (EN + ES) is now
wrapped, so wide tables scroll instead of forcing the page wider.

R2 — ContactPage promoted the contact-method card titles from <h3> to <h2>. The
social section's label is a decorative Kicker (not a heading), so the <h3> skipped
a level (Lighthouse heading-order). text-lg styling keeps the visual identical;
/contact/ desktop accessibility goes 0.98 -> 1.00.

Result: desktop Lighthouse now 1.00 across all four categories on all 14 audited
URLs; mobile already 1.0. biome/astro/tests/md/build all green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…onsive_quality_audit

Add loading="lazy" to the four footer logo images (brand mark + "Powered by
Dailybot" logos). They sit below the fold on every page, so deferring them
addresses Lighthouse's offscreen-images opportunity and hardens mobile
Performance against sub-1.0 outliers without affecting the above-fold LCP
(header logos stay eager). Median Lighthouse is already 1.0 on both mobile and
desktop across all audited URLs; this is a defensive optimization.

Path-scoped commit: the concurrent blog-engine removal staged in the working
tree is owned by another active session and is left untouched.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Remove the dormant blog engine (components, pages/routes incl. /es, blog content
collections, blog API endpoints, blog lib + search, blog tests and fixtures) and
the related references in translations, middleware, content config, BaseHead, and
layouts. The site is now a focused methodology + spec + kit documentation site;
page count drops from 137 to 131.

Committed together with the responsive/quality audit per request (work performed
concurrently by a separate session).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…responsive_quality_audit

Skills & Agents Discovery output: capture the battle-tested responsive +
Lighthouse audit procedure as a reusable Tier-2 skill (desktop LH config +
dual-form-factor sweep, the 9-breakpoint walk, and the fix playbook:
.table-responsive table wrapping, label-content-name-mismatch, heading-order,
lazy below-fold images, the intentional robots-txt/SEO skip, lhci concurrency
caveat). Registered in the skills/agents catalog.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The blog/search removal deleted the search:budgets script and
scripts/check-search-performance-budgets.mjs, but the Code Check workflow still
ran `pnpm run search:budgets` → ERR_PNPM_NO_SCRIPT (CI red). Remove that step and
add the desktop Lighthouse gate (`pnpm run lighthouse:desktop`) alongside mobile,
so CI now asserts 1.0 on both form factors.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@cloudflare-workers-and-pages
Copy link
Copy Markdown

cloudflare-workers-and-pages Bot commented Jun 2, 2026

Deploying deepworkplan-website with  Cloudflare Pages  Cloudflare Pages

Latest commit: 2f6a9eb
Status: ✅  Deploy successful!
Preview URL: https://95f74dc8.deepworkplan-website.pages.dev
Branch Preview URL: https://feature-responsive-quality-a.deepworkplan-website.pages.dev

View logs

Running desktop Lighthouse over all 14 URLs (×3 runs) was too heavy for GitHub
Actions. Split each form factor into a lean base gate and a full sweep:

- lighthouse           → mobile base  (lighthouserc.cjs, 4 core URLs)        [CI]
- lighthouse:desktop   → desktop base (lighthouserc.desktop.cjs, 4 core URLs)[CI]
- lighthouse:full          → mobile full   (lighthouserc.full.cjs, 14 URLs)   [manual]
- lighthouse:desktop:full  → desktop full  (lighthouserc.desktop.full.cjs, 14)[manual]

CI (code_check.yml) runs only the two base gates (8 URLs total instead of 18),
keeping Actions fast while still asserting 1.0 on mobile + desktop over the core
pages. Use the :full commands locally before large UI changes. Skill doc updated.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@xergioalex xergioalex merged commit 973eef4 into main Jun 2, 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