Agent Notes (Hongyu_Cheng_Website.github.io)

This repo is a Jekyll (Ruby) static site for a personal academic homepage (AcadHomepage / Minimal-Mistakes style). Most of the apparent “complexity” comes from the theme scaffolding (includes, Sass partials, vendor JS/CSS/fonts), not from custom application logic.

What to edit (most common)

  • Homepage content: _pages/about.md (currently permalink: /).
  • Top navigation: _data/navigation.yml (links to in-page anchors generated from headings/IDs in about.md).
  • Site-wide config: _config.yml (title, author links, analytics id, scholar stats CDN flag, etc.).
  • Styling: assets/css/main.scss (imports _sass/* and contains custom overrides at the bottom).
  • Template structure: _layouts/default.html, _includes/* (head, masthead, sidebar, scripts, SEO).

Generated output / do not edit

  • _site/, _site_local/, .sass-cache/ are build artifacts (also in .gitignore). Don’t edit or commit them.

Local development

  • Install deps: bundle install
  • Run server (live reload): bash run_server.sh (runs bundle exec jekyll liveserve)
  • Build: bundle exec jekyll build

Notes:

  • GitHub Actions uses Ruby 3.2 (.github/workflows/deploy.yml). If local build issues occur, align Ruby/Bundler versions.

Deployment (GitHub Pages)

  • On push to main, .github/workflows/deploy.yml builds via Jekyll and deploys to GitHub Pages.
  • Prefer changing source files only; don’t try to “deploy by committing _site/”.

JavaScript guidance

  • The site currently loads only assets/js/main.min.js via _includes/scripts.html.
    • main.min.js is a minified vendor bundle (jQuery + plugins + theme glue). Avoid editing it directly unless you intentionally accept working with minified code.
  • If you need new behavior, prefer: 1) Create a small new JS file under assets/js/… 2) Include it in _includes/scripts.html 3) Keep it dependency-light (assume jQuery exists only if main.min.js remains in use)

CSS/Sass guidance

  • Prefer editing assets/css/main.scss (custom overrides already live there) or _sass/* partials.
  • Don’t hand-edit any compiled main.css under _site/ (it’s generated).
  • Navigation uses hash links like /#about-me and /#-publications.
    • about.md includes explicit anchors (e.g. <span class='anchor' id='about-me'></span>) and also relies on kramdown auto IDs for headings.
    • Changing heading text/emojis can change the generated id and silently break navigation. If you rename headings, update _data/navigation.yml accordingly.
  • Asset paths in templates are mostly relative (e.g. assets/css/main.css, assets/js/main.min.js).
    • This is fine for a single homepage at /, but if you add additional pages with nested URLs, consider switching to relative_url (e.g. /assets/css/main.css) to avoid broken assets.

Google Scholar stats (optional feature)

  • The crawler lives in google_scholar_crawler/ and expects GOOGLE_SCHOLAR_ID env var.
  • The site fetches JSON via _includes/fetch_google_scholar_stats.html from google-scholar-stats/gs_data.json (GitHub raw or jsDelivr, controlled by google_scholar_stats_use_cdn in _config.yml).
  • If you change the fetch logic, keep in mind it currently uses jQuery ($.getJSON).

Change philosophy

  • Keep changes minimal and localized: this is a static site, not an app.
  • Avoid introducing new build systems (Node/webpack/TS) unless explicitly requested.
  • Preserve existing HTML structure/classes when adjusting styles; the Sass overrides rely on them.