Browse Source

note: record decruft progress + icon/font strategy in upgrade-plan (Phase 5)

windhamdavid 1 week ago
parent
commit
fb7e863cf6
2 changed files with 41 additions and 5 deletions
  1. 3 1
      _claude/notes/dependencies.md
  2. 38 4
      _claude/notes/upgrade-plan.md

+ 3 - 1
_claude/notes/dependencies.md

@@ -50,7 +50,9 @@ Keep for now: svg-morpheus (homepage), drawfillsvg (homepage/about), js-cookie.
 1. **Computer Modern format trim** (~2.8 MB) — confirm used weights, keep woff2/woff, delete ttf/eot/svg.
 2. **Glyphicons removal** (~208 KB) — verify `inc/template.php`, then delete files + legacy `boot.css`/`style.min.css` refs.
 3. **Bootstrap Icons subset** (~296 KB) — build a subset of the ~8–15 used glyphs.
-Then per-page: animate/WOW, FontMfizz, FA→BI, fullcalendar — as each area blockifies.
+Then per-page: animate/WOW, FontMfizz → inline SVG, FA → FA-Pro SVG sprite, fullcalendar — as each
+area blockifies. **Icon/font strategy is recorded in [[upgrade-plan]] Phase 5** (SVG sprite via npm
+FA-Pro SVG packages, `.npmrc` token gitignored, one-offs inline, text fonts via `@fontsource`/vendored).
 
 ---
 

+ 38 - 4
_claude/notes/upgrade-plan.md

@@ -102,10 +102,36 @@ character of the site.
 - [ ] `patterns/` for reusable sections
 - [ ] `blocks/` for dynamic bits (music/last.fm, desk loop → Query Loop, etc.)
 
-### Phase 5 — Cleanup (the "additional cleanup")
-- [ ] Drop confirmed-dead deps per [[dependencies]] (terminal.js, messenger, modernizr, jasny, animate.css…)
-- [ ] Resolve audits: Twilio call/SMS/chat, fullcalendar, simple_html_dom, Stripe v2, icon fonts
-- [ ] Remove legacy build outputs + `style.min.css`
+### Phase 5 — Cleanup / decruft (PRIMARY goal of the FSE branch)
+
+The migration's main payoff: **shed 22 years of cruft.** Classic templates + old CSS stay
+on the `fse-migration` branch as the reference/safety net; delete each piece only once its
+replacement is confirmed. Quantified, per-item checklist lives in [[dependencies]] (⭐ section).
+
+**Done (branch, 2026-06-19→21):** fonts **5.0 MB → 1.8 MB** — Computer Modern trimmed to
+woff/used-weights, Glyphicons deleted, **bootstrap-icons dropped** (8 header icons → inline SVG;
+font + ~2000 CSS rules + the npm dep all gone). `v4-style.min.css` **472 → 393 KB**.
+
+**Icon & font strategy (decided 2026-06-21):**
+- **Icons = SVG, tree-shaken, never the webfont.** One pipeline: npm SVG source → a build-time
+  **SVG sprite** (`<symbol>` + `<svg><use href="#…">`) of only-used icons, referenced identically
+  in classic PHP and block templates. (~40 distinct icons reused 134× → sprite beats inlining.)
+- **Font Awesome → FA Pro via npm** (user has a Pro license): install the **SVG** packages
+  (`@fortawesome/pro-*-svg-icons` / a kit) from FA's authed registry — **not** the webfont —
+  and feed them through the sprite. Swapping sets later = change the package + regenerate.
+  Replaces FA-font **and** FontMfizz.
+  - **Secret:** FA Pro npm needs a token in `.npmrc` → **gitignore `.npmrc`**; commit a
+    `.npmrc.example` with the registry line (no token).
+- **One-off icons** (the 8 header, the couple FontMfizz spots) stay hand-inlined SVG — no dep.
+- **Text/display fonts:** use **`@fontsource/*`** (npm — versioned woff2 + `@font-face`) for fonts
+  that have it; self-host woff2 for niche ones (Computer Modern). Declare all in `theme.json`
+  `fontFamilies`. (User may add a couple more display fonts.)
+
+**Remaining decruft (see [[dependencies]]):** FontMfizz → inline SVG · FA → FA-Pro sprite (the
+font drops once classic templates migrate) · animate.css + WOW → CSS/IntersectionObserver ·
+fullcalendar → About-only/replace · Bootstrap full → subset to used components ·
+backstretch/lazyload/validate/rainbow → native, per page. Plus dead legacy CSS (`boot.css`,
+`style.min.css`) + the dead `inc/template.php` glyphicon comment-form spans + legacy build outputs.
 
 ### Phase 6 — New features
 - [ ] _TBD — to be specified_
@@ -136,6 +162,14 @@ Considering moving the whole site from **davidawindham.com → davidwindham.com*
 
 ## Changelog
 
+- **2026-06-21** — **Phase 5 decruft, first cut (branch).** Fonts 5.0 MB → 1.8 MB: Computer Modern
+  trimmed to woff/used-weights (dropped ttf/eot/svg + unused CM Bright + cmunbmr/cmunbsr), Glyphicons
+  deleted, **bootstrap-icons dropped entirely** (8 header icons → inline SVG; removed the styles.scss
+  @import's ~2000 `.bi-*` rules, font files, and the npm dep) → `v4-style.min.css` 472 → 393 KB. All
+  design-neutral, verified 200. **Decided the go-forward icon/font strategy** (see Phase 5 above):
+  icons = tree-shaken SVG sprite, FA Pro via npm SVG packages (not webfont; `.npmrc` token gitignored),
+  one-offs inline, text fonts via `@fontsource` or vendored woff2 + `theme.json`.
+
 - **2026-06-19** — **Phase 3 (branch `fse-migration`): FLIPPED to a block theme (hybrid).** Added
   `templates/index.html` (Query Loop) → `wp_is_block_theme()` is now true. **Key mechanic (verified
   by experiment):** WordPress picks the **most-specific** template; **on a tie the block template