From 7145471b9d9f46118c0586f2129ecf1d104ec180 Mon Sep 17 00:00:00 2001 From: Logan Lindquist Land Date: Thu, 6 Aug 2026 08:08:48 -0500 Subject: [PATCH] Run maintenance pass and consolidate updates MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Group the open Dependabot bumps into one reviewed maintenance change\nso the branch can land as a single validated upgrade instead of four\nindependent PRs with overlapping risk.\n\n• keep dependency and config updates aligned with a clean audit result\n• preserve runtime behavior by fixing iframe telemetry and a11y regressions\n• move Vitest to an explicit ESM config so the test toolchain stays stable --- .gitignore | 1 + biome.json | 4 +- components/Copyright.tsx | 1 - next.config.mjs | 5 + package.json | 32 +- pages/index.tsx | 24 +- pnpm-lock.yaml | 1174 ++++++++++++++----------- pnpm-workspace.yaml | 4 +- public/favicon.svg | 1 + public/luddy.svg | 1 + public/next.svg | 2 +- public/placeholder.svg | 2 +- public/vercel.svg | 2 +- tests/smoke.test.tsx | 81 +- vitest.config.ts => vitest.config.mts | 3 +- 15 files changed, 772 insertions(+), 565 deletions(-) rename vitest.config.ts => vitest.config.mts (80%) diff --git a/.gitignore b/.gitignore index 9a7d6fb..0a7adec 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,7 @@ .claude/ .agent/ .gemini/ +_/ GEMINI.md AGENT.md diff --git a/biome.json b/biome.json index c784ae7..2f0ac5b 100644 --- a/biome.json +++ b/biome.json @@ -1,5 +1,5 @@ { - "$schema": "https://biomejs.dev/schemas/2.4.12/schema.json", + "$schema": "https://biomejs.dev/schemas/2.5.7/schema.json", "vcs": { "enabled": true, "clientKind": "git", @@ -18,7 +18,7 @@ "linter": { "enabled": true, "rules": { - "recommended": true, + "preset": "recommended", "correctness": { "useExhaustiveDependencies": "warn", "useJsxKeyInIterable": "error" diff --git a/components/Copyright.tsx b/components/Copyright.tsx index 0e95b40..5a7025d 100644 --- a/components/Copyright.tsx +++ b/components/Copyright.tsx @@ -6,7 +6,6 @@ const Copyright = () => { fontWeight: '400', fontSize: '1.4rem', lineHeight: '2.4rem', - color: 'white', gap: '1rem', }} > diff --git a/next.config.mjs b/next.config.mjs index 379fc8a..740432d 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -9,6 +9,11 @@ const nextConfig = { // Enable standalone output for optimized Docker builds output: 'standalone', + // Keep Turbopack scoped to this repository when parent directories contain lockfiles. + turbopack: { + root: import.meta.dirname, + }, + // Security headers configuration async headers() { return [ diff --git a/package.json b/package.json index e31ceec..9081f8e 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "luddy.dance", "version": "0.1.0", "private": true, - "packageManager": "pnpm@11.1.3", + "packageManager": "pnpm@11.20.0", "engines": { "node": ">=22" }, @@ -22,27 +22,27 @@ }, "dependencies": { "logan-logger": "^1.1.16", - "next": "16.2.6", - "react": "^19.2.6", - "react-dom": "^19.2.6" + "next": "16.3.0", + "react": "^19.2.8", + "react-dom": "^19.2.8" }, "devDependencies": { - "@biomejs/biome": "^2.4.15", - "@next/bundle-analyzer": "^16.2.6", - "@tailwindcss/postcss": "^4.3.0", + "@biomejs/biome": "^2.5.7", + "@next/bundle-analyzer": "^16.3.0", + "@tailwindcss/postcss": "^4.3.3", "@testing-library/jest-dom": "^6.9.1", "@testing-library/react": "^16.3.2", "@types/node": "^25.9.0", - "@types/react": "^19.2.14", - "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^6.0.2", - "@vitest/ui": "^4.1.6", + "@types/react": "^19.2.18", + "@types/react-dom": "^19.2.4", + "@vitejs/plugin-react": "^6.0.5", + "@vitest/ui": "^4.1.10", "jsdom": "^29.1.1", - "postcss": "^8.5.14", - "sharp": "^0.34.5", - "tailwindcss": "^4.3.0", + "postcss": "8.5.25", + "sharp": "^0.35.3", + "tailwindcss": "^4.3.3", "typescript": "^6.0.3", - "vite": "^8.0.13", - "vitest": "^4.1.6" + "vite": "^8.2.0", + "vitest": "^4.1.10" } } diff --git a/pages/index.tsx b/pages/index.tsx index 1421755..b3a543c 100644 --- a/pages/index.tsx +++ b/pages/index.tsx @@ -2,10 +2,13 @@ import Image from 'next/image'; import { useEffect, useRef, useState } from 'react'; import { log, reportError, setUserContext, trackPerformance } from '@/lib/logger'; +const VIDEO_URL = 'https://www.youtube.com/embed/L3Ucukzbp6k'; + export default function Component() { const [isIframeLoaded, setIframeLoaded] = useState(false); const [shouldLoadIframe, setShouldLoadIframe] = useState(false); const iframeRef = useRef(null); + const iframeLoadStartedAtRef = useRef(null); useEffect(() => { // Set user context on page load @@ -23,6 +26,7 @@ export default function Component() { const [entry] = entries; if (entry.isIntersecting) { const startTime = performance.now(); + iframeLoadStartedAtRef.current = startTime; setShouldLoadIframe(true); trackPerformance('iframe_intersection', performance.now() - startTime); log.componentMount('VideoIframe'); @@ -69,24 +73,32 @@ export default function Component() {