build: content-hash cache-busting for local CSS/JS (?v=hash)
Deploy to Production on Develop Push / deploy (push) Successful in 20s

Stops deploys being served stale from browser cache — the recurring "changes
do not show up until a hard refresh" problem.

- New tools/cache_bust.py stamps a global content hash onto every local
  <link>/<script> CSS/JS ref AND the @import lines in css/main.css (so partial
  edits bust too). External (https://) refs are untouched. Deterministic and
  idempotent: same content -> same stamp, any asset edit -> new stamp sitewide.
- Wired as the final step of tools/build_site.py so every build/deploy stamps.
- Initial stamp applied across 259 pages + main.css (v=64a53dd6).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
popovskikandClaude Opus 4.8 committed 2026-08-27 18:14:44 +02:00
1 parent 7c2110d8a5
commit 954f186761
262 files changed
+1518 -1435

No files matched your search

+25 -25
View File
@@ -15,36 +15,36 @@
*/
/* 1. Base Styles */
@import 'base/_base.css';
@import 'base/_typography.css';
@import 'base/_base.css?v=64a53dd6';
@import 'base/_typography.css?v=64a53dd6';
/* 2. Layout Components */
@import 'layout/_header.css';
@import 'layout/_footer.css';
@import 'layout/_header.css?v=64a53dd6';
@import 'layout/_footer.css?v=64a53dd6';
/* 3. Reusable Components */
@import 'components/_buttons.css';
@import 'components/_cards.css';
@import 'components/_lang-banner.css';
@import 'components/_lightbox.css';
@import 'components/_buttons.css?v=64a53dd6';
@import 'components/_cards.css?v=64a53dd6';
@import 'components/_lang-banner.css?v=64a53dd6';
@import 'components/_lightbox.css?v=64a53dd6';
/* 4. Page-specific Styles */
@import 'pages/_home.css';
@import 'pages/_projects.css';
@import 'pages/_article.css';
@import 'pages/_about.css';
@import 'pages/_timeline.css';
@import 'pages/_guide.css';
@import 'pages/_faq.css';
@import 'pages/_blog.css';
@import 'pages/_news.css';
@import 'pages/_member.css';
@import 'pages/_support.css';
@import 'pages/_hub.css';
@import 'pages/_legal.css';
@import 'pages/_gallery.css';
@import 'pages/_press.css';
@import 'pages/_event.css';
@import 'pages/_home.css?v=64a53dd6';
@import 'pages/_projects.css?v=64a53dd6';
@import 'pages/_article.css?v=64a53dd6';
@import 'pages/_about.css?v=64a53dd6';
@import 'pages/_timeline.css?v=64a53dd6';
@import 'pages/_guide.css?v=64a53dd6';
@import 'pages/_faq.css?v=64a53dd6';
@import 'pages/_blog.css?v=64a53dd6';
@import 'pages/_news.css?v=64a53dd6';
@import 'pages/_member.css?v=64a53dd6';
@import 'pages/_support.css?v=64a53dd6';
@import 'pages/_hub.css?v=64a53dd6';
@import 'pages/_legal.css?v=64a53dd6';
@import 'pages/_gallery.css?v=64a53dd6';
@import 'pages/_press.css?v=64a53dd6';
@import 'pages/_event.css?v=64a53dd6';
/* Loaded last so the shared filter bar wins over per-page chip styles. */
@import 'pages/_filterbar.css';
@import 'pages/_filterbar.css?v=64a53dd6';