Web mirror of the RN change — same timing constants, same idea: the amount
flies from its pop-in position toward a wallet badge that pulses on
arrival, and the "credited" hint fades in at that moment instead of
showing immediately. Wallet crediting itself was already correctly
deferred server-side until POST /gifts/:id/open.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- new-project/layout.tsx was hardcoding currentPage="/projects" while the
real route is /new-project, so TabNavigation's isExactRoot guard thought
it was already on the Projects tab and preventDefault'd the first click
with no navigation — now passes the real path (isActive's highlight logic
already had a dedicated case for /new-project, so nothing else changes)
- resolveShopVerificationTier: shop verify checkmarks always render green
regardless of the underlying tier, applied at all 3 shop render sites
- Add a "send to users" icon/button next to share on the product detail
page, the owner product-manage page, and the shop profile pages (public +
owner), reusing/mirroring the existing SendProductModal pattern
- New SendShopModal + sharedShop chat-bubble kind (ChatMessageCard via
SharedShopBubble) so a whole shop can be sent into a chat, not just one
product — backed by the new POST /shops/:id/send endpoint
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
t("common.all") didn't resolve to anything on web (unlike the RN app,
which does have that key) — verified in the browser, where the chip
rendered as the literal string "common.all". Added a proper
shops.allFilter key instead of guessing at an existing one.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- Pinterest filter toggle on the Shop discover page, alongside "All",
backed by the backend's new ?pinterest=true param on
/shop-products/discover
- Pinterest badge shown above the favorite button in ShopReelsView's
action rail for products tagged is_pinterest
- "Pinterest product" checkbox at the bottom of the product images step
(create wizard and edit flow share the same route)
- New pinterest bold-icon SVG under public/images/icons/vuesax/bold
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- Remove `unoptimized` from every Image that was pointing at a real remote/
static file (Reels image carousel, story avatars/viewer, shop product
grids/details, chat shared-post/product/story bubbles, notification/
visitor rows, tag/mention pickers, etc.) so Next's own resize+avif/webp
pipeline (already configured in next.config.ts) actually applies —
previously only a handful of components used it, everything else shipped
full-resolution originals regardless of the tiny thumbnail size shown
- Add a `sizes` prop wherever `fill` was used without one, so the optimizer
picks an appropriately small srcset entry instead of defaulting to 100vw
- Fix ProfileAvatar to request the actual displayed size instead of always
requesting 280x280 regardless of the `size` prop
- Left `unoptimized` on the handful of genuinely local/ephemeral sources
(blob:/data: URIs from in-progress uploads, third-party QR API images,
static SVG icons) where Next's optimizer can't or shouldn't apply
- Add next-story prefetch to StoryViewer (previously only Reels prefetched
upcoming media; swiping to the next story always cold-started before)
- Fix .claude/launch.json's dev server port (3000 -> 3004) to match
package.json's actual `next dev --port 3004`
Verified via `tsc --noEmit` (no new errors) and by diffing this app's
console/network behavior against a git-stashed baseline in the browser
preview — the one pre-existing hydration warning and 401s (unauthenticated
session) are present on both, and /_next/image requests now succeed for
avatars/thumbnails that previously bypassed optimization entirely.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- Align shop header layout (logo, name, verification badge, share button)
and RTL/LTR positioning across shop, listing, billboard, wallet, gift,
and academy pages with the Android app's equivalent screens
- Fix TabNavigation's tab-reselect scroll-to-top to only fire on the
exact tab route, not any active sub-route
- Add verification badge to shop owner name; add brand icon assets
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>