Compare commits

...

4 Commits

Author SHA1 Message Date
3fac158185 fix(contact): correct canvas-confetti import to avoid TypeError on success animation
All checks were successful
Build & Deploy / 🔍 Prepare (push) Successful in 27s
Build & Deploy / 🏗️ Build (push) Successful in 18m45s
Build & Deploy / 🚀 Deploy (push) Successful in 40s
Build & Deploy / 🩺 Smoke Test (push) Successful in 6s
Build & Deploy / 🔔 Notify (push) Successful in 5s
2026-06-03 17:12:08 +02:00
001c8514b5 fix(ci): violently purge buildx containers to avoid overlayfs corruption
Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 30s
Build & Deploy / 🏗️ Build (push) Failing after 40m17s
Build & Deploy / 🚀 Deploy (push) Has been skipped
Build & Deploy / 🩺 Smoke Test (push) Has been skipped
Build & Deploy / 🔔 Notify (push) Successful in 4s
2026-06-03 16:55:00 +02:00
00a8e3248f chore: retry pipeline 2934 due to runner docker crash
Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 11s
Build & Deploy / 🏗️ Build (push) Failing after 16m17s
Build & Deploy / 🚀 Deploy (push) Has been skipped
Build & Deploy / 🩺 Smoke Test (push) Has been skipped
Build & Deploy / 🔔 Notify (push) Successful in 2m48s
2026-06-03 16:34:54 +02:00
9951a357ac fix(cache): update debug-mdx route to purge entire cache for Server Actions
Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 13s
Build & Deploy / 🏗️ Build (push) Failing after 6m9s
Build & Deploy / 🚀 Deploy (push) Has been skipped
Build & Deploy / 🩺 Smoke Test (push) Has been skipped
Build & Deploy / 🔔 Notify (push) Successful in 2s
2026-06-03 16:27:11 +02:00
3 changed files with 25 additions and 29 deletions

View File

@@ -158,22 +158,25 @@ jobs:
run: |
echo "Disk space before nuclear prune:"
df -h
# Massive cleanup of pre-installed runner software to free up ~5GB+
# These are standard on VM-based runners and often unnecessary
sudo rm -rf /usr/share/dotnet || true
sudo rm -rf /usr/local/lib/android || true
sudo rm -rf /opt/ghc || true
sudo rm -rf /opt/hostedtoolcache/CodeQL || true
# Comprehensive Docker purge
docker buildx stop || true
docker buildx rm -a || true
docker rm -fv $(docker ps -aq --filter "ancestor=moby/buildkit") || true
docker system prune -af --volumes
docker builder prune -af
docker buildx prune -af
# Clean temp build artifacts
rm -rf /tmp/docker-actions-toolkit-* || true
echo "Disk space after nuclear prune:"
df -h
continue-on-error: true
@@ -241,8 +244,6 @@ jobs:
DIRECTUS_URL: ${{ needs.prepare.outputs.directus_url }}
DIRECTUS_HOST: cms.${{ needs.prepare.outputs.traefik_host }}
# Mail
MAIL_HOST: ${{ secrets.SMTP_HOST || vars.SMTP_HOST }}
MAIL_PORT: ${{ secrets.SMTP_PORT || vars.SMTP_PORT || '587' }}
@@ -427,7 +428,7 @@ jobs:
echo "Purging S3 cache for ${{ env.S3_PREFIX }} ..."
rclone --config rclone.conf delete mintel-s3:${{ env.S3_BUCKET }}/${{ env.S3_PREFIX }}/cache/ --include "*" || true
rm rclone.conf rclone-current-linux-amd64.deb
- name: 🧹 Post-Deploy Cleanup (Runner)
@@ -453,7 +454,7 @@ jobs:
COUNT=0
MAX=24
URL="${{ needs.prepare.outputs.next_public_url }}"
echo "Verifying $URL is responsive..."
while [ $COUNT -lt $MAX ]; do
STATUS=$(curl -s -o /dev/null -w "%{http_code}" "$URL/" || echo "000")
@@ -465,7 +466,7 @@ jobs:
sleep 5
COUNT=$((COUNT + 1))
done
if [ "$STATUS" != "200" ]; then
echo "❌ Site failed smoke test after 2 minutes! (Status: $STATUS)"
exit 1
@@ -475,7 +476,7 @@ jobs:
shell: sh
run: |
BASE_URL="${{ needs.prepare.outputs.next_public_url }}"
echo "Verifying case study page..."
STATUS=$(curl -s -o /dev/null -w "%{http_code}" "$BASE_URL/case-studies/klz-cables")
if [ "$STATUS" != "200" ]; then
@@ -483,7 +484,7 @@ jobs:
exit 1
fi
echo "✅ Case study page UP"
echo "Verifying breeze CSS (root path)..."
CSS_PATH="/assets/klz-cables.com/wp-content/cache/breeze-minification/css/breeze_klz-cables-com-1-10895.css"
STATUS=$(curl -s -o /dev/null -w "%{http_code}" "$BASE_URL$CSS_PATH")
@@ -492,7 +493,7 @@ jobs:
exit 1
fi
echo "✅ Root asset path OK"
echo "Verifying breeze CSS (relative path from case-study)..."
REL_CSS_PATH="/case-studies/assets/klz-cables.com/wp-content/cache/breeze-minification/css/breeze_klz-cables-com-1-10895.css"
STATUS=$(curl -s -o /dev/null -w "%{http_code}" "$BASE_URL$REL_CSS_PATH")

View File

@@ -1,28 +1,23 @@
import { NextResponse } from "next/server";
import { NextResponse, NextRequest } from "next/server";
import { revalidatePath } from "next/cache";
import fs from "fs";
import path from "path";
export async function GET() {
export async function GET(request: NextRequest) {
try {
const POSTS_DIR = path.join(process.cwd(), "content/blog");
let files = [];
if (fs.existsSync(POSTS_DIR)) {
files = fs.readdirSync(POSTS_DIR);
}
const searchParams = request.nextUrl.searchParams;
const pathParam = searchParams.get("path") || "/";
const typeParam =
(searchParams.get("type") as "page" | "layout") || "layout";
// Revalidate the two problematic pages
revalidatePath("/blog/website-as-a-service");
revalidatePath("/blog/zero-overhead-agencies");
revalidatePath("/blog"); // also bust the blog list cache
// Revalidate the requested path (defaults to entire app via layout)
revalidatePath(pathParam, typeParam);
return NextResponse.json({
success: true,
cwd: process.cwd(),
postsDir: POSTS_DIR,
postsDirExists: fs.existsSync(POSTS_DIR),
files: files,
message: "Cache revalidated for specific paths",
revalidatedPath: pathParam,
revalidatedType: typeParam,
message: `Cache revalidated for ${pathParam} (${typeParam})`,
});
} catch (err: any) {
return NextResponse.json({ success: false, error: err.message });

View File

@@ -3,7 +3,7 @@
import * as React from "react";
import { useState, useMemo, useEffect, useRef } from "react";
import { motion } from "framer-motion";
import * as confetti from "canvas-confetti";
import confetti from "canvas-confetti";
import {
Layers,
BrainCircuit,