Commit Graph

80 Commits

Author SHA1 Message Date
google-labs-jules[bot]
196ab41ac6 refactor(Hero): replace scroll listener with IntersectionObserver
- Replaced window scroll event listener with IntersectionObserver for better performance.
- Added a sentinel element to track scroll position relative to the top.
- Updated tests to mock IntersectionObserver and verify behavior without scroll events.
2026-01-23 09:31:08 +00:00
google-labs-jules[bot]
fe6e07fe92 perf: pause GradientBlinds animation when off-screen
Removes the unconditional start of the animation loop on mount. The loop is now exclusively managed by the existing IntersectionObserver, ensuring it only runs when the component is visible.

Updates tests to reflect this behavior by simulating intersection events to trigger the animation.
2026-01-23 09:29:42 +00:00
google-labs-jules[bot]
58b82d04c1 Optimize useTypingEffect to reduce re-renders and timer churn
Refactored the useTypingEffect hook to use a Ref for accessing the current text state inside the timer loop.
This prevents the main useEffect from being torn down and recreated on every single character keystroke, significantly reducing timer setup/cleanup overhead.

Baseline Effect Runs for 'Hello': 13
Optimized Effect Runs for 'Hello': 4

Also split the logic into two effects:
1. One for handling immediate state transitions (word switching).
2. One for the timer loop (typing/deleting/pausing).

This ensures correct behavior while maximizing performance.
2026-01-23 09:28:02 +00:00
google-labs-jules[bot]
d5b079d452 Refactor FancyCursor to use mouseover delegation
- Moves expensive DOM checks (`closest`) and class toggling from `mousemove` loop to `mouseover` handler.
- Removes `document.elementFromPoint` fallback to eliminate layout thrashing.
- Updates tests to verify performance improvements.
- Fixes `Hero.test.tsx` missing jsdom environment.
2026-01-23 09:27:45 +00:00
Melvin Ragusa
acfbb8571c Merge pull request #7 from ragusa-it/perf/navbar-scroll-throttling-16938841465799544697
 Optimize Navbar scroll listener with requestAnimationFrame
2026-01-23 10:06:57 +01:00
Melvin Ragusa
83f2229175 Merge pull request #6 from ragusa-it/perf/cursor-optimization-18391845640472037951
 Optimize FancyCursor by replacing elementFromPoint with event delegation
2026-01-23 10:06:45 +01:00
Melvin Ragusa
9d19aa0ef6 Merge pull request #5 from ragusa-it/fix-typing-effect-timer-leak-7224626563395361239
Refactor useTypingEffect to fix timer leak and optimize re-renders
2026-01-23 10:06:33 +01:00
Melvin Ragusa
37653dc707 Merge pull request #4 from ragusa-it/perf/hero-scroll-throttle-1683118190839821830
 Perf: Throttle Hero scroll listener
2026-01-23 10:06:16 +01:00
Melvin Ragusa
8171fc13c1 Merge pull request #3 from ragusa-it/perf/optimize-gradient-blinds-536844470945230510
 Optimize GradientBlinds: Pause animation when off-screen
2026-01-23 10:05:16 +01:00
google-labs-jules[bot]
8592775485 perf: throttle scroll event listener in Navbar
Implemented `requestAnimationFrame` throttling for the scroll event listener in `Navbar` to reduce the frequency of state updates and logic execution.

- Wrapped scroll handler in `requestAnimationFrame`.
- Added performance test `src/components/layout/Navbar.test.tsx` verifying logic runs once per frame instead of per event.
- Verified functional correctness of scroll state updates.
- Fixed `useTypingEffect` test environment.
2026-01-22 08:24:10 +00:00
google-labs-jules[bot]
f254e9528a Optimize FancyCursor by replacing elementFromPoint with event delegation 2026-01-22 08:23:02 +00:00
google-labs-jules[bot]
e5189b3bfd Refactor useTypingEffect to use unified timer logic and optimize dependencies 2026-01-22 08:22:39 +00:00
google-labs-jules[bot]
5d6d938f10 perf: throttle Hero scroll listener with requestAnimationFrame
- Implements requestAnimationFrame throttling for the scroll event listener in Hero.tsx
- Adds cleanup for the animation frame on component unmount
- Adds unit tests to verify behavior and throttling logic
2026-01-22 08:20:09 +00:00
google-labs-jules[bot]
1dc96269e5 Optimize GradientBlinds: Pause animation when off-screen
- Added IntersectionObserver to track component visibility.
- Paused requestAnimationFrame loop when component is not intersecting.
- Resumed loop when component becomes visible.
- Added unit tests to verify start/stop behavior.
2026-01-22 08:17:31 +00:00
Melvin Ragusa
dfd5461485 Merge pull request #2 from ragusa-it/fix-typing-effect-cleanup-379426751446782624
Fix memory leak in useTypingEffect hook
2026-01-22 05:48:41 +01:00
google-labs-jules[bot]
8f820e262f Fix uncleaned setTimeout in useTypingEffect hook
Refactor useTypingEffect to use a single useEffect with proper cleanup for all timers, preventing state updates on unmounted components.
Add unit tests to verify behavior and ensure no memory leaks on unmount.
2026-01-22 04:43:55 +00:00
Melvin Ragusa
eea2e71b03 Merge pull request #1 from ragusa-it/perf/remove-unused-threejs-13656772660445532082
 Remove unused Three.js dependencies
2026-01-22 05:27:31 +01:00
google-labs-jules[bot]
770bc6def4 Remove unused Three.js dependencies and update build config 2026-01-22 04:21:32 +00:00
Melvin Ragusa
520716ed2a remove build/ directory 2026-01-22 00:40:04 +01:00
Melvin Ragusa
6edd9fbdfd fix: add build/ to .gitignore 2026-01-22 00:37:45 +01:00
Melvin Ragusa
5de0ad18de add: ImpressumModal added to Footer 2026-01-22 00:35:27 +01:00
Melvin Ragusa
faa92414f1 add: FancyCursor 2026-01-22 00:27:57 +01:00
Melvin Ragusa
4f07eef844 feat: reworked HeroSection background 2026-01-22 00:23:52 +01:00
Melvin Ragusa
f2250ab65e fix: activeIndicator placement and animation 2026-01-21 23:33:43 +01:00
Melvin Ragusa
1b91cf53db build: update build assets with new hashes 2026-01-21 23:05:42 +01:00
Melvin Ragusa
8913054318 feat: replace emoji icons with react-icons in About page 2026-01-21 23:05:39 +01:00
Melvin Ragusa
b4ae9093bc feat: add scroll indicator with animation and translations 2026-01-21 23:05:37 +01:00
Melvin Ragusa
b63b9d64f8 feat: add react-icons dependency 2026-01-21 23:05:35 +01:00
Melvin Ragusa
eccc359782 feat: initialize reactjs project using vite 2026-01-21 22:38:10 +01:00
Melvin Ragusa
95ca6f57e7 first commit 2026-01-21 21:38:41 +01:00