just a website
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

updates to headers and small footer correction

+54 -36
+23 -25
.claude/settings.json
··· 1 1 { 2 - "enabledPlugins": { 3 - "context7@claude-plugins-official": true, 4 - "cloudflare@cloudflare": true, 5 - "frontend-design@claude-plugins-official": true, 6 - "github@claude-plugins-official": true, 7 - "superpowers@claude-plugins-official": true, 8 - "quarto@posit-dev-skills": true, 9 - "code-review@claude-plugins-official": true, 10 - "claude-md-management@claude-plugins-official": true, 11 - "feature-dev@claude-plugins-official": true, 12 - "code-simplifier@claude-plugins-official": true, 13 - "linear@claude-plugins-official": true, 14 - "security-guidance@claude-plugins-official": true, 15 - "claude-code-setup@claude-plugins-official": true, 16 - "learning-opportunities@learning-opportunities": true, 17 - "learning-opportunities-auto@learning-opportunities": true, 18 - "explanatory-output-style@claude-plugins-official": true, 19 - "learning-output-style@claude-plugins-official": true 20 - }, 21 - "worktree": { 22 - "symlinkDirectories": [ 23 - "node_modules", 24 - "renv/library" 25 - ] 26 - } 2 + "worktree": { 3 + "symlinkDirectories": [ 4 + "node_modules", 5 + "renv/library" 6 + ] 7 + }, 8 + "enabledPlugins": { 9 + "context7@claude-plugins-official": true, 10 + "cloudflare@cloudflare": true, 11 + "frontend-design@claude-plugins-official": true, 12 + "github@claude-plugins-official": true, 13 + "superpowers@claude-plugins-official": true, 14 + "quarto@posit-dev-skills": true, 15 + "code-review@claude-plugins-official": true, 16 + "claude-md-management@claude-plugins-official": true, 17 + "feature-dev@claude-plugins-official": true, 18 + "code-simplifier@claude-plugins-official": true, 19 + "security-guidance@claude-plugins-official": true, 20 + "claude-code-setup@claude-plugins-official": true, 21 + "learning-opportunities@learning-opportunities": true, 22 + "explanatory-output-style@claude-plugins-official": true, 23 + "learning-output-style@claude-plugins-official": true 24 + } 27 25 }
+22 -10
AGENTS.md
··· 1 1 # Agent Instructions 2 2 3 - This file provides guidance to AI coding agents (including Claude Code) when working with code in this repository. 3 + This file provides guidance to AI coding agents (including Claude Code) when working with code in this repository. `CLAUDE.md` is a symlink to this file — edit either path; both point to the same content. 4 4 5 5 ## What this is 6 6 ··· 34 34 template.ejs # EJS template for the post listing on the homepage 35 35 html/ 36 36 analytics.html # Simple Analytics script injection 37 - a11y.html # Accessibility enhancements (ARIA landmarks, roles) 37 + a11y.html # Runtime JS patches for Quarto template a11y bugs (main-content focus, navbar role, code-copy focus restore) 38 38 skip-link.html # Skip-to-content link injected into every page 39 39 posts/ # Blog posts, each in its own subdirectory with index.qmd 40 40 _metadata.yml # Shared frontmatter defaults for all posts (freeze: auto) 41 41 404.qmd # Custom 404 page 42 - .well-known/ # PGP key (pgp-key.txt) and security.txt 42 + .well-known/ # PGP key (pgp-key.txt), security.txt, OpenPGP Web Key Directory files 43 43 _redirects # Cloudflare redirect rules 44 - _headers # Cloudflare response header rules 44 + _headers # Cloudflare response header rules (global security headers + OpenPGP headers) 45 45 wrangler.jsonc # Cloudflare Workers deployment config 46 46 package.json # Node deps (just wrangler) 47 47 renv.lock # Locked R package versions 48 - .github/workflows/ 49 - deploy.yml # Build and deploy pipeline 48 + .Rprofile # Sources renv/activate.R (auto-snapshot + pak enabled) 49 + .github/ 50 + workflows/deploy.yml # Build and deploy pipeline 51 + dependabot.yml # Weekly npm + GitHub Actions dependency updates 50 52 ``` 51 53 52 54 Output goes to `_site/` (generated, not committed). The `_freeze/` directory (computational cache) is also not committed — it is restored from the GitHub Actions cache between runs. ··· 80 82 - Sorted by date descending; no categories, search, filters, or sort UI 81 83 82 84 When changing look and feel, `assets/custom.scss` and `_quarto.yml` are the two files to focus on. Do not introduce a Quarto theme — the site intentionally uses `theme: none`. 85 + 86 + **Bootstrap caveat**: `theme: none` disables the *Quarto* theme layer, but Quarto still ships Bootstrap's CSS/JS in the rendered output. That's why `custom.scss` uses `!important` in a few navbar/layout rules to override Bootstrap defaults — it's expected, not technical debt. 83 87 84 88 --- 85 89 ··· 103 107 3. Run `quarto render` → outputs to `_site/` 104 108 4. Run `wrangler deploy` → uploads `_site/` to Cloudflare Workers 105 109 106 - **Runner**: `blacksmith-4vcpu-ubuntu-2404-arm` (4-core ARM Ubuntu 24.04) 110 + **Runner**: `blacksmith-4vcpu-ubuntu-2404` (4-core x86 Ubuntu 24.04 on Blacksmith) 107 111 108 112 **Secrets required**: `CLOUDFLARE_ACCOUNT_ID`, `CLOUDFLARE_API_TOKEN` (stored in GitHub Actions). 109 113 ··· 119 123 - Static assets served from `_site/` 120 124 - `not_found_handling: "404-page"` — unmatched routes serve the rendered `404.html` 121 125 - `html_handling: "auto-trailing-slash"` — URL normalisation (nested under `assets`) 122 - - Custom domains: `rorylawless.com` and `www.rorylawless.com` (both route to the same Worker) 123 - - Observability: full logs and traces enabled at 100% head sampling rate with persistence (viewable in the Cloudflare dashboard) 126 + - Custom domain: `rorylawless.com` only (apex). This is the single entry in `routes`. 127 + - No `observability` block — Cloudflare defaults apply (view logs/traces in the Cloudflare dashboard) 128 + 129 + There is no Worker script — the deployment is static assets only. URL redirects live in `_redirects` (Cloudflare syntax). Response headers live in `_headers` — currently used for global security headers (`Strict-Transport-Security`, `Content-Security-Policy: frame-ancestors 'none'`, `X-Frame-Options`, `X-Content-Type-Options`, `Referrer-Policy`, and `Permissions-Policy`) plus CORS and `Content-Type` headers for the OpenPGP Web Key Directory endpoint at `/.well-known/openpgpkey/`. The HSTS header intentionally omits `includeSubDomains` and `preload`. `www.rorylawless.com` is 301'd to the apex by a Cloudflare Redirect Rule configured in the dashboard (not in this repo, and not in `wrangler.jsonc`). 124 130 125 - There is no Worker script — the deployment is static assets only. URL redirects live in `_redirects` (Cloudflare syntax). Response headers live in `_headers` — currently used to set CORS headers and `Content-Type` for the PGP key endpoint at `/.well-known/openpgpkey/`. A Cloudflare Redirect Rule (configured in the dashboard, not the repo) 301s `www.rorylawless.com` to the apex. 131 + --- 132 + 133 + ## Dependencies 134 + 135 + - **Node**: Only `wrangler` (devDependency). `package.json` sets `"type": "module"`. Dependabot bumps it weekly. 136 + - **R**: Pinned in `renv.lock` (R 4.5.3, CRAN + R-Multiverse). `.Rprofile` sources `renv/activate.R` and enables `renv.config.auto.snapshot` and `renv.config.pak.enabled`. 137 + - **GitHub Actions**: Versions bumped weekly by Dependabot (`.github/dependabot.yml`). 126 138 127 139 --- 128 140
+8
_headers
··· 1 + /* 2 + Strict-Transport-Security: max-age=31536000 3 + Content-Security-Policy: frame-ancestors 'none' 4 + X-Frame-Options: DENY 5 + X-Content-Type-Options: nosniff 6 + Referrer-Policy: strict-origin-when-cross-origin 7 + Permissions-Policy: camera=(), geolocation=(), microphone=() 8 + 1 9 /.well-known/openpgpkey/* 2 10 Access-Control-Allow-Origin: * 3 11
+1 -1
_quarto.yml
··· 18 18 background: "#fbf5f5" 19 19 foreground: "#070a0c" 20 20 center: | 21 - Made with [Quarto](https://quarto.org/) in DC.<br>[Website](https://rorylawless.com/) © 2026 by [Rory Lawless](about.qmd) is licensed under [CC BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/). 21 + Made with [Quarto](https://quarto.org/) in DC.<br>[Website](https://rorylawless.com/) © 2026 by [Rory Lawless](/about.qmd) is licensed under [CC BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/). 22 22 search: false 23 23 draft-mode: gone 24 24 navbar: