Skip to content

v0.3.0 – product gallery, structured data, real photography

Choose a tag to compare

@vhscom vhscom released this 15 Jul 17:37
· 106 commits to main since this release
103e75e

Added

  • Product gallery interactions: hover zoom, a full-size lightbox, and
    slide transitions between images.
  • Structured data for search engines: product pages emit
    schema.org/Product (with price, availability, and ratings) and
    portfolio pages emit schema.org/CreativeWork.
  • Product pages now always have a meta description — when there's no
    excerpt, one is derived from the product's description.

Changed

  • The sitemap now covers every content type. Pages were missing
    entirely, and every product URL in the sitemap pointed at a route
    that didn't exist. Sites created from an earlier seed need a
    one-time schema update
    (seeds don't re-apply to existing
    databases): give each collection the URL pattern and SEO flag it has
    in seed/seed.json, via the admin's content-type settings or the
    schema API.
  • Page titles use one separator everywhere (a compact | by default),
    and it's now editable under Settings → SEO in the admin.
  • Demo imagery is now real photography (CC0/CC BY, credited in
    CREDITS.md) instead of placeholder artwork, with AVIF/WebP
    variants for the heavy images. Shop products each get distinct
    photos — several previously shared one. README and screenshots
    refreshed to match.

Fixed

  • The demo post "Throught the lens" is now "Through the lens" — title,
    URL, and every link to it. Existing databases need the same rename
    applied to their content.
  • Product gallery glitches: a slide getting stuck when revisiting an
    image, plus zoom, keyboard, and lightbox-focus issues.
  • Several homepage links pointed at posts that don't exist in this
    seed.
  • Long unbroken words or URLs in blockquotes could overflow the screen
    on narrow viewports.
  • Injected content (embeds, ads, third-party widgets) pasted into
    posts/pages could carry fixed, oversized dimensions with no theme
    sizing constraint. Added a generic max-width: 100% +
    overflow: hidden guard on iframe/embed/object inside content
    areas — no ad-network-specific selectors, so it holds regardless of
    provider. Documented the existing html, body { overflow-x: clip }
    rule as an intentional last-resort backstop for the same class of
    bug.