This is a kagami template and accompanying source code that renders my personal site at https://microsounds.github.io/
This site aims for polyglot HTML5 compliance, a robust well-formed subset of HTML5 and XHTML as defined by W3C and WHATWG for more rigorous syntax validation. This is sometimes referred to as XHTML5.
Documents should render identically when served as text/html or application/xhtml+xml on the last 2 relevant web browsers, Chromium and Firefox.
In practice, Chromium-based browsers will render the stylesheet last on webpages served as XHTML,
flashing an unstyled page on every page load which browser caching does not seem to fix. I haven't noticed this in a while.
You can verify this yourself using busybox httpd or using Schneegan's XHTML Proxy.
Use of modern features such as audio elements prevents validating as "true" XHTML 1.0 Strict.
Note that some visual effects are disabled in mobile browsers for performance reasons, Firefox hangs completely when using SVG feTurbulance filters through CSS.
Normally, I run kagami and commit build artifacts in master.
- Use something simple like
busybox httpdin the document root to preview changes before pushing. - You could also comment out
unset DOC_ROOTin.kagami/macrosif you want to build for local viewing only.- AJAX calls to
file://URIs will silently fail due to CORS restrictions in modern web browsers.
- AJAX calls to
NOTE
This part is not kept up to date.
Scripts in .kagami/macros and .scripts/ have hard dependencies on my userland environment located here,
and operate under the assumption that you are me and you (me) have a copy of all my dotfiles sitting in your $HOME
- Some examples include:
.kagami/macrosexpects my~/.local/lib/moonphase-date— timestamp conversion routines, requires GNUdate,bc.scripts/dotfiles-ls.shexpects every single file in my userland environment to properly buildnotes/dotfiles.md.scripts/unreachable.shexpects git aliaslist-filesandwgetto spider through this repo to report broken links..scripts/fetch-figure-pics.shexpectswgetto spider through myfigurecollection.net to fix broken links.
An Actions workflow from my userland environment repo is triggered on every push and on a cron job timer that performs a simplified version fo the CI/CD behavior described below, both as a side effect of testing my dotfiles on every revision and as a convenient way to have dynamically updated static webpages.
If your plan is to use GitHub Pages with your own static site generator, you
could keep only source code in master and automatically push -f build
artifacts to a different orphan branch not unlike what GitHub does for pages
using Jekyll.
If you want to avoid cluttering your commit history with CI commits coming from your account,
use the github-action bot's git username github-actions and email address [email protected] when committing.
The default per-run GitHub Actions token ${{ secrets.GITHUB_TOKEN }} will not allow you to push new commits to a a different repo you control.
For GitHub Pages, this requires creating a Personal Access Token with at least public_repo permissions and adding it to your repo's secrets.
-
Generate a PAT at
Settings > Developer settings > Personal access tokens -
An example workflow depicting this automated build behavior can be found here.

