You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Scoped first half of #1253. This track covers only the JavaScript / dependency side — removing jQuery 1.9.1 and the Bootstrap 3.3.6 JS components and replacing them with vanilla JS. The Bootstrap grid/CSS rewrite is deliberately split into a separate Track B (see below).
Why this track first
Real security payoff. jQuery 1.9.1 (2013) has known XSS issues; Bootstrap 3.3.6 JS is EOL. This is where the value is.
Small, bounded scope (verified against master 2026-06-15) — far smaller than the original Dropping Bootstrap #1253 estimate.
Low visual-regression risk vs. the grid rewrite, so it's safe to do before we have visual-diff coverage.
Carousel — data-ride="carousel" in base.html (hero) + snippets/display_short_carousel_snippet.html
Popover — citations (citationPopoverSimple.js + data-toggle="popover" in display_citation_link_snippet.html)
ScrollSpy — data-spy="scroll" on <body> in base.html
Collapse — navbar data-toggle="collapse" in base.html
Extra jQuery dependencies the original #1253 analysis missed:
jquery.easing.min.js (loaded in base.html)
jquery-ui.min.js + jquery-ui CSS (loaded on index.html, awards.html, publications.html) — no .autocomplete/.sortable/.datepicker/... API calls found anywhere. Likely dead weight. First step: confirm it's truly unused and delete it — possible free win that shrinks this track.
Suggested order (one PR per item, keep Bootstrap loaded until the last consumer is gone)
Verify + remove unused jquery-ui (and its CSS) if confirmed dead.
Scoped first half of #1253. This track covers only the JavaScript / dependency side — removing jQuery 1.9.1 and the Bootstrap 3.3.6 JS components and replacing them with vanilla JS. The Bootstrap grid/CSS rewrite is deliberately split into a separate Track B (see below).
Why this track first
master2026-06-15) — far smaller than the original Dropping Bootstrap #1253 estimate.Actual scope (verified, not the #1253 estimate)
jQuery consumers in our own code:
website/static/website/js/top-navbar.js(38 lines)website/static/website/js/backtop.js(27 lines)website/static/website/js/project-sidebar-sticky.js(114 lines)website/static/website/js/citationPopoverSimple.js(399 lines — popover API: 4 call sites)$('.carousel').carousel();inbase.htmlBootstrap JS components in use:
data-ride="carousel"inbase.html(hero) +snippets/display_short_carousel_snippet.htmlcitationPopoverSimple.js+data-toggle="popover"indisplay_citation_link_snippet.html)data-spy="scroll"on<body>inbase.htmldata-toggle="collapse"inbase.htmlExtra jQuery dependencies the original #1253 analysis missed:
jquery.easing.min.js(loaded inbase.html)jquery-ui.min.js+ jquery-ui CSS (loaded onindex.html,awards.html,publications.html) — no.autocomplete/.sortable/.datepicker/...API calls found anywhere. Likely dead weight. First step: confirm it's truly unused and delete it — possible free win that shrinks this track.Suggested order (one PR per item, keep Bootstrap loaded until the last consumer is gone)
jquery-ui(and its CSS) if confirmed dead.jquery.easingusage.<script>tags frombase.html. (Bootstrap CSS stays — that's Track B.)Out of scope (→ Track B)
col-*,row,container) — only 22col-*usages across 9 templates, not the ~242 claimed in Dropping Bootstrap #1253.hidden-*/visible-*utilities (6 usages).Refs #1253.