eschutho opened a new pull request, #43145:
URL: https://github.com/apache/superset/pull/43145

   > ⚠️ **Merge order: land after #2294** (the "too many icons" PR) — both edit 
`OnboardingWizard.tsx` (`STEP_META` / `renderWorkspace`). This branch is off 
`main` and will be **rebased onto `main` once #2294 merges**, keeping both sets 
of changes. Do not merge before #2294.
   
   ## Context / Problem
   
   After finishing the first-run onboarding wizard, the final CTA reads **"Open 
my board →"**. But the step that actually creates the user's board + first AI 
teammate (the **workspace** step) was skippable. A user who skipped it reached 
the `done` step with an empty `boardId` **and** empty `sessionId`, so 
`handleOnboardingComplete` fell through to `navigate('/')` and dumped them on 
the homepage instead of a board.
   
   ## Goal
   
   Completing the onboarding wizard must **always** land the user on a board — 
never the homepage.
   
   ## Changes
   
   **A. The board/teammate step is now required.**
   - `apps/agor-ui/src/components/OnboardingWizard/OnboardingWizard.tsx`: the 
`workspace` step is the only step that creates the board (`boards.create`, 
named after the teammate) and the teammate seed (`teammateName`). It is now 
`skippable: false`, so the "Skip for now" affordance no longer renders for it 
(it's gated on the existing `isSkippable` derivation — no new markup).
   - To keep "required" from being annoying, the teammate name is **prefilled** 
with a sensible default (`Scout`) instead of blocking on an empty field. The 
existing `canProceed` guard already requires a non-empty name (or an existing 
board), so completion now guarantees a board + teammate exist. The name remains 
fully editable.
   - The other steps (persona, llm, integrations) stay skippable — no flow, 
field, or option was dropped.
   
   **B. Completion never navigates to `/`.**
   - `apps/agor-ui/src/App.tsx` (`handleOnboardingComplete`): the final 
fallback chain now resolves a board destination in order — seeded `sessionId` → 
wizard-created `result.boardId` → the user's existing `mainBoardId` (verified 
against the store) → any existing board — using the centralized 
`boardPath`/`sessionPath` builders. The bare `navigate('/')` is gone. With fix 
A in place a board always exists, so the later fallbacks are 
belt-and-suspenders.
   
   **C. Teammate name stays editable on the workspace step (live-testing 
follow-up).**
   - The workspace step used to swap the name+avatar editor for a read-only 
**"Board already set up"** card whenever a board existed (`verifiedBoard || 
createdBoardId`). That hid the name field after pressing **Back** (the board is 
created on proceed) and whenever the user already had a board — so the teammate 
could never be (re)named — and the copy was board-centric on a step titled 
*Name your AI teammate*.
   - Now the editor is **always rendered** (prefilled with the current 
name/emoji); the read-only card is dropped.
   - Proceed handler is board-aware: if a board was created **earlier this same 
pass**, it `patch`es that board's `name`/`icon` (Back → edit → forward renames 
the same board, no duplicate); a board that **pre-existed onboarding** is 
carried forward **without renaming** (it's the user's own); otherwise a board 
is created as before.
   - CTA reconciled to a single `Continue →`; `canProceed` requires a non-empty 
(prefilled) name.
   
   **D. Primary-CTA copy describes the button's actual action (copy 
consistency).**
   - `primaryLabel` in `OnboardingWizard.tsx`: the button label must describe 
its forward action and must not morph on transient selection/visited state when 
the action is unchanged.
   - `persona`: always `Continue →` — the button just advances whether or not a 
persona is selected, so the `This is me →` variant was gratuitous. Dropped 
`selectedPersona` from the memo deps now that it's unused there.
   - `integrations`: `Connect when done →` → `Continue →` — this button only 
advances to the summary (`goToStep('done')`); connecting tools happens via the 
per-tool buttons inside the step body, so the old label misdescribed the action.
   - `llm`/`workspace`/`done` labels are unchanged (their labels genuinely 
track distinct actions).
   
   ## How I verified
   
   - `apps/agor-ui/src/components/OnboardingWizard/OnboardingWizard.test.tsx`:
     - Rewrote the old "lets the user skip every step" test (it asserted you 
could skip the assistant step) into one asserting the **workspace step is 
required** (no "Skip for now" button, name prefilled with `Scout`, board 
created) and that **completion always emits a non-empty `boardId`**, never the 
homepage.
     - Updated the two board-reuse tests: they no longer assert the "Board 
already set up" card; instead they assert the **name field is editable even 
when a board exists** and that a **pre-existing board is never renamed** 
(`create`/`patch` not called).
     - Added a test that going **Back** to the workspace step keeps the name 
editable and that editing then re-proceeding **`patch`es the same board** (no 
duplicate `create`).
     - Updated the persona/full-flow/Back tests that advanced via `This is me 
→` / `Connect when done →` to use the reconciled `Continue →` label.
     - **32/32** wizard tests pass, plus 33 App-component tests.
   - `biome check` clean on the touched files.
   - `tsc -b` typecheck clean for `apps/agor-ui`.
   - Self code-review against `context/guidelines/frontend.md`: no new UI 
primitives/components (the change removes a bespoke read-only card and reuses 
the existing AntD `Input`/`EmojiPickerInput` editor), no new inline 
styles/CSS/`--ant-*` strings, AntD `Button`/`Input`/`Tooltip` still own all 
visual/disabled/a11y states, and the required step never blocks (prefilled name 
→ enabled Continue).
   
   Multi-tenancy: no tenant-owned resource or boundary is crossed — this is 
client-side wizard flow + navigation only; board/teammate creation continues to 
go through the same authenticated services.
   
   🤖 Generated with [Claude Code](https://claude.com/claude-code)
   
   ---
   
   ### Verified green (AGORgeous assistant)
   - **CI: all 3 checks pass** — `Lint, typecheck, build, test` ✅ · `Build & 
push` ✅ · `Pack + boot + curl` ✅.
   - Ran the wizard suite locally on this branch: **31/31 pass**.
   - Booted the branch env and confirmed the app serves (HTTP 200) for live 
click-through.
   - Tracks Notion bug **"Skipping All Onboarding Questions"** (P1) → 
https://app.notion.com/p/3b98718b646580318817c5de132b3c7c
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to