Commit Graph

13 Commits

Author SHA1 Message Date
Christian Byrne
97949c61fb remove email verification temporarily (#6366)
## Summary

- Temporarily remove email verification. After susbcription gating was
enabled, this is less important
- Will re-add the logic back at a later time, defering requirement until
time to subscribe
- For time being, typo emails can be resolved through custom service
(https://support.comfy.org/hc/en-us/requests/new?tf_42243568391700=ccloud&tf_123456=X)
- Keep the route and redirect for deprecation. Not really needed since
the server falls back to root route anyway but generally good practice
and is more resistant to future changes + avoids a single extra routing
step in that scenario.

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-6366-remove-email-verification-temporarily-29b6d73d3650810095a4e7c4591b3327)
by [Unito](https://www.unito.io)
2025-10-29 00:23:48 -07:00
Christian Byrne
5e972d8512 add TOS and privacy policy text on cloud login view (#6341)
## Summary

Adds these missing sentences that might have been dropped when bringing
this component over from main or during some refactoring.

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-6341-add-TOS-and-privacy-policy-text-on-cloud-login-view-29a6d73d36508124b9dad689184a4ae3)
by [Unito](https://www.unito.io)
2025-10-27 21:14:29 -07:00
Christian Byrne
c067fcc27f [ux] clean up cloud login page: remove duplicate signup text and beta banner (#6270)
## Summary

Cleans up the cloud login page by removing redundant UI elements.

## Changes

1. **Removed duplicate signup text**: "Don't have an account yet? Sign
up instead" was appearing twice - once at the top and once at the
bottom. Now it only appears once at the top where it's most visible.

2. **Removed beta banner**: The "Cloud is currently in private beta"
banner at the top of the page has been removed.

## Before/After

**Before:**
- Beta banner at top
- "Don't have an account yet?" at top
- Form in middle
- "Don't have an account yet?" again at bottom (duplicate)

**After:**
- "Don't have an account yet?" at top only
- Form in middle
- Contact info at bottom

The page is now cleaner and less repetitive.

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-6270-ux-clean-up-cloud-login-page-remove-duplicate-signup-text-and-beta-banner-2976d73d365081c5a7a5c15dd426317d)
by [Unito](https://www.unito.io)
2025-10-24 19:20:59 -07:00
Jin Yi
3a5ed57f50 [fix] prevent duplicate verification emails on page refresh (#6167)
## Summary
- Fixed duplicate verification email issue where emails were sent every
time users returned to the root page
- Emails are now only sent automatically when coming from signup/login
flow
- Added proper toast notifications to cloud onboarding pages

## Changes
- **Conditional email sending**: Only send verification email when
`fromAuth=true` query parameter is present (from signup/login flow)
- **Auto-cleanup**: Remove `fromAuth` parameter after sending email to
prevent re-sending on page refresh
- **Toast system fix**: 
- Added `GlobalToast` component to `CloudLayoutView` for proper toast
display in onboarding pages
  - Migrated from PrimeVue `useToast()` to ComfyUI's `useToastStore()`
- **UI improvements**:
  - Better spacing and layout for email verification page
  - Added multiline support for tips and instructions
  - Improved toast messages with clearer titles and summaries

## Problem it solves
Previously, when users signed up and received a verification email,
every time they navigated back to the root page (`/`), the router guard
would redirect them to the email verification page which would
automatically send another email. This caused multiple emails to be
sent, often ending up in spam folders.

## Test plan
- [x] Sign up for a new account → Should receive ONE verification email
- [x] Navigate away and back to root → Should NOT receive another email
- [x] Click "Resend email" button → Should receive a new email
- [x] Refresh the verification page → Should NOT receive another email
- [x] Toast notifications appear correctly in all auth flows

[screen-capture
(1).webm](https://github.com/user-attachments/assets/25ffad94-d129-4051-b29e-5bdec696cd11)
2025-10-20 11:31:29 -07:00
Jin Yi
d31df54f57 chore: Remove signup option on invite page when using invite code (#6070)
## Summary
- Removed the "Don't have an account? Sign up" link from the
CloudLoginView when users access the page with an invite code (from
invite link in email)
- The signup option now only shows when there's no invite code present

## Changes
- Modified `CloudLoginView.vue` to conditionally show the signup text
only when `!hasInviteCode`
- Used `<template>` wrapper for better conditional rendering

## Why this change?
Users coming from an invite email link should focus on logging in with
their existing account rather than being presented with a signup option,
as they've already been invited to join.

Fixes the UX issue where invited users might get confused by seeing a
signup option when they should be logging in with their invited account.

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-6070-chore-Remove-signup-option-on-invite-page-when-using-invite-code-28d6d73d365081e29ac7d58140b2079f)
by [Unito](https://www.unito.io)
2025-10-16 16:09:55 -07:00
Jin Yi
07ce463302 [fix] Improve cloud onboarding UX with email verification polling and signup flow (#6030)
## Summary
Improve cloud onboarding flow by adding email verification polling and
fixing signup auto-logout issue.

## Changes
- **What**: 
- Add polling mechanism to automatically check email verification status
every 5 seconds on the verify email page
- Fix auto-logout issue after signup by redirecting to root instead of
login page
- Remove automatic logout on login page mount to preserve user session
after signup
- **Breaking**: None
- **Dependencies**: None

## Review Focus
- Email verification polling implementation uses Firebase Auth's
`reload()` method to refresh user state
- Polling stops after 5 minutes to prevent indefinite resource usage
- Proper cleanup of intervals/timeouts in `onUnmounted` hook to prevent
memory leaks
- Signup flow now maintains user session instead of forcing re-login

## User Experience Improvements
1. **Before**: Users had to manually refresh the page after clicking
email verification link
**After**: Page automatically detects verification and proceeds to next
step

2. **Before**: After signup, users were redirected to login page and
automatically logged out, requiring them to sign in again
**After**: Users stay logged in after signup and are redirected to root,
maintaining their session

## Testing
- Tested email verification polling with both verified and unverified
states
- Verified that invite codes are preserved throughout the flow
- Confirmed no memory leaks from polling intervals
- Tested signup flow with email/password authentication

## Related Issues
- Resolves user complaints about having to sign in twice during signup
flow
- Addresses email verification page not auto-advancing after
verification

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-6030-fix-Improve-cloud-onboarding-UX-with-email-verification-polling-and-signup-flow-28a6d73d365081be8020caee6337c3e7)
by [Unito](https://www.unito.io)
2025-10-15 12:11:06 +09:00
Arjan Singh
0239a83da2 Update rh-test (as of 2025-10-11) (#6044)
## Summary

Tested these changes and confirmed that:
1. Feedback button shows.
2. You can run workflows and switch out models.
3. You can use the mask editor. (thank you @ric-yu for helping me
verify).

## Changes

A lot, please see commits.

Gets us up to date with `main` as of 10-11-2025.

---------

Co-authored-by: Simula_r <18093452+simula-r@users.noreply.github.com>
Co-authored-by: github-actions <github-actions@github.com>
Co-authored-by: snomiao <snomiao@gmail.com>
Co-authored-by: Christian Byrne <cbyrne@comfy.org>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: DrJKL <DrJKL@users.noreply.github.com>
Co-authored-by: Alexander Brown <drjkl@comfy.org>
Co-authored-by: Marwan Ahmed <155799754+marawan206@users.noreply.github.com>
Co-authored-by: DrJKL <DrJKL0424@gmail.com>
Co-authored-by: Rizumu Ayaka <rizumu@ayaka.moe>
Co-authored-by: Comfy Org PR Bot <snomiao+comfy-pr@gmail.com>
Co-authored-by: AustinMroz <4284322+AustinMroz@users.noreply.github.com>
Co-authored-by: Austin Mroz <austin@comfy.org>
Co-authored-by: Johnpaul Chiwetelu <49923152+Myestery@users.noreply.github.com>
Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: filtered <176114999+webfiltered@users.noreply.github.com>
Co-authored-by: Benjamin Lu <benceruleanlu@proton.me>
Co-authored-by: Jin Yi <jin12cc@gmail.com>
Co-authored-by: Robin Huang <robin.j.huang@gmail.com>
2025-10-14 15:59:26 -07:00
bymyself
ff0c15b119 merge main into rh-test 2025-09-28 15:33:29 -07:00
Jin Yi
8ca541e850 feat: add email verification check for cloud onboarding (#5636)
## Summary
- Added email verification flow for new users during onboarding
- Implemented invite code claiming with proper validation 
- Updated API endpoints from `/invite/` to `/invite_code/` for
consistency

## Changes

### Email Verification
- Added `CloudVerifyEmailView` component with email verification UI
- Added email verification check after login in `CloudLoginView`
- Added `isEmailVerified` property to Firebase auth store
- Users must verify email before claiming invite codes

### Invite Code Flow
- Enhanced `CloudClaimInviteView` with full claim invite functionality
- Updated `InviteCheckView` to route users based on email verification
status
- Modified API to return both `claimed` and `expired` status for invite
codes
- Added proper error handling and Sentry logging for invite operations

### API Updates
- Changed endpoint paths from `/invite/` to `/invite_code/` 
- Updated `getInviteCodeStatus()` to return `{ claimed: boolean;
expired: boolean }`
- Updated `claimInvite()` to return `{ success: boolean; message: string
}`

### UI/UX Improvements
- Added Korean translations for all new strings
- Improved button styling and layout in survey and waitlist views
- Added proper loading states and error handling

## Test Plan
- [ ] Test new user signup flow with email verification
- [ ] Test invite code validation (expired/claimed/valid codes)
- [ ] Test email verification redirect flow
- [ ] Test invite claiming after email verification
- [ ] Verify Korean translations display correctly

🤖 Generated with [Claude Code](https://claude.ai/code)

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-09-20 20:29:56 -07:00
Jin Yi
992efc4486 chore: loading text to loading icon, modify the width for responsive web (#5582) 2025-09-15 00:59:50 -07:00
Jin Yi
ffd2b0efab Feature/cloud reponsive (#5580)
* fix: hero title font & responsive

* chore: text center added

* chore: style modified

* chore: delete learn about button

* chore: waitlist title added
2025-09-15 00:42:39 -07:00
Christian Byrne
7c9b8bb7a6 feat: add cloudOnboarding translations for all supported languages (#5578)
* feat: add missing translations for cloud onboarding components

Replaces hardcoded text with i18n translations across cloud onboarding flow:

- CloudWaitlistView: Add translations for title lines, questions text, and contact link
- CloudClaimInviteView: Add translations for processing title and claim button
- CloudSorryContactSupportView: Add translation for error title
- CloudVerifyEmailView: Add translation for verification title
- CloudTemplateFooter: Add translation for "Need Help?" link
- CloudLoginView: Replace hardcoded "Questions? Contact us" and "here" with translations
- CloudSignupView: Replace hardcoded "Questions? Contact us" and "here" with translations
- CloudForgotPasswordView: Replace hardcoded "here" with translation
- Remove all eslint-disable @intlify/vue-i18n/no-raw-text comments
- Add proper useI18n imports to all affected components

Ensures consistent internationalization support across the entire cloud onboarding experience.

* feat: add cloudOnboarding translations for all supported languages

Adds comprehensive translations for cloud onboarding components across all supported locales:

English (en): Base translations for waitlist, claim invite, verify email, and support
Chinese Simplified (zh): 等候名单, 邀请码处理, 邮箱验证, 联系支持
Chinese Traditional (zh-TW): 等候名單, 邀請碼處理, 郵箱驗證, 聯繫支援
Japanese (ja): ウェイトリスト, 招待コード処理, メール認証, サポート連絡
Korean (ko): 대기명단, 초대코드 처리, 이메일 인증, 지원 문의
Russian (ru): Список ожидания, обработка кода приглашения, подтверждение почты
French (fr): Liste d'attente, traitement code invitation, vérification email
Spanish (es): Lista de espera, procesamiento código invitación, verificación email
Arabic (ar): قائمة الانتظار, معالجة رمز الدعوة, التحقق من البريد

Ensures consistent internationalization across the entire cloud onboarding experience for global users.

* feat: add missing privateBeta and start section translations

Adds translations for previously missing cloud onboarding text that was already using translation keys:

- privateBeta.title: "Cloud is currently in private beta" message
- privateBeta.desc: Beta signup description text
- start.title: "Start creating in seconds" header
- start.desc: "Zero setup required" subtext
- start.explain: Multiple output generation description
- start.learnAboutButton: "Learn about Cloud" button text
- start.wantToRun: Local ComfyUI option text
- start.download: "Download ComfyUI" button text

All 9 languages updated:
- Traditional Chinese: 私人測試階段, 幾秒內開始創作, 了解 Cloud
- Simplified Chinese: 私人测试阶段, 几秒内开始创作, 了解 Cloud
- Japanese: プライベートベータ版, 数秒で創作を開始, Cloudについて学ぶ
- Korean: 비공개 베타 버전, 몇 초 만에 창작 시작, Cloud에 대해 알아보기
- Russian: закрытая бета-версия, начните создавать за секунды, Узнать о Cloud
- French: bêta privée, commencez à créer en quelques secondes, En savoir plus sur Cloud
- Spanish: beta privada, comienza a crear en segundos, Aprende sobre Cloud
- Arabic: البيتا الخاصة, ابدأ الإبداع في ثوان, تعلم عن Cloud

Fixes missing translations reported during Traditional Chinese testing.

* feat: restore French translation file and add cloudOnboarding translations

- Restored src/locales/fr/main.json from clean backup to remove duplicate sections
- Added complete French translations for cloudOnboarding section
- Includes survey, waitlist, forgotPassword, privateBeta, start, and other subsections
- Structure matches English version exactly

* [feat] Refactor cloud translations to top-level keys

- Replace nested cloudOnboarding.section.key structure with flattened cloudSection_key pattern
- Add comprehensive cloud translations for all 9 supported languages (ar, en, es, fr, ja, ko, ru, zh, zh-TW)
- Update all Vue components to use new translation key structure
- Fix "Need Help?" and other missing translations across all languages
- Simplify translation maintenance and avoid JSON structure conflicts

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-09-15 00:16:55 -07:00
Jin Yi
59a1380f39 [feat] Cloud onboarding flow implementation (#5494)
* feature: cloud onboarding scaffolding

* fix: redirect unknown routes

* feature: cloud onboarding flow

* chore: code review

* test: api mock for test failing

* refactor: Centralize onboarding routing with dedicated check views

- Add UserCheckView to handle all user status routing decisions
- Add InviteCheckView to manage invite code validation flow
- Simplify auth.ts by removing async operations and extra complexity
- Update login/signup to always redirect through UserCheckView
- Remove distributed routing logic from all onboarding components
- Simplify router guards to delegate to check views
- Fix infinite redirect loops for non-whitelisted users
- Use window.location.href for final navigation to bypass router conflicts

Breaking changes:
- Removed claimInvite from auth.ts (moved to CloudClaimInviteView)
- Changed route names to use cloud- prefix consistently
- Simplified getMe() to synchronous function

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: delete unused file

* Revert "test: api mock for test failing"

This reverts commit 06ca56c05e.

* feature: API applied

* feature: survey view

* feature: signup / login view completed

* style: min-h-screen deleted

* feature: completed login flow

* feature: router view added

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-09-14 16:36:57 -07:00