What's Changed
- Update dependency motion to ^11.16.0 by @renovate in #582
 - Update dependency @hookform/resolvers to ^3.10.0 by @renovate in #583
 - Update dependency sanity to ^3.69.0 by @renovate in #585
 - 🎨 style: format code using prettier by @w3bdesign in #586
 - Update Node.js to v23.6.0 by @renovate in #584
 - Update dependency motion to ^11.17.0 by @renovate in #588
 - Update dependency eslint to v9.18.0 by @renovate in #589
 - 🚚 move: restructure project files into src directory by @w3bdesign in #590
 - 🎨 style: reorder imports in GenericForm component by @w3bdesign in #591
 - ♻️ refactor(matrix): split matrix component into modular structure by @w3bdesign in #592
 - ✨ feat(config): add env validation with envalid by @w3bdesign in #593
 - ♻️ refactor(testing): simplify testing tools description by @w3bdesign in #594
 - ✅ test: add tests for BounceInScroll animation component by @w3bdesign in #595
 - ✅ test: add comprehensive error boundary fallback tests by @w3bdesign in #596
 - Update dependency postcss to ^8.5.0 by @renovate in #598
 - Update typescript-eslint monorepo to ^8.20.0 by @renovate in #599
 - 🔧 chore(ts): enable stricter typescript checks by @w3bdesign in #600
 - Update dependency motion to ^11.18.0 by @renovate in #601
 - Update dependency eslint-plugin-jest to ^28.11.0 by @renovate in #603
 - Update dependency sanity to ^3.70.0 by @renovate in #602
 - 🎨 style: add trailing commas and format matrix test files by @w3bdesign in #606
 - 💄 ui: remove hover scale effect from tech stack icons by @w3bdesign in #607
 - Update testing-library monorepo by @renovate in #605
 - 📝 docs: add technical documentation for DFWeb v4 by @w3bdesign in #608
 - 🚚 move: rename TECHNICAL.md to README.md in DOCS directory by @w3bdesign in #609
 - 📝 docs(perf): expand performance optimization documentation by @w3bdesign in #610
 - 📝 docs: expand testing strategy documentation with detailed sections by @w3bdesign in #611
 - Update actions/checkout digest to 009b9ae by @renovate in #613
 - Update actions/checkout digest to 85e6279 by @renovate in #614
 - 📝 docs(cv): update education timeframe to 2025 by @w3bdesign in #616
 - Update dependency @types/node to ^22.10.7 by @renovate in #612
 - 👷 ci: add repository documentation workflow by @w3bdesign in #617
 - 👷 ci: update repomix workflow to use global install by @w3bdesign in #618
 - 📝 docs: add automated repository documentation details by @w3bdesign in #619
 - 🔥 cleanup: remove automated PR comments feature by @w3bdesign in #620
 - Add new CV by @w3bdesign in #621
 - fix(deps): update dependency @sanity/client to ^6.25.0 by @renovate in #622
 - chore(deps): update typescript-eslint monorepo to ^8.21.0 by @renovate in #623
 - fix(deps): update dependency motion to v12 by @renovate in #624
 - 📝docs: add detailed copilot instructions for DFWeb v4 by @w3bdesign in #625
 - fix(deps): update dependency sanity to ^3.71.0 by @renovate in #626
 - ♻️ refactor: simplify animation component test structure by @w3bdesign in #628
 - ⚡️ perf: remove unoptimized prop from project card image by @w3bdesign in #630
 - 👷 ci: add wait period before starting repomix workflow by @w3bdesign in #631
 - ♻️ refactor: replace next/image with standard img tag by @w3bdesign in #632
 - Replace Next Image by @w3bdesign in #633
 - fix(deps): update dependency motion to ^12.0.1 by @renovate in #635
 - 🔧 chore(ci): increase wait time for checks to 5 minutes by @w3bdesign in #636
 - chore(deps): update dependency @testing-library/user-event to ^14.6.1 by @renovate in #634
 - chore(deps): update node.js to v23.6.1 by @renovate in #638
 - 🐛 fix: add optional chaining for safer data access by @w3bdesign in #639
 - fix(deps): update dependency @sanity/client to ^6.27.1 by @renovate in #637
 - 🐛 fix: add null checks by @w3bdesign in #640
 - 🐛 fix: correct random character generation in matrix animation by @w3bdesign in #642
 - fix(deps): update dependency sanity to ^3.71.1 by @renovate in #643
 - 🔧 chore(ts): update typescript target to ES2022 by @w3bdesign in #644
 - fix(deps): update dependency @sanity/client to ^6.27.1 by @renovate in #641
 - ✅ test: add testing library type definitions by @w3bdesign in #646
 - ✅ test: expand typescript matchers interface for jest by @w3bdesign in #647
 - 📝 docs: add repository context file documentation to README by @w3bdesign in #648
 - chore(deps): update dependency @playwright/test to ^1.50.0 by @renovate in #649
 - chore(deps): update dependency codecov to v5.2.0 by @renovate in #650
 - fix(deps): update dependency sanity to ^3.71.2 by @w3bdesign in #651
 - chore(deps): update dependency eslint to v9.19.0 by @renovate in #652
 - ✨ feat: add animated header SVG for Github portfolio by @w3bdesign in #655
 - 📦 deps: add animated header gif asset by @w3bdesign in #656
 - chore(deps): update typescript-eslint monorepo to ^8.22.0 by @renovate in #654
 - ♿️ access: add pa11y automated accessibility testing workflow by @w3bdesign in #657
 - chore(deps): update actions/upload-artifact action to v4 by @renovate in #659
 - 🎨 style: rename accessibility tests workflow to a11y by @w3bdesign in #660
 - 🎨 style: rename A11y workflow title by @w3bdesign in #661
 - chore(deps): update actions/cache action to v4 by @renovate in #658
 - fix(deps): update dependency @sanity/client to ^6.27.2 by @renovate in #663
 - chore(deps): update dependency @types/node to ^22.12.0 by @renovate in #662
 - fix(deps): update dependency sanity to ^3.72.1 by @renovate in #665
 - fix(deps): update dependency next-sanity to ^9.8.46 by @renovate in #664
 - 👷 ci: update a11y workflow name by @w3bdesign in #666
 - chore(deps): update dependency cypress-axe to ^1.6.0 by @renovate in #667
 - chore(deps): update dependency @types/node to ^22.13.0 by @renovate in #670
 - chore(deps): update node.js to v23.7.0 by @renovate in #669
 - chore(deps): update typescript-eslint monorepo to ^8.23.0 by @renovate in #671
 - fix(deps): update dependency motion to ^12.1.0 by @renovate in #672
 - fix(deps): update dependency sanity to ^3.74.0 by @renovate in #673
 - chore(deps): update dependency node to v7.1.0 by @renovate in #675
 - fix(deps): update dependency motion to ^12.3.1 by @renovate in #674
 - fix(deps): update dependency motion to ^12.4.0 by @renovate in #678
 - ✨ feat: add comprehensive error handling for Sanity API by @w3bdesign in #679
 - ♻️ refactor(tabs): extract tab button and panel into separate components by @w3bdesign in #680
 - ♻️ refactor: improve error handling for projects fetch action by @w3bdesign in #681
 - ♻️ refactor(renderer): convert MatrixRenderer class to functional approach by @w3bdesign in #682
 - ♻️ refactor: improve matrix renderer code organization by @w3bdesign in #683
 - chore(deps): update dependency cypress to v14 by @renovate in #615
 - ✨ feat(eslint): convert arrange-act-assert ESLint rule to Typescript by @w3bdesign in #685
 - ♻️ refactor(eslint): extract test validation logic into separate functions by @w3bdesign in #686
 - ♻️ refactor(eslint): extract test validation functions by @w3bdesign in #687
 - 📦 deps: update dependencies by @w3bdesign in #688
 - ♻️ refactor(tests): refactor error handling test cases by @w3bdesign in #689
 - chore(deps): update dependency eslint to v9.20.0 by @renovate in #690
 - chore(deps): update dependency prettier to v3.5.0 by @renovate in #691
 - 🔧 chore(scripts): add typegen script for sanity schema and types by @w3bdesign in #692
 - 📦 deps: update dependencies to latest versions by @w3bdesign in #693
 - chore(deps): update dependency eslint to v9.20.0 by @renovate in #694
 - fix(deps): update dependency @hookform/resolvers to v4 by @renovate in #699
 - fix(deps): update dependency @vercel/speed-insights to ^1.2.0 by @renovate in #698
 - ✨ feat[types]: add sanity typescript type definitions by @w3bdesign in #702
 - fix(deps): update dependency sanity to ^3.75.0 by @renovate in #701
 - chore(deps): update dependency cypress to v3.4.3 by @renovate in #695
 - fix(deps): update dependency @sanity/client to ^6.28.0 by @renovate in #700
 - chore(deps): update typescript-eslint monorepo to ^8.24.0 by @renovate in #696
 - chore(deps): update dependency codecov to v5.2.1 by @renovate in #703
 - fix(deps): update dependency @hookform/resolvers to ^4.1.0 by @renovate in #705
 - chore(deps): update node.js to v23.8.0 by @renovate in #704
 - fix(deps): update dependency react-icons to ^5.5.0 by @renovate in #707
 - fix(deps): update dependency sanity to ^3.76.1 by @renovate in #706
 - chore(deps): update dependency eslint to v9.21.0 by @renovate in #708
 - fix(deps): update dependency sanity to ^3.77.0 by @renovate in #709
 - chore(deps): update typescript-eslint monorepo to ^8.25.0 by @renovate in #710
 - 🔧 chore(ai): update claude model version to 3.7 by @w3bdesign in #711
 - fix(deps): update nextjs monorepo to v15.2.0 by @renovate in #712
 - chore(deps): update dependency typescript to ^5.8.2 by @renovate in #718
 - chore(deps): update dependency eslint-plugin-react-hooks to ^5.2.0 by @renovate in #717
 - chore(deps): update node.js to v23.9.0 by @renovate in #715
 - chore(deps): update typescript-eslint monorepo to ^8.26.0 by @renovate in #720
 - fix(deps): update dependency sanity to ^3.78.0 by @renovate in #722
 - 🔥 cleanup: remove unused scan script from package.json by @w3bdesign in #723
 - fix(deps): update dependency next-sanity to ^9.9.0 by @renovate in #724
 - 🔥 cleanup: remove artificial delay and fix code formatting by @w3bdesign in #727
 - chore(deps): update dependency @playwright/test to ^1.51.0 by @renovate in #726
 - chore(deps): update dependency eslint to v9.22.0 by @renovate in #729
 - 📦 deps: update dependencies by @w3bdesign in #730
 - chore(deps): update dependency @playwright/test to ^1.51.0 by @renovate in #731
 - fix(deps): update dependency sanity to ^3.79.0 by @renovate in #733
 - chore(deps): update dependency codecov to v5.3.0 by @renovate in #734
 - fix(deps): update dependency motion to ^12.5.0 - autoclosed by @renovate in #732
 - chore(deps): update dependency node to v22 by @renovate in #735
 - chore(deps): update node.js to v23.10.0 by @renovate in #736
 - chore(deps): update typescript-eslint monorepo to ^8.27.0 by @renovate in #738
 - fix(deps): update dependency sanity to ^3.80.1 by @renovate in #737
 - chore(deps): update dependency eslint to v9.23.0 by @renovate in #739
 - 🎨 style: improve markdown formatting in README by @w3bdesign in #740
 - 716 eslint tailwind by @w3bdesign in #719
 - chore(deps): update dependency cypress to v14 by @renovate in #684
 - chore(deps): update dependency typescript to ^5.8.2 by @renovate in #743
 - fix(deps): update dependency next to v15.2.3 [security] by @renovate in #742
 - fix(deps): update dependency sanity to ^3.80.1 by @renovate in #748
 - chore(deps): update react monorepo by @renovate in #741
 - chore(deps): update dependency prettier to v3.5.3 by @renovate in #751
 - chore(deps): update dependency cypress to v14.2.0 by @renovate in #744
 - fix(deps): update dependency @vercel/speed-insights to ^1.2.0 by @renovate in #746
 - fix(deps): update dependency react-icons to ^5.5.0 by @renovate in #747
 - 📦 deps: update dependencies by @w3bdesign in #753
 - chore(deps): update dependency postcss to ^8.5.3 by @renovate in #755
 - chore(deps): update dependency eslint to v9.23.0 by @renovate in #749
 - chore(deps): update dependency axe-core to ^4.10.3 by @renovate in #754
 - chore(deps): update dependency wait-on to ^8.0.3 by @renovate in #757
 - chore(deps): update dependency ts-jest to ^29.2.6 by @renovate in #756
 - chore(deps): update dependency eslint-config-next to v15.2.3 by @renovate in #750
 - chore(deps): update typescript-eslint monorepo to ^8.27.0 by @renovate in #745
 - 📝 docs: add comprehensive test strategy document by @w3bdesign in #758
 - 🔥 cleanup: remove comprehensive test coverage section by @w3bdesign in #759
 - 🎨 style: establish consistent css color variable system by @w3bdesign in #760
 - 📦 deps: add @babel/helpers dependency by @w3bdesign in #762
 - chore(deps): update dependency ts-jest to ^29.3.0 by @renovate in #763
 - chore(deps): update pnpm/action-setup action to v4 by @renovate in #766
 - fix(deps): update dependency @babel/helpers to >=7.27.0 by @renovate in #765
 - chore(deps): update typescript-eslint monorepo to ^8.28.0 by @renovate in #764
 - fix(deps): update dependency motion to ^12.6.0 by @renovate in #767
 - fix(deps): update dependency sanity to ^3.81.0 by @renovate in #768
 - fix(deps): update dependency react-hook-form to ^7.55.0 by @renovate in #770
 - fix(deps): update react monorepo to ^19.1.0 by @renovate in #771
 - chore(deps): update typescript-eslint monorepo to ^8.29.0 by @renovate in #772
 - Sanity typegen by @w3bdesign in #769
 - ✏️ test: update skills text in home page test by @w3bdesign in #773
 - fix(deps): update dependency @hookform/resolvers to v5 by @renovate in #776
 - fix(deps): update dependency sanity to ^3.82.0 by @renovate in #777
 - ✏️ typo: fix spelling of "komponent" in Hero test by @w3bdesign in #778
 - 📝 docs[jsdoc]: improve ProsjektCard component documentation by @w3bdesign in #779
 - 📦 deps: update motion package from 12.6.2 to 12.6.3 by @w3bdesign in #780
 - chore(deps): update dependency @types/node to ^22.14.0 by @renovate in #784
 - chore(deps): update node.js to v23.11.0 by @renovate in #782
 - chore(deps): update dependency @testing-library/react to ^16.3.0 by @renovate in #783
 - chore(deps): update react monorepo by @renovate in #785
 - 📦 deps: upgrade eslint from 9.23.0 to 9.24.0 by @w3bdesign in #787
 - 💄 ui[Button]: increase padding and margin by @w3bdesign in #788
 - chore(deps): update dependency eslint to v9.24.0 by @renovate in #786
 - fix(deps): update dependency sanity to ^3.83.0 by @renovate in #789
 - chore(deps): update dependency cypress to v14.3.0 by @renovate in #790
 - fix(deps): update nextjs monorepo to v15.3.0 by @renovate in #791
 - 🎨 style: add trailing commas and format code consistently by @w3bdesign in #794
 - 📦 deps: update dependencies by @w3bdesign in #795
 - fix(deps): update dependency next-sanity to ^9.10.1 by @renovate in #796
 - ♻️ refactor: replace external click-away hook with custom hook by @w3bdesign in #797
 - 🎨 style: reorganize imports in MobileMenu component by @w3bdesign in #798
 - 🔥 cleanup: remove animated header files by @w3bdesign in #799
 - 🔥 cleanup: remove next.svg file from public directory by @w3bdesign in #800
 - 🎨 style: add blank line after imports by @w3bdesign in #801
 - fix(deps): update dependency sanity to ^3.84.0 by @renovate in #803
 - fix(deps): update dependency @sanity/client to ^6.29.0 by @renovate in #802
 - 804 fix click outside by @w3bdesign in #805
 - ✅ test(layout): add mobile menu close behavior test by @w3bdesign in #806
 - fix(deps): update dependency motion to ^12.7.2 by @renovate in #807
 - chore(deps): update typescript-eslint monorepo to ^8.30.1 by @renovate in #808
 - fix(deps): update dependency sanity to ^3.85.1 by @renovate in #809
 - 🎨 ui: add theme-color meta tag for browsers by @w3bdesign in #811
 - chore(deps): update dependency @playwright/test to ^1.52.0 by @renovate in #813
 - chore(deps): update dependency eslint to v9.25.0 by @renovate in #814
 - fix(deps): update dependency react-hook-form to ^7.56.0 by @renovate in #815
 - chore(deps): update typescript-eslint monorepo to ^8.31.0 by @renovate in #816
 - fix(deps): update dependency sanity to ^3.86.0 by @renovate in #817
 - fix(deps): update dependency motion to ^12.8.0 by @renovate in #819
 - ✨ feat[sanity]: improved image loading with proper sizing and formatting by @w3bdesign in #820
 - 📝 docs: update TODO.md wording with improvements phrasing by @w3bdesign in #821
 - 🔥 cleanup: remove generated sanity.types.ts file by @w3bdesign in #822
 - 📝 docs: clarify typescript usage in README by @w3bdesign in #823
 - 📝 docs: add Sanity image URL feature to README by @w3bdesign in #824
 - fix(deps): update dependency motion to ^12.9.1 by @renovate in #826
 - 🔧 chore(ci): Fail Lighthouse CI on improperly sized images by @w3bdesign in #827
 - ♿️ access: update lighthouse thresholds in configuration by @w3bdesign in #828
 
Full Changelog: 1.0.8...1.0.9