update: CSS per-page split and lightningcss unusedSymbols report

docs: record CSS template inventory + decide unusedSymbols-before-split ordering

feat(css): add content-source collector + dynamic-class safelist for unusedSymbols report

- scripts/css-content-sources.mjs: buildCorpus() gathers templates/public/src
  PHP + first-party js/app JS (vendor excluded), returns {corpus, sources,
  totalBytes, safelist, prefixes}
- Mined 22 exact runtime classes + 5 DB/state-derived suffix prefixes from
  status-badge.php, SystemController statusClass/logLineClass, and class=<?=?>
  ternaries
- docs/css-split-analysis.md notes content-corpus section
- td: #11 collect-content-sources done; feeds #12 report script

feat(css): unusedSymbols report script + just css-report recipe

- scripts/css-unused-report.mjs: per-bundle class/id extraction vs buildCorpus()
  corpus + safelists; measures reclaimable bytes via lightningcss transform
  unusedSymbols (report-only, no stripping to disk)
- just css-report: rebuild CSS then run the report
- css-content-sources.mjs: add VENDOR_CLASS_PREFIXES (filepond--*, htmx-*)
- RESULT: 216,383B total, ~6.2KB (2.9%) reclaimable; FilePond/HTMX exclusion
  corrected inflated 26% (56KB) false-positive down to honest 2.9%
- docs/css-split-analysis.md findings table + TODO 12/13 done

docs(css): record go/no-go decision — split NO-GO, pruning conditional-go

- Decision analysis in docs/css-split-analysis.md
- ~6.2KB (2.9%) reclaimable of 216KB; base.min.css only 484B (2.3%)
- SPLIT NO-GO: base.css already well-used; parked u/w/x/y(/z) as deferred
- PRUNING conditional-go on hand-verifiable dead selers from source, never dist;
  re-run just css-report after each edit; keep needs-review + vendor-prefix cls
- td: task 14 done; split stream 41 tasks -> 2 pending / 32 done / 7 deferred

todo: defer CSS pruning stream (10/u/w/x/y/z), context updated
This commit is contained in:
Pontoporeia
2026-09-18 16:26:36 +02:00
parent a31e4ab307
commit 8accb88452
7 changed files with 566 additions and 28 deletions
-5
View File
@@ -1453,16 +1453,11 @@ th.admin-ap-col {
gap: var(--space-3xs);
border-top: 1px solid var(--border-primary);
padding: var(--space-xs) 0;
display: grid;
grid-template-columns: 1fr;
gap: var(--space-3xs);
border-top: 1px solid var(--border-primary);
}
.param-form > div:first-of-type {
border-top: none;
padding-top: 0;
border-top: none;
}
.param-form input[type="password"] {
+5 -17
View File
@@ -4,17 +4,14 @@
============================================================ */
.tfe-main {
display: flex;
flex: 1;
min-height: 0;
overflow: hidden;
display: flex;
flex: 1;
min-height: 0;
overflow: hidden;
/* Left padding keeps content aligned with the rest of the page;
no right padding so the right column (and its scrollbar) sits
flush against the viewport edge. */
padding-left: var(--space-m);
/* Left padding keeps content aligned with the rest of the page;
no right padding so the right column (and its scrollbar) sits
flush against the viewport edge. */
padding-left: var(--space-m);
}
/* Stacked article layout — fills main height */
@@ -60,15 +57,6 @@
padding: var(--space-xl) var(--space-m) var(--space-xl) var(--space-m);
}
/* Files container inside right column — flex kept for PDF expand-to-fill behavior */
display: flex;
flex-direction: column;
overflow-y: auto;
min-width: 0;
padding-top: var(--space-l);
padding-bottom: var(--space-xl);
}
/* Left column: stacks author, title, meta, synopsis — scrolls independently */
.tfe-left-column {
gap: var(--space-m);