netresearch/typo3-vite
v1.8.1(MIT AND CC-BY-SA-4.0)
Vite build setup, SCSS architecture, Bootstrap theming for TYPO3 v13+
Changelog
[Unreleased]
[1.8.1] - 2026-08-27
Added
- First eval suite
[1.8.0] - 2026-08-08
Added
- Add Agent Plugins 1.0.0 portable manifest (manifest)
[1.7.0] - 2026-07-30
Added
SKILL.mdnew "Stale Page Cache After a Build Trap" section:vite buildmints new content hashes and deletes the previous files, while the rendered markup stays in TYPO3's page cache with the old names — the page then 404s on its entrypoints and loads with no JavaScript and no CSS while still rendering, so it presents as a broken feature rather than a broken asset reference.vendor/bin/typo3 cache:flushbelongs to the build step.references/vite-configuration.mdnew "Flush the page cache after every build" subsection under Manifest Mode: the flush command, acurl/lscomparison to verify what is actually served, the note that hashes only change for entrypoints whose output changed (a SCSS comment leaves the CSS hash untouched, a TypeScript comment does change the JS hash), and the warning that a measurement asserting the absence of an effect cannot distinguish an unloaded bundle from a correctly idle one without positive proof that the code ran.
[1.6.0] - 2026-07-13
Added
SKILL.mdnew "Dev ServerallowedHostsTrap" section: withoutallowedHosts: trueandcors: truein theserver:block, the Vite dev server returns HTTP 403 "Blocked request" for any host header other thanlocalhost, breaking HMR behind a reverse proxy (Traefik, nginx). Also warns that a secondserver: { ... }literal silently overwrites the first one's keys.
Changed
references/vite-configuration.mdcorrected theallowedHostsversion boundary claim: host-header enforcement is not a Vite 7.3 cutoff — it has been the default since the fix for GHSA-vg6x-rcgg-rjx6 (CVE-2025-24010, landed in 4.5.6/5.4.12/6.0.9), so every Vite 7.x/8.x release enforces it.
Removed
references/bootstrap-theming.mdcut generic Bootstrap/SCSS tutorial content (~200 lines); the reference now covers the SCSS theming flow, CI-color mapping, and selective Bootstrap imports.
[1.5.0] - 2026-06-11
Added
references/vite-configuration.mdnew "Manifest Mode (No Dev Server)" section for build-time-only asset workflows. Documents forcinguseDevServer = '0'(theautodefault resolves toEnvironment::getContext()->isDevelopment(), so anyDevelopment/*context without a running HMR server breaks<vite:asset>), pre-populating the completevite_asset_collectorkey set insettings.php(a missing key triggers a synchronize that writes the file — on sealed/read-onlysettings.phpthis throws core exception#1346323822and the frontend returns HTTP 500), and whyvite-plugin-typo3project-mode output aligns with the extension'sdefaultManifestso<vite:asset>needs nomanifestargument. Includes a deployment note: keep the toolchain at the Composer project root sonode_modulesstays out of copied extension paths.
[1.3.1] - 2026-05-06
Added
references/vite-configuration.mdSVG plugin now documents the output-mtime skip pattern.processedFilesonly protects against duplicate work within a single Vite process; between builds the map is empty, so every SVG would be re-optimized. The new section explains computingoutPathbefore the read/optimize call and short-circuiting whenoutput.mtime >= source.mtime. Includes the two ordering caveats (compute path beforeexistsSync; keep!changedFileguard for dev watch events) and a CI caveat about wipedResources/Public/Svg/dirs.
[1.2.0] - 2026-04-30
Fixed
references/vite-configuration.mdserver:block now includesallowedHosts: trueandcors: true. Without these, Vite 7.3+ and 8.x return HTTP 403 "Blocked request" for any host header other thanlocalhostwhen accessed via reverse proxy (Traefik, nginx, etc.). Vite 7.1.x worked "by accident"; upgrades break HMR silently otherwise.
Added
- Anti-pattern note: duplicate
server:blocks invite.config.tsare silently overwritten by JavaScript object literal semantics. Always mergeallowedHosts/corsinto the existingserverblock. - Vite 7.1.x quirk note: explains why missing
allowedHosts"worked" before 7.3.
[1.1.0]
Previous release (no changelog kept).