Full deployment history for this project.
⚡ Bolt: Use Next.js Image for lazy loading trailer thumbnails Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
refactor(components): replace native img tags with Next.js Image component Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
chore: extract IntersectionObserver to custom hook Extracted manual IntersectionObserver logic into a reusable custom hook `useIntersectionObserver` and a convenience hook `useIsVisible`. Updated `IndustryNews`, `DisruptionStats`, and `FutureTimeline` components to use these hooks, reducing duplication and improving maintainability. The hooks are designed to handle non-memoized options and callbacks efficiently using refs to avoid unnecessary re-subscriptions on every render. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
⚡ Bolt: parallelize icon route awaits in tests Optimize the icon tests in `tests/assets-icons.test.ts` by replacing sequential `await` in a loop with `Promise.all()`. This addresses the 'async waterfall' anti-pattern and significantly improves test execution time for I/O-bound route calls. Measured an ~83% improvement in a controlled mock benchmark for 6 async tasks. - Update `tests/assets-icons.test.ts` to use `Promise.all()` - Document learning in `.jules/bolt.md` Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
🧪 Add tests for getTooltip localization - Create `tests/i18n-tooltips.test.ts` to test `lib/i18n-tooltips.ts`. - Cover default locale (English), Spanish locale, and unsupported locale (fallback to English). - Verify case-insensitive locale normalization (e.g., 'ES', 'es-MX'). - Ensure all `TooltipKey`s return valid strings for both supported languages. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
🛡️ Sentinel: [HIGH] Fix XSS vulnerability in structured data - Escaped `<` characters in JSON-LD output - Addressed 3 files where dangerouslySetInnerHTML was used with JSON.stringify() - Added Sentinel journal entry about the vulnerability and prevention Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
🛡️ Sentinel: [HIGH] Fix XSS vulnerability in structured data scripts * Appended `.replace(/</g, '\\u003c')` to `JSON.stringify` used inside `<script type="application/ld+json">` tags to escape the `<` character. * Prevented potential XSS injection vulnerabilities where untrusted input containing `</script>` could prematurely end the script tag and execute arbitrary JS. * Addressed `app/jobs/senior-global-countdown-editor/page.tsx`, `app/faq/page.tsx`, and `app/layout.tsx`. * Added critical security learning to `.jules/sentinel.md`. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
⚡ Bolt: Next.js Image Optimization for Trailer Thumbnails Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
perf(ui): add lazy loading and async decoding to trailer images This commit adds `loading="lazy"` and `decoding="async"` attributes to the trailer thumbnails in `components/trailer-section.tsx`. This optimization defers loading offscreen images saving initial bandwidth and prevents image decoding from blocking the main thread, resulting in faster load times and improved Core Web Vitals. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
perf(hero): isolate countdown timer to prevent parent re-renders Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
perf(hero-countdown): memoize static ui and particles * Wrapped `CountdownDigit`, `Separator`, and `FloatingParticle` in `React.memo` to prevent unnecessary re-renders every second as the countdown timer ticks. * Wrapped the `particles` array generation in `useMemo` so that `Math.random()` isn't executed synchronously every second, preventing expensive layout thrashing and visual jumping. * Documented findings in `.jules/bolt.md`. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
Merge pull request #5 from mbarbine/palette-skip-link-3736648743358880714 🎨 Palette: Add skip to main content link
Add skip to main content link for keyboard accessibility Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
Merge pull request #4 from mbarbine/sentinel/security-headers-16257146412565934847
Merge pull request #3 from mbarbine/bolt/perf-hero-countdown-scroll-10950489886715111988
Merge pull request #2 from mbarbine/palette/trailer-focus-parity-1968653304996673400
Merge pull request #1 from mbarbine/v0/mbarbine-5f1e1212 Launch GTA 6 countdown landing page v1.0.0
feat: sync main updates to GTA 6 countdown landing page Update project files, components, CSS, and assets for latest changes Co-authored-by: Michael Barbine <3211492+mbarbine@users.noreply.github.com>