diff --git a/frontend/src/app/components/Onboarding/OnboardingDockedTab.tsx b/frontend/src/app/components/Onboarding/OnboardingDockedTab.tsx deleted file mode 100644 index 9c39e8ec..00000000 --- a/frontend/src/app/components/Onboarding/OnboardingDockedTab.tsx +++ /dev/null @@ -1,149 +0,0 @@ -// Docked onboarding home: a small, quiet handle on the right edge that reopens the tour. - -import React, { useState } from 'react'; -import { motion, AnimatePresence } from './_motionWin'; -import { Box, IconButton, Typography, CircularProgress } from '@mui/material'; -import CloseIcon from '@mui/icons-material/Close'; -import { useClaudeTokens } from '@/shared/styles/ThemeContext'; -import { useOnboardingProgress } from './hooks/useOnboardingProgress'; -import { STEPS } from './steps'; -import { report } from './telemetry'; - -const OnboardingDockedTab: React.FC = () => { - const c = useClaudeTokens(); - const progress = useOnboardingProgress(); - const [hovered, setHovered] = useState(false); - - const total = STEPS.length; - const done = progress.completedSteps.length; - // Hide while the cursor is driving a step, same as the panel does. - const show = - progress.initialized && - progress.panelMode === 'docked' && - !progress.running && - done < total; - const pct = total > 0 ? (done / total) * 100 : 0; - - const reopen = () => { - report('panel_reopened', { from: 'docked_tab' }); - progress.setPanelMode('expanded'); - }; - - return ( - - - {show && ( - - setHovered(true)} - onMouseLeave={() => setHovered(false)} - onClick={reopen} - onKeyDown={(e) => { - if (e.key === 'Enter' || e.key === ' ') { - e.preventDefault(); - reopen(); - } - }} - sx={{ - display: 'flex', - alignItems: 'center', - gap: hovered ? 0.7 : 0, - cursor: 'pointer', - bgcolor: c.bg.surface, - border: `1px solid ${c.border.subtle}`, - borderRight: 'none', - borderTopLeftRadius: 9, - borderBottomLeftRadius: 9, - pl: hovered ? 1 : 0.5, - pr: 0.5, - py: 0.5, - boxShadow: hovered ? c.shadow.md : '-1px 0 5px rgba(0,0,0,0.07)', - transition: - 'gap 0.18s ease, padding 0.18s ease, box-shadow 0.18s ease, background 0.15s', - '&:hover': { bgcolor: c.bg.elevated ?? c.bg.surface }, - }} - > - - { - e.stopPropagation(); - report('panel_dismissed', { from: 'docked_tab' }); - progress.setPanelMode('hidden'); - }} - sx={{ - p: 0.1, - color: c.text.tertiary, - '&:hover': { color: c.text.primary }, - }} - > - - - - - - Finish setup - - - - - - - - - )} - - - ); -}; - -export default OnboardingDockedTab; diff --git a/frontend/src/app/components/Onboarding/OnboardingRoot.tsx b/frontend/src/app/components/Onboarding/OnboardingRoot.tsx index ac309590..a6d25091 100644 --- a/frontend/src/app/components/Onboarding/OnboardingRoot.tsx +++ b/frontend/src/app/components/Onboarding/OnboardingRoot.tsx @@ -17,7 +17,6 @@ import AgenticCursor, { type AgenticCursorHandle } from './ac/AgenticCursor'; import { onboardingDirector } from './OnboardingDirector'; import { STEPS } from './steps'; import OnboardingPanel from './OnboardingPanel'; -import OnboardingDockedTab from './OnboardingDockedTab'; import { onboardingBus } from './eventBus'; import { report } from './telemetry'; @@ -216,7 +215,6 @@ const OnboardingRoot: React.FC = () => { <> - ); }; diff --git a/frontend/src/shared/state/onboardingProgressSlice.ts b/frontend/src/shared/state/onboardingProgressSlice.ts index 7631f42f..6530b496 100644 --- a/frontend/src/shared/state/onboardingProgressSlice.ts +++ b/frontend/src/shared/state/onboardingProgressSlice.ts @@ -5,7 +5,7 @@ import { createSlice, PayloadAction } from '@reduxjs/toolkit'; const STORAGE_KEY = 'openswarm.onboarding.v2'; const SCHEMA_VERSION = 2 as const; -export type PanelMode = 'pill' | 'expanded' | 'roadmap' | 'docked' | 'hidden'; +export type PanelMode = 'pill' | 'expanded' | 'roadmap' | 'hidden'; export interface PerStepState { lastViewedAt: number; @@ -43,7 +43,8 @@ export function loadFromStorage(): OnboardingProgressState | null { startedAt: typeof parsed.startedAt === 'number' ? parsed.startedAt : Date.now(), completedSteps: Array.isArray(parsed.completedSteps) ? parsed.completedSteps : [], currentStepId: typeof parsed.currentStepId === 'string' ? parsed.currentStepId : null, - panelMode: parsed.panelMode ?? 'expanded', + // Old skips parked the tour in the now-removed 'docked' tab; resolve them to hidden. + panelMode: (parsed.panelMode as string) === 'docked' ? 'hidden' : (parsed.panelMode ?? 'expanded'), dismissedAt: typeof parsed.dismissedAt === 'number' ? parsed.dismissedAt : null, perStepState: (parsed.perStepState as Record) ?? {}, running: false,