fix(quotes): server-render every testimonial panel
- Dominant language
- Astro
- Stars
- 155
- Forks
- 177
- Avg merge
- 1d 20m
- Merged PRs (30d)
- 192
Description
Part of the Markdown for Agents Phase 1 epic (see #5652). kestra.io has Cloudflare Markdown for Agents enabled: `Accept: text/markdown` converts the SSR HTML at the edge, so defects in the HTML end up in what AI agents read. Cloudflare strips `nav`/`header`/`footer`/scripts/styles/inline SVG, ignores `aria-hidden` and empty `alt`, keeps `.visually-hidden` text and `display:none` content, and renders `
- ` as separate lines (all verified on production).
## Problem
`src/components/common/Quotes.vue` renders one `activeItem` figure and swaps text on click, so only 1 of 6 homepage testimonials exists in the HTML. The tab buttons also point `aria-controls` at `quote-panel-N` ids that do not exist.
## Scope
- Loop over `quotes` with `v-show="activeQuote === index"` panels carrying `:id="quote-panel-${index}"`, `role="tabpanel"` and `:aria-labelledby`.
- Keep prev/next buttons, tablist and dropdown as they are. Do not replace the carousel.
- Add `loading="lazy"` to the `bigLogoSrc` image so hidden panels do not fetch it (used by `versus/VsTestimonial.astro`).
## Done when
- `/` Markdown contains all six blockquotes and story links.
- Visual regression suite passes on `/`, `/vs/airflow`, `/pricing`, `/enterprise`.
- Note: `data-usal` fades will play once when a hidden panel is first shown; acceptable.
## Related
- KPI description-list issue (can be the same PR).
Contributor guide
Research direction
Start in src/components/common/Quotes.vue and compare its current activeItem rendering with the requested loop, IDs, ARIA attributes, and lazy image behavior; check versus/VsTestimonial.astro for bigLogoSrc usage. Run the visual regression suite for /, /vs/airflow, /pricing, and /enterprise, then verify that / Markdown contains all six blockquotes and story links.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- html
- Domain
- frontend, web-dev
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 78/100