This is a Jekyll personal site. Serve with bundle exec jekyll serve,
verify with bundle exec jekyll build. Leave changes uncommitted for
review unless the user explicitly asks to commit.
_site/ — build output, regenerated on every build.assets/css/main.css — the base stylesheet is intentionally pristine.
All redesign skins live in assets/css/themes/ (see below)._posts/YYYY-MM-DD-slug.markdown)Required front matter:
layout: article, title, dateconference: VENUEYYYY (e.g. CVPR2026) — this single field drives
the year/venue filter pills, the venue tag on the card, and the
Research Highlights counts. Without it the post lands under “Other”
and is excluded from the counts.img: /dir/thumb.jpg — card thumbnail, resolved under assets/img/ (JPG, quality ~85, transparency flattened onto white; keep GIFs as-is for animated teasers)color: 6D28D9 — conference pill color (hex, no #)Optional: description, code: / arxiv: / video:
(URLs render as buttons), external_url: (card links out to it instead
of the internal page), bibtex: | (renders a copy-to-clipboard button),
pinned: true (floats to top of the list with a pin badge + ring),
featured: true (ring only).
The card excerpt is the first 80 words of the markdown body.
New year? Add a year-filter block in _layouts/main.html (button with
data-year="YYYY" plus a dropdown with data-filter="year-YYYY" and one
data-filter="VENUEYYYY" link per venue — year matching is a substring
match against the conference value, see the filter script in
index.html). New venue in an existing year? Just add its dropdown link.
Research Highlights card in _layouts/main.html:
papers = posts that have a conference field (tutorials excluded)papers.sizeAdding a paper with a proper conference: value updates all of these.
news-list in _layouts/main.html, newest first.bio-box in the same file._config.yml (social-email, etc.)._layouts/main.html. The sidebar renders only
when page.layout == "main" (home); post/article pages hide it
and use the single-column bento-grid-article variant (full width).assets/css/themes/*.css —
neumorphism.css (default, short neu), claymorphism.css (clay),
neo-brutalism.css (neo), classic.css (classic),
windows98.css (win98). Keep the desktop
news-content max-height, phone cap, bio bottom padding, avatar fill,
tag-right rule, and dot-less author name in sync across all skins._includes/theme-switcher.html, stylesheet link + loader
in _includes/head.html (and _layouts/page.html); the choice persists
in localStorage under wz-theme. The switcher is hidden by default:
press o to toggle it, or open any localhost URL to auto-show it
(unlock lasts for the tab via sessionStorage). To add a skin, copy an
existing *.css, then register it in WZ_THEMES (head), FALLBACK,
shorts, the swatch CSS, and the option button (switcher).After any change: bundle exec jekyll build must pass, and spot-check
the touched pages under _site/ (home, one post, documents page).
There is no test suite; the build plus a render check is the gate.