- Replace ShaderGradientBackground WebGL shader (3 static spheres) with pure
CSS radial-gradient divs — moves from ClientProviders (deferred JS) to
app/layout.tsx as a server component rendered in initial HTML. Eliminates
@shadergradient/react, three, @react-three/fiber from the JS bundle.
Removes chunks/7001 (~20s CPU eval) and the 39s main thread block.
- Remove optimizeCss/critters: it was converting <link rel="stylesheet"> to a
JS-deferred preload, which PageSpeed read as a 410ms sequential CSS chain.
Both CSS files now load as parallel <link> tags from initial HTML (~150ms).
- Update browserslist safari >= 15 → 15.4 (Array.prototype.at, Object.hasOwn
are native in 15.4+; eliminates unnecessary SWC compatibility transforms).
- Delete orphaned app/styles/ghostContent.css (never imported anywhere, 3.7KB).
- Add .claude/ dev team setup: 5 subagents (frontend-dev, backend-dev, tester,
code-reviewer, debugger), 3 skills (/add-section, /review-changes,
/check-quality), 3 path-scoped rules, settings.json with auto-lint hook.
- Update CLAUDE.md with server/client orchestrator pattern, SSR animation
safety rules, API route conventions, and improved command reference.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Remove framer-motion from Hero.tsx and HeaderClient.tsx, replace with CSS animations/transitions
- Replace lucide-react icons (Menu, X, Mail) with inline SVGs in HeaderClient.tsx
- Lazy-load About, Projects, Contact, Footer via dynamic() imports in ClientWrappers.tsx
- Defer ShaderGradient/BackgroundBlobs loading via requestIdleCallback in ClientProviders.tsx
- Remove AnimatePresence page wrapper that caused full re-renders
- Enable experimental.optimizeCss (critters) for critical CSS inlining
- Add fadeIn keyframe to Tailwind config for CSS-based animations
Homepage JS reduced from 563KB to 438KB (-125KB).
Eliminates ~39s main thread work from WebGL init and layout thrashing.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add WebGL support detection in ShaderGradientBackground to prevent console errors
- Add .catch() fallback to ShaderGradientBackground dynamic import
- Remove hardcoded aria-label from consent banner minimize button (fixes label-content-name-mismatch)
- Use rewrite instead of redirect for root locale routing (eliminates one redirect hop)
- Change n8n API cache headers from no-store to no-cache (enables bfcache)
- Add three and @react-three/fiber to optimizePackageImports for better tree-shaking
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
feat(api): require session authentication for admin routes and improve error handling
fix(api): streamline project image generation by fetching data directly from the database
fix(api): optimize project import/export functionality with session validation and improved error handling
fix(api): enhance analytics dashboard and email manager with session token for admin requests
fix(components): improve loading states and dynamic imports for better user experience
chore(security): update Content Security Policy to avoid unsafe-eval in production
chore(deps): update package.json scripts for consistent environment handling in linting and testing
- Added serverRuntimeConfig to next.config.ts for improved server-side configuration.
- Updated gitea-deploy.sh to include additional environment variables for deployment.
- Increased sleep duration and health check timeout for better container readiness verification.
- Implemented checks to ensure the container is running during health checks and logs container status if it fails.
✅ Enhancements improve deployment reliability and server configuration management.
- Modify Dockerfile to install curl without recommended packages for a leaner image.
- Update Next.js configuration to set outputFileTracingRoot for better Docker compatibility.
- Revise contact components to improve messaging and clarity, changing "Get In Touch" to "Contact Me" and enhancing descriptions for collaboration opportunities.
- Clean up Prisma schema by removing unnecessary comments and restructuring the Project model for clarity.
- Disable generateStaticParams to prevent static generation
- Add Cache-Control headers to force revalidation
- This should fix the issue where new routes are not available after deployment
- Add auto-deploy.sh script with full CI/CD pipeline
- Add quick-deploy.sh for fast development deployments
- Add Git post-receive hook for automatic deployment on push
- Add comprehensive deployment documentation
- Add npm scripts for easy deployment management
- Include health checks, logging, and cleanup
- Support for automatic rollback on failures
* ✨ chore: update CI workflow to include testing and multi-arch build (#29)
* ✨ chore: remove unused dependencies from package-lock.json and updated to a better local dev environment (#30)
* ✨ test: add unit tests
* ✨ test: add unit tests for whole project
* ✨ feat: add whatwg-fetch for improved fetch support
* ✨ chore: update Node.js version to 22 in workflow
* ✨ refactor: update types and improve email handling tests
* ✨ refactor: remove unused imports
* ✨ fix: normalize image name to lowercase in workflows
* ✨ fix: ensure Docker image names are consistently lowercase
* ✨ chore: update
* ✨ chore: update base URL to use secret variable
* ✨ chore: update to login to ghcr
* ✨ fix: add missing 'fi' to close if statement in workflow
* D branch 1 (#32)
* full upgrade (#31)
* ✨ chore: update CI workflow to include testing and multi-arch build (#29)
* ✨ chore: remove unused dependencies from package-lock.json and updated to a better local dev environment (#30)
* ✨ test: add unit tests
* ✨ test: add unit tests for whole project
* ✨ feat: add whatwg-fetch for improved fetch support
* ✨ chore: update Node.js version to 22 in workflow
* ✨ refactor: update types and improve email handling tests
* ✨ refactor: remove unused imports
* ✨ fix: normalize image name to lowercase in workflows
* ✨ fix: ensure Docker image names are consistently lowercase
* ✨ chore: update
* ✨ chore: update base URL to use secret variable
* ✨ chore: update to login to ghcr
* ✨ fix: add missing 'fi' to close if statement in workflow
* 🚀 fix: update Docker run commands to use specific network
* D branch 1 (#34)
* full upgrade (#31)
* ✨ chore: update CI workflow to include testing and multi-arch build (#29)
* ✨ chore: remove unused dependencies from package-lock.json and updated to a better local dev environment (#30)
* ✨ test: add unit tests
* ✨ test: add unit tests for whole project
* ✨ feat: add whatwg-fetch for improved fetch support
* ✨ chore: update Node.js version to 22 in workflow
* ✨ refactor: update types and improve email handling tests
* ✨ refactor: remove unused imports
* ✨ fix: normalize image name to lowercase in workflows
* ✨ fix: ensure Docker image names are consistently lowercase
* ✨ chore: update
* ✨ chore: update base URL to use secret variable
* ✨ chore: update to login to ghcr
* ✨ fix: add missing 'fi' to close if statement in workflow
* 🚀 fix: update Docker run commands to use specific network
* ✨ fix: add error handling for invalid project data
* D branch 2 (#35)
* full upgrade (#31)
* ✨ chore: update CI workflow to include testing and multi-arch build (#29)
* ✨ chore: remove unused dependencies from package-lock.json and updated to a better local dev environment (#30)
* ✨ test: add unit tests
* ✨ test: add unit tests for whole project
* ✨ feat: add whatwg-fetch for improved fetch support
* ✨ chore: update Node.js version to 22 in workflow
* ✨ refactor: update types and improve email handling tests
* ✨ refactor: remove unused imports
* ✨ fix: normalize image name to lowercase in workflows
* ✨ fix: ensure Docker image names are consistently lowercase
* ✨ chore: update
* ✨ chore: update base URL to use secret variable
* ✨ chore: update to login to ghcr
* ✨ fix: add missing 'fi' to close if statement in workflow
* ✨ fix: format code for better readability in Contact and Footer components
* D branch 2 (#36)
* full upgrade (#31)
* ✨ chore: update CI workflow to include testing and multi-arch build (#29)
* ✨ chore: remove unused dependencies from package-lock.json and updated to a better local dev environment (#30)
* ✨ test: add unit tests
* ✨ test: add unit tests for whole project
* ✨ feat: add whatwg-fetch for improved fetch support
* ✨ chore: update Node.js version to 22 in workflow
* ✨ refactor: update types and improve email handling tests
* ✨ refactor: remove unused imports
* ✨ fix: normalize image name to lowercase in workflows
* ✨ fix: ensure Docker image names are consistently lowercase
* ✨ chore: update
* ✨ chore: update base URL to use secret variable
* ✨ chore: update to login to ghcr
* ✨ fix: add missing 'fi' to close if statement in workflow
* ✨ fix: format code for better readability in Contact and Footer components
* 🚀 fix: update Docker commands and remove hardcoded API URL
* Update main.yml
* Update main.yml
* Update main.yml
* D branch 1 (#37)
* full upgrade (#31)
* ✨ chore: update CI workflow to include testing and multi-arch build (#29)
* ✨ chore: remove unused dependencies from package-lock.json and updated to a better local dev environment (#30)
* ✨ test: add unit tests
* ✨ test: add unit tests for whole project
* ✨ feat: add whatwg-fetch for improved fetch support
* ✨ chore: update Node.js version to 22 in workflow
* ✨ refactor: update types and improve email handling tests
* ✨ refactor: remove unused imports
* ✨ fix: normalize image name to lowercase in workflows
* ✨ fix: ensure Docker image names are consistently lowercase
* ✨ chore: update
* ✨ chore: update base URL to use secret variable
* ✨ chore: update to login to ghcr
* ✨ fix: add missing 'fi' to close if statement in workflow
* ✨ feat: display base URL in Hero component
* Update main.yml
* Update next.config.ts
* next.config.ts aktualisieren
* Update main.yml
* ✨ chore: refactor environment variable handling in workflow
* ✨ chore: update GitHub Actions workflow for improved security and caching
* 🚀 chore: update Trivy action version and enhance config
* ✨ chore: update GitHub Actions workflows and add linter
* 🚫 chore: remove Docker image vulnerability scan step
* ✨ chore: update environment variable logging in workflow
* ✨ chore: add dynamic environment for deployment jobs
* 🚀 chore: set deployment environment to GitHub ref name
* 🎉 chore: remove environment variable exposure in CI/CD
* ✨ chore: remove sensitive environment variable logging and update variable references
* ✨ chore: log environment variables for debugging purposes
* ✨ chore: create .env file for environment variables setup
* ✨ feat: copy .env file to Docker image for config
* ✨ refactor: update environment variables to public scope
* ✨ chore: remove environment variable from Hero component
* ✨ fix: update environment variable references in workflow
* ✨ chore: add folder structure display to workflow steps
* ✨ chore: reorder CI steps for improved workflow clarity
* ✨ fix: remove unnecessary console logs and correct base URL variable
* ✨ chore: update CI workflow to include testing and multi-arch build (#29)
* ✨ chore: remove unused dependencies from package-lock.json and updated to a better local dev environment (#30)
* ✨ test: add unit tests
* ✨ test: add unit tests for whole project
* ✨ feat: add whatwg-fetch for improved fetch support
* ✨ chore: update Node.js version to 22 in workflow
* ✨ refactor: update types and improve email handling tests
* ✨ refactor: remove unused imports
* ✨ fix: normalize image name to lowercase in workflows
* ✨ fix: ensure Docker image names are consistently lowercase
* ✨ chore: update
* ✨ chore: update base URL to use secret variable
* ✨ chore: update to login to ghcr
* ✨ fix: add missing 'fi' to close if statement in workflow
Replace hardcoded GHOST_API_KEY with process.env.GHOST_API_KEY in
API routes to enhance security. Update Docker commands in the CI
workflow to pass the GHOST_API_KEY as an environment variable.
Add GHOST_API_KEY to the Next.js configuration for consistent
access across the application.