Repository navigation
fix(homepage): improve mobile carousel targets and contextual links #97
Description
Parent: #31
Outcome
Make the existing mobile Services/Work carousel pagination comfortably targetable and give the reported service/privacy links clear destination names, resolving the concrete navigation findings in the released production homepage audit.
Context and authorization
The authorized production audit after PR #94 found mobile accessibility score 97 and SEO score 92 in Google PageSpeed's mobile report. Desktop accessibility is 100 and SEO is 92 in the desktop report.
Expanded report findings identify:
- Small, closely spaced
button.h-2pagination targets inServicesCarouselandWorkCarousel, including Development & Integration, Revenue Flows & Marketing Ops, AI & Data Analysis, Scruggs Tire & Alignment, and I Heart PR Tours. Their visual dots are 8 px; enlarge the interactive hit areas rather than the decorative dots alone. - Generic
Learn moreservice-card labels for/services/strategy-brand,/services/development,/services/marketing, and/services/ai-datain an unscored identical-link-purpose diagnostic. This diagnostic is not by itself a proven WCAG failure; make the intended service destination explicit in the accessible link name. - The cookie notice's
Learn morelink to/privacyin the scored SEO link-text audit, on both profiles.
The existing specification §6.11 currently prescribes the cookie link's Learn more copy. Reconcile that contract with the chosen descriptive copy in the same implementation slice; do not silently create a specification mismatch.
Authority: #31's production audit, #93 and #95's released mobile interaction contracts, PR #94, the PageSpeed evidence above, and the 2026-09-18 UTC audit record on #31.
Scope
- Adjust the hit areas and spacing of existing mobile carousel pagination while preserving compact decorative dots, selected state, tab semantics, focus visibility, swipe behavior, and existing mobile layout.
- Give service links destination-specific accessible names and use clear privacy-link copy, preserving destinations and the consent behavior.
- Check repeated destinations for sensible, contextual link names rather than treating every differently worded contextual link as invalid.
- Update the affected specification contract and changelog.
Excluded: rebuilding the carousels, changing editorial/service copy, changing analytics consent, altering desktop natural scrolling, the #62 hero redesign, or claiming a complete manual accessibility certification from an automated score.
Acceptance criteria
- The reported mobile target-size/spacing failures are resolved with usable hit areas and visible focus at representative mobile widths.
- Mouse/touch, swipe, and keyboard pagination still select the expected card without horizontal overflow or layout regression.
- Reported service links have destination-specific accessible names, and the privacy link has descriptive text with the same
/privacydestination. - Consent semantics remain unchanged and the updated copy agrees with the specification.
- Automated target/link audits are rerun on the final production homepage; previously failing elements are absent. Any remaining diagnostics are explained with evidence.
- Required tests, build, typecheck, and lint pass; relevant desktop/mobile, theme, and focus checks are recorded.
- Production evidence is linked before closure. Passing these findings alone does not close company(epic): strengthen service proof and the company narrative #31's performance or unverified INP gate.
Dependencies and slice
Depends on: none.
Coordinates with #31, the accompanying mobile initial-paint repair, and completed #93/#95. Bundle this small repair with the initial-paint repair when review and validation stay coherent, while retaining acceptance evidence for both issues.
Classification basis
Priority P1 follows the parent release's mobile usability/quality requirements and visible production control defect. Effort S is an estimate for focused changes to the two pagination controls and link labels plus their verification; revise if testing exposes a broader interaction defect.
Linked audit and implementation slice
Complete production audit evidence. Bundle with #96 when validated and reviewed coherently; neither issue's inclusion closes it before its own acceptance criteria pass.
Implementation verification — PR #99
Implementation/local checklist items above are complete on source 71ccb6f, with all repeated results and validation and passing exact-source CI. These checks describe reviewed code and local evidence; they do not advertise merged/deployed behavior.
All 24 final cold HTTP/2 lab runs pass every numeric budget (mobile scores 98–99, LCP 2.12–2.34s; desktop scores 100). Original production transport is h2, and the controlled baseline uses the identical local proxy/settings. Earlier HTTP/1.1 and failed trials remain disclosed among 198 reports. Final production acceptance remains unchecked; this issue, parent #31 and the milestone remain open with needs: verification. Protected preview access requires explicit session authorization after automatic approval review rejected it.
Activity
cryptasian commentedon Sep 18, 2026
Implemented in draft #99: all seven mobile pagination controls retain stable 44-by-44px bounds and decorative 8px dots, selected-tab semantics, 2px focus outline and existing swipe behavior. Service links name their destinations; Privacy policy retains its existing href and Accept/Decline semantics.
Local 320/390px browser checks show no horizontal overflow; click/Enter select the expected cards. Synthetic touch and consent regression tests pass. All final local audit runs report accessibility and SEO 100; this is automated lab evidence, not complete accessibility certification. Detailed validation includes keyboard, theme, process-content and scripting-disabled server-response checks.
Standard Linux CI passes on implementation ee585d3 (run 35303019017): lint, typecheck, production dependency audit, seven contrast tests, 153 unit/editorial tests, eight Firebase integration tests, one optimized-publication/cache-convergence test and production build. Windows equivalent direct publication invocation passes; normal npm.cmd wrapper portability is separately tracked in #98. Existing moderate Firebase dependency findings remain on #42.
Vercel built the implementation preview successfully, but its alias requires sign-in. Authorized HTTPS preview checks and final production measurements remain pending; no protection setting was changed. No production deployment, issue/milestone closure or field-INP success is claimed.
#97 remains open for its final production verification; #99 uses non-closing references. #96's unresolved performance budget is explicitly retained in the same coherent repair slice.
cryptasian commentedon Sep 18, 2026
Implementation completed in PR #99, source 71ccb6f. The local implementation checklist is updated, and all 24 final cold HTTP/2 runs pass every approved numeric budget. Mobile scores are 98–99, LCP 2.12–2.34s, FCP 0.90–1.06s and CLS zero; all desktop scores are 100. Per-run evidence, retained failures and protocol/provenance details; exact-source CI passes all required checks.
44px targets, contextual service/privacy names and unchanged consent have local regression/browser evidence. This is local implementation evidence, not final production closure. Final production audits and the parent field-data gate remain open. Protected preview session access was rejected by automatic approval review pending explicit authorization, which has been requested.