Full deployment history for this project.
Sync local repository changes
Add dialog semantics and a11y to Share Card - Add role="dialog", aria-modal="true", and aria-labelledby - Add aria-label to close button - Add Escape key event listener to close modal Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
perf: remove duplicate animation library Replaced `@react-spring/web` with `framer-motion` in `StatCounter`. This ensures only one animation library is bundled, saving around 30kB of client-side payload. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
🛡️ Sentinel: [MEDIUM] Add standard HTTP security headers Adds X-Frame-Options, X-Content-Type-Options, Referrer-Policy, and Strict-Transport-Security to Next.js configuration to enhance overall security posture. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
🎨 Palette: Add accessibility attributes to ShareCard modal Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
⚡ Bolt: Extract static data from render loop Moved the `achievements` array outside of the `VibeCheck2025` component. This prevents the array and its contents from being re-allocated on every component render, reducing unnecessary memory allocation and avoiding cascading re-renders of child components when the component state changes. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
🎨 Palette: Improve ShareCard modal accessibility Added `role="dialog"`, `aria-modal="true"`, `aria-labelledby`, `aria-label`, and `Escape` key support to the custom Framer Motion modal in `ShareCard`. Documented learning. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
feat: improve accessibility and UX of ShareCard modal Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
🎨 Palette: Make share card accessible Added modal dialog semantics and an explicit Escape key listener to the share card, as well as an ARIA label for the close button. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
🛡️ Sentinel: [MEDIUM] Replace dangerouslySetInnerHTML with React text injection in ChartStyle Removed the use of dangerouslySetInnerHTML in `components/ui/chart.tsx` and replaced it with safe text interpolation. While the risk of XSS might have been low depending on how the chart config is passed, this ensures defense-in-depth and eliminates a security smell. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
🎨 Palette: Add accessibility semantics to Framer Motion share card modal - Added `role="dialog"`, `aria-modal="true"`, and `aria-labelledby` to modal container - Added `aria-label` to icon-only close button - Implemented `Escape` key event listener for keyboard accessibility Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
🎨 Palette: Improve accessibility of share modal - Added Escape key support to close the modal - Added role="dialog" and aria-modal="true" to custom Framer Motion modal - Linked modal title with aria-labelledby - Added aria-label to icon-only close button - Documented custom modal a11y requirements in .jules/palette.md Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
⚡ Bolt: Remove unused useScroll hook from page component The scrollYProgress variable from useScroll was unused in app/page.tsx, but the hook still sets up scroll event listeners and performs calculations on every scroll event. Removing it eliminates this unnecessary overhead and improves main thread performance during scrolling. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
Add standard HTTP security headers to next.config.mjs Added security headers like X-Content-Type-Options, X-Frame-Options, X-XSS-Protection, Referrer-Policy, and Strict-Transport-Security to all responses in the Next.js configuration to enhance overall application security posture. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>