Repository navigation
refactor(web): onboarding goes back to upstream's three stages - #457
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
cc7cf2c to
a8e8f88
Compare
a8e8f88 to
113e269
Compare
bryantderosier
left a comment
There was a problem hiding this comment.
Reviewed this as part of the 454–457 stack. One merge prerequisite (already in the PR body, and nothing lower in the stack fixes it) plus a few docs/cleanup items. No security issues: this PR only removes client code, and POST /api/j5/squadrons/assign-imported is unchanged and still authenticated.
Hold: imported conversations never get a Squadron home. Onboarding import now finishes without assignImportedThreads. AgentSessionImporter emits thread.created directly with no J5 registration, FleetReadsHttp only lists registered placements, and SendService turns a missing home into A2ASenderNotJoinedError. So after onboarding, resuming an imported conversation leaves it out of Fleet, and its agent can't send_message or list_participants (normal user turns still work). Keep the merge hold until registration covers existing imports and future ones too. A one-time backfill alone leaves later imports uncovered. Please add focused import/registration coverage with that work.
Docs/cleanup:
- FORK.md file-table row for
WelcomeWizard.tsxcredits only branding (B), but the file also has the "Agents" to "Providers" label edits, which are only recorded in case 39 (now retired). Record them inBRANDING.mdor keep a live case. docs/j5/product/features/squadron.md:22still says each folder imported at onboarding gets a Squadron and mentions the first-Squadron gate. Both are false now, so the docs PR needs to cover it.createSquadron,renameSquadron,deleteSquadronandassignImportedThreadsinpackages/client-runtime/src/j5/state.tshave no web or mobile caller at the top of the stack. They should go with the server route in the migration PR.
| skippedThreadCount += threadImportResult.value.skippedCount; | ||
| if (threadImportResult.value.importedCount > 0) { | ||
| memory.projectsWithImportedHistory.set( | ||
| projectsWithImportedHistoryRef.current.set( |
There was a problem hiding this comment.
Import finishes here without registering the imported conversations in the ledger, so resumed ones are missing from Fleet and their agents fail closed on send_message/list_participants. This is the documented merge hold; the follow-up needs to cover future imports as well as existing ones, not only a backfill.
There was a problem hiding this comment.
I'm an AI agent (Claude) working for Jackson.
Agreed, and the hold stays. The description opens with it, and the PR is a draft so it cannot merge ahead of the migration PR. I've passed your two requirements to the Captain for that PR: registration has to cover future imports as well as existing ones, not only a one-time backfill, and it needs focused import and registration tests. The tester confirmed the gap live on this branch: imported conversations stay unregistered even after a first send creates the project's Squadron.
| | `apps/web/src/hooks/useThreadActionMenu.ts` | A | 21 | | ||
| | `apps/web/src/routeTree.gen.ts` | R | generated route registrations for 6/9 | | ||
| | `apps/web/src/components/onboarding/WelcomeWizard.tsx` | R | 39, B | | ||
| | `apps/web/src/components/onboarding/WelcomeWizard.tsx` | R | B | |
There was a problem hiding this comment.
The Providers label edits aren't covered by B and are only recorded in case 39, which this PR retires. Please record them in BRANDING.md or keep a live case so the next upstream advance doesn't drop them.
There was a problem hiding this comment.
I'm an AI agent (Claude) working for Jackson.
Fixed in the rebased head 288c0e6. I kept a live FORK.md case rather than using BRANDING.md, since this is wording and not identity: case 39 now leads with the four "Providers" edits in WelcomeWizard.tsx (the stage label, the Connect sentence and two comments), says to re-apply them on every upstream advance, and records its Squadron-stage half as retired. The file-table row cites 39 and B.
113e269 to
baf76c9
Compare
baf76c9 to
288c0e6
Compare
|
I'm an AI agent (Claude) working for Jackson. Replies to the review points that have no inline thread:
New head after the rebase: |
288c0e6 to
551ffeb
Compare
551ffeb to
69e369c
Compare
fcca968 to
ad1123e
Compare
ad1123e to
1912866
Compare
The welcome wizard loses its Squadron stage and imports into projects as upstream does. Branding and the Providers label stay. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
1912866 to
197e79c
Compare
Hold: merges with the migration PR, which registers imported threads.
Problem
J5's welcome wizard has a fourth stage that gives each imported folder's conversations a Squadron. The plan in #412 retires Squadrons into projects, so onboarding goes back to upstream's three stages.
What changed
Sixth PR of the fold stack, on top of #456.
components/onboarding/WelcomeWizard.tsxis the upstream pin's file again, with two J5 edits kept:branding.ts, and the header shows the plain title in place of the T3 wordmark.routes/welcome.tsxhas been upstream's file since refactor(web): new-thread doors and drafts go back to upstream's projects #455.apps/web/src/j5/onboarding/(the Squadrons stage, its logic and test, the import session hook) andj5/squadron/squadronClient.tswith its test, which has no caller left.j5/squadron/:SquadronDirectory(Fleet, the Inbox, the playbook author picker) andThreadHomesClient(the sidebar's nesting rule).Behavior note: going back from Projects resets the folder selection
Why this PR is held
AgentSessionImporter), not through the launch command. So feat(squadrons): a thread launched without a Squadron joins its project's Squadron #430's rule, which puts a launched thread in its project's Squadron, does not cover imported conversations.join_squadronthen has nothing to join.UI changes
Captured by the tester on the base branch (#456) and on this PR, with the same data, viewport and theme.
Connect stage and the four-stage / three-stage step bar.
Connect help shows J5 Code and the j5 pair / j5 serve commands.
Provider setup stage.
One scratch folder selected for import.
Projects with no folders selected.
After Projects: base opens Squadrons; head completes import and opens the project draft.
Import completes into the selected project’s draft.
First send from a new thread after import.
Returning via the Providers stage: base keeps the chosen folder; upstream’s wizard restores its default selection.
No discovered projects (simulated empty scan).
Project scan waiting (simulated pending response).
Project scan error with Retry (simulated scan failure).
Stage navigation and the selection reset when returning to upstream’s wizard.
Dark theme and 390px captures of the same states
Connect help shows J5 Code and the j5 pair / j5 serve commands. Dark theme.
Connect help shows J5 Code and the j5 pair / j5 serve commands. Dark theme, narrow width.
Connect help shows J5 Code and the j5 pair / j5 serve commands. Light theme, narrow width.
Connect stage and the four-stage / three-stage step bar. Dark theme.
Connect stage and the four-stage / three-stage step bar. Dark theme, narrow width.
Connect stage and the four-stage / three-stage step bar. Light theme, narrow width.
After Projects: base opens Squadrons; head completes import and opens the project draft. Dark theme.
After Projects: base opens Squadrons; head completes import and opens the project draft. Dark theme, narrow width.
After Projects: base opens Squadrons; head completes import and opens the project draft. Light theme, narrow width.
First send from a new thread after import. Dark theme.
First send from a new thread after import. Dark theme, narrow width.
First send from a new thread after import. Light theme, narrow width.
Import completes into the selected project’s draft. Dark theme.
Import completes into the selected project’s draft. Dark theme, narrow width.
Import completes into the selected project’s draft. Light theme, narrow width.
Returning via the Providers stage: base keeps the chosen folder; upstream’s wizard restores its default selection. Dark theme.
Returning via the Providers stage: base keeps the chosen folder; upstream’s wizard restores its default selection. Dark theme, narrow width.
Returning via the Providers stage: base keeps the chosen folder; upstream’s wizard restores its default selection. Light theme, narrow width.
No discovered projects (simulated empty scan). Dark theme.
No discovered projects (simulated empty scan). Dark theme, narrow width.
No discovered projects (simulated empty scan). Light theme, narrow width.
Project scan error with Retry (simulated scan failure). Dark theme.
Project scan error with Retry (simulated scan failure). Dark theme, narrow width.
Project scan error with Retry (simulated scan failure). Light theme, narrow width.
Project scan waiting (simulated pending response). Dark theme.
Project scan waiting (simulated pending response). Dark theme, narrow width.
Project scan waiting (simulated pending response). Light theme, narrow width.
Projects with no folders selected. Dark theme.
Projects with no folders selected. Dark theme, narrow width.
Projects with no folders selected. Light theme, narrow width.
One scratch folder selected for import. Dark theme.
One scratch folder selected for import. Dark theme, narrow width.
One scratch folder selected for import. Light theme, narrow width.
Provider setup stage. Dark theme.
Provider setup stage. Dark theme, narrow width.
Provider setup stage. Light theme, narrow width.
Limits of this evidence:
Upstream impact
apps/web/src/components/onboarding/WelcomeWizard.tsx: FORK.md case 39 stays live for the four "Providers" wording edits, so the next upstream advance re-applies them; its Squadron-stage half is retired. The file-table row cites 39 and branding.docs/j5/product/upstream.md): D10 moves to the Retired section. The decision is Jackson's, in the plan for Retire Squadrons and fold their J5 behavior into projects (decided) #412.ImportedThreadsHttp) stays, with no web caller; the migration PR removes it.Checklist
FORK.md(case text and file-table row) in this PRdocs/j5/product/upstream.mdAGENTS.md)docs/j5/product/and user docs rewritten where this changes them. Feature definitions are left for the stack's docs PR, per the plan.Surfaces walked
/welcome, and visiting/welcometo reopen setup. Both render the same wizard.Verification
vp test run src/onboarding src/j5inapps/web: 45 files, 376 tests pass.tsc --noEmitinapps/web: no errors.vp lintonsrc/components/onboardingandsrc/routes/welcome.tsx: no errors.j5 pair/j5 servein the pairing help; importing two real conversations into a selected project; landing in that project's draft; a first send from it; the import button disabled with nothing selected; skip; persistence across a reload.Claude Opus 5.5 (1M context), Claude Code harness.
🤖 Generated with Claude Code