mirror of
https://github.com/openswarm-ai/openswarm.git
synced 2026-09-12 20:57:42 +02:00
[eric] onboarding: clearer reveal (no leftover v2 tour, plain-english note + keep/remove copy)
This commit is contained in:
@@ -65,8 +65,8 @@ const OnboardingRoot: React.FC = () => {
|
||||
!(s.onboardingProgress.completedSteps ?? []).includes('launch_agent') &&
|
||||
Object.keys(s.agents?.sessions ?? {}).length === 0,
|
||||
);
|
||||
// Onboarding v3 owns the window on a fresh install; the v2 cursor tour stays dormant until the flow resolves.
|
||||
const v3Owns = useAppSelector((s) => s.onboardingV3.flowActive);
|
||||
// Onboarding v3 owns the window on a fresh install; the v2 cursor tour + panel stay dormant while the flow runs AND forever after it resolves (a v3'd user has already onboarded, so the v2 "connect your model / Show me" tour on top of the v3 reveal is contradictory clutter).
|
||||
const v3Owns = useAppSelector((s) => s.onboardingV3.flowActive || !!s.settings.data.onboarding_v3);
|
||||
const welcomeFiredRef = useRef(false);
|
||||
const welcomeTimerRef = useRef<number | null>(null);
|
||||
useEffect(() => {
|
||||
|
||||
@@ -58,15 +58,15 @@ const PrepKeepToast: React.FC = () => {
|
||||
action={
|
||||
<>
|
||||
<Button size="small" onClick={finish} sx={{ color: c.accent.primary, fontWeight: 700 }}>
|
||||
Keep
|
||||
Keep them
|
||||
</Button>
|
||||
<Button size="small" onClick={discard} sx={{ color: c.text.tertiary }}>
|
||||
Discard
|
||||
Stop & remove
|
||||
</Button>
|
||||
</>
|
||||
}
|
||||
>
|
||||
{`I started ${names} while you set up. Keep going?`}
|
||||
{`These are ${names}, which I started for you during setup. Keep them, or stop and remove them?`}
|
||||
</Alert>
|
||||
</Snackbar>
|
||||
);
|
||||
|
||||
@@ -34,11 +34,14 @@ export function useOnboardingRevealSeed({ isActive, dashboardId, expandedSession
|
||||
const cy = (vr.height / 2 - cs.panY) / cs.zoom;
|
||||
const audit = prepped.find((j) => j.kind === 'audit');
|
||||
const app = prepped.find((j) => j.kind === 'app');
|
||||
const lines: string[] = ['While you were setting up, I got started.'];
|
||||
if (scanSummary) lines.push(`Spotted on this Mac: ${scanSummary}.`);
|
||||
if (audit) lines.push(`Already running: ${audit.title}.`);
|
||||
if (app) lines.push(`Already building: ${app.title}.`);
|
||||
if (starters.length > 0) lines.push(`Ready to run:\n${starters.slice(audit ? 1 : 0).map((s) => `- ${s.title}`).join('\n')}`);
|
||||
const lines: string[] = ['Here is what I set up for you.'];
|
||||
if (scanSummary) lines.push(`Looked around: ${scanSummary}.`);
|
||||
const cards: string[] = [];
|
||||
if (audit) cards.push(`- ${audit.title} (running now, on the left)`);
|
||||
if (app) cards.push(`- ${app.title} (building now)`);
|
||||
if (cards.length > 0) lines.push(`Working on:\n${cards.join('\n')}`);
|
||||
if (starters.length > 0) lines.push(`Ready when you are:\n${starters.slice(audit ? 1 : 0).map((s) => `- ${s.title}`).join('\n')}`);
|
||||
lines.push('Nothing is saved or deleted without you. Keep or discard anytime.');
|
||||
dispatch(addNote({ x: cx + DEFAULT_CARD_W / 2 + 48, y: cy - 140, color: 'yellow', content: lines.join('\n\n') }));
|
||||
prepped.forEach((job, i) => {
|
||||
dispatch(placeCard({
|
||||
|
||||
Reference in New Issue
Block a user