This note records file changes made to the original Quartz code. It exists to help support changes between versions. Unfortunately to achieve the site design I want for The Quantum Garden Website some jiggery-pokery is required.

Plugin modifications

Custom plugins

  • link-purger, removes links to pages that don’t exist post-filtering, style self-referenced links
  • portcullis, highly specific and tightly-controlled filter for which pages to publish1
  • qg-footer, replacement footer component showing the information I want to include2
  • transform-tags, modifies incoming tags for simplification and renaming

Community plugin modifications

For these modifications I clone the original repository, remove the plugin from quartz.config.yaml, then add it back in as a local link to my version. The remote upstream is set to the remote origin, then the remote origin is removed. Doing so allows me to pull updates and stops git wanting me to upload my changes.

Both content-index and link-purger call sanitiser which parses the HTML that will be generated and removes all links to pages that do not exist after filtering. A detailed explanation of why this occurs can be found in Merging Public and Private Notes: Three Lines of Defence in Quartz 4. The plugin architecture prevents me sharing code across plugin modules so the sanitiser code is inserted into the plugin source code by way of symbolic link.

Base code changes

Root footer

All modified files exist within ~/quartz/quartz.

Ignoring index.ts files

There are many index.ts files created to hold the system together. There is no value in listing them below. It’s self-evident when they need to be modified.

  • Australian locale
    • i18n/locales/en-AU.ts, created to allow reference to en-AU for date formatting
  • Nerd Fonts integration
    • styles/custom.css, add Nerd Fonts CSS classes for icons used
    • static/icons/*.svg, add icon files for any not in the base font file
  • tinylytics integration
    • plugins/emitters/componentResources.ts, modified to add extra data options
    • static/flags/*.webp, add flag files for all countries as workaround for emoji flag display on Windows only showing letters
    • static/replaceflags.js, add dynamic emoji → webp flag replacement
    • components/head.tsx, add replaceflags.js to <head> on each page

Footnotes

  1. Merging Public and Private Notes: Three Lines of Defence in Quartz 4, applies the same to Quartz 5.

  2. I may extend the community footer plugin instead of using my own when I next make changes. I’ve learned more about the infrastructure since doing this first one.