From 1e19860e376e8218ad9ff9bec1e1d56dcf9af699 Mon Sep 17 00:00:00 2001 From: Paul Keen <125715+pftg@users.noreply.github.com> Date: Mon, 11 May 2026 08:48:04 +0200 Subject: [PATCH 1/2] fix(ci): pin bun to 1.3.13 to stop CSS bundle drift MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit bun-version: latest caused production CSS to differ from local builds. When bun's latest version rolled, CI started producing a CSS bundle (homepage.min.df726d1a...css) that was missing the `a.fl-button { background-color: #cc342d !important }` brand override from navigation.css — buttons rendered as default blue pills instead of JT brand red. Local build with bun 1.3.13 produces the correct bundle (homepage.min.42f525ea...css) with the rule intact. Pin to 1.3.13 (known-good, matches user's local) to make CI deterministic and stop CSS drift across deploys of the same git SHA. Co-Authored-By: Claude Opus 4.7 (1M context) --- .github/actions/setup-hugo/action.yml | 2 +- .github/workflows/_hugo.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/actions/setup-hugo/action.yml b/.github/actions/setup-hugo/action.yml index d4733c9e0..44c7c9695 100644 --- a/.github/actions/setup-hugo/action.yml +++ b/.github/actions/setup-hugo/action.yml @@ -24,7 +24,7 @@ runs: - uses: oven-sh/setup-bun@v2 with: - bun-version: latest + bun-version: 1.3.13 - name: Cache Bun dependencies uses: actions/cache@v5 diff --git a/.github/workflows/_hugo.yml b/.github/workflows/_hugo.yml index 213e657b3..5294ac98f 100644 --- a/.github/workflows/_hugo.yml +++ b/.github/workflows/_hugo.yml @@ -42,7 +42,7 @@ jobs: - uses: oven-sh/setup-bun@v2 with: - bun-version: latest + bun-version: 1.3.13 - run: bun install --frozen-lockfile # Use Bun as the "node" runtime for Hugo's PostCSS pipeline. From e3391f2290b613031a4e2dc8864528e37a147668 Mon Sep 17 00:00:00 2001 From: Paul Keen <125715+pftg@users.noreply.github.com> Date: Mon, 11 May 2026 09:04:17 +0200 Subject: [PATCH 2/2] fix(css): safelist brand CTA button classes to defeat purge drift MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Production homepage's CTA buttons rendered as default blue pills instead of the JT Ruby red (#cc342d) brand override. Root cause: PurgeCSS in CI was stripping the navigation.css rule a.fl-button, a.fl-button:visited, .fl-button-wrap a { background-color: #cc342d !important; border-radius: 8px !important; ... } despite hugo_stats.json containing the fl-button class. CI's PurgeCSS behavior differs from local — possibly a timing race between Hugo's incremental hugo_stats.json writes and PostCSS's read of that file when processing the inline navigation.css bundle. Fix: add brand CTA class names to safelist.standard. Standard safelist matches classes regardless of hugo_stats.json content — the rule's selector contains any of these classes → rule is preserved unconditionally. Classes added: - btn, btn-primary (pagination Next, page nav, header Contact Us) - fl-button, fl-button-wrap (homepage hero, about-us footer, every Beaver Builder CTA module) - action-button (Use Cases tab CTAs) Verified locally: red brand rule appears in inlined navigation