Hide WeChat login for shop and partner users, keep verified sessions for seven days, and allow JSSDK camera or album access without an OpenID binding.
Co-authored-by: Cursor <cursoragent@cursor.com>
Remove secrets file from the index (keep local). Mine page can choose avatar and nickname via WeChat components.
Co-authored-by: Cursor <cursoragent@cursor.com>
Default new sub-accounts to store:create+store:manage, backfill empty permissions on /partner/me, and treat legacy store staff as allowed to mutate.
Co-authored-by: Cursor <cursoragent@cursor.com>
Allow store:create/manage sub-accounts to edit, open/close, and re-upload media; dedupe ENV photos on write/read and replace via media API.
Co-authored-by: Cursor <cursoragent@cursor.com>
Quick login required agreement without a checkbox; move the consent row above CTAs across partner/shop/user/mini login pages so it stays visible on short screens.
Co-authored-by: Cursor <cursoragent@cursor.com>
Gate dashboard/stores/orders by permission and move dashboard auth to method level so leaderboard stays open without toasting 403s.
Co-authored-by: Cursor <cursoragent@cursor.com>
Expose same-primary ranking on home/me for all staff including warehouse roles, and open the leaderboard API without business permission gates.
Co-authored-by: Cursor <cursoragent@cursor.com>
Production builds were baking localhost:3000 after the local-dev default change, causing failed to fetch on product list.
Co-authored-by: Cursor <cursoragent@cursor.com>
Keep back buttons and header layout. mini-user only hides titles on H5; partner/shop hide .app-page-title and legal titles; shared PageHeader defaults showTitle=false.
Merge used to drop wxOpenId so OAuth created a new guest without phone every time. Now migrate WeChat identity, recover legacy merged openIds, return accountMerged and force page reload, and only soft-prompt when phone is truly unbound.
Phone bind discarded the new JWT after account merge, so the next page 401'd back to login. Also harden 401 race, location deny cache, unpaid repay CTA, and finishLoginNavigate.
Vite was bundling plugin-framework-react runtime twice, so tab pages crashed with useContext is not a function on enter/switch.
Co-authored-by: Cursor <cursoragent@cursor.com>