feat(FN-1862): add completion state tracking for onboarding

- Add markOnboardingCompleted() to set completedAt timestamp when user finishes onboarding
- Add isOnboardingCompleted() to check if onboarding was completed (vs dismissed)
- Update ModelOnboardingModal to call markOnboardingCompleted on successful completion
- Skip onboarding auto-open when already completed locally
- Add completion state tracking tests in ModelOnboardingModal.test.tsx
- Add model-onboarding-state unit tests
- Update useAuthOnboarding to check local completion state before auto-opening
- Document localStorage completion state tracking pattern in .fusion/memory.md
This commit is contained in:
Fusion
2026-04-14 23:44:40 -07:00
committed by gsxdsm
parent 6d685a542b
commit a51e75941c
49 changed files with 572 additions and 196 deletions

View File

@@ -1,4 +1,4 @@
import { useState, useEffect } from "react";
import { useState, useEffect, useCallback } from "react";
import { X, History, Trash2, Filter, RefreshCw, CheckCircle, XCircle, ArrowRight, Plus, Settings, AlertCircle, Loader2, Folder } from "lucide-react";
import { clearActivityLog, type ActivityLogEntry, type ActivityEventType, type ActivityFeedEntry } from "../api";
import { useActivityLog } from "../hooks/useActivityLog";
@@ -81,7 +81,6 @@ export function ActivityLogModal({
onProjectFilterChange,
currentProject,
}: ActivityLogModalProps) {
// tasks parameter reserved for future use when filtering activity by task
const [filteredType, setFilteredType] = useState<ActivityEventType | "all">("all");
const [filteredProjectId, setFilteredProjectId] = useState<string | "all">(projectId || "all");
const [showConfirmClear, setShowConfirmClear] = useState(false);
@@ -137,7 +136,7 @@ export function ActivityLogModal({
await clearActivityLog();
refresh();
setShowConfirmClear(false);
} catch {
} catch (err) {
// Error handled by hook
setShowConfirmClear(false);
}