Skip to content

Agent readability (a14y) fixes: sitemap lastmod, JSON-LD dateModified, category/doc descriptions#546

Merged
worldsoup merged 5 commits into
mainfrom
a14y-agent-readability-fixes
Jul 10, 2026
Merged

Agent readability (a14y) fixes: sitemap lastmod, JSON-LD dateModified, category/doc descriptions#546
worldsoup merged 5 commits into
mainfrom
a14y-agent-readability-fixes

Conversation

@worldsoup

Copy link
Copy Markdown
Contributor

Summary

Fixes from an a14y (agent-readability) audit run against https://www.dragonflydb.io/docs (score 68/100, 200 pages sampled). Companion to dragonflydb/website-cms#242 / #243, which covered the marketing site.

  • Enable sitemap lastmod (docusaurus.config.mjs): the sitemap plugin's lastmod option defaulted to disabled, so sitemap.xml had zero <lastmod> tags across all 443 entries even though Docusaurus already computes real git-based lastUpdatedAt per page (showLastUpdateTime was already on). One-line config fix — verified locally: 422/443 URLs now carry a real <lastmod>.
  • Per-page JSON-LD dateModified: new src/theme/DocItem/Layout and src/theme/DocCategoryGeneratedIndexPage wrappers emit a WebPage JSON-LD node with dateModified, sourced from Docusaurus's real git-based metadata for doc pages, falling back to build time for auto-generated category pages.
  • Category page descriptions: added link.description to all 35 docs/**/_category_.yml files that were missing one (34 had none at all).
  • Doc page descriptions: added description: frontmatter to 61 of 62 markdown files missing one (the 62nd, _migration_options.mdx, is a Docusaurus partial excluded from routing by its leading underscore, so it was skipped as not applicable).

Correction made along the way

I initially thought BreadcrumbList JSON-LD was missing site-wide and started adding one — turned out Docusaurus 3.x's DocBreadcrumbs component already emits an accurate one out of the box (useBreadcrumbsStructuredData). My first "it's missing" finding was a bug in my own verification regex (didn't account for react-helmet's data-rh attribute), not an actual gap. Removed the redundant breadcrumb code before committing — only the dateModified addition, which is genuinely new, made it into the commit.

Explicitly out of scope (per the audit plan)

  • Markdown-mirror system (.md mirrors, content negotiation, alternate <link>) — large separate project, default-skip.
  • llms-txt.md-extensionsllms.txt is served by website-cms, not this repo.
  • Glossary/terminology page — new content, not code.
  • Adding ≥3 headings to short single-command reference pages — explicit default-skip.
  • html.text-ratio — would mean stripping legitimate sidebar/nav/TOC chrome; not proposing a fix.
  • /docs/search's compounding failures — Docusaurus's built-in search page, would need swizzling the search plugin; low value.

Test plan

  • yarn build succeeds with no errors after every change
  • Verified in the build output: sitemap.xml lastmod coverage (422/443), JSON-LD WebPage/dateModified on both a doc page and a category page with no duplicate/conflicting structured data, category page meta/og descriptions, and doc page meta/og descriptions across multiple sampled pages

🤖 Generated with Claude Code

Nicholas Gottlieb and others added 4 commits July 10, 2026 12:24
Docusaurus already computes real, git-based lastUpdatedAt per page
(showLastUpdateTime was already on) but the sitemap plugin's lastmod
option defaults to null/disabled, so sitemap.xml had zero <lastmod>
tags across all 443 entries. Resolves the a14y sitemap-xml.has-lastmod
check -- verified locally: 422/443 URLs now carry a real <lastmod>
(the remainder are generated routes like /docs/search with no
underlying markdown file to source a date from).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Wraps DocItem/Layout and DocCategoryGeneratedIndexPage to emit a
WebPage JSON-LD node with dateModified, sourced from Docusaurus's own
git-based lastUpdatedAt metadata for real doc pages (already computed
since showLastUpdateTime was on), falling back to build time for
auto-generated category index pages. Resolves the a14y
html.json-ld.date-modified check.

Note: this does NOT add a BreadcrumbList -- Docusaurus 3.x's
DocBreadcrumbs component already emits an accurate one (real sidebar
titles) on every doc/category page via its built-in
useBreadcrumbsStructuredData hook. An earlier manual check of a
production page appeared to show this missing, but that was a bug in
my own regex (didn't account for react-helmet's data-rh attribute) --
verified with a corrected check that it's already there.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Adds a link.description to every docs/**/_category_.yml that was
missing one (only 1 of 36 categories already had it). Docusaurus
surfaces this as both the meta description and og:description on the
auto-generated category index page. Resolves the a14y
html.meta-description and html.og-description checks for category
pages -- verified in the build output that both tags render with the
correct content on multiple category pages.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Adds a description: frontmatter field to every markdown doc that was
missing one (62 total found; docs/cloud/migrate/_migration_options.mdx
excluded since its leading underscore means Docusaurus treats it as a
partial, not a routed page). Docusaurus surfaces this as both the meta
description and og:description tags. Resolves the remaining a14y
html.meta-description and html.og-description failures -- verified in
the build output on several pages (about/faq, managing-dragonfly/acl,
cloud/sso/okta).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@vercel

vercel Bot commented Jul 10, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
documentation Ready Ready Preview, Comment Jul 10, 2026 7:50pm

Request Review

@qodo-free-for-open-source-projects

Copy link
Copy Markdown

PR Summary by Qodo

Improve docs structured data and metadata (sitemap lastmod, JSON-LD dateModified, descriptions)

✨ Enhancement 📝 Documentation ⚙️ Configuration changes 🕐 40+ Minutes

Grey Divider

AI Description

• Enable sitemap.xml  values using Docusaurus git-based lastUpdatedAt.
• Inject per-page WebPage JSON-LD dateModified for docs and generated category indexes.
• Add missing meta/OG descriptions to docs frontmatter and generated-index category pages.
Diagram

graph TD
  A["Docs content (md/yml)"] --> B["Docusaurus theme wrappers"] --> C["buildPageJsonLd() util"] --> D[("Built HTML pages")]
  E["docusaurus.config.mjs"] --> F["Sitemap plugin"] --> G[("sitemap.xml")]
Loading
High-Level Assessment

The following are alternative approaches to this PR:

1. Inject JSON-LD via a global HTML template / custom plugin
  • ➕ Centralizes structured-data emission outside theme component overrides
  • ➕ Can cover additional routes beyond docs/category pages in one place
  • ➖ Harder to access doc-specific metadata like lastUpdatedAt without replicating Docusaurus internals
  • ➖ Higher maintenance risk across Docusaurus upgrades vs standard swizzle wrappers
2. Use/extend existing Docusaurus structured-data hooks only
  • ➕ Minimizes custom code and avoids duplicating structured data behaviors
  • ➕ Leans on upstream-maintained semantics and testing
  • ➖ Docusaurus emits BreadcrumbList, but does not guarantee WebPage dateModified out-of-the-box
  • ➖ May not expose the exact dateModified behavior required by the audit without customization

Recommendation: The PR’s approach (swizzling DocItem/Layout and DocCategoryGeneratedIndexPage to inject a single WebPage JSON-LD node) is a good fit: it has direct access to doc metadata (lastUpdatedAt) and keeps scope limited to docs surfaces. Ensure only one WebPage JSON-LD block is emitted per page and that dateModified is stable for generated category pages (build-time fallback is acceptable but will change per build).

Files changed (100) +215 / -1

Enhancement (3) +75 / -0
index.tsxInject WebPage JSON-LD into generated category index pages +26/-0

Inject WebPage JSON-LD into generated category index pages

• Adds a Docusaurus theme wrapper that injects a WebPage JSON-LD script for category generated-index pages, using build-time as dateModified fallback.

src/theme/DocCategoryGeneratedIndexPage/index.tsx

index.tsxInject WebPage JSON-LD into doc pages using lastUpdatedAt +27/-0

Inject WebPage JSON-LD into doc pages using lastUpdatedAt

• Adds a Docusaurus theme wrapper around DocItem/Layout to emit WebPage JSON-LD dateModified derived from the doc’s git-based lastUpdatedAt metadata.

src/theme/DocItem/Layout/index.tsx

buildPageJsonLd.tsAdd utility to build WebPage JSON-LD with dateModified +22/-0

Add utility to build WebPage JSON-LD with dateModified

• Introduces a helper that constructs WebPage JSON-LD (url + dateModified) and explicitly avoids duplicating BreadcrumbList structured data already emitted by Docusaurus.

src/utils/buildPageJsonLd.ts

Documentation (96) +137 / -1
faq.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds a description field to improve page metadata for agents and SEO previews.

docs/about/faq.md

license.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds a description field describing licensing coverage for better meta/OG summaries.

docs/about/license.md

backups.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds a description summarizing backup creation, scheduling, and restore behavior.

docs/cloud/backups.md

bandwidth.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds a description clarifying bandwidth expectations across tiers/providers.

docs/cloud/bandwidth.md

_category_.ymlAdd generated-index description +3/-0

Add generated-index description

• Adds a link section with generated-index type and a human-readable description for the BYOC category page.

docs/cloud/byoc/category.yml

_category_.ymlAdd generated-index description +3/-0

Add generated-index description

• Adds a link description so the category landing page has meaningful meta/OG text.

docs/cloud/connect/category.yml

redis-clients.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds a description summarizing Redis client connection guidance for Dragonfly Cloud.

docs/cloud/connect/redis-clients.md

_category_.ymlFix formatting and add generated-index description +4/-1

Fix formatting and add generated-index description

• Normalizes the position field formatting/newline and adds a generated-index link description for the serverless category page.

docs/cloud/connect/serverless/category.yml

aws-lambda.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds a description summarizing how to connect AWS Lambda to a Dragonfly Cloud datastore.

docs/cloud/connect/serverless/aws-lambda.md

gcp-cloud-run.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds a description summarizing how to connect GCP Cloud Run to Dragonfly Cloud.

docs/cloud/connect/serverless/gcp-cloud-run.md

_category_.ymlAdd generated-index description +3/-0

Add generated-index description

• Adds a link description so VPN category landing pages have meaningful summaries.

docs/cloud/connect/vpn/category.yml

aws.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds a description summarizing AWS Client VPN connectivity to Dragonfly Cloud.

docs/cloud/connect/vpn/aws.md

connections.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds a description covering peering connections between Dragonfly Cloud and VPCs.

docs/cloud/connections.md

data-retention.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds a description clarifying retention/deletion behavior for datastore and backups.

docs/cloud/data-retention.md

datastores.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds a description summarizing datastore creation/configuration/connection flows.

docs/cloud/datastores.md

getting-started.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds a getting-started description for signup and first datastore creation.

docs/cloud/getting-started.md

_category_.ymlAdd generated-index description +3/-0

Add generated-index description

• Adds a generated-index link description for migration-to-cloud guidance.

docs/cloud/migrate/category.yml

monitoring.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds a description summarizing dashboards and metrics monitoring for Cloud datastores.

docs/cloud/monitoring.md

networks.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds a description summarizing private networks and peering setup.

docs/cloud/networks.md

pricing.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds a description summarizing usage-based pricing inputs.

docs/cloud/pricing.md

_category_.ymlAdd generated-index description +3/-0

Add generated-index description

• Adds a link description for the SSO category landing page.

docs/cloud/sso/category.yml

add-sso-connection.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds a description for configuring SAML SSO connections.

docs/cloud/sso/add-sso-connection.md

domains.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds a description explaining domain verification for SSO enablement.

docs/cloud/sso/domains.md

managed-users.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds a description summarizing SCIM provisioning and user management.

docs/cloud/sso/managed-users.md

okta.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds a description for Okta SAML SSO setup.

docs/cloud/sso/okta.md

onelogin.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds a description for OneLogin SAML SSO setup.

docs/cloud/sso/onelogin.md

sso.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds an overview description for SAML 2.0 SSO support and providers.

docs/cloud/sso/sso.md

support.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds a description summarizing support plan tiers and coverage.

docs/cloud/support.md

terraform-provider.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds a description for managing Cloud resources via Terraform provider.

docs/cloud/terraform-provider.md

users.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds a description summarizing roles and access management for Cloud accounts.

docs/cloud/users.md

_category_.ymlAdd command reference category description +1/-0

Add command reference category description

• Adds a generated-index description summarizing the command reference landing page.

docs/command-reference/category.yml

_category_.ymlAdd ACL category description +1/-0

Add ACL category description

• Adds a generated-index description for the ACL command category page.

docs/command-reference/acl/category.yml

_category_.ymlAdd Bloom Filter category description +1/-0

Add Bloom Filter category description

• Adds a generated-index description for Bloom filter commands.

docs/command-reference/bloom-filter/category.yml

_category_.ymlAdd Cluster Management category description +1/-0

Add Cluster Management category description

• Adds a generated-index description for cluster management commands.

docs/command-reference/cluster-management/category.yml

compatibility.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds a description for the compatibility table page to improve previews.

docs/command-reference/compatibility.md

_category_.ymlAdd Count-Min Sketch category description +1/-0

Add Count-Min Sketch category description

• Adds a generated-index description for CMS commands.

docs/command-reference/count-min-sketch/category.yml

_category_.ymlAdd Generic commands category description +1/-0

Add Generic commands category description

• Adds a generated-index description for generic key management commands.

docs/command-reference/generic/category.yml

_category_.ymlAdd Geospatial category description +1/-0

Add Geospatial category description

• Adds a generated-index description for geospatial command pages.

docs/command-reference/geospatial-indices/category.yml

_category_.ymlAdd Hashes category description +1/-0

Add Hashes category description

• Adds a generated-index description for hash commands.

docs/command-reference/hashes/category.yml

_category_.ymlAdd HyperLogLog category description +1/-0

Add HyperLogLog category description

• Adds a generated-index description for HyperLogLog commands.

docs/command-reference/hyperloglog/category.yml

_category_.ymlAdd JSON category description +1/-0

Add JSON category description

• Adds a generated-index description for JSON document commands.

docs/command-reference/json/category.yml

_category_.ymlAdd Lists category description +1/-0

Add Lists category description

• Adds a generated-index description for list data type commands.

docs/command-reference/lists/category.yml

_category_.ymlAdd Pub/Sub category description +1/-0

Add Pub/Sub category description

• Adds a generated-index description for publish/subscribe commands.

docs/command-reference/pubsub/category.yml

_category_.ymlAdd Rate Limiter category description +1/-0

Add Rate Limiter category description

• Adds a generated-index description for rate limiting commands.

docs/command-reference/rate-limiter/category.yml

_category_.ymlAdd Search category description +1/-0

Add Search category description

• Adds a generated-index description for FT.* search command family pages.

docs/command-reference/search/category.yml

_category_.ymlAdd Server Management category description +1/-0

Add Server Management category description

• Adds a generated-index description for server/auth/client management commands.

docs/command-reference/server-management/category.yml

_category_.ymlAdd Sets category description +1/-0

Add Sets category description

• Adds a generated-index description for set commands.

docs/command-reference/sets/category.yml

_category_.ymlAdd Sorted Sets category description +1/-0

Add Sorted Sets category description

• Adds a generated-index description for sorted set commands.

docs/command-reference/sorted-sets/category.yml

_category_.ymlAdd Streams category description +1/-0

Add Streams category description

• Adds a generated-index description for stream commands.

docs/command-reference/stream/category.yml

_category_.ymlAdd Strings category description +1/-0

Add Strings category description

• Adds a generated-index description for string and bit operation commands.

docs/command-reference/strings/category.yml

_category_.ymlAdd Top-K category description +1/-0

Add Top-K category description

• Adds a generated-index description for Top-K frequency tracking commands.

docs/command-reference/top-k/category.yml

_category_.ymlAdd Development category description +3/-0

Add Development category description

• Adds a generated-index link and description for the Development category landing page.

docs/development/category.yml

cli.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds a description for using redis-cli with Dragonfly.

docs/development/cli.md

sdks.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds a description for supported/tested SDKs and client libraries.

docs/development/sdks.md

_category_.ymlAdd Getting Started category description +3/-0

Add Getting Started category description

• Adds a generated-index link and description for Getting Started landing page metadata.

docs/getting-started/category.yml

benchmark.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds a description for benchmarking methodology/results.

docs/getting-started/benchmark.md

binary.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds a description for running Dragonfly from a prebuilt binary.

docs/getting-started/binary.md

cloud.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds a description for getting started with the managed Cloud service.

docs/getting-started/cloud.md

docker-compose.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds a description for starting Dragonfly via Docker Compose.

docs/getting-started/docker-compose.md

docker.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds a description for running via a single docker run command.

docs/getting-started/docker.md

getting-started.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds an overview description for installation options and requirements.

docs/getting-started/getting-started.md

kubernetes-operator.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds a description for deploying/managing via the Dragonfly Operator.

docs/getting-started/kubernetes-operator.md

kubernetes.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds a description for deploying via the Helm chart on Kubernetes.

docs/getting-started/kubernetes.md

native-packages.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds a description for installing via native RPM/Debian packages.

docs/getting-started/native-packages.md

_category_.ymlAdd Integrations category description +3/-0

Add Integrations category description

• Adds a generated-index link and description for integrations landing page metadata.

docs/integrations/category.yml

integrations.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds a description for supported third-party tools and frameworks.

docs/integrations/integrations.md

_category_.ymlAdd Managing Dragonfly category description +3/-0

Add Managing Dragonfly category description

• Adds a generated-index link and description summarizing operational guides.

docs/managing-dragonfly/category.yml

acl.mdAdd YAML frontmatter description block +4/-0

Add YAML frontmatter description block

• Adds description frontmatter at the top of the page for improved metadata generation.

docs/managing-dragonfly/acl.md

aof.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds a description clarifying AOF persistence support status.

docs/managing-dragonfly/aof.md

backups.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds a description for configuring disk backups for Dragonfly.

docs/managing-dragonfly/backups.md

cluster-mode.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds a description summarizing Dragonfly cluster mode behaviors.

docs/managing-dragonfly/cluster-mode.md

flags.mdAdd YAML frontmatter description block +4/-0

Add YAML frontmatter description block

• Adds description frontmatter to improve meta/OG summaries for configuration flags reference.

docs/managing-dragonfly/flags.md

high-availability.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds a description summarizing HA strategies using replication and the Operator.

docs/managing-dragonfly/high-availability.md

known-limitations.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds a description covering key limits and constraints.

docs/managing-dragonfly/known-limitations.md

memcached-mode.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds a description for enabling and using Memcached mode alongside Redis API.

docs/managing-dragonfly/memcached-mode.md

monitoring.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds a description summarizing HTTP/Prometheus metrics monitoring.

docs/managing-dragonfly/monitoring.md

_category_.ymlAdd Operator category description +3/-0

Add Operator category description

• Adds a generated-index link and description for the Dragonfly Operator category page.

docs/managing-dragonfly/operator/category.yml

authentication.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds a description for password/TLS authentication configuration via Operator.

docs/managing-dragonfly/operator/authentication.md

dragonfly-configuration.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds a description for the Operator CRD field reference.

docs/managing-dragonfly/operator/dragonfly-configuration.md

grafana-guide.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds a description for Grafana monitoring setup for Operator-managed pods.

docs/managing-dragonfly/operator/grafana-guide.md

installation.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds a description for installing the Dragonfly Operator.

docs/managing-dragonfly/operator/installation.md

prometheus-guide.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds a description for Prometheus monitoring configuration with the Operator.

docs/managing-dragonfly/operator/prometheus-guide.md

server-tls.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds a description for enabling TLS encryption for Operator-managed instances.

docs/managing-dragonfly/operator/server-tls.md

snapshot-pvc.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds a description for storing snapshots on a PVC with the Operator.

docs/managing-dragonfly/operator/snapshot-pvc.md

snapshot-s3.mdAdd YAML frontmatter description block +4/-0

Add YAML frontmatter description block

• Adds description frontmatter for S3 snapshot backup configuration page.

docs/managing-dragonfly/operator/snapshot-s3.md

replication.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds a description for primary-replica replication setup and Redis migration.

docs/managing-dragonfly/replication.md

scripting.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds a description for Lua scripting interface usage.

docs/managing-dragonfly/scripting.md

snapshotting.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds a description for snapshotting internals and algorithm overview.

docs/managing-dragonfly/snapshotting.md

tiering.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds a description for SSD/NVMe tiering feature usage.

docs/managing-dragonfly/tiering.md

using-http.mdAdd YAML frontmatter description block +4/-0

Add YAML frontmatter description block

• Adds description frontmatter for HTTP access and authentication guidance.

docs/managing-dragonfly/using-http.md

using-tls.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds a description for TLS configuration for client connections.

docs/managing-dragonfly/using-tls.md

_category_.ymlAdd migration category description (Redis instance) +3/-0

Add migration category description (Redis instance)

• Adds a generated-index link and description for standalone Redis migration guides.

docs/migrating-to-dragonfly/01-from-redis-instance/category.yml

_category_.ymlAdd migration category description (Redis Cluster) +3/-0

Add migration category description (Redis Cluster)

• Adds a generated-index link and description for Redis Cluster migration guide.

docs/migrating-to-dragonfly/02-from-redis-cluster/category.yml

_category_.ymlAdd Migrating to Dragonfly category description +3/-0

Add Migrating to Dragonfly category description

• Adds a generated-index link and description summarizing the migration guide set.

docs/migrating-to-dragonfly/category.yml

migrating-to-dragonfly.mdAdd meta description frontmatter +1/-0

Add meta description frontmatter

• Adds a description summarizing migration techniques overview.

docs/migrating-to-dragonfly/migrating-to-dragonfly.md

_category_.ymlAdd Reference category description +1/-0

Add Reference category description

• Adds a generated-index description for the Reference landing page.

docs/reference/category.yml

Other (1) +3 / -0
docusaurus.config.mjsEnable sitemap lastmod timestamps +3/-0

Enable sitemap lastmod timestamps

• Configures sitemap generation to emit lastmod=datetime so sitemap.xml includes per-URL modification dates where available.

docusaurus.config.mjs

@qodo-free-for-open-source-projects

qodo-free-for-open-source-projects Bot commented Jul 10, 2026

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (0) 📘 Rule violations (0) 📎 Requirement gaps (0) 🎨 UX issues (0) 🔗 Cross-repo conflicts (0) 📜 Skill insights (0)

Grey Divider


Remediation recommended

1. Nondeterministic dateModified ✓ Resolved 🐞 Bug ≡ Correctness
Description
buildPageJsonLd falls back to Date.now() when no dateModifiedMs is provided, so category
generated-index pages will emit a different dateModified value over time instead of a stable
build-time value. This makes JSON-LD output non-reproducible and can incorrectly signal to crawlers
that the page was modified “now”.
Code

src/utils/buildPageJsonLd.ts[R13-15]

+export const buildPageJsonLd = (permalink: string, dateModifiedMs?: number) => {
+  const dateModified = new Date(dateModifiedMs ?? Date.now()).toISOString();
+
Evidence
The helper uses Date.now() when dateModifiedMs is undefined, and the category generated-index
wrapper calls the helper without providing dateModifiedMs, forcing that fallback for those pages.

src/utils/buildPageJsonLd.ts[13-15]
src/theme/DocCategoryGeneratedIndexPage/index.tsx[15-17]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`buildPageJsonLd()` uses `Date.now()` as the fallback when `dateModifiedMs` is omitted. The category wrapper calls it without a date, so category index pages end up with a moving/unstable `dateModified`.
### Issue Context
The PR comments state the fallback should be “build time”, but `Date.now()` in a React component render path is not guaranteed to be a stable build-time value.
### Fix Focus Areas
- src/utils/buildPageJsonLd.ts[13-21]
- src/theme/DocCategoryGeneratedIndexPage/index.tsx[15-17]
- docusaurus.config.mjs[11-19]
### Suggested fix approach
1. Add a build-time ISO string to Docusaurus config (executed at build time), e.g. `customFields: { buildTimeIso: new Date().toISOString() }`.
2. In `DocCategoryGeneratedIndexPage` wrapper, read it via `useDocusaurusContext()` and pass it into `buildPageJsonLd` (parse to ms) so the fallback is stable.
3. Consider making the fallback explicit (e.g., require a fallback date for generated pages) instead of silently using `Date.now()`.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Informational

2. Hardcoded SITE_URL ✓ Resolved 🐞 Bug ⚙ Maintainability
Description
buildPageJsonLd hardcodes the site origin, duplicating configuration that already exists in
docusaurus.config.mjs (config.url/baseUrl). This increases maintenance risk (future
URL/baseUrl changes won’t automatically propagate to structured data).
Code

src/utils/buildPageJsonLd.ts[1]

+const SITE_URL = "https://www.dragonflydb.io";
Evidence
The helper hardcodes https://www.dragonflydb.io while the Docusaurus config already declares the
canonical url and a dynamic baseUrl, so the same value is maintained in two places.

src/utils/buildPageJsonLd.ts[1-21]
docusaurus.config.mjs[11-19]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`SITE_URL` is hardcoded in `buildPageJsonLd`, duplicating Docusaurus config and making the JSON-LD URL construction easy to drift from the real site configuration.
### Issue Context
`docusaurus.config.mjs` already defines `url` and `baseUrl`. The generated `metadata.permalink` already incorporates `baseUrl`, so only the origin should be sourced from the same config.
### Fix Focus Areas
- src/utils/buildPageJsonLd.ts[1-21]
- docusaurus.config.mjs[12-19]
### Suggested fix approach
- Remove the hardcoded `SITE_URL` constant.
- Option A: In wrappers, use `useDocusaurusContext()` to get `siteConfig.url` and pass it into `buildPageJsonLd` (add a `siteUrl` param).
- Option B: Move URL construction to wrappers (build absolute URL there) and keep `buildPageJsonLd` purely data-shaping.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

Qodo Logo

Comment thread src/utils/buildPageJsonLd.ts Outdated
Comment thread src/utils/buildPageJsonLd.ts Outdated
Two issues from Qodo's review of #546:

1. buildPageJsonLd() fell back to Date.now() for category pages (which
   have no per-file date), so dateModified drifted on every rebuild
   even with zero content changes. Now sourced from a single
   siteConfig.customFields.buildTimeIso value captured once at config
   load, so every page in the same build shares one stable timestamp.
   dateModifiedMs is now a required param -- no more silent fallback.

2. buildPageJsonLd() hardcoded the site origin instead of reading it
   from docusaurus.config.mjs. Both wrappers now pass
   useDocusaurusContext().siteConfig.url in instead.

Verified in the build output: two different category pages now emit
the exact same dateModified (proving it's one stable per-build value,
not per-page Date.now()), while a real doc page keeps its accurate
git-based date.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@worldsoup
worldsoup merged commit aefe38b into main Jul 10, 2026
3 checks passed
@worldsoup
worldsoup deleted the a14y-agent-readability-fixes branch July 10, 2026 19:53
worldsoup added a commit that referenced this pull request Jul 10, 2026
…imum (#547)

Lengthen and fix 12 command reference descriptions

Re-running the a14y audit after #546 landed found 12 pages still
failing html.meta-description -- these already had a description (so
they weren't caught by the "missing entirely" pass in #546), just
under the 50-char minimum. Also fixes ACL GENPASS's description, which
was a copy-paste of ACL DRYRUN's ("Simulate execution of a command
from a user") and didn't describe what the command actually does.

Co-authored-by: Nicholas Gottlieb <nicholasgottlieb@Nicholass-MacBook-Pro-2.local>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
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