Skip to content

Docs: Add GitHub Pages landing page.#11

Merged
matejvasek merged 1 commit into
masterfrom
011-docs-pages-landing
Apr 21, 2026
Merged

Docs: Add GitHub Pages landing page.#11
matejvasek merged 1 commit into
masterfrom
011-docs-pages-landing

Conversation

@twoGiants
Copy link
Copy Markdown
Collaborator

@twoGiants twoGiants commented Apr 21, 2026

Changes

  • 🎁 Add dark-themed landing page for GitHub Pages with install instructions, resource links, and syntax-highlighted plugin.yaml preview
  • 🧹 custom CSS only (Sora + JetBrains Mono fonts, highlight.js for YAML syntax)
  • 🧹 SRI integrity hashes on all CDN resources
  • 🎁 Add "Deploy to your cluster" link at top of README
  • 🧹 Add pages/plugin.yaml to .gitignore for local testing

Screenshot

Screenshot From 2026-04-21 16-47-46

@twoGiants twoGiants force-pushed the 011-docs-pages-landing branch from 8d9033e to 38e870a Compare April 21, 2026 14:34
@twoGiants twoGiants requested a review from matejvasek April 21, 2026 14:35
Add a simple landing page with quick install instructions,
a direct link to plugin.yaml, and links to the repository
and container registry.

Co-Authored-By: Claude <noreply@anthropic.com>
@twoGiants twoGiants force-pushed the 011-docs-pages-landing branch from 38e870a to 15f77fd Compare April 21, 2026 14:48
@matejvasek
Copy link
Copy Markdown
Collaborator

Good to go.

Claude had some opinions but nothing important:

Feedback

Overall: Solid, clean, self-contained page. A few items worth flagging:

  1. CDN integrity — font stylesheet has no SRI hash
    The highlight.js CSS and JS have integrity + crossorigin attributes (good), but the Google Fonts does not. Google Fonts doesn't support SRI since the CSS response varies by User-Agent, so this is expected — but worth noting the trust boundary difference.

  2. navigator.clipboard.writeText requires secure context
    The copy-to-clipboard code uses navigator.clipboard.writeText, which only works over HTTPS (or localhost). GitHub Pages serves over HTTPS so this is fine, but there's no fallback — if clipboard write fails for any other reason the .catch() is missing from the promise chain. Consider adding a .catch(() => {}) or a
    try/catch to avoid an unhandled rejection if the user denies clipboard permission.

  3. fetch('plugin.yaml') error UX
    The .catch() block sets "Failed to load plugin.yaml" — straightforward, but since this is a relative URL, it depends on plugin.yaml being co-located. The CI workflow ensures this (helm template ... > public/plugin.yaml then cp pages/index.html public/index.html), so it works in production. For local development,
    plugin.yaml won't exist at that path (hence the .gitignore entry), so the error message will always show when opening index.html locally. That's probably fine — just confirming it's intentional.

  4. Commit prefix convention
    The commit uses docs: prefix. The page is documentation/marketing-oriented so this fits, though it also touches CI (.github/workflows/ci.yml). Minor nitpick — no action needed.

  5. Inline CSS/JS in a single HTML file
    248 lines in one file with all styles and scripts inline. For a simple landing page this is the right call — no build step, no dependencies to manage, instant load. Good decision.

  6. External CDN pinning
    highlight.js is pinned to @11.11.1 via the cdn-release repo path and has SRI hashes. This is well done — prevents supply-chain drift.


Verdict

Clean commit, appropriate scope. The only actionable item is the missing .catch() on the clipboard promise chain (item 2) — everything else is minor or intentional.

@matejvasek
Copy link
Copy Markdown
Collaborator

My own suggestion:
might be good to add /pages to .dockerignore since changes to github pages do not mean changes to image

@matejvasek matejvasek merged commit 552eca8 into master Apr 21, 2026
4 checks passed
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