XooCode(){

Changelog

What's new in XooCode. Every release documented.

Current version: v2.6.4 · released

v2.6.4

Added

  • MentionedInExamples component on every /json-ld-code-examples/<slug> page. Inline prose block listing up to eight other examples whose schemaTerms reference the current type, with a trailing link to the /schema/<type> listing for the full set. Silent when there are no mentions
  • activeSlug wired through SchemaSidebarSchemaRelationsPanel so the current example or schema term highlights in the sidebar tree

Changed

  • Sidebar now links primarily to rich /json-ld-code-examples/<slug> pages, falling back to /schema/<slug> listings only when no example exists. Dot repurposed into three states: filled mint (example page), hollow mint ring (reference listing), no indicator (no page). Types with no destination render as non-interactive muted rows instead of broken links
  • SidebarLinkRow prop surface replaced hasDot: boolean with state: "example" | "schema" | "none" and accepts href: string | null

Fixed

  • /schema/conferenceevent/ returned 404 because the ConferenceEvent example's schemaTerms did not self-reference. Added "ConferenceEvent" to the array so generateStaticParams emits the route
  • 85 sidebar links that pointed at un-shipped schema.org types (pending types, un-shipped enums, external vocabularies) no longer render as broken links

v2.6.3

Added

  • Full schema.org parity across the /json-ld-code-examples/ library. Shipped 286 new entries (IDs 714–999) spanning Tier A (commerce depth, finance, audiences, content heavy, structural), Tier B (34 enum reference pages), Tier C (64 specialised types including the long tail of Action verbs), and Tier D (143 niche / classification-only stubs for medical anatomy leaves, religious buildings, school levels, dose-schedule variants, and remaining Place/Organization/Action subtypes). Coverage now stands at 804 entries across 801 unique schema.org types with 0 tier-gaps and 0 validator enum gaps
  • Validator enum bindings: RsvpAction.rsvpResponse (RsvpResponseType), InfectiousDisease.infectiousAgentClass (InfectiousAgentClass), ImagingTest.imagingTechnique (MedicalImagingTechnique), SendAction / ReceiveAction / TrackAction.deliveryMethod (DeliveryMethod), DigitalDocumentPermission.permissionType, Invoice.paymentStatus (PaymentStatusType), MedicalSign.identifyingExam (PhysicalExam)
  • Eight new index categories on /json-ld-code-examples: Shipping and fulfillment, Action inputs and location features, Financial products, Audience targeting, Content depth, Thing root + universal properties, Intangibles and structural values, Tier C specialised types, Tier D niche / classification reference pages, Enumeration reference pages

Changed

  • schema-parity skill now filters external-vocabulary types (prefixed with bibo:, fibo:, dcat:, foaf:, gs1:, hydra:, snomed:, unece:, vcard:, void:, cmns-*:, etc.) from gap reports. These are referenced by schema.org but are not schema.org types and have no place in the xoocode library

v2.6.2

Changed

  • Validator no longer warns on string-encoded numbers like "price": "19.99" or "ratingValue": "4.5". Google accepts strings for numeric schema properties and rich results render correctly either way. The rule still fires when the value cannot be parsed as a number at all, such as "price": "TBD" or "ratingValue": "five stars"
  • BreadcrumbList position rule dropped its secondary "is a string but should be a number" warning. A parseable position greater than or equal to 1 now validates cleanly regardless of type

Fixed

  • Changelog page now renders inline code spans (backtick-wrapped paths, component names, identifiers) as styled <code> chips instead of printing literal backticks

v2.6.1

Added

  • Site-wide command palette at ⌘K / Ctrl K with grouped results for Tools, Examples, Schemas, and Guides. Fuzzy matching via cmdk, dedicated SearchInput / SortToggle primitives in components/ui/, and a centered desktop trigger with an OS-aware shortcut hint
  • Contextual sidebar on every /schema/<type> and /json-ld-code-examples/<slug> page. Three sections in reading order: Subtypes, Related types (siblings through the first declared parent), Ancestor chain back to Thing. Rows carry a mint dot when a XooCode example exists for that type
  • SidebarSection, SidebarLinkRow, and CollapsibleList primitives in components/ui/ for reuse across future sidebars
  • Custom app/not-found.tsx with the classic 404 layout, larger typography, and automatic light/dark theming through semantic tokens

Changed

  • getAllSchemaTerms() now keys by the lowercase slug so case variants like PaymentMethod (type) and paymentMethod (property) collapse into a single entry that maps cleanly to /schema/paymentmethod. Prevents duplicate-key warnings in the sidebar and palette
  • Header layout switched to a three-column grid on desktop so the search trigger can sit in the centered slack between logo and the nav cluster

v2.6.0

Added

  • Five tool-as-hero landing pages promoted from /tools/<slug> to their own top-level URLs: /structured-data-testing-tool, /schema-diff-tool, /schema-type-hierarchy, /llms-txt-generator, /robots-txt-generator. Each lands with hero, live interactive widget, content body, and a FAQ below the fold
  • Schemas and Tools dropdowns in the header navigation, driven from a single lib/sitemap-tree.ts source of truth
  • Centralised landing-page component library under components/content/landing/* so every hero follows the same hero / widget / FAQ composition

Changed

  • All outbound links updated to the new top-level URLs
  • next.config.ts redirects added from every legacy /tools/* path to its new canonical URL so existing inbound links keep working
  • Sitemap, breadcrumb trail, and internal cross-links rewired through the new tree

v2.5.1

Fixed

  • Breadcrumbs missed a trailing slash on a subset of deep schema pages, producing duplicate crumb entries
  • Tailwind 4 sporadic FOUC on route transitions in dark mode narrowed down to a missing color-scheme meta token

Changed

  • Em dashes swept out of all generated copy in favour of commas, colons, and sentence breaks

v2.5.0

Added

  • First six waves of the schema example expansion programme. Coverage grew from 62 hand-written JSON-LD examples to 120 shipped example pages across Thing → CreativeWork, Organization, Event, Place, Product, Action, Intangible, and Person branches
  • Stub pattern for zero-property subtypes: compact JSON-LD plus one CommonMistakes entry plus a one-paragraph scope note. Lets leaf types ship a defensible reference page without inventing properties
  • Validator rule sets for every shipped example type in lib/validator-rules, so the Structured Data Testing Tool can enforce required-by-Google properties per type

Changed

  • Schema sidebar now shows per-type example counts when sorted by "Popular" so the distribution is scannable at a glance

v2.4.1

Fixed

  • Validator falsely flagged Product rich result warnings when offers was an array of AggregateOffer plus Offer mixtures
  • Code-copy button on the JSON-LD examples lost its aria-pressed state on rapid repeat clicks

v2.4.0

Added

  • BlogPosting Schema Generator at /blogposting-schema-generator, reusing the form-builder pattern with author and publisher sub-forms
  • NewsArticle Schema Generator at /newsarticle-schema-generator with NewsArticle-specific fields (dateline, printEdition, printPage, printSection) and a preview panel that surfaces Google News eligibility hints
  • TechArticle Schema Generator at /techarticle-schema-generator with proficiencyLevel and dependencies fields
  • SoftwareApplication Builder at /tools/builder/softwareapplication for native and web apps, including the offers composition pattern shared with Product

Changed

  • Generators dropdown reordered so the Article family clusters together
  • JSON-LD preview pane in every generator now reflects live validation output from the testing-tool engine rather than a separate mock

v2.3.1

Fixed

  • MCP server tool responses occasionally truncated at 8 KB on long-form markup because of a missing chunked-response header
  • Dark-mode focus ring on JSON-LD code blocks not meeting 3:1 contrast against --surface-code

v2.3.0

Added

  • MCP Server integration for the Structured Data Testing Tool at /structured-data-testing-tool/mcp-server. Single-tool exposure (validate_structured_data) connectable from Claude Desktop, Cursor, and any MCP client. Setup page with copy-paste JSON config, auth token instructions, and a worked example
  • Claude Code skill at /structured-data-testing-tool/claude-code that packages the validator as a one-file skill drop-in for Claude Code users
  • API keys manager in the account settings so users can mint, label, and revoke tokens for the MCP server and direct HTTP endpoint

Changed

  • Testing-tool HTTP endpoint response now includes warnings, errors, and suggestions as first-class arrays rather than flattened into a single messages list, matching the MCP tool schema

v2.2.1

Fixed

  • Skip-to-content link missed the new sticky-header offset after the 2.0 layout changes
  • Radix Navigation Menu keyboard navigation dropped focus on outside click in Safari

Changed

  • FAQ generator pair-builder promoted to a shared PairBuilder primitive reused by Breadcrumb and Video generators

v2.2.0

Added

  • Video Schema Generator at /video-schema-generator covering VideoObject plus the Clip array for chapter markers and InteractionCounter for view counts. Generates duration in ISO 8601 from a human-friendly HH:MM:SS input
  • Breadcrumb Schema Generator at /breadcrumb-schema-generator with drag-to-reorder list items and auto-numbered position values

Changed

  • Generator preview panes now copy the active JSON-LD with a filename suggestion based on the form's name/title field

v2.1.1

Fixed

  • Validator false positive on Article examples without image when primaryImageOfPage was set at the WebPage level (Google accepts either)
  • Schema hierarchy explorer search box reset selection on every keystroke in Firefox

v2.1.0

Added

  • Product Schema Generator at /product-schema-generator with Offer, AggregateOffer, AggregateRating, and Review sub-forms. Live JSON-LD preview, Google Rich Results Test deep link, and one-click copy to clipboard
  • Article Schema Generator at /article-schema-generator with author person-or-organization discriminator and publisher logo dimensions validation

Changed

  • Form builder pattern extracted from the Recipe and FAQ generators into a shared components/content/form-builder module so every generator shares the same field primitives, validation messages, and preview styling

v2.0.1

Fixed

  • Card shadow too strong in dark mode, visually heavier than the surrounding surface. Two-layer shadow opacity halved
  • --border-input below WCAG 1.4.11 3:1 on light surface cards. Tightened to #6b7280 so form fields are visible against both page and card

Changed

  • Off-white page tone nudged from #f5f7fa to #f7f8fa for more lift on white cards without overshooting into grey

v2.0.0

Added

  • Structured Data Testing Tool at /structured-data-testing-tool. Public HTTP endpoint at /api/validate, browser-based validator UI with per-property required / recommended / optional classification, JSON-LD pretty / raw / collapse toggle, and side-by-side diff against XooCode reference examples
  • Auth system: email magic-link sign-in, (auth) route group, AuthProvider context in lib/auth-context.tsx, account settings page, and an avatar-menu entry in the header
  • Dark mode built on a semantic CSS token layer (--surface-*, --text-*, --border-*, --link-*, --shadow-*). next-themes drives the class toggle, ThemeToggle in the header
  • Sticky translucent header with a Radix NavigationMenu for desktop and a Radix Dialog-backed Sheet for mobile. Theme toggle visible at every viewport
  • Typography refresh to Open Sans as the default body sans and monospace fallbacks for code blocks

Changed

  • Upgrade to Tailwind 4 with the new @theme at-rule driving brand and semantic tokens
  • JSON-LD highlight tokens rewritten in semantic terms (--token-brace, --token-string, etc.) so syntax colours reflow correctly between light and dark
  • Header, footer, breadcrumbs, and sidebar all rewritten against the new token layer. No hex-coded colours remain in component files

Removed

  • Legacy theme.css and per-component colour overrides that predated the token layer

v1.6.0

Added

  • Recipe Schema Generator at /recipe-schema-generator. Structured form with ingredient and step lists, nutrition sub-form, duration parsers, and a live JSON-LD preview that updates on every keystroke
  • FAQ Schema Generator at /faq-schema-generator with dynamic question and answer pair builder, reorder controls, and Google FAQ rich result eligibility warnings inline
  • Shared components/content/generators/* scaffolding with a consistent hero, form, preview, and footer-CTA composition used by both generators

Changed

  • Schema reference pages now cross-link to the matching generator when one exists

v1.5.1

Fixed

  • Schema hierarchy explorer crashed when navigating from a type with multiple parents to one with a single parent due to stale breadcrumb state
  • Sitemap incorrectly emitted a /json-ld-code-examples/recipe entry twice on deployments where examples and legacy slug aliases overlapped

v1.5.0

Added

  • Schema Type Hierarchy explorer at /schema-type-hierarchy. Interactive tree of every schema.org type with ancestry chain, direct children count, XooCode example badge when one exists, and a search field that highlights matches along the visible path
  • lib/schema-tree.ts, an auto-generated mirror of the schema.org JSON-LD vocabulary with parents, children, comment, and canonical URL per type. pnpm generate:schema-tree refreshes it from https://schema.org
  • getAncestors, getDescendants, findXooCodeExample, and getNestedTypeReferences helpers in lib/utils.ts for cross-type lookups

Changed

  • Breadcrumbs on schema reference pages now render the real type ancestry instead of a flat "Schema Reference" trail

v1.4.1

Fixed

  • robots.txt generator default output missed the trailing newline Googlebot expects, causing sporadic "file ignored" warnings in Search Console
  • Copy-to-clipboard button swallowed the success animation on Chrome when the page was not fully focused

v1.4.0

Added

  • llms.txt generator at /llms-txt-generator with domain, title, description, and up to twelve documentation URLs. Outputs a compliant /llms.txt file with the January 2024 spec headings
  • robots.txt generator at /robots-txt-generator with per-user-agent rule groups, bulk paste of disallow paths, a Sitemap field that pulls from SITE_URL, and a Googlebot preview panel showing which URLs each group would match

Changed

  • Tools index page gets a two-column layout: "Validators" and "Text generators" so new tools group cleanly

v1.3.0

Added

  • Schema Diff Tool at /schema-diff-tool. Paste two JSON-LD blobs, strip <script> wrappers automatically, and see a set-difference of dotted property paths plus the values living at each path. Collapses array indices by default so an array of objects reads as a single property group
  • collectPaths, getValueAtPath, and parseJsonLd utilities in lib/utils.ts that the diff tool and later generators share

Changed

  • JSON-LD highlighter now supports decoding HTML entities (&lt; &gt; &amp; &quot;) so examples pasted out of WordPress exports render correctly

v1.2.1

Fixed

  • RichResultsPreview misrendered the Google review stars on right-to-left locales

Changed

  • Example pages copy polish across the Recipe, Product, Article family: fewer puffery words, fewer comma splices, more direct phrasing

v1.2.0

Added

  • Product example at /json-ld-code-examples/product with Offer, AggregateRating, and Review sub-graphs, plus a MinimalExample variant that shows the smallest spec-compliant Product markup
  • Recipe example at /json-ld-code-examples/recipe with HowTo, NutritionInformation, and aggregateRating compositions and a note on the Recipe / Product overlap
  • MinimalExample and RichResultsUnlocked components, rendered on every example page

Changed

  • Every example page now links its schemaType label to the external schema.org/<Type> documentation

v1.1.1

Fixed

  • Syntax highlighter misclassified boolean values as strings when the value was the word "true" embedded in a longer phrase
  • Breadcrumb structured data emitted an empty @id on the homepage when SITE_URL had no trailing slash

Changed

  • Article example intros condensed so the JSON-LD sits above the fold on 13-inch screens

v1.1.0

Added

  • First batch of article-family JSON-LD examples: Article, BlogPosting, NewsArticle, TechArticle, and DiscussionForumPosting. Each ships with a canonical example, a minimal example, required / recommended property lists per Google's spec, and three to five CommonMistakes entries
  • JsonLdHighlight syntax highlighter with colour-coded tokens for braces, brackets, attribute names, string values, and punctuation
  • CommonMistakes component: a wrong / right / explanation card grid that surfaces the realistic failure modes for each schema type

Changed

  • Footer "Schemas" column now curates six high-traffic example links instead of a giant unbounded list

v1.0.1

Fixed

  • Logo mark (the (){ glyph) bumped by 1px on narrow screens where the brand text wrapped to two lines
  • Missing breadcrumb on the /json-ld-code-examples index page

Changed

  • Long example titles now truncate cleanly in the sidebar instead of wrapping to three lines

v1.0.0

Added

  • XooCode launches at xoocode.com as a free JSON-LD reference and generator hub under the Redpoint 9 umbrella
  • Schema reference stub at /schema/<slug> seeded with ~120 of the most-requested schema.org types (CreativeWork, Organization, Person, Event, Place, Product, Offer, Action branches)
  • First 15 hand-written JSON-LD code examples under /json-ld-code-examples/<slug> covering Product, Recipe, Article, FAQPage, Event, LocalBusiness, Organization, and BreadcrumbList
  • Sticky header, site footer, and Redpoint 9 attribution
  • Static generation through Next.js App Router with a full sitemap and per-page metadata