Skip to content

v8.1.0#344

Draft
hta218 wants to merge 73 commits intomainfrom
dev
Draft

v8.1.0#344
hta218 wants to merge 73 commits intomainfrom
dev

Conversation

@hta218
Copy link
Member

@hta218 hta218 commented Feb 26, 2026

v8.1.0 (WIP)

This is a work-in-progress PR for the next minor release. More updates will be added before merging.

Changes so far

  • Fix incorrect sale badge showing on products without compare-at price (Incorrect Sale Badge #340)
  • Add code comment for Hydrogen dev tools bypass in root layout (Fix GraphiQL and subrequest-profiler routing conflict with Weaverse theme context #321)
  • Add header country selector with theme setting toggle
  • Replace framer-motion with CSS animations and ScrollReveal component
  • Consolidate .hydrogen/ and guides/ into .guides/hydrogen-upgrades/ and .guides/cookbooks/
  • Tweak header layout: reorder country selector, adjust cart drawer spacing
  • Remove useMemo/useCallback usage (React 19 compiler handles memoization)
  • Refactor ScrollReveal animation variants from object map to cva
  • Add spec-driven development guidelines to AGENTS.md
  • Clarify code convention exceptions for arrow exports and default exports
  • Update @shopify/hydrogen to 2026.1.1
  • Update dependencies: tailwindcss 4.2, biome 2.4, swiper 12.1, zustand 5.0.11, weaverse/hydrogen 5.9.2
  • Add variant-based media grouping for product pages (group images by option value like Color)
  • Add animate prop to Section component to disable scroll-reveal on product/collection pages
  • Expand variant-media filename matching to cover start-of-filename patterns
  • Apply Biome formatting and lint fixes across components and sections
  • Enhance product media grid layout with responsive sizing and show more/less toggle
  • Refine ProductMedia component styles and button interactions
  • Split ProductMedia into separate modules (grid, slider, item, zoom, utils) for better maintainability
  • Refactor main-product into mp--media and mp--info child architecture
  • Move state ownership to child components (swiper → MediaSlider, expanded → MediaGrid)
  • Show all media in zoom modal for cross-variant browsing
  • Skip show-more media limiting on mobile (horizontal scroll handles it)
  • Show 2 slides per view on wide screens (1700px+) to prevent tall images exceeding viewport
  • Track active thumbnail via swiper realIndex instead of CSS classes
  • Offset product badges to avoid overlapping slider thumbnails
  • Reset slider to first slide on media change and add thumb click navigation

Closes #340
Closes #321

@changeset-bot

This comment has been minimized.

@hta218 hta218 mentioned this pull request Feb 26, 2026
Sections now blur-in with fade-up on scroll using the shared IntersectionObserver.
Link component gains ScrollReveal parity with Heading, Button, and Paragraph.
hta218 added 30 commits March 4, 2026 07:33
The variant media grouping feature uses filename-based matching,
not variant.image URLs, so this query field was dead weight.
Add variant-based media grouping for product pages
… 5.0.11, weaverse/hydrogen 5.9.2, mini-oxygen 4.0.1
Some pages (product, collection, all-products) should not have the
scroll-reveal entrance animation since their content is immediately
visible. This adds an `animate` prop (defaults to true) and passes
animate={false} on those pages.

Also fixes MutableRefObject → RefObject type usage and sorts imports.
…nk lines

Also replaced non-null assertion with optional chaining on groupedMedia.get().
…terns

Add startsWith checks for option values at the beginning of filenames
(e.g., black_xxx.jpg). Convert string concatenation to template literals
to satisfy Biome. Update spec to reflect the actual implementation.
Import sorting, line wrapping, remove unused useMemo import,
i++ → i += 1, and minor formatting adjustments.
Refactor the monolithic product-media.tsx and media-zoom.tsx into a
product-media/ directory with focused modules: index (orchestrator),
media-grid, media-slider, media-item, media-zoom, and utils.
Split the flat main-product section into two Weaverse child components:
- mp--media: wraps ProductMedia with all media settings, hosts badges as overlay
- mp--info: sticky container for all product info children (breadcrumb, title, etc.)

This moves badges onto the product media as an absolute-positioned overlay,
eliminating layout shift when badges appear/disappear on variant change.
Move swiper state + variant sync into MediaSlider, expanded state +
variant reset into MediaGrid. ProductMedia index becomes stateless.
Pass allMedia (ungrouped) to ZoomModal so visitors can browse all
product images without closing the modal to switch variants.
Render all media items and use lg:hidden to hide overflow on desktop
only. Show more/less buttons hidden on mobile via hidden lg:flex since
mobile uses horizontal scroll where all items are accessible.
Prevents tall portrait images from exceeding viewport height on
large monitors by splitting the slider into 2 visible slides.
Use onSlideChange + realIndex to reliably highlight only the
active thumbnail, fixing double-highlight in 2-slide-per-view mode.
Expose --thumbs-width CSS variable on the media wrapper and use it
to shift badges left position past the thumbnail sidebar.
…ation

Replace selectedVariant-based slide sync with displayMedia-based
reset to index 0. Add onClick to thumb slides using slideToLoop
for reliable navigation with loop mode.
Add breakpointsBase='container' so slidesPerView adapts based on the
media column width rather than viewport width.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Incorrect Sale Badge Fix GraphiQL and subrequest-profiler routing conflict with Weaverse theme context

1 participant