This Week
1. This week
[X] Fix the H-m keybinding conflict (grip-mode steals the publish key)
[X] Fix the site-wide author meta ("i" → "Yijia Zhao": set user-full-name in publish.el)
[X] Switch pages to HTML5 doctype (org-html-doctype "html5")
[X] Drop the inlined default org CSS on every page (org-html-head-include-default-style nil)
[X] Unify the 404 page with the site: self-hosted fonts, remove quarto-color-scheme leftover, sync with data-theme
[ ] Finish the About page: fill .about-name, real GitHub / LinkedIn / ORCID links
[X] Init a git repository + .gitignore (public/, nodemodules/, .DSStore)
[X] Add publish-time cleanup of stale files in public/
[X] Fix the empty #+DESCRIPTION fallback bug (empty post-card & RSS descriptions)
[X] Fix the htmlize theme-restore bug after publishing
[X] Parameterize publish.el paths / site URL (prep for CI auto-deploy)
[ ] Write the first real post body (ma-001)
[ ] sitemap.xml + robots.txt
[X] RSS: add <author> / dc:creator per item
[X] Tag filter URL sync (?tag=… + history.pushState) — shareable and indexable
[X] random-post.js: read /pagefind/pagefind-entry.json instead of scraping posts.html
[X] modal a11y (role=dialog, focus management, aria-current on nav)
[ ] Go live: point blog.yijialog.org to the host and deploy public/
2. Backlog — all candidate tasks
2.1. Core features (semi-academic blog)
[ ] Prev / next post navigation on article pages
[ ] Print stylesheet (@media print) — PDF-export friendly
[ ] Open Graph + Twitter Card meta (article:publishedtime, article:tag on posts)
[ ] Per-page meta description + canonical link
[ ] Comments (Cusdis or giscus)
[ ] (Optional) citation* meta tags on posts for academic SEO
2.2. Experience & polish
[ ] Mobile layout pass (table / KaTeX overflow, sticky columns, search modal)
[ ] Post images + card covers (#+COVER property → .post-cover)
[ ] Dark mode: hunt remaining contrast issues
[ ] Decide the final article naming convention
[ ] Milestone page
[ ] CV page
[ ] Document page