Commit Graph
100 Commits
Author SHA1 Message Date
mmintel e0fae20835 fix(infra): make IMGPROXY_URL_MAPPING configurable via environment variables
This ensures that the image proxy correctly maps public domains to internal
Docker hostnames across different environments (testing, staging, production)
without manual configuration of the docker-compose.yml file.
2026-02-18 11:57:03 +01:00
mmintel e5b414ea76 perf: optimize server-side analytics and notifications to resolve 32s transaction delay
- Added 5s timeout to GotifyNotificationService
- Reduced timeout to 2s in UmamiAnalyticsService
- Implemented non-blocking analytics tracking in layout using Next.js after() API
2026-02-18 10:24:10 +01:00
mmintel 9e9bc9d3aa feat: optimize performance and SEO, integrate Lighthouse CI
- Integrated imgproxy for centralized image optimization
- Implemented Lighthouse CI in Gitea pipeline with native Chromium
- Reached 100/100 SEO score by fixing canonicals, hreflang, and link text
- Optimized LCP by forcing Hero component visibility until hydration
- Decoupled analytics into an async shell to reduce TTI
2026-02-18 10:01:00 +01:00
mmintel d93b453d53 feat(a11y): implement screen reader support and accessibility optimizations 2026-02-18 00:59:31 +01:00
mmintel ea0dae310c fix(infra): restore official production volume and repair directus snapshot
- Hardened docker-compose.yml to use klz-cablescom_directus-db-data volume
- Added mandatory 'relations: []' key to Directus snapshot.yaml
- Aligned internal network mappings for db connectivity
2026-02-17 22:49:21 +01:00
mmintel bdc31621c3 chore: integrate mdx validation and fix syntax errors in blog posts 2026-02-17 21:36:55 +01:00
mmintel 5c533292dd refactor: enforce 'v' prefix for version tags in deploy workflow triggers and logic. 2026-02-17 21:29:53 +01:00
mmintel a0738e6ea1 chore(git): Add pre-push hook to enforce 'v' prefix on tags 2026-02-17 21:25:57 +01:00
mmintel 201b7498d8 fix(ci): Support semantic version tags without 'v' prefix 2026-02-17 21:23:15 +01:00
mmintel 186e9fa9dd fix(blog): Correct MDX syntax in billion-euro-package post 2026-02-17 20:19:22 +01:00
mmintel d7fd139232 fix(infra): resolve gatekeeper label overwrite and alias collision 2026-02-17 17:50:45 +01:00
mmintel 50d278953e fix(orchestration): namespace Traefik labels with PROJECT_NAME to avoid collisions 2026-02-17 17:06:16 +01:00
mmintel baf05c089c fix(orchestration): remove hardcoded external volume to fix pipeline failure 2026-02-17 16:53:57 +01:00
mmintel db2295d391 fix: restore CMS connectivity and schema
- Exposed Directus port 8055 for local health checks and scripting
- Added scripts to fix admin token and manually create missing collections
- Verified all service health checks are passing
2026-02-17 16:20:03 +01:00
mmintel c292dec4d6 fix: resolve contact page 500 and Leaflet initialization errors
- Fixed Docker service names and volume configuration
- Bootstrapped Directus and applied schema
- Updated DIRECTUS_URL to local instance in .env
- Implemented manual Leaflet lifecycle management in LeafletMap.tsx
  to prevent re-initialization error
2026-02-17 16:13:31 +01:00
mmintel df017dc165 fix(deploy): enforce project name klz-cablescom for production to persist data volume 2026-02-17 13:38:41 +01:00
mmintel 1906cb6736 fix(infra): split PathPrefix into single-arg calls for Traefik v3
Traefik v3 only accepts one argument per PathPrefix. The multi-arg syntax
silently invalidated the entire public router, causing OG images, health,
sitemap and robots.txt to fall through to the auth-protected main router.
2026-02-17 02:09:54 +01:00
mmintel ec25e1df8d fix(infra): add TLS entrypoint/certresolver to deploy env generation
All Traefik routers were defaulting to entrypoints=web with tls=false,
making the app unreachable over HTTPS. Production worked because it had
these values set from a previous deploy, but testing never received them.
2026-02-17 02:06:34 +01:00
mmintel 875935ef9a fix(middleware): exclude static assets from matcher to prevent 404s on images 2026-02-17 02:00:06 +01:00
mmintel b172cd320c fix(middleware): rename proxy.ts back to middleware.ts convention to fix OG image routing 2026-02-17 01:48:11 +01:00
mmintel 163b356920 fix(og-image): resolve 404s, migrate middleware to proxy.ts, and fix local port conflict 2026-02-17 01:31:13 +01:00
mmintel 11908cfc4e fix: pipeline 2026-02-16 23:31:24 +01:00
mmintel d360fbff6b fix: pipeline 2026-02-16 23:18:41 +01:00
mmintel c76c91928f fix: pipeline 2026-02-16 23:08:12 +01:00
mmintel a2e1cc9850 fix: pipeline 2026-02-16 22:35:39 +01:00
mmintel 3d498ba46f fix: build 2026-02-16 21:32:24 +01:00
mmintel 8d9a82d5e4 fix: build 2026-02-16 21:06:06 +01:00
mmintel 4b41ba1c27 fix: resolve lint and build errors
- Added 'use client' to not-found.tsx
- Refactored RelatedProducts to Server Component to fix 'fs' import error
- Created RelatedProductLink for client-side analytics
- Fixed lint syntax issues in RecordModeVisuals.tsx
- Fixed rule-of-hooks violation in WebsiteVideo.tsx
2026-02-16 18:50:34 +01:00
mmintel a8b8d703c8 refactor(middleware): upgrade locale redirects from 307 to 308 for better scanner compatibility 2026-02-16 18:45:33 +01:00
mmintel 24b2be2094 feat(analytics): add blog engagement, ToC tracking, and 404 monitoring
- Added BlogEngagementTracker for reading time and completion tracking
- Added ToC click tracking in blog posts
- Added global 404 error monitoring in not-found.tsx
- Completed 'Total Transparency' suite
2026-02-16 18:31:28 +01:00
mmintel 58d83a7fa1 feat(analytics): implement total transparency suite and SEO metadata standardization
- Added global ScrollDepthTracker (25%, 50%, 75%, 100%)
- Implemented ProductEngagementTracker for deep product analytics
- Added field-level tracking to ContactForm and RequestQuoteForm
- Standardized SEO metadata (canonical, alternates, x-default) across all routes
- Created reusable TrackedLink and TrackedButton components for server components
- Fixed 'useAnalytics' hook error in Footer.tsx by adding 'use client'
2026-02-16 18:30:29 +01:00
mmintel c2e790e533 feat(analytics): add umami data distribution refinement script and cleanup temporary data exports 2026-02-16 18:08:58 +01:00
mmintel 16597806bf fix(infra): resolve local directus service matching, improve branding script flexibility, and cleanup build artifacts 2026-02-16 18:07:56 +01:00
mmintel 7a63a418f1 feat: conditionally enable recording studio and feedback tool via env vars 2026-02-15 20:59:12 +01:00
mmintel 9274807427 feat(record-mode): unify mouse tool and enhance visuals 2026-02-15 18:25:52 +01:00
mmintel b32db4b277 feat: refactor clicks to generic mouse interactions with click/hover subtypes 2026-02-15 18:17:10 +01:00
mmintel d8a4ffe230 style: sharpen Studio hover previews by removing blur and diffuse shadows 2026-02-15 18:14:13 +01:00
mmintel 9adbe5b9cf feat: enhance Recording Studio with reorderable events, origin options, and hover previews 2026-02-15 18:13:25 +01:00
mmintel 460eeec0bb fix: industrial accuracy for record mode events via cross-window sync 2026-02-15 18:10:59 +01:00
mmintel 4e762ebfdf feat: optimize event capturing and playback accuracy 2026-02-15 18:06:50 +01:00
mmintel e9ce406a31 chore: remove temporary test file contact.html 2026-02-13 01:38:37 +01:00
mmintel a1a5df8a51 fix(og): enable automatic OG image discovery and refine Traefik whitelist
- Removed manual 'images' metadata overrides.
- This allows Next.js to use built-in automatic discovery.
- Ensures metadata uses the dynamic metadataBase from the environment.
- Refined Traefik public router regex for sub-routes.
- Restored and verified imports in modified page.tsx files.
2026-02-13 01:38:26 +01:00
mmintel 4147ec4cc4 fix(cms): update env schema and cms-apply script to fix email and auth issues 2026-02-13 01:13:47 +01:00
mmintel a68edcd349 fix(middleware): correctly include infrastructure routes in matcher for bypass 2026-02-13 00:24:43 +01:00
mmintel 3119199a8b fix(infra): definitive fix for Traefik Host rule and Gatekeeper bypass
- Switched Traefik Host rules from backticks to double quotes for safety.
- Used printf in deploy.yml to guarantee literal writing of environment variables.
- Verified that Host rules now correctly match without shell-side side-effects.
- Maintained WOFF fonts for Satori compatibility.
2026-02-12 23:34:33 +01:00
mmintel c5d1813306 fix(og): final verified robust fix for OG images and CI
- Fixed font corruption: Replaced WOFF2/HTML stubs with valid binary WOFF (v1) fonts.
- Verified local rendering: check:og script passes on production-like build.
- Secure CI Env: Prevented backtick execution in deploy.yml using safe echo blocks.
- Guaranteed Traefik Bypass: Priority 2000 and explicit PathPrefix whitelists in docker-compose.yml.
- Middleware Bypass: Ensured OG routes are ignored by next-intl.
2026-02-12 22:32:56 +01:00
mmintel 78d2faa30f fix(og): verified font and infrastructure fix
- Fixed font corruption: Replaced WOFF2/HTML stubs with valid binary WOFF fonts.
- Verified local rendering: check:og script now passes on local production build.
- Robust infrastructure: Guaranteed Traefik bypass with Host match and priority 2000.
- Middleware bypass: Ensured OG routes are never intercepted by next-intl.
2026-02-12 22:23:21 +01:00
mmintel 9097e2cead fix(infra): guaranteed Traefik bypass for OG images and sitemaps
- Added explicit Host match and PathPrefixes to public router in docker-compose.yml.
- Increased priority of public router to 2000.
- Updated middleware.ts to bypass next-intl for OG images and API routes.
- Verified local rendering of OG images.
2026-02-12 22:18:21 +01:00
mmintel a19bd92df7 fix(og): robust infrastructure fix for OG image check
- Added exhaustive PathRegexp whitelists in docker-compose.yml to bypass Gatekeeper.
- Fixed TRAEFIK_HOST_RULE interpolation in deploy.yml.
- Enhanced scripts/check-og-images.ts with header and body diagnostics.
- Added server-side font loading logs in lib/og-helper.tsx.
2026-02-12 21:59:13 +01:00
mmintel 350b1919f3 fix(og): diagnostic fix for CI OG image check
- Updated scripts/check-og-images.ts to log response body on failure.
- Refined Traefik public router rule in docker-compose.yml for better path matching.
- Fixed TRAEFIK_HOST_RULE assignment in deploy.yml (removed literal single quotes).
2026-02-12 21:35:45 +01:00
mmintel 081e1466f2 fix(infra): whitelist OG images in Traefik to bypass Gatekeeper
Added public router labels to ensure OG images, sitemaps, and health checks
are accessible on testing/staging environments for crawlers and CI tests.
2026-02-12 21:25:04 +01:00
mmintel 675819f169 fix(ci): use native fetch in OG image check script
Removed node-fetch dependency to fix ERR_MODULE_NOT_FOUND in CI.
2026-02-12 21:16:00 +01:00
mmintel 700c6b29a3 fix(og): resolve font corruption and Next.js 15+ params compatibility
- Replaced corrupted HTML font files with binary WOFF2 versions.
- Updated all opengraph-image.tsx files to await params, as required by Next.js 15+.
- Improved OG image reliability by using SITE_URL for absolute image paths.
- Added scripts/check-og-images.ts for automated production verification.
- Integrated smoke_test job into deployment pipeline.
2026-02-12 19:14:14 +01:00
mmintel cba7c5abcf fix(middleware): bypass internationalization for stats and errors 2026-02-12 18:18:51 +01:00
mmintel d5dd4adfe5 fix(analytics): restore missing UMAMI_API_ENDPOINT in environment schema 2026-02-12 17:59:03 +01:00
mmintel e9cd8d1768 fix(analytics): restore Smart Proxy mechanism and remove conflicting rewrites 2026-02-12 17:33:42 +01:00
mmintel 6d2279224e fix(analytics): ensure Umami Website ID is visible to client bundle 2026-02-12 17:19:01 +01:00
mmintel e800c1fbe0 feat: align analytics and error naming standards and fix Umami proxy 2026-02-12 16:55:20 +01:00
mmintel 11a782a5ab fix(pipeline): conditional upstream status check (verified via git ls-remote) 2026-02-12 15:18:59 +01:00
mmintel 7b3710c174 fix(pipeline): implement clean PAT-based upstream wait logic 2026-02-12 15:16:11 +01:00
mmintel 37f4306367 fix(pipeline): use git ls-remote for robust upstream SHA discovery 2026-02-12 15:13:27 +01:00
mmintel b1fa47a1b8 fix(pipeline): fix sed syntax error in upstream wait patch 2026-02-12 15:07:51 +01:00
mmintel 3e0e10c50a fix(pipeline): fallback to unauthenticated tag discovery for at-mintel 2026-02-12 15:00:37 +01:00
mmintel 2b9d449ef8 fix(pipeline): sync next-utils to 1.7.15 and exclude it from upstream wait logic 2026-02-12 14:42:23 +01:00
mmintel e0dd386969 fix(pipeline): sync @mintel dependencies to 1.7.12 to match existing tags 2026-02-12 14:37:35 +01:00
mmintel dcf54ead84 fix(pipeline): improve upstream version extraction and sync dependencies 2026-02-12 14:35:22 +01:00
mmintel f21e3262fc fix(infra): pass Cookie header to Gatekeeper ForwardAuth 2026-02-12 14:25:14 +01:00
mmintel 6139ceae0b fix(gatekeeper): upgrade to v1.7.12 2026-02-11 22:49:38 +01:00
mmintel 96cbc680ef feat(pipeline): add smart dependency waiting for upstream releases 2026-02-11 22:42:28 +01:00
mmintel d253134699 fix(gatekeeper): upgrade to v1.7.11 2026-02-11 22:35:54 +01:00
mmintel 210b0f6e0c fix(pipeline): sync traefik host and gatekeeper origin variables 2026-02-11 21:50:43 +01:00
mmintel 3b77ba5412 fix: ensure correct middleware order and path-based gatekeeper origins 2026-02-11 20:51:34 +01:00
mmintel 268d1c5cbd fix: use correctly prefixed /gatekeeper/api/verify endpoint for forwardauth 2026-02-11 19:14:52 +01:00
mmintel e9d01d5aeb fix: ensure COMPOSE_PROFILES and AUTH_MIDDLEWARE are correctly populated in env file 2026-02-11 19:05:36 +01:00
mmintel 79d7cfd009 perf: implement font optimization, granular lazy-loading and content-visibility 2026-02-11 18:51:22 +01:00
mmintel 24181a48c1 perf: site-wide performance optimizations including image delivery and hero overhaul 2026-02-11 18:47:13 +01:00
mmintel 407edc15f9 feat: implement docker profiles for gatekeeper and isolate environments 2026-02-11 18:44:47 +01:00
mmintel ac102537d7 chore: remove docker-compose.override.yml from repository (local only) 2026-02-11 18:43:13 +01:00
mmintel f756c7c1d2 fix: purge dangerous local overrides and volume mounts 2026-02-11 18:41:51 +01:00
mmintel 6b2da9abb6 fix: use correct gatekeeper image tag v1.7.10 2026-02-11 18:38:52 +01:00
mmintel da514a17e3 feat: integrate mintel gatekeeper into testing environment 2026-02-11 18:32:55 +01:00
mmintel e6261586be chore: use correct v-prefixed tags for @mintel base images 2026-02-11 18:03:35 +01:00
mmintel d6cae74301 chore: synchronize pnpm-lock.yaml for v1.7.10 upgrade 2026-02-11 17:54:31 +01:00
mmintel 9b0a62a314 chore: align with clean @mintel basis v1.7.10 and modernize deployment 2026-02-11 17:49:15 +01:00
mmintel e83c9590b1 ci: fix private registry access in Docker build stage 2026-02-11 15:03:14 +01:00
mmintel 4d2521fbb5 ci: fix pipeline by reverting to stable node:20-alpine base images 2026-02-11 14:44:03 +01:00
mmintel f892eb81df chore: standardize CI/CD maintenance and infrastructure cleanup 2026-02-11 12:23:14 +01:00
mmintel a2ba79ef7b chore: ignore next-env.d.ts in prettier to prevent flapping 2026-02-11 12:09:00 +01:00
mmintel c4c8ab5c19 fix(i18n): harden locale validation and fix missing translation tags 2026-02-11 12:07:08 +01:00
mmintel e5ef96aa86 fix: build 2026-02-11 10:45:49 +01:00
mmintel a553316d74 chore: fix vitest path aliases and verify build 2026-02-11 10:44:57 +01:00
mmintel c37fabdc8f chore: fix all linting issues and optimize components 2026-02-11 10:40:57 +01:00
mmintel 5b4d3ebb41 chore: standardize ESM-first architecture and resolve all type/test/lint errors 2026-02-11 01:33:44 +01:00
mmintel b6fbead807 fix(types): synchronize directus sdk and zod versions to match next-utils v1.1.12 2026-02-11 01:23:29 +01:00
mmintel 0a928936e7 fix: use robust healthcheck and fix indent 2026-02-11 01:16:29 +01:00
mmintel 5a918484f9 fix: remove production authentication and add healthcheck 2026-02-11 01:08:06 +01:00
mmintel c5b1f361ea fix(types): update next-utils and sync zod version to fix type errors 2026-02-11 01:02:58 +01:00
mmintel 8c24e2b6cd feat: implement failfast logic in pipelines 2026-02-11 00:58:07 +01:00
mmintel ca812d3003 fix(types): wrap mintelEnvSchema in z.object() to fix extend error 2026-02-11 00:50:28 +01:00
mmintel 7ca247fd5d fix(types): correctly extend mintelEnvSchema and refine directus schema types 2026-02-11 00:50:17 +01:00