Commit Graph

297 Commits

Author SHA1 Message Date
parsa aghaei
a9fbcbb90c feat(shop): mobile filter slider, list/card view toggle, and breadcrumb fixes
Some checks failed
Deploy Canina / deploy (push) Successful in 2m31s
E2E Playwright Tests / Run Full E2E & Security Suites (push) Failing after 0s
2026-09-06 09:30:02 +03:30
parsa aghaei
c57f775cb4 fix(otp): support WebOTP sms pattern with {0} and {1} and robust code extraction
Some checks failed
Deploy Canina / deploy (push) Successful in 3m53s
E2E Playwright Tests / Run Full E2E & Security Suites (push) Failing after 0s
2026-09-05 19:36:49 +03:30
parsa aghaei
1fd9a92dd0 fix: restore WebOTP with root-cause fix for code not filling into OTP inputs
Some checks failed
Deploy Canina / deploy (push) Successful in 2m23s
E2E Playwright Tests / Run Full E2E & Security Suites (push) Failing after 0s
The original bug was that the WebOTP effect had [subView, triggerVerifyOtp]
as its dependency array. triggerVerifyOtp is a useCallback that depends on
[fetchProfile, onClose] - both of which can change reference during normal
re-renders. Each reference change caused React to re-run the effect, which
called AbortController.abort() on the still-pending OTP Promise. The user
would see the 'Allow' modal, click Allow, but the Promise was already aborted
so nothing happened.

Fix: use triggerVerifyOtpRef (a stable ref) so the WebOTP effect only depends
on [subView] / [step]. The ref is kept up-to-date via a dedicated sync effect.

Additional improvements:
- 400ms delay before auto-verify so user can see the filled boxes
- toEnglishDigits on otp.code to handle Persian numerals in the response
- Same fix applied to LoginModal (handleVerifyOtpWithCode -> verifyOtpRef)
2026-09-05 18:41:05 +03:30
parsa aghaei
86e8101d8c fix: mobile UX improvements - scroll restoration, OTP autofill, swipe direction, back button
Some checks failed
Deploy Canina / deploy (push) Successful in 2m27s
E2E Playwright Tests / Run Full E2E & Security Suites (push) Failing after 0s
- ClientLayout: implement proper manual scroll restoration using module-level
  _wasPopNavigation flag and sessionStorage. Fixes scroll jumping to top/bottom
  on Back navigation. Scroll position saved on scroll (debounced) and cleanup,
  restored via double-rAF on popstate navigation.

- AuthModal/LoginModal: fix Android back button to push only ONE history sentinel
  on modal open (not on every subView/step change). Prevents stacking of extra
  history entries. Back in sub-views re-pushes sentinel for next back press.

- AuthModal/LoginModal: remove navigator.credentials.get (WebOTP API) which was
  showing an intrusive permission modal. The native autoComplete=one-time-code
  on the first OTP input provides the suggestion bar above the keyboard instead.

- AuthModal/LoginModal: add isVerifyingRef guard to prevent double toast on
  successful login. Both onComplete callback and form submit were calling
  triggerVerifyOtp/handleVerifyOtpWithCode simultaneously.

- AuthModal: remove triggerVerifyOtp from handleOtpChange to eliminate the second
  duplicate call (only onComplete now triggers verification).

- OtpInput5: remove maxLength=1 restriction from first input so browser can
  inject the full 5-digit OTP code. Multi-char input is already handled by
  handleDigitChange which distributes digits across all boxes.

- ProductPage: fix swipe gesture direction in media gallery. Swipe right -> next
  item, swipe left -> previous item (matches RTL intuition for Persian users).
2026-09-05 18:19:11 +03:30
parsa aghaei
1d2d141514 fix(mobile): improve scroll restoration, media gesture swipe, 5-digit otp, persistent cooldown and modal android back navigation
Some checks failed
Deploy Canina / deploy (push) Successful in 2m6s
E2E Playwright Tests / Run Full E2E & Security Suites (push) Failing after 0s
2026-09-05 17:53:29 +03:30
parsa aghaei
00cfd1a2a0 feat(catalog): redesign digital catalog spread with luxury European apothecary layout and mobile gesture navigation
Some checks failed
Deploy Canina / deploy (push) Successful in 2m1s
E2E Playwright Tests / Run Full E2E & Security Suites (push) Failing after 0s
2026-09-05 17:16:35 +03:30
parsa aghaei
30fb8f3e83 fix(frontend): enhance species badges, smart symptom matching, and sync charity total
Some checks failed
Deploy Canina / deploy (push) Successful in 2m5s
E2E Playwright Tests / Run Full E2E & Security Suites (push) Failing after 0s
2026-09-05 16:37:35 +03:30
parsa aghaei
2c377cab88 fix(app): improve wallet history display, fix order details modal layout and lint errors 2026-09-05 15:16:20 +03:30
parsa aghaei
4be51741e0 feat(order): store structured json address and render cleanly in admin modal
Some checks failed
Deploy Canina / deploy (push) Failing after 7s
E2E Playwright Tests / Run Full E2E & Security Suites (push) Failing after 3s
2026-09-05 11:35:07 +03:30
parsa aghaei
9e3ea3a1b1 fix(order): robust shipping address extraction for sms and enable address editing in checkout
Some checks failed
Deploy Canina / deploy (push) Failing after 7s
E2E Playwright Tests / Run Full E2E & Security Suites (push) Failing after 3s
2026-09-05 11:19:26 +03:30
parsa aghaei
99e726b08b fix(admin,sms,ui): resolve LTR input icon overlap, clarify melipayamak pulses credit and update UI texts
Some checks failed
Deploy Canina / deploy (push) Successful in 3m51s
E2E Playwright Tests / Run Full E2E & Security Suites (push) Failing after 6s
2026-09-05 09:09:36 +03:30
parsa aghaei
c247f21d83 perf: defer 3rd-party analytics, optimize responsive image sizes, and prioritize LCP hero banner
Some checks failed
Deploy Canina / deploy (push) Successful in 2m2s
E2E Playwright Tests / Run Full E2E & Security Suites (push) Failing after 7s
2026-09-02 16:38:04 +03:30
parsa aghaei
379fc1bb77 fix(images): route Next.js Image Optimization to remote backend and eliminate hydration mismatch
Some checks failed
Deploy Canina / deploy (push) Successful in 2m5s
E2E Playwright Tests / Run Full E2E & Security Suites (push) Failing after 8s
2026-09-02 16:22:16 +03:30
parsa aghaei
08ad51152f feat(images): enable Next.js image optimization with complete upstream buffer retrieval and explicit MIME types
Some checks failed
Deploy Canina / deploy (push) Successful in 2m4s
E2E Playwright Tests / Run Full E2E & Security Suites (push) Failing after 7s
2026-09-02 16:14:33 +03:30
parsa aghaei
89e59c8427 fix(images): ensure unoptimized direct serving for uploads proxy routes to prevent 400 bad request
Some checks failed
E2E Playwright Tests / Run Full E2E & Security Suites (push) Failing after 7s
Deploy Canina / deploy (push) Has been cancelled
2026-09-02 16:10:52 +03:30
parsa aghaei
3aaea0062b perf: optimize font payloads, enable responsive image optimization for uploads, and set high priority on top hero/product images
Some checks failed
Deploy Canina / deploy (push) Successful in 2m14s
E2E Playwright Tests / Run Full E2E & Security Suites (push) Failing after 6s
2026-09-02 15:54:12 +03:30
parsa aghaei
00839017ff feat(products): remove mock static fallbacks and add dynamic specialist recommendation management in database and admin panel
Some checks failed
E2E Playwright Tests / Run Full E2E & Security Suites (push) Failing after 7s
Deploy Canina / deploy (push) Has been cancelled
2026-09-02 15:50:01 +03:30
parsa aghaei
1ca06d5740 fix(images): restore unoptimized true for direct upload proxy serving and fix React 418 hydration mismatch
Some checks failed
Deploy Canina / deploy (push) Successful in 2m5s
E2E Playwright Tests / Run Full E2E & Security Suites (push) Failing after 9s
2026-09-02 15:36:03 +03:30
parsa aghaei
e081441c22 perf(images): enable Next.js image optimization with fast internal docker proxy routing and clean button text SSR
Some checks failed
Deploy Canina / deploy (push) Successful in 2m2s
E2E Playwright Tests / Run Full E2E & Security Suites (push) Failing after 7s
2026-09-02 15:27:41 +03:30
parsa aghaei
0ff9a6b886 perf(mobile): eliminate 0.6 CLS by removing initial motion transforms from above-the-fold Hero, and fix footer h3 hierarchy
Some checks failed
Deploy Canina / deploy (push) Successful in 2m4s
E2E Playwright Tests / Run Full E2E & Security Suites (push) Failing after 7s
2026-09-02 15:12:46 +03:30
parsa aghaei
5e6e25390e fix(images): restore direct upload loading to fix 502, fix StatCounter CLS and SmartAdvisor button contrast
Some checks failed
E2E Playwright Tests / Run Full E2E & Security Suites (push) Failing after 6s
Deploy Canina / deploy (push) Has been cancelled
2026-09-02 15:09:54 +03:30
parsa aghaei
062718fb84 perf(mobile): add cart aria-label, fix heading levels h3, and remove duplicate font network chains
Some checks failed
Deploy Canina / deploy (push) Successful in 2m2s
E2E Playwright Tests / Run Full E2E & Security Suites (push) Failing after 8s
2026-09-02 14:21:11 +03:30
parsa aghaei
98e20269a3 perf(storefront): optimize LCP image delivery, lazy-load scripts, improve WCAG contrast and accessibility
Some checks failed
Deploy Canina / deploy (push) Successful in 2m1s
E2E Playwright Tests / Run Full E2E & Security Suites (push) Failing after 8s
2026-09-02 14:16:07 +03:30
parsa aghaei
9744aa814f fix: make product key highlights and FAQs purely dynamic based on admin inputs without hardcoded fallbacks
Some checks failed
Deploy Canina / deploy (push) Successful in 2m6s
E2E Playwright Tests / Run Full E2E & Security Suites (push) Failing after 7s
2026-09-02 11:51:35 +03:30
parsa aghaei
101611d8a7 feat: complete product management with dynamic FAQs, PAO, storage conditions, safety guidelines and key highlights
Some checks failed
E2E Playwright Tests / Run Full E2E & Security Suites (push) Waiting to run
Deploy Canina / deploy (push) Has been cancelled
2026-09-02 11:09:18 +03:30
parsa aghaei
3cbcad7b65 feat(seo,ux,cro): enhance product page with JSON-LD @graph schemas, above-the-fold CRO highlights, PAO/storage badges, and dynamic reviews
Some checks failed
E2E Playwright Tests / Run Full E2E & Security Suites (push) Waiting to run
Deploy Canina / deploy (push) Has been cancelled
2026-09-02 10:51:48 +03:30
parsa aghaei
517d611b2a fix(ui): ensure 100% solid white background and higher z-index for ingredient wiki tooltip
Some checks failed
Deploy Canina / deploy (push) Successful in 2m13s
E2E Playwright Tests / Run Full E2E & Security Suites (push) Failing after 6s
2026-09-02 10:45:00 +03:30
parsa aghaei
812bc2920c feat(navigation): add custom glowing NavigationProgressBar, enable Swagger on localhost dev, set local store port to 3005, and remove hero-section-image.png
Some checks failed
Deploy Canina / deploy (push) Successful in 1m46s
E2E Playwright Tests / Run Full E2E & Security Suites (push) Failing after 6s
2026-08-29 13:53:21 +03:30
parsa aghaei
c7d7ac3aa3 fix(media): resolve 400 Bad Request on next/image proxy, add auto scroll to top on route change, disable swagger in prod, and fix dev ports
Some checks failed
Deploy Canina / deploy (push) Successful in 1m51s
E2E Playwright Tests / Run Full E2E & Security Suites (push) Failing after 7s
2026-08-29 13:37:50 +03:30
parsa aghaei
fa1a35c835 feat(media): implement nextjs media proxy API routes (/api/uploads & /api/media) with server-side caching and streaming
Some checks failed
Deploy Canina / deploy (push) Successful in 1m34s
E2E Playwright Tests / Run Full E2E & Security Suites (push) Failing after 6s
2026-08-29 12:13:16 +03:30
parsa aghaei
d9c693c41b feat(media): implement omnichannel media gallery with drag-and-drop, video support, and quick access podcast/video hub
Some checks failed
Deploy Canina / deploy (push) Successful in 1m35s
E2E Playwright Tests / Run Full E2E & Security Suites (push) Failing after 6s
2026-08-29 11:46:04 +03:30
parsa aghaei
32e40a820c style(application): optimize ingredients and chemical analysis layout with compact padding and responsive badges
Some checks failed
Deploy Canina / deploy (push) Successful in 1m33s
E2E Playwright Tests / Run Full E2E & Security Suites (push) Failing after 6s
2026-08-29 08:58:14 +03:30
parsa aghaei
05e26cab9f fix(application): render rich HTML product descriptions with responsive typography styling
Some checks failed
E2E Playwright Tests / Run Full E2E & Security Suites (push) Failing after 6s
Deploy Canina / deploy (push) Has been cancelled
2026-08-29 08:55:55 +03:30
parsa aghaei
bfb7f42065 feat(ui): integrate RichTextEditor for product full description and add click-outside handlers for dropdowns
Some checks failed
Deploy Canina / deploy (push) Successful in 1m35s
E2E Playwright Tests / Run Full E2E & Security Suites (push) Failing after 7s
2026-08-29 08:46:41 +03:30
parsa aghaei
40176ac60e feat(media): add summary and view more toggle button for video and podcast descriptions
Some checks failed
Deploy Canina / deploy (push) Successful in 1m30s
E2E Playwright Tests / Run Full E2E & Security Suites (push) Failing after 6s
2026-08-26 17:17:19 +03:30
parsa aghaei
5db23443ed feat(product-page): add AI-powered badge and informative subtitle to scientific media section
Some checks failed
E2E Playwright Tests / Run Full E2E & Security Suites (push) Failing after 7s
Deploy Canina / deploy (push) Has been cancelled
2026-08-26 17:15:11 +03:30
parsa aghaei
a00778ffaa feat(product-page): add high-res image zoom lightbox with pan/zoom/drag and unoptimized raw rendering
Some checks failed
Deploy Canina / deploy (push) Successful in 1m32s
E2E Playwright Tests / Run Full E2E & Security Suites (push) Failing after 7s
2026-08-26 16:38:59 +03:30
parsa aghaei
0ddc635dfd style(product-page): harmonize media section header icon with brand blue theme
Some checks failed
Deploy Canina / deploy (push) Successful in 1m31s
E2E Playwright Tests / Run Full E2E & Security Suites (push) Failing after 6s
2026-08-26 16:23:03 +03:30
parsa aghaei
2ce872969c style(podcast): enhance badge contrast with bright cyan text and border on dark background
Some checks failed
E2E Playwright Tests / Run Full E2E & Security Suites (push) Failing after 6s
Deploy Canina / deploy (push) Has been cancelled
2026-08-26 16:20:47 +03:30
parsa aghaei
5f58ba8258 refactor(shop): remove prescription vs OTC filter from shop archive
Some checks failed
Deploy Canina / deploy (push) Successful in 1m36s
E2E Playwright Tests / Run Full E2E & Security Suites (push) Failing after 6s
2026-08-26 14:34:18 +03:30
parsa aghaei
0132cce0cb feat(settings): add admin toggle for prescription upload button and bind to header
Some checks failed
E2E Playwright Tests / Run Full E2E & Security Suites (push) Waiting to run
Deploy Canina / deploy (push) Has been cancelled
2026-08-26 14:32:30 +03:30
parsa aghaei
3109e30fd7 fix(shop): update breadcrumb title from catalog to shop products
Some checks failed
E2E Playwright Tests / Run Full E2E & Security Suites (push) Failing after 6s
Deploy Canina / deploy (push) Has been cancelled
2026-08-26 14:30:15 +03:30
parsa aghaei
6cacfd447b fix(prescription): raise modal z-index above header, add backdrop dismiss, and show upload button on mobile header and drawer
Some checks failed
E2E Playwright Tests / Run Full E2E & Security Suites (push) Waiting to run
Deploy Canina / deploy (push) Has been cancelled
2026-08-26 14:25:24 +03:30
parsa aghaei
63e10449ad fix(auth): unify typography to Vazir and set password login as default
Some checks failed
E2E Playwright Tests / Run Full E2E & Security Suites (push) Failing after 6s
Deploy Canina / deploy (push) Has been cancelled
2026-08-26 14:23:07 +03:30
parsa aghaei
6e23269a5c feat: user crm metrics, product total sold, dynamic menu sync, blog views & advisor route
Some checks failed
Deploy Canina / deploy (push) Successful in 1m50s
E2E Playwright Tests / Run Full E2E & Security Suites (push) Failing after 6s
2026-08-26 14:05:26 +03:30
parsa aghaei
9294e89712 feat(auth): redesign AuthModal with structured tabs, clean login/signup separation, clear OTP/password switch and polished UX
Some checks failed
Deploy Canina / deploy (push) Successful in 1m32s
E2E Playwright Tests / Run Full E2E & Security Suites (push) Failing after 6s
2026-08-26 13:51:16 +03:30
parsa aghaei
41f7e98d97 feat(checkout): unify manual address form with AddressModal, auto-save address and sync user profile on order
Some checks failed
E2E Playwright Tests / Run Full E2E & Security Suites (push) Failing after 6s
Deploy Canina / deploy (push) Has been cancelled
2026-08-26 13:48:41 +03:30
parsa aghaei
aa0dde6a35 feat(design-system): standardize color and typography tokens via Tailwind v4 @theme configuration
Some checks failed
Deploy Canina / deploy (push) Successful in 1m37s
E2E Playwright Tests / Run Full E2E & Security Suites (push) Failing after 6s
2026-08-26 13:29:59 +03:30
parsa aghaei
229e50f973 fix(catalog): luxury brochure redesign, dynamic admin logo, whitespace-nowrap badges, fixed spread dimensions
Some checks failed
Deploy Canina / deploy (push) Successful in 1m36s
E2E Playwright Tests / Run Full E2E & Security Suites (push) Failing after 6s
2026-08-26 13:23:56 +03:30
parsa aghaei
c825268b34 fix(contact): replace hardcoded phone numbers with dynamic settings from backend across all components
Some checks failed
Deploy Canina / deploy (push) Successful in 1m37s
E2E Playwright Tests / Run Full E2E & Security Suites (push) Failing after 6s
2026-08-26 12:03:17 +03:30