Full deployment history for this project.
⚡ Bolt: Optimize timeline visibility check with Set - Change `visibleItems` state from `number[]` to `Set<number>` in `FutureTimeline`. - Update `IntersectionObserver` to add items to the Set efficiently. - Use `visibleItems.has(index)` for O(1) membership check in render. - Document optimization in `.jules/bolt.md`. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
🛡️ Sentinel: [Medium] Add Content Security Policy 🚨 Severity: MEDIUM 💡 Vulnerability: Missing Content-Security-Policy (CSP) header, leaving the application more susceptible to Cross-Site Scripting (XSS) and data injection attacks. 🎯 Impact: Without CSP, if an XSS vulnerability exists anywhere in the app, attackers could execute arbitrary scripts. 🔧 Fix: Added a baseline `Content-Security-Policy` header in `next.config.mjs` that permits necessary sources (like Google Analytics and YouTube embeds) while restricting unauthorized domains. ✅ Verification: Ensure the header is present in the responses. Tests pass successfully.
🛡️ Sentinel: Add baseline CSP and HSTS security headers - Added Content-Security-Policy to next.config.mjs restricting inline scripts/styles and explicitly allowing verified external domains (Google Tag Manager, YouTube). - Added Strict-Transport-Security (HSTS) with a max-age of 1 year, omitting includeSubDomains/preload to prevent potential legacy subdomain breakage. - Logged findings to .jules/sentinel.md.
🛡️ Sentinel: [MEDIUM] Fix missing CSP and HSTS security headers - Added Content-Security-Policy with baseline values supporting GTM and YouTube - Added Strict-Transport-Security (HSTS) without preload/includeSubDomains to avoid legacy sub-domain regression - Updated .jules/sentinel.md with critical learnings
perf(ui): replace standard <img> with Next.js <Image> in TrailerSection - Replaced native HTML `<img>` tag with Next.js `next/image` `<Image>` component for trailer thumbnails in `components/trailer-section.tsx`. - Utilized `fill` and `sizes` props to ensure correct responsive behavior. - Added `overflow-hidden` to the parent `.aspect-video` container to properly contain the `scale-105` hover transform. - Updated documentation comments indicating the performance impact (lazy loading, responsive sizing, layout shift prevention).
🎨 Palette: Add keyboard focus parity to Quick Links Updated Quick Links grid cards in `app/platphorm-net-opt/page.tsx` with missing keyboard focus states and screen reader enhancements. Added `focus-within:border-primary/50` to parent anchors and `group-focus-visible:text-primary` to children `h3` tags. Removed redundant `aria-label` tags from purely decorative icons and replaced them with `aria-hidden="true"`.
🎨 Palette: Add focus-within states to trailer cards for visual parity
⚡ Bolt: Replace sequential awaits with Promise.all in tests
🎨 Palette: Add focus-within parity to footer credits Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
🎨 Palette: Keyboard parity for hover interactions This commit addresses missing keyboard visual parity on elements that utilize mouse `group-hover` effects. It adds `focus-within` to wrappers and `group-focus-visible` to nested children across the application. Specifically: - `components/footer.tsx`: Added `focus-within` and `group-focus-visible` to the creator/host credit blocks so keyboard focus matches the hover experience. - `components/hero-countdown.tsx`: Added `group-focus-visible` to the scroll indicator chevron and text. - `.Jules/palette.md`: Logged learning about combining `group-hover` with `group-focus-visible` and `focus-within`. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
🛡️ Sentinel: [HIGH] Fix XSS vulnerability in structured data Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
Merge remote-tracking branch 'origin/main' into bolt-optimize-trailer-image-4036630201851434635 # Conflicts: # .Jules/palette.md # .jules/bolt.md # components/trailer-section.tsx # npm_output.log Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
Merge pull request #22 from mbarbine/palette-scroll-indicator-10416720865984017476 🎨 Palette: Make scroll indicator an interactive link
Merge branch 'main' into palette-scroll-indicator-10416720865984017476
Merge pull request #15 from mbarbine/bolt-optimize-images-9842750450144222960 ⚡ Bolt: Replace native img tags with Next.js Image for optimization
Merge branch 'main' into bolt-optimize-images-9842750450144222960
Merge pull request #23 from mbarbine/palette-scroll-indicator-a11y-17711353939298775372 🎨 Palette: Accessible Scroll Indicator
Merge pull request #5 from mbarbine/palette-skip-link-3736648743358880714 🎨 Palette: Add skip to main content link
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>