diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml new file mode 100644 index 0000000..8c08b87 --- /dev/null +++ b/.github/workflows/pre-commit.yml @@ -0,0 +1,47 @@ +name: pre-commit + +on: + pull_request: + push: + branches: [master] + +jobs: + pre-commit: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + # Need full history so the diff range below can resolve the + # base/before SHA against actual commits, not just HEAD. + fetch-depth: 0 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.11' + + - name: Install pre-commit + run: pip install pre-commit + + - name: Install image tooling (jpegoptim, oxipng, svgo) + run: | + sudo apt-get update + sudo apt-get install -y jpegoptim + cargo install oxipng --locked + npm install -g svgo + + - name: Run pre-commit on the PR's changed files + if: github.event_name == 'pull_request' + run: | + pre-commit run --show-diff-on-failure \ + --from-ref ${{ github.event.pull_request.base.sha }} \ + --to-ref ${{ github.event.pull_request.head.sha }} + + - name: Run pre-commit on the push's changed files + if: github.event_name == 'push' + run: | + pre-commit run --show-diff-on-failure \ + --from-ref ${{ github.event.before }} \ + --to-ref ${{ github.sha }} diff --git a/.github/workflows/site-health.yml b/.github/workflows/site-health.yml new file mode 100644 index 0000000..b9cc02d --- /dev/null +++ b/.github/workflows/site-health.yml @@ -0,0 +1,76 @@ +name: site-health + +on: + pull_request: + paths: + - '*.html' + - '*.md' + - '_layouts/**' + - '_includes/**' + - '_config.yml' + - '_data/**' + - '_posts/**' + - 'images/**' + - 'css/**' + - 'js/**' + - 'Gemfile' + - 'Gemfile.lock' + - 'lychee.toml' + - '.html5validator.yaml' + schedule: + # Weekly Monday 9am UTC, matching update-publications cadence. + - cron: '0 9 * * 1' + workflow_dispatch: + +jobs: + site-health: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: '3.3' + bundler-cache: true + + - name: Build site + run: bundle exec jekyll build + + - name: Check links with lychee + id: lychee + uses: lycheeverse/lychee-action@v2 + with: + # --exclude-path takes a regex matched against file paths. + # Skip legacy blog posts (deferred to a content-cleanup phase). + args: >- + --config ./lychee.toml + --no-progress + --root-dir ${{ github.workspace }}/_site + --exclude-path _site/blog + _site + output: lychee-report.md + fail: true + + # On failure, post the lychee report as a sticky PR comment so + # the specific failing URLs are easy to see without digging + # through job logs. Sticky = updates in place rather than piling up. + - name: Comment lychee report on PR + if: failure() && github.event_name == 'pull_request' + uses: marocchino/sticky-pull-request-comment@v2 + with: + header: lychee + path: lychee-report.md + + - name: Validate HTML + id: html5validator + # Soft-fail for now: surface errors via the workflow log but + # don't gate the PR on them. The Jekyll site has Bootstrap-3-era + # HTML that needs a separate cleanup pass to be HTML5-spec clean. + continue-on-error: true + uses: Cyb3r-Jak3/html5validator-action@v7.2.0 + with: + root: _site/ + config: .html5validator.yaml diff --git a/.github/workflows/update-publications.yml b/.github/workflows/update-publications.yml index 060c643..83fc043 100644 --- a/.github/workflows/update-publications.yml +++ b/.github/workflows/update-publications.yml @@ -9,32 +9,32 @@ on: jobs: update-publications: runs-on: ubuntu-latest - + steps: - name: Checkout repository uses: actions/checkout@v4 with: token: ${{ secrets.GITHUB_TOKEN }} - + - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.11' - + - name: Install dependencies run: | python -m pip install --upgrade pip pip install scholarly pyyaml "httpx==0.27.2" - + - name: Run publication updater run: | python scholar_scraper.py - + - name: Check for changes id: git-check run: | git diff --exit-code _data/publications.yaml || echo "changed=true" >> $GITHUB_OUTPUT - + - name: Commit and push if changed if: steps.git-check.outputs.changed == 'true' run: | @@ -42,4 +42,4 @@ jobs: git config --local user.name "github-actions[bot]" git add _data/publications.yaml git commit -m "Auto-update publications from Google Scholar [skip ci]" - git push \ No newline at end of file + git push diff --git a/.gitignore b/.gitignore index 3c7baf4..a5833ec 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,4 @@ _site/ .sass-cache/ -Gemfile -Gemfile.lock +.lycheecache **/.DS_Store diff --git a/.html5validator.yaml b/.html5validator.yaml new file mode 100644 index 0000000..906d129 --- /dev/null +++ b/.html5validator.yaml @@ -0,0 +1,10 @@ +# html5validator config. See https://github.com/svenkreiss/html5validator. +# Used by .github/workflows/site-health.yml. + +root: _site +match: '*.html' + +# Patterns to ignore. Add Bootstrap-3-era / Jekyll-specific noise here +# as it surfaces; keep the list short so real errors aren't masked. +ignore_re: + [] diff --git a/.image-size-overrides b/.image-size-overrides new file mode 100644 index 0000000..4df66e6 --- /dev/null +++ b/.image-size-overrides @@ -0,0 +1,6 @@ +# Allow-list for images that legitimately exceed the 1 MB size cap. +# One repo-relative path per line. Lines starting with # are comments. +# Example: +# images/research/big-zebrafish-figure.png +# +# Files listed here will not block commits but will still print a warning. diff --git a/.markdownlint.json b/.markdownlint.json new file mode 100644 index 0000000..249f7a0 --- /dev/null +++ b/.markdownlint.json @@ -0,0 +1,12 @@ +{ + "default": true, + "MD001": false, + "MD013": false, + "MD025": false, + "MD033": false, + "MD034": false, + "MD036": false, + "MD041": false, + "MD045": false, + "MD059": false +} diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..a4b54c8 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,58 @@ +# Pre-commit hook configuration. See https://pre-commit.com/ for docs. +# Contributor setup: README.md > Contributing. + +repos: + - repo: local + hooks: + - id: jpegoptim + name: jpegoptim (compress JPEGs to q=85, strip metadata) + entry: jpegoptim --max=85 --strip-all --preserve --all-progressive + language: system + types: [jpeg] + + - id: oxipng + name: oxipng (lossless PNG optimization) + entry: oxipng --opt 4 --strip safe + language: system + types: [png] + + - id: svgo + name: svgo (SVG minification) + entry: svgo --multipass + language: system + types: [svg] + + # Runs after the compression hooks so it sees post-compression sizes. + - id: image-size-cap + name: image-size-cap (warn >500 KB, block >1 MB) + entry: python3 scripts/check_image_size.py + language: system + types_or: [image, svg] + + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v6.0.0 + hooks: + - id: trailing-whitespace + exclude: '\.svg$' + - id: end-of-file-fixer + # svgo strips the trailing newline; let it win on .svg files. + exclude: '\.svg$' + - id: check-yaml + - id: check-json + - id: check-merge-conflict + - id: mixed-line-ending + args: [--fix=lf] + - id: check-added-large-files + args: [--maxkb=1000] + - id: detect-private-key + + - repo: https://github.com/adrienverge/yamllint + rev: v1.38.0 + hooks: + - id: yamllint + + - repo: https://github.com/igorshubovych/markdownlint-cli + rev: v0.48.0 + hooks: + - id: markdownlint + args: [--fix] diff --git a/.yamllint b/.yamllint new file mode 100644 index 0000000..69b9175 --- /dev/null +++ b/.yamllint @@ -0,0 +1,15 @@ +# yamllint configuration. See https://yamllint.readthedocs.io/. +# Start from the bundled "relaxed" profile and loosen further for data +# files (where long lines are normal and indent style varies). + +extends: relaxed + +rules: + document-start: disable + line-length: disable + indentation: + spaces: 2 + indent-sequences: whatever + check-multi-line-strings: false + truthy: + check-keys: false diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..e1bc0c3 --- /dev/null +++ b/Gemfile @@ -0,0 +1,5 @@ +source "https://rubygems.org" + +# GitHub Pages pins all gem versions used by the live build, so installing +# this locally gives a reproducible preview that matches production. +gem "github-pages", group: :jekyll_plugins diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000..0de80f3 --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,313 @@ +GEM + remote: https://rubygems.org/ + specs: + activesupport (8.1.3) + base64 + bigdecimal + concurrent-ruby (~> 1.0, >= 1.3.1) + connection_pool (>= 2.2.5) + drb + i18n (>= 1.6, < 2) + json + logger (>= 1.4.2) + minitest (>= 5.1) + securerandom (>= 0.3) + tzinfo (~> 2.0, >= 2.0.5) + uri (>= 0.13.1) + addressable (2.9.0) + public_suffix (>= 2.0.2, < 8.0) + base64 (0.3.0) + bigdecimal (4.1.2) + coffee-script (2.4.1) + coffee-script-source + execjs + coffee-script-source (1.12.2) + colorator (1.1.0) + commonmarker (0.23.12) + concurrent-ruby (1.3.6) + connection_pool (3.0.2) + csv (3.3.5) + dnsruby (1.73.1) + base64 (>= 0.2) + logger (~> 1.6) + simpleidn (~> 0.2.1) + drb (2.2.3) + em-websocket (0.5.3) + eventmachine (>= 0.12.9) + http_parser.rb (~> 0) + ethon (0.18.0) + ffi (>= 1.15.0) + logger + eventmachine (1.2.7) + execjs (2.10.1) + faraday (2.14.1) + faraday-net_http (>= 2.0, < 3.5) + json + logger + faraday-net_http (3.4.2) + net-http (~> 0.5) + ffi (1.17.4-aarch64-linux-gnu) + ffi (1.17.4-aarch64-linux-musl) + ffi (1.17.4-arm-linux-gnu) + ffi (1.17.4-arm-linux-musl) + ffi (1.17.4-arm64-darwin) + ffi (1.17.4-x86_64-darwin) + ffi (1.17.4-x86_64-linux-gnu) + ffi (1.17.4-x86_64-linux-musl) + forwardable-extended (2.6.0) + gemoji (4.1.0) + github-pages (232) + github-pages-health-check (= 1.18.2) + jekyll (= 3.10.0) + jekyll-avatar (= 0.8.0) + jekyll-coffeescript (= 1.2.2) + jekyll-commonmark-ghpages (= 0.5.1) + jekyll-default-layout (= 0.1.5) + jekyll-feed (= 0.17.0) + jekyll-gist (= 1.5.0) + jekyll-github-metadata (= 2.16.1) + jekyll-include-cache (= 0.2.1) + jekyll-mentions (= 1.6.0) + jekyll-optional-front-matter (= 0.3.2) + jekyll-paginate (= 1.1.0) + jekyll-readme-index (= 0.3.0) + jekyll-redirect-from (= 0.16.0) + jekyll-relative-links (= 0.6.1) + jekyll-remote-theme (= 0.4.3) + jekyll-sass-converter (= 1.5.2) + jekyll-seo-tag (= 2.8.0) + jekyll-sitemap (= 1.4.0) + jekyll-swiss (= 1.0.0) + jekyll-theme-architect (= 0.2.0) + jekyll-theme-cayman (= 0.2.0) + jekyll-theme-dinky (= 0.2.0) + jekyll-theme-hacker (= 0.2.0) + jekyll-theme-leap-day (= 0.2.0) + jekyll-theme-merlot (= 0.2.0) + jekyll-theme-midnight (= 0.2.0) + jekyll-theme-minimal (= 0.2.0) + jekyll-theme-modernist (= 0.2.0) + jekyll-theme-primer (= 0.6.0) + jekyll-theme-slate (= 0.2.0) + jekyll-theme-tactile (= 0.2.0) + jekyll-theme-time-machine (= 0.2.0) + jekyll-titles-from-headings (= 0.5.3) + jemoji (= 0.13.0) + kramdown (= 2.4.0) + kramdown-parser-gfm (= 1.1.0) + liquid (= 4.0.4) + mercenary (~> 0.3) + minima (= 2.5.1) + nokogiri (>= 1.16.2, < 2.0) + rouge (= 3.30.0) + terminal-table (~> 1.4) + webrick (~> 1.8) + github-pages-health-check (1.18.2) + addressable (~> 2.3) + dnsruby (~> 1.60) + octokit (>= 4, < 8) + public_suffix (>= 3.0, < 6.0) + typhoeus (~> 1.3) + html-pipeline (2.14.3) + activesupport (>= 2) + nokogiri (>= 1.4) + http_parser.rb (0.8.1) + i18n (1.14.8) + concurrent-ruby (~> 1.0) + jekyll (3.10.0) + addressable (~> 2.4) + colorator (~> 1.0) + csv (~> 3.0) + em-websocket (~> 0.5) + i18n (>= 0.7, < 2) + jekyll-sass-converter (~> 1.0) + jekyll-watch (~> 2.0) + kramdown (>= 1.17, < 3) + liquid (~> 4.0) + mercenary (~> 0.3.3) + pathutil (~> 0.9) + rouge (>= 1.7, < 4) + safe_yaml (~> 1.0) + webrick (>= 1.0) + jekyll-avatar (0.8.0) + jekyll (>= 3.0, < 5.0) + jekyll-coffeescript (1.2.2) + coffee-script (~> 2.2) + coffee-script-source (~> 1.12) + jekyll-commonmark (1.4.0) + commonmarker (~> 0.22) + jekyll-commonmark-ghpages (0.5.1) + commonmarker (>= 0.23.7, < 1.1.0) + jekyll (>= 3.9, < 4.0) + jekyll-commonmark (~> 1.4.0) + rouge (>= 2.0, < 5.0) + jekyll-default-layout (0.1.5) + jekyll (>= 3.0, < 5.0) + jekyll-feed (0.17.0) + jekyll (>= 3.7, < 5.0) + jekyll-gist (1.5.0) + octokit (~> 4.2) + jekyll-github-metadata (2.16.1) + jekyll (>= 3.4, < 5.0) + octokit (>= 4, < 7, != 4.4.0) + jekyll-include-cache (0.2.1) + jekyll (>= 3.7, < 5.0) + jekyll-mentions (1.6.0) + html-pipeline (~> 2.3) + jekyll (>= 3.7, < 5.0) + jekyll-optional-front-matter (0.3.2) + jekyll (>= 3.0, < 5.0) + jekyll-paginate (1.1.0) + jekyll-readme-index (0.3.0) + jekyll (>= 3.0, < 5.0) + jekyll-redirect-from (0.16.0) + jekyll (>= 3.3, < 5.0) + jekyll-relative-links (0.6.1) + jekyll (>= 3.3, < 5.0) + jekyll-remote-theme (0.4.3) + addressable (~> 2.0) + jekyll (>= 3.5, < 5.0) + jekyll-sass-converter (>= 1.0, <= 3.0.0, != 2.0.0) + rubyzip (>= 1.3.0, < 3.0) + jekyll-sass-converter (1.5.2) + sass (~> 3.4) + jekyll-seo-tag (2.8.0) + jekyll (>= 3.8, < 5.0) + jekyll-sitemap (1.4.0) + jekyll (>= 3.7, < 5.0) + jekyll-swiss (1.0.0) + jekyll-theme-architect (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-cayman (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-dinky (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-hacker (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-leap-day (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-merlot (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-midnight (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-minimal (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-modernist (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-primer (0.6.0) + jekyll (> 3.5, < 5.0) + jekyll-github-metadata (~> 2.9) + jekyll-seo-tag (~> 2.0) + jekyll-theme-slate (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-tactile (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-time-machine (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-titles-from-headings (0.5.3) + jekyll (>= 3.3, < 5.0) + jekyll-watch (2.2.1) + listen (~> 3.0) + jemoji (0.13.0) + gemoji (>= 3, < 5) + html-pipeline (~> 2.2) + jekyll (>= 3.0, < 5.0) + json (2.19.5) + kramdown (2.4.0) + rexml + kramdown-parser-gfm (1.1.0) + kramdown (~> 2.0) + liquid (4.0.4) + listen (3.10.0) + logger + rb-fsevent (~> 0.10, >= 0.10.3) + rb-inotify (~> 0.9, >= 0.9.10) + logger (1.7.0) + mercenary (0.3.6) + minima (2.5.1) + jekyll (>= 3.5, < 5.0) + jekyll-feed (~> 0.9) + jekyll-seo-tag (~> 2.1) + minitest (6.0.6) + drb (~> 2.0) + prism (~> 1.5) + net-http (0.9.1) + uri (>= 0.11.1) + nokogiri (1.19.3-aarch64-linux-gnu) + racc (~> 1.4) + nokogiri (1.19.3-aarch64-linux-musl) + racc (~> 1.4) + nokogiri (1.19.3-arm-linux-gnu) + racc (~> 1.4) + nokogiri (1.19.3-arm-linux-musl) + racc (~> 1.4) + nokogiri (1.19.3-arm64-darwin) + racc (~> 1.4) + nokogiri (1.19.3-x86_64-darwin) + racc (~> 1.4) + nokogiri (1.19.3-x86_64-linux-gnu) + racc (~> 1.4) + nokogiri (1.19.3-x86_64-linux-musl) + racc (~> 1.4) + octokit (4.25.1) + faraday (>= 1, < 3) + sawyer (~> 0.9) + pathutil (0.16.2) + forwardable-extended (~> 2.6) + prism (1.9.0) + public_suffix (5.1.1) + racc (1.8.1) + rb-fsevent (0.11.2) + rb-inotify (0.11.1) + ffi (~> 1.0) + rexml (3.4.4) + rouge (3.30.0) + rubyzip (2.4.1) + safe_yaml (1.0.5) + sass (3.7.4) + sass-listen (~> 4.0.0) + sass-listen (4.0.0) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + sawyer (0.9.3) + addressable (>= 2.3.5) + faraday (>= 0.17.3, < 3) + securerandom (0.4.1) + simpleidn (0.2.3) + terminal-table (1.8.0) + unicode-display_width (~> 1.1, >= 1.1.1) + typhoeus (1.6.0) + ethon (>= 0.18.0) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + unicode-display_width (1.8.0) + uri (1.1.1) + webrick (1.9.2) + +PLATFORMS + aarch64-linux-gnu + aarch64-linux-musl + arm-linux-gnu + arm-linux-musl + arm64-darwin + x86_64-darwin + x86_64-linux-gnu + x86_64-linux-musl + +DEPENDENCIES + github-pages + +BUNDLED WITH + 2.5.22 diff --git a/README.md b/README.md index e1fb94b..ba61ca5 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,9 @@ # pearsonlab.github.io + Lab webpage ### Notes + In order to render publications into page: 1. Download citations from Google Scholar in .bib format. @@ -9,3 +11,106 @@ In order to render publications into page: 1. `. process_refs` Everything else should just work. + +## Contributing + +### Local preview + +The site is built by Jekyll. To preview changes locally: + +```sh +bundle install +bundle exec jekyll serve --livereload +``` + +Then open http://localhost:4000. + +### Pre-commit hooks + +The repo uses [pre-commit](https://pre-commit.com) to compress images and +catch other small issues before they land. One-time setup: + +```sh +pip install pre-commit +pre-commit install + +# image tooling (one of these per platform): +sudo apt install jpegoptim && cargo install oxipng # Ubuntu/Debian +brew install jpegoptim oxipng # macOS +npm install -g svgo +``` + +After that, every `git commit` will automatically: + +- Compress staged JPEGs to quality 85 with `jpegoptim` +- Losslessly optimize staged PNGs with `oxipng` +- Minify staged SVGs with `svgo` +- Block any image still over 1 MB after compression, and warn on images + between 500 KB and 1 MB (see "Image size policy" below) +- Strip trailing whitespace, fix mixed line endings, ensure files end + with a final newline +- Validate YAML and JSON files (`_data/`, `_config.yml`, etc.) +- Block accidental merge-conflict markers and committed private keys +- Lint Markdown posts with `markdownlint --fix` (auto-fixes most + formatting issues; see `.markdownlint.json` for the disabled rules) +- Style-check YAML files with `yamllint` (config: `.yamllint`) + +If a hook modifies a file, the commit is aborted; re-stage the modified +file and commit again. To run the hooks manually across just your +changes vs. `master`: + +```sh +pre-commit run --from-ref origin/master --to-ref HEAD +``` + +(Avoid `--all-files` — it will pick up the legacy ~26 MB of +unoptimized images and fail. A separate one-shot backfill phase +will normalize those.) + +The same hooks run in CI on every PR — scoped to the PR's changed +files. If you skip the local install, CI will tell you what would +have changed. + +### Per-page SEO and social previews + +The site uses [jekyll-seo-tag](https://github.com/jekyll/jekyll-seo-tag) to +emit OpenGraph and Twitter card meta tags. Defaults come from `_config.yml` +(site title, description, lab logo as fallback image). Pages can override +any of these via front matter: + +```yaml +--- +title: "Pearson Lab Research" +description: "We study ..." +image: /images/research/cover.png +--- +``` + +A `sitemap.xml` is generated automatically at build time by +[jekyll-sitemap](https://github.com/jekyll/jekyll-sitemap). + +### Site health + +A separate CI workflow (`.github/workflows/site-health.yml`) builds the +site and runs: + +- **lychee** to check for broken links (config: `lychee.toml`) +- **html5validator** to check rendered HTML (config: `.html5validator.yaml`) + +This runs on PRs that touch site content, on push to `master`, and once +a week on Mondays. The weekly schedule catches link rot from external +hosts before someone notices on the live site. + +### Image size policy + +To keep the repo lean, images are subject to: + +- **Hard cap:** 1 MB per file (post-compression). Commits with larger + images are blocked. +- **Soft warning:** 500 KB. Commits succeed but print a warning. + +Most properly-sized lab-member photos at q=85 land in 100–300 KB. If a +figure genuinely needs to exceed 1 MB (e.g., a high-resolution research +figure where detail matters), add its repo-relative path to +`.image-size-overrides` and commit that change with a brief justification +in the commit message. diff --git a/_config.yml b/_config.yml index eea9272..4b0db5b 100644 --- a/_config.yml +++ b/_config.yml @@ -1,2 +1,21 @@ title: "Pearson Lab at Duke University" +description: >- + Computational neuroscience at Duke University. We build statistical and + machine-learning tools to understand how brains generate behavior. +url: "https://pearsonlab.github.io" +author: "Pearson Lab" + markdown: kramdown + +plugins: + - jekyll-sitemap + - jekyll-seo-tag + +# Default OpenGraph image for social previews. Applied site-wide via +# Jekyll defaults so jekyll-seo-tag picks it up. Pages can override +# via `image:` in front matter. +defaults: + - scope: + path: "" + values: + image: /images/plab_hex_icon_gray.png diff --git a/_includes/blog_image.html b/_includes/blog_image.html index 2fdc734..f6a3bc6 100644 --- a/_includes/blog_image.html +++ b/_includes/blog_image.html @@ -1,4 +1,4 @@