Search...

Devlog

Content passthrough cleanup & social meta image fix

fix
quesby-core
v0.2.2

While doing a general sanity check on the build output, I noticed something that shouldn’t have been there in the first place: raw content directories ending up in dist.

Quesby already relies on computed permalinks for content and on the Eleventy Image pipeline for assets. Copying src/content/posts and src/content/media verbatim into the output was not just redundant, it was wrong. It exposed files that should never be public and went directly against the whole idea of a controlled build pipeline.

v0.2.1 — Stop copying what shouldn’t be copied

The fix was simple and long overdue:

  • Removed passthroughCopy for src/content/posts
  • Removed passthroughCopy for src/content/media
  • Prevented Eleventy from dumping raw content folders into the output
  • Enforced a single source of truth:
  • permalinks decide URLs
  • the image pipeline decides which assets exist and where

Result: cleaner builds, no accidental leaks, no duplicated junk in dist.

While testing that change, I stumbled into another, more subtle issue.

Social cards were broken.

v0.2.2 — Fix Open Graph & Twitter images (properly)

Quesby was generating Open Graph and Twitter Card meta tags using the original image filenames. That worked only as long as you ignored reality: those files don’t exist anymore after Eleventy Image processes them.

So social platforms were pointing to URLs that were never generated.

The fix:

  • Process images with Eleventy Image before generating SEO meta tags
  • Use the actual output URLs produced by the image pipeline
  • Ensure Open Graph and Twitter cards reference real, existing files
  • This fixes broken previews when sharing links and aligns SEO metadata with how Quesby actually builds assets.

Lazy-load search implementation

refactor
quesby-boilerplate
v0.3.1

I was taking some performance tests for quesby.dev that at this point still represents the benchmark for Quesby Boilerplate, and the payload was always pretty above my wishes. After improving the loading of images, one of the major payload contributors was the search component. Quesby uses Minisearch, which requires a ~50 KB script just to initialize, and it was being loaded on every page whether the user opened the search or not. Time to cut the fat.

Changes applied:

  • Removed the script tags from the search.njk partial (markup-only now).
  • Added lazy-loading logic in search-popup.js via ensureSearchLoaded().
  • Scripts now load sequentially: first minisearch.min.js, then search.js.
  • Fixed the malformed tag in the search results container.
  • Preserved all existing search behavior (Escape key, click-outside close, etc.).