Skip to content

feat: slides inside the docs site + GitHub Pages deploy - #2

Merged
andrewthomaslee merged 1 commit into
mainfrom
claude/project-thread-7g98qx
Oct 15, 2026
Merged

andrewthomaslee merged 1 commit into
mainfrom
claude/project-thread-7g98qx

Conversation

@andrewthomaslee

Copy link
Copy Markdown
Member

Requested by Andrew · project thread

Before: the docs site and the slide deck are two unrelated builds, and nothing publishes them.

After: nix build .#documentation also contains the built deck at /slides/, and a new Presentation page embeds it. The deck still builds on its own with nix build .#slides, and the built index.html now also opens straight from disk. A GitHub Actions workflow runs nix flake check, builds the site and deploys it to GitHub Pages on every push to main. Pull requests run the check and the build without deploying.

Pages has to be enabled once: Settings → Pages → Source: GitHub Actions.

How:

  • Inlined Markdown: packages.slides folds each data-markdown="x.md" deck into its HTML as a <textarea data-template>, using flake-parts/scripts/inline-markdown.py. This means the copy inside the docs carries no .md file for MkDocs to render as a page.
  • Docs build: documentation.mkdocs-preBuildHook copies the built deck into docs/slides.
  • Presentation page: the embed uses plain HTML links. MkDocs checks Markdown links in strict mode, and the deck doesn't exist during watch-documentation, so a Markdown link would break the live preview.
  • Workflow: .github/workflows/pages.yml runs on ubuntu-latest with cachix/install-nix-action, upload-pages-artifact and deploy-pages.

Verified locally:

  • nix flake check passes.
  • In headless Chromium, the iframe on /presentation/ renders all 9 slides.
  • The built deck renders from file:// with no console errors.
  • watch-documentation starts cleanly.

🤖 Generated with Claude Code

https://claude.ai/code/session_0134mfNgkokU4oenUnqXigQz


Generated by Claude Code

- packages.slides inlines each data-markdown deck into its .html
  (flake-parts/scripts/inline-markdown.py): the built deck opens from
  file:// and carries no .md for MkDocs to render
- documentation build copies the built deck to /slides/
  (mkdocs-preBuildHook); new Presentation page embeds it in an iframe
- .github/workflows/pages.yml: nix flake check + nix build .#documentation,
  deploy to GitHub Pages on main (PRs check and build only)
- docs updated for all of the above

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0134mfNgkokU4oenUnqXigQz
@andrewthomaslee andrewthomaslee self-assigned this Oct 15, 2026
@andrewthomaslee
andrewthomaslee merged commit c2aa822 into main Oct 15, 2026
2 checks passed
@andrewthomaslee
andrewthomaslee deleted the claude/project-thread-7g98qx branch October 15, 2026 23:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants