Full deployment history for this project.
Sync local repository changes
🧪 Add tests for blog comment form
🧪 Add tests for Progress component 🎯 What: Added test coverage for the Radix-based Progress component in components/ui/progress.tsx. 📊 Coverage: Tested rendering, custom className application, ref forwarding, value to CSS transform calculation, and undefined value handling. ✨ Result: Improved reliability of the UI library foundation.
test(wishlist): add tests for wishlist-button component
🧪 Add tests for HeroCarousel component 🎯 **What:** The HeroCarousel component in components/home/hero-carousel.tsx lacked tests. 📊 **Coverage:** The tests now cover 0 slides rendering, basic rendering, navigation, dots interaction, auto-advance with fake timers, hover pause/resume, and conditional testimonial rendering. ✨ **Result:** Test coverage for home page components is improved.
🧪 Add tests for Skeleton UI component
🧪 Add tests for blog comment form 🎯 What Adds missing unit tests for components/blog/comment-form.tsx to ensure CommentForm functions accurately under edge conditions and happy paths. 📊 Coverage The new test suite covers: - Rendering the form elements correctly - Successful blog comment submission - Handling and rendering submission errors (both action errors and thrown exceptions) - Honeypot anti-spam feature verification ✨ Result Increased unit test coverage for user-facing interactions inside CommentForm helping avoid regressions when interacting with the form actions in the future.
🧪 Add unit tests for testimonials-section.tsx
🧪 Add unit tests for category-grid component 🎯 What: Added a test file for `components/home/category-grid.tsx` as part of the testing improvement task to fill a testing gap for the home page category presentation. 📊 Coverage: Tested the happy path showing up to 8 categories properly formatted with icons/images, and the empty state with the loading text. Also mocked Next.js components, Lucide icons, and the data fetching layer. ✨ Result: CategoryGrid is now fully unit tested, catching possible regressions in its display logic.
feat: implement password reset token verification - Replaced API scaffold with fully functional password reset logic - Utilized Redis for storing and verifying password reset tokens - Updated the users database record seamlessly on token validation - Created comprehensive unit tests mocking Redis and Neon serverless DB
Merge pull request #137 from mbarbine/sentinel-fix-json-ld-xss-15694278666274799355 🛡️ Sentinel: [HIGH] Fix XSS vulnerability in JSON-LD script tags
Merge pull request #105 from mbarbine/jules-12866235193139185588-f3ccd838 🧪 Add tests for Stripe initialization
Merge pull request #129 from mbarbine/jules-8872177885465269116-c191b596 test: extract and enable redis connection tests
Merge pull request #125 from mbarbine/jules-2036929789548117632-68c64cf7 ⚡ Optimize order items bulk insert
Merge pull request #104 from mbarbine/test-button-component-705052674334848398 🧪 Add tests for Button component
Merge pull request #100 from mbarbine/jules-10012873127623107070-af364459 🧪 Add tests for untested USPS rate error paths
Merge pull request #124 from mbarbine/test-api-cart-routes-1336325619947803699 🧪 Add comprehensive unit tests for Cart API routes
Merge pull request #126 from mbarbine/jules-17850643126959617265-6ba27af1 🧪 Add test suite for addresses library
fix: add missing aria-labels, search form roles, and X-XSS-Protection header - Add aria-label to newsletter email input (newsletter-form.tsx) - Add aria-label to product filter min/max price inputs (product-filters.tsx) - Add role="search" and aria-label to mobile menu search form (header.tsx) - Add aria-label to desktop and mobile search forms for role="search" accessible name - Add X-XSS-Protection: 1; mode=block security header (security-headers.ts) Agent-Logs-Url: https://github.com/mbarbine/vanagain-dot-com-prod/sessions/6cf9d3a4-d48d-48a3-bb2e-ee500460337a Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
Merge pull request #99 from mbarbine/copilot/fix-header-blue-section-thickness Reduce blue header top bar height on mobile
fix: reduce blue header top bar height on mobile by hiding fitment text and reducing padding Agent-Logs-Url: https://github.com/mbarbine/vanagain-dot-com-prod/sessions/538e6b34-e47d-4728-91d7-82cfdb9c026d Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
wcag and mobile
Merge pull request #98 from mbarbine/copilot/explore-codebase-and-implement-plan
fix: improve validateBody/validateQuery generics for proper type inference Agent-Logs-Url: https://github.com/mbarbine/vanagain-dot-com-prod/sessions/b5f37a83-28f8-4b41-93ca-5217f4d110cb Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
test: add roadmap singletons, cross-browser, mobile nav, content styling tests Agent-Logs-Url: https://github.com/mbarbine/vanagain-dot-com-prod/sessions/13883baa-6bec-46c2-8640-5e939e8dd79b Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
feat: cross-browser CSS, mobile bottom nav, prose-content styling, enhanced filters Agent-Logs-Url: https://github.com/mbarbine/vanagain-dot-com-prod/sessions/13883baa-6bec-46c2-8640-5e939e8dd79b Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
Merge pull request #96 from mbarbine/copilot/2026-wcag-compliance-optimization Ensuring full W3C and WCAG compliance and security optimization
Changes before error encountered Agent-Logs-Url: https://github.com/mbarbine/vanagain-dot-com-prod/sessions/07bf271e-54ab-44e2-ad76-387d71f20929 Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
feat: add security headers, skip-to-content, WCAG 2.2 compliance, and docs - Create lib/security-headers.ts as single source of truth for all HTTP security headers - Apply security headers in middleware.ts for dynamic routes - Add headers() to next.config.ts for static assets - Add SkipToContent component and main-content landmark (WCAG 2.4.1) - Add ARIA labels to nav, search, and footer landmarks - Update accessibility page to reference WCAG 2.2 (latest standard) - Update SECURITY.md with comprehensive security policy - Update README.md with compliance documentation Agent-Logs-Url: https://github.com/mbarbine/vanagain-dot-com-prod/sessions/07bf271e-54ab-44e2-ad76-387d71f20929 Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
Merge pull request #95 from mbarbine/copilot/enhance-vercel-logging-debugging Planning improvements for Vercel logging and debugging strategy
Changes before error encountered Agent-Logs-Url: https://github.com/mbarbine/vanagain-dot-com-prod/sessions/6a1abb52-c0ad-4e93-a67f-9e3871adc0c1 Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
fix: triage 8 pre-existing test failures (6 fixed, 2 skipped with TODO, 2 ESM-only), add new logger/flags/context/helpers tests Agent-Logs-Url: https://github.com/mbarbine/vanagain-dot-com-prod/sessions/6a1abb52-c0ad-4e93-a67f-9e3871adc0c1 Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
feat: enhanced structured logger, request context, feature flags, test helpers, and sanitized .env.example Agent-Logs-Url: https://github.com/mbarbine/vanagain-dot-com-prod/sessions/6a1abb52-c0ad-4e93-a67f-9e3871adc0c1 Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
Merge pull request #83 from mbarbine/jules-9622443144063188387-af84ec1e 🧹 Remove debug log for order creation in Stripe webhook
Merge pull request #72 from mbarbine/jules-6270478625880864292-a213a51f 🧹 Remove debugging log from Stripe webhook
Merge pull request #93 from mbarbine/copilot/add-toast-confirmation feat: newsletter subscribe toast confirmation + tooltips on all interactive elements
feat: add newsletter toast confirmation, tooltip component, and tooltips to all interactive elements Agent-Logs-Url: https://github.com/mbarbine/vanagain-dot-com-prod/sessions/bb4e2f9d-446f-4bec-b5c9-ffd4ed4023fd Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
Create SECURITY.md for security policy Added a security policy document outlining supported versions and vulnerability reporting.
Delete admin directory
Merge pull request #89 from mbarbine/fix-rewards-any-type-5385222628208397909 🧹 [code health] Refactor rewards page to replace `any` with strongly typed `PointsLog`
Merge pull request #90 from mbarbine/jules-16909258645802122241-85a34440 🧹 Avoid using `any` type in Admin dashboard low stock products
refactor: generate sortHrefs dynamically from shared SORT_OPTION_VALUES constant Agent-Logs-Url: https://github.com/mbarbine/vanagain-dot-com-prod/sessions/61a3fdd7-089a-4ccf-8384-9ee13d540b7b Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
fix: pass pre-computed sort hrefs to SortButton instead of function prop to fix server/client serialization error Agent-Logs-Url: https://github.com/mbarbine/vanagain-dot-com-prod/sessions/61a3fdd7-089a-4ccf-8384-9ee13d540b7b Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
fix: relax WHERE clause in blog_comments bridge migration for partial updates Agent-Logs-Url: https://github.com/mbarbine/vanagain-dot-com-prod/sessions/7e5dc675-c62b-4550-8758-668d97b30e50 Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
fix: blog comment submission - use subquery for blog_id and add bridge migration The INSERT was casting blogId to UUID (::uuid) but blogs.id is INTEGER in the legacy MySQL-imported schema, causing a type cast failure. Fix uses a subquery to get the native blog id type, and adds a missing bridge migration phase for blog_comments in run-full-migration.mjs to add new column names (author_name, author_email, etc.) alongside legacy columns (name, email, etc.). Agent-Logs-Url: https://github.com/mbarbine/vanagain-dot-com-prod/sessions/7e5dc675-c62b-4550-8758-668d97b30e50 Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
fix: extract PerPageSelect as client component to fix server component event handler error The ProductToolbar is a server component but had an onChange handler on the perPage select element. Event handlers are not allowed in React Server Components and cause a runtime error, breaking the /products page. Extracted the select into a PerPageSelect client component (matching the pattern of the existing SortButton client component). Agent-Logs-Url: https://github.com/mbarbine/vanagain-dot-com-prod/sessions/a05addae-74b2-49f9-8883-e45bc7900b29 Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
fix: address code review feedback - i18n for forced-reset strings, log error in hash upgrade catch - Move hardcoded forced-reset strings to en.json and es.json translation files - Add error logging to upgradePasswordHashIfLegacy catch block - Update reset-password page to use t() for all user-facing strings Agent-Logs-Url: https://github.com/mbarbine/vanagain-dot-com-prod/sessions/ec3e58af-6bdd-4c5e-9a60-af5306b8d87a Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
fix: update branding and auth-actions tests for new WebP dark logo path and upgradePasswordHashIfLegacy mock Agent-Logs-Url: https://github.com/mbarbine/vanagain-dot-com-prod/sessions/ec3e58af-6bdd-4c5e-9a60-af5306b8d87a Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
feat: comprehensive mobile UI/UX improvements across all major components - Header: replace dropdown menu with Sheet drawer, 44px touch targets, aria-labels - Header: mobile search input uses text-base to avoid iOS zoom - Home page: responsive hero text (3xl/4xl/5xl), full-width mobile CTAs - Home page: 3-column stats bar on mobile, newsletter input h-12 on mobile - Product cards: hide SKU on mobile, responsive price text, mobile QuickView button - Chat widget: position higher on mobile to avoid overlap - Global CSS: prevent iOS auto-zoom with 16px min inputs, 44px touch targets Agent-Logs-Url: https://github.com/mbarbine/vanagain-dot-com-prod/sessions/ec3e58af-6bdd-4c5e-9a60-af5306b8d87a Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>