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
Documentation index
This directory separates current reference docs, proposals/plans, and
historical/archived analysis (in archive/).
Note on naming: XAMXAM was previously Post-ERG (and the code was once organised under
posterg-website/,apps/,front-backend/,/var/www/posterg/). References toposterg,apps/public/inc/header.php,posterg.db,just serve,php-live-reload,tests/run-tests.php, etc. in historical docs reflect the old layout. The live paths are nowapp/,app/public/,app/storage/xamxam.db,just dev, PHPUnit, and/var/www/xamxam/on the server.
Current reference (kept up to date)
| Doc | Contents |
|---|---|
| development.md | Dev workflow, structure, builds, testing, linting |
| environment.md | Runtime stack, PHP/nginx/DB/Node requirements, server specs |
| deployment.md | Server setup, deploy, backups, rollback |
| database.md | SQLite schema, migrations, tables, common ops |
| search.md | /search and /repertoire behaviour |
| export.md | CSV / DB / files export + full restore procedure |
| nextcloud-sync.md | Off-site SQLite snapshot sync to Nextcloud WebDAV |
| import.md | CSV import format + behaviour |
| security.md | Current security posture |
| file-uploads.md | Upload surfaces, types, storage layout |
| CSS.md | CSS architecture + build |
| bookmarklet.md | Form auto-fill test helper |
Proposals / plans (proposed, not all implemented)
| Doc | Status |
|---|---|
| ldap.md | LDAP login — not implemented (merged plan + spec) |
| monolog-plan.md | Single Monolog logger replacing AppLogger/AdminLogger/ErrorHandler/Audit — plan |
| de-librairisation.md | Replace bespoke SMTP/Markdown/HTTP/crypto with libraries (partly done) |
| refactoring.md | Older refactoring proposal |
| ANALYSIS_STRUCTURE_REORG.md | Proposed structure reorg |
| ANALYSIS_INLINE_JS_CSS_MINIFY.md | Inline JS/CSS/minify analysis (largely actioned by the build system) |
| backup-plan.md | Backup plan — largely implemented (see deployment.md) |
| repertoire-mobile-propositions.md | Mobile repertoire UI proposals |
| spec-sheet.md | Original requirements fiche technique (incl. client notes appendix) |
Active investigations (unresolved)
| Doc | Status |
|---|---|
| filepond-crash-analysis.md | FilePond upload crash — unresolved, root cause in vendor code (merged race-investigation appendix) |
| peertube-sso-incident.md | PeerTube invalid_grant diagnosis & ownership |
| autosave-system.md | Autosave architecture & HTMX migration assessment |
Historical / archived (in archive/)
Kept for context — may reference the old codebase. Not maintained.
| Doc | Contents |
|---|---|
vm-crash-incident.md |
VM crash root-cause (merged final report + reports + evidence + fix) |
CURRENT_ISSUES.md |
Issue log (2026-05-10) — many since resolved |
LIVRAISONS_PAR_MOIS.md |
Monthly delivery log grouped by functional family |
migration-history.md |
History of major structural migrations |
php-vs-flask.md |
Language choice decision |
orm-assessment.md |
ORM evaluation |
css.md |
Old Bulma-removal writeup (see CSS.md for current) |
system-setup.md |
PHP-extension inventory |
SETUP.md |
Earlier setup snapshot (see development.md) |
testing.md |
PHP testing best-practices writeup |
SMTP_550_POSTFIX_FIX.md |
SMTP troubleshooting record |
cms-migration-plan.html |
CMS migration plan |
Proposition procédure licences_V2.pdf |
Licence procedure proposal |
pi-session-2026-05-10T*.html |
Captured session log |
Related documentation elsewhere
nginx/docs/— nginx config, security headers, deployment, HTACCESS→nginxapp/storage/README.md— DB quick-reference (schema link)app/public/admin/README.md— admin panel structure
Maintenance guidance: when updating code, update the matching current reference doc in the table above. Leave archived docs untouched (read-only context). Move newly-written analysis into the appropriate section.