Skip to content

Publications page: linked titles, bold lab authors, year filter, type badge#45

Merged
jmxpearson merged 4 commits into
masterfrom
claude/publications-page-polish
May 12, 2026
Merged

Publications page: linked titles, bold lab authors, year filter, type badge#45
jmxpearson merged 4 commits into
masterfrom
claude/publications-page-polish

Conversation

@jmxpearson
Copy link
Copy Markdown
Member

Summary

Four enhancements to the publications page, none requiring any new manual data entry — everything is auto-derived from the existing _data/publications.yaml and _data/people.yml.

1. Title hyperlinks

The URL field was already in the data (populated by scholar_scraper.py from Google Scholar) but the template ignored it. Now each title is a link when a URL exists.

2. Bold lab authors

Every author whose (first-initial, last-name) matches an entry in _data/people.yml (PI + all roles, current and former) renders in <b>. So "John M Pearson" / "John Pearson" / "J Pearson" all match the PI; "Amanda Li" doesn't match "Thomas Li" because the first initials differ. Auto-maintained — adding or removing a lab member in people.yml propagates here on next build.

3. Year-filter chips

A row of buttons at the top of the page lets visitors narrow to a single year. Pure DOM toggle, ~15 lines of vanilla JS, no dependencies. "All" chip is the default; clicking another year hides the other sections.

4. Venue-type badge

Each entry shows a small PREPRINT / JOURNAL / CONFERENCE pill. The type is derived from container-title (bioRxiv / arXiv / medRxiv / chemRxiv / PsyArXiv / OSF preprints → preprint; "proceedings" / "neurips" / "advances in neural" / "cosyne" / "conference" → conference; otherwise journal). Lab can add a manual type: override field to _data/publications.yaml later if a venue is misclassified.

What it looks like

  • Default: all years visible, chips row at top with "All" highlighted. Each entry shows colored type badge (blue/amber/purple), title as a link, authors with lab members in bold, venue.
  • One year selected: only that year's section visible; chip becomes the highlighted active state.

Verified locally via Playwright at 1400×900 in both states.

Test plan

  • bundle exec jekyll build clean
  • vnu HTML5 validation → 0 errors on _site/publications.html
  • Lab author matching tightened (last + first-initial); verified false-positive "Amanda Li" no longer bolded while all "Pearson" variants stay bolded
  • Year filter chips toggle correctly (verified by Playwright clicking 2025 chip)
  • Type badge classification spot-checked across 2025/2026 entries (bioRxiv → preprint, Nature Human Behaviour → journal, NeurIPS proceedings → conference)
  • CI passes
  • Visual spot-check post-merge

Notes / non-goals

  • No search box — explicit non-goal per discussion.
  • No theme tags or explicit code/data fields — those would require ongoing manual data entry for ~150 papers. Deferred.
  • No type: override field in YAML yet — could be added later if any auto-classification is wrong. Adding one is a 3-line template change.
  • The lab-author matcher pulls from all entries in people.yml, current and former. That's intentional — authors should be bolded whether they were in the lab when the paper was written, even if they've since moved on.

https://claude.ai/code/session_01S5QXfkxZBNSAf2Y1XAD8H7


Generated by Claude Code

…badge

Four enhancements to the publications page, none of which require any
new manual data entry — everything is auto-derived from the existing
publications.yaml and people.yml.

1. Title hyperlinks: the URL field was already present in the data
   (auto-populated by scholar_scraper.py) but the template ignored it.
   Now <a href="{{ pub.URL }}"> when present.

2. Bold lab authors: every author whose (first-initial, last-name)
   matches a person in _data/people.yml (PI + all roles, current and
   former) renders in <b>. The first-initial check avoids false
   positives like Amanda Li getting bolded because Thomas Li is a
   former undergrad — Pearson papers still match "J Pearson",
   "JM Pearson", "John M Pearson", etc., since they all start with J.

3. Year-filter chips: a row of buttons at the top of the page lets
   visitors narrow to a single year. Pure DOM toggle, ~15 lines of
   vanilla JS, no dependencies.

4. Venue-type badge: each entry shows a small PREPRINT / JOURNAL /
   CONFERENCE pill derived from container-title (bioRxiv/arXiv/etc =
   preprint; proceedings/NeurIPS/conference = conference; otherwise
   journal). No data-entry overhead — fully auto-derived. Lab can
   add a manual `type:` override later if a venue is misclassified.

Verified locally: vnu HTML5 0 errors; Playwright screenshots of
"All" and "2025"-filtered states both render correctly with
appropriate bolding and badges.
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 12, 2026

claude added 3 commits May 12, 2026 19:24
Two new lychee tweaks surfaced by PR #45's URL-linking on the
publications page:

1. eScholarship's two URLs in publications.yaml return 202 Accepted.
   That's a legitimate success response for deferred-fetch repos
   (they're processing the request and the page will load once the
   pipeline finishes), but lychee's default accept list doesn't
   include it. Add 202.

2. web.stanford.edu/~hastie/ElemStatLearn/ (referenced from
   learning.html) intermittently times out from the runner — was a
   200 redirect on the last green run. Set accept_timeouts = true
   so transient slow hosts don't break CI on every run.
… 0.23)

lychee-action@v2 ships lychee 0.23 by default, which doesn't
recognise the accept_timeouts TOML field I added in the last commit —
hence the exit-3 config error. Move the flag to the CLI args instead,
which has been supported much longer.

The 202 accept code stays in lychee.toml since it's a config-style
addition that works on every version.
…tion pins)

Second attempt at the Stanford timeout: the CLI flag isn't in lychee
0.23 either, which is what lychee-action@v2 ships with by default —
the empty lychee report and exit-3 confirm it's still a config/arg
error, not a real link issue.

Backing the flag out entirely. The Stanford ~hastie URL was a 200
redirect on previous CI runs, so the TIMEOUT is transient. If it keeps
failing we can either exclude that one URL, or bump lycheeVersion in
the action to a newer release that has the flag.

Keeping `accept = [..., 202, ...]` in TOML since that's worked across
versions and fixes the escholarship 202 responses.
@jmxpearson jmxpearson merged commit a15f5ee into master May 12, 2026
2 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