Skip to content

feat(ux): improve first-login onboarding and avatar handling - #769

Open
tiankaima wants to merge 14 commits into
mainfrom
cursor/welcome-avatar-onboarding-61aa
Open

feat(ux): improve first-login onboarding and avatar handling#769
tiankaima wants to merge 14 commits into
mainfrom
cursor/welcome-avatar-onboarding-61aa

Conversation

@tiankaima

@tiankaima tiankaima commented Aug 8, 2026

Copy link
Copy Markdown
Member

Goal

Improve first-login onboarding: turn the dense single-page welcome into a guided staged flow, add secure custom avatar uploads, allow refreshing OAuth profile data, and keep boarding focused (no workspace chrome).

Changed Surfaces

  • Staged welcome flow: required profile step, skippable subscriptions step, final orientation step, with a step indicator and back/skip/finish controls
  • /account/welcome uses a focused shell: no sidebar, global search, or mobile primary nav; language and theme stay in the topbar
  • Subscriptions step explains the academic-system copy-paste constraint with inline undergraduate and graduate portal links, then matches pasted course codes with an Import action (no dialogs)
  • Finish step lists last-mile follow-ups: workspace daily items (including todos), profile or TA course homepage, and CalDAV/MCP from other apps
  • Step state resolved on the server from the URL, so steps are deep-linkable and an incomplete profile always resolves to the profile step
  • Cloudflare Images binding: 256×256 cover transform to WebP
  • Private R2 avatar storage and profile-reference-gated public delivery
  • Processed and upstream avatars retained as reusable profile options
  • Narrow app-runtime User.profilePictures UPDATE grant; Better Auth role remains unable to write it
  • OAuth profile staging and linked-provider reauthorization
  • Sign-in and welcome unit/E2E coverage
  • User and UI contracts, plus both locales

Evidence

Passed on the pre-merge branch:

  • bun run app:prepare
  • bunx biome check (pre-existing non-null-assertion warnings only)
  • application, test, and operational TypeScript checks
  • Playwright welcome specs: 9 passed against a local Worker + PostgreSQL

This revision merges main and keeps the staged welcome flow plus Images binding. Re-run CI on the merge commit before landing.

Docs / Contracts

Updated docs/contracts/user.json (welcome-staged-steps), docs/contracts/_ui.json (focused welcome chrome), messages/zh-cn.json, and messages/en-us.json.

Risk Areas

OAuth account reauthorization, Cloudflare Images availability, R2 object lifecycle, multipart form handling, public avatar authorization, deployment ordering for the app-runtime column grant, and the welcome step contract shared with the E2E auth harness.

Cleanup

No scratch artifacts, generated Playwright output, unrelated rewrites, or manual generated Prisma/OpenAPI edits remain. Welcome import dialogs stay deleted in favor of the inline subscriptions step.

Open in Web Open in Cursor 

cursoragent and others added 2 commits August 8, 2026 15:15
Co-authored-by: Tiankai Ma <tiankaima.dev@gmail.com>
Co-authored-by: Tiankai Ma <tiankaima.dev@gmail.com>
@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Aug 8, 2026

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Updated (UTC)
✅ Deployment successful!
View logs
life-ustc a22ca4c Aug 28 2026, 01:48 PM

cursoragent and others added 3 commits August 8, 2026 15:17
Co-authored-by: Tiankai Ma <tiankaima.dev@gmail.com>
Co-authored-by: Tiankai Ma <tiankaima.dev@gmail.com>
Co-authored-by: Tiankai Ma <tiankaima.dev@gmail.com>
@github-actions

github-actions Bot commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

cursoragent and others added 3 commits August 8, 2026 15:49
Co-authored-by: Tiankai Ma <tiankaima.dev@gmail.com>
Co-authored-by: Tiankai Ma <tiankaima.dev@gmail.com>
Co-authored-by: Tiankai Ma <tiankaima.dev@gmail.com>
@tiankaima-copilot tiankaima-copilot changed the title feat: improve first-login onboarding and avatar handling feat(ux): improve first-login onboarding and avatar handling Aug 28, 2026
@tiankaima-copilot tiankaima-copilot added kind: feat Kind: feat area: ux Area: ux labels Aug 28, 2026
cursoragent and others added 6 commits August 28, 2026 07:41
Hide the workspace skeleton on /account/welcome and put section
import on the subscriptions step itself, with copy-paste guidance
and the same icon-row layout as the finish step.

Co-authored-by: Tiankai Ma <tiankaima.dev@gmail.com>
Co-authored-by: Tiankai Ma <tiankaima.dev@gmail.com>
Rewrite step 2 and 3 in a more conversational voice, and send people to
the undergraduate and graduate academic sites to copy their timetable.

Co-authored-by: Tiankai Ma <tiankaima.dev@gmail.com>
Use the provided Step 2/3 onboarding copy: inline undergraduate and graduate academic-system links, an Import action, and last-mile next-step guidance.

Co-authored-by: Tiankai Ma <tiankaima.dev@gmail.com>
Use the updated Step 2/3 wording: import-from-academic-system title, a lighter paste hint, and next-step notes for todos and TA homepages.

Co-authored-by: Tiankai Ma <tiankaima.dev@gmail.com>
Resolve conflicts so the onboarding pull request can merge: keep the staged welcome flow and Images binding, and take main's shell, cron, and audit updates.

Co-authored-by: Tiankai Ma <tiankaima.dev@gmail.com>
@tiankaima
tiankaima marked this pull request as ready for review August 28, 2026 13:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: ux Area: ux kind: feat Kind: feat

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants