levineuwirth.org/static/js
Levi Neuwirth 23250d8782 Fix popup previews: proxy prefix-strip bug, arXiv IDs, Wikipedia images
The root cause of 'PDF/arXiv previews simply do not work' was twofold:

1. nginx/popup-proxy.conf was never installed on the VPS — every
   /proxy/* request (arXiv, PubMed, Internet Archive) returned nginx's
   default 404. Now installed (snippets + http{}-context cache/limit
   zones in conf.d, included in the vhost, nginx -t verified, reloaded).
2. The snippet itself had a latent bug that only surfaced once
   installed: with a VARIABLE upstream, a URI part on proxy_pass is
   passed literally — every request hit the upstream's homepage
   (archive.org HTML where JSON was expected, arXiv 429s, NCBI doc-page
   redirects). Fixed with explicit prefix-strip rewrites; bad cached
   responses purged. All three proxies verified returning real data,
   including a live arXiv title resolve.

Client-side improvements:
- arXiv match covers old-style IDs (cs/9901002, math.GT/0309136,
  cond-mat/...v1) alongside new-style, and .pdf-suffixed /pdf/ URLs
  (regex verified against six forms)
- Wikipedia popups show the article's lead image: pageimages rides
  along the existing extracts call (pithumbsize=320), rendered via a
  new https-only image slot in renderPopup with float styling;
  upload.wikimedia.org added to the CSP's img-src
- pdf-thumbs now walks all of static/ (pdfjs pruned), so /cv.pdf and
  /resume.pdf — the most-linked internal PDFs, previously thumbnail-less
  and therefore popup-less — get hover previews

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-10 12:06:13 -04:00
..
annotations.js Frontend tail: keyboard access, idempotence, input edge cases 2026-06-10 11:25:19 -04:00
collapse.js Frontend tail: keyboard access, idempotence, input edge cases 2026-06-10 11:25:19 -04:00
copy.js Frontend tail: keyboard access, idempotence, input edge cases 2026-06-10 11:25:19 -04:00
gallery.js Frontend tail: keyboard access, idempotence, input edge cases 2026-06-10 11:25:19 -04:00
katex-bootstrap.js audit: frontend a11y, JS shared utils, CSS variable definitions 2026-04-10 17:41:21 -04:00
lightbox.js Frontend: search races, lightbox a11y, popup edge cases 2026-06-10 09:43:25 -04:00
list-pagination.js Navigation refactor 2026-04-19 14:35:41 -04:00
nav.js Frontend: search races, lightbox a11y, popup edge cases 2026-06-10 09:43:25 -04:00
now.js Add now.js: recompute "Last updated" relative phrase client-side 2026-05-23 12:06:49 -04:00
photography-map.js Spec dilemma 2026-05-01 21:22:01 -04:00
photography-modes.js Spec dilemma 2026-05-01 21:22:01 -04:00
popups.js Fix popup previews: proxy prefix-strip bug, arXiv IDs, Wikipedia images 2026-06-10 12:06:13 -04:00
prism.min.js initial deploy! whoop 2026-03-17 21:56:14 -04:00
random.js affiliation, cabal helper script 2026-03-26 08:14:50 -04:00
reading.js initial deploy! whoop 2026-03-17 21:56:14 -04:00
score-reader.js Frontend tail: keyboard access, idempotence, input edge cases 2026-06-10 11:25:19 -04:00
search-filters.js Frontend tail: keyboard access, idempotence, input edge cases 2026-06-10 11:25:19 -04:00
search.js Frontend: search races, lightbox a11y, popup edge cases 2026-06-10 09:43:25 -04:00
selection-popup.js Frontend tail: keyboard access, idempotence, input edge cases 2026-06-10 11:25:19 -04:00
semantic-search.js Frontend: search races, lightbox a11y, popup edge cases 2026-06-10 09:43:25 -04:00
settings.js yum cappuccino yay! 2026-05-03 21:16:58 -04:00
sidenotes.js mobile fixes 2026-04-12 15:29:35 -04:00
theme.js yum cappuccino yay! 2026-05-03 21:16:58 -04:00
toc.js mobile fixes 2026-04-12 15:29:35 -04:00
transclude.js Frontend tail: keyboard access, idempotence, input edge cases 2026-06-10 11:25:19 -04:00
utils.js audit: frontend a11y, JS shared utils, CSS variable definitions 2026-04-10 17:41:21 -04:00
viz.js Fix audit frontend MEDs 2026-06-10 09:21:47 -04:00