@@ -228,7 +228,7 @@ function VerticalRow({ items, isLast }: { items: DataListItem[]; isLast: boolean
return (
diff --git a/src/pages/PageGalleryPage.tsx b/src/pages/PageGalleryPage.tsx
index 3d6e1b5..dbb6a52 100644
--- a/src/pages/PageGalleryPage.tsx
+++ b/src/pages/PageGalleryPage.tsx
@@ -2,8 +2,8 @@ import { useState, useEffect, useCallback } from 'react'
import { motion } from 'framer-motion'
import { RiAddLine } from '@remixicon/react'
-/* Auto-discover all flow registrations */
-import.meta.glob('../flows/*/index.ts', { eager: true })
+/* Flow registrations — scoped to caixinha-review for the handoff session. */
+import.meta.glob('../flows/caixinha-review/index.ts', { eager: true })
import AppHeader from '../components/AppHeader'
import PageGalleryCanvas from './gallery/PageGalleryCanvas'
diff --git a/src/pages/PreviewPage.tsx b/src/pages/PreviewPage.tsx
index b8a00b2..94d301f 100644
--- a/src/pages/PreviewPage.tsx
+++ b/src/pages/PreviewPage.tsx
@@ -23,8 +23,8 @@ import {
} from '@remixicon/react'
import { PiPiggyBank, PiPiggyBankFill } from 'react-icons/pi'
-/* Auto-discover all flow registrations */
-import.meta.glob('../flows/*/index.ts', { eager: true })
+/* Flow registrations — scoped to caixinha-review for the handoff session. */
+import.meta.glob('../flows/caixinha-review/index.ts', { eager: true })
import { getFlow, hydrateDynamicFlows } from './simulator/flowRegistry'
import { getFlowGraph } from './simulator/flowGraphStore'
diff --git a/src/pages/SimulatorPage.tsx b/src/pages/SimulatorPage.tsx
index 2c32545..56abada 100644
--- a/src/pages/SimulatorPage.tsx
+++ b/src/pages/SimulatorPage.tsx
@@ -3,8 +3,9 @@ import { useSearchParams } from 'react-router-dom'
import { motion } from 'framer-motion'
import { RiComputerLine, RiGitBranchLine, RiPaintBrushLine, RiAddLine } from '@remixicon/react'
-/* Auto-discover all flow registrations */
-import.meta.glob('../flows/*/index.ts', { eager: true })
+/* Flow registrations — scoped to caixinha-review for the handoff session.
+ * Other flows are intentionally not imported to keep the sidebar focused. */
+import.meta.glob('../flows/caixinha-review/index.ts', { eager: true })
import AppHeader from '../components/AppHeader'
import FlowSidebar from './simulator/FlowSidebar'
@@ -16,7 +17,7 @@ import EditableFlowSlug from './simulator/EditableFlowSlug'
import { migrateHardcodedFlows, migrateStaleScreenPaths } from './simulator/flowMigration'
import { subscribeToGraphChanges } from './simulator/flowGraphStore'
import { subscribeToDynamicFlowChanges, migrateSavingsToEarnDomain } from './simulator/dynamicFlowStore'
-import { seedDefaultGroups, migrateV1Flows, enableUserActions, subscribeToGroupChanges } from './simulator/flowGroupStore'
+import { seedDefaultGroups, migrateV1Flows, cleanupObsoleteEarnGroups, enableUserActions, subscribeToGroupChanges } from './simulator/flowGroupStore'
import { pullFromSupabase, pushAllToSupabase } from '../lib/syncStore'
// Expose push function for console use
@@ -73,6 +74,7 @@ export default function SimulatorPage() {
migrateSavingsToEarnDomain()
hydrateDynamicFlows()
seedDefaultGroups()
+ cleanupObsoleteEarnGroups()
migrateV1Flows()
setVersion((v) => v + 1)
}, [])
diff --git a/src/pages/simulator/flowGroupStore.ts b/src/pages/simulator/flowGroupStore.ts
index fa8585f..5301d5e 100644
--- a/src/pages/simulator/flowGroupStore.ts
+++ b/src/pages/simulator/flowGroupStore.ts
@@ -565,12 +565,6 @@ export function seedDefaultGroups(_allFlows?: unknown): void {
const seeds: { domain: string; group: string; flowIds: string[] }[] = [
{ domain: 'cards', group: 'Card Detail', flowIds: ['card-info', 'edit-daily-limits', 'rename-virtual-card', 'remove-virtual-card', 'report-card-loss', 'apple-pay-setup'] },
{ domain: 'cards', group: 'Card Actions', flowIds: ['create-virtual-card', 'update-phone'] },
- { domain: 'earn', group: 'Caixinha Dólar', flowIds: ['caixinha-dolar', 'caixinha-deposit', 'caixinha-withdraw'] },
- { domain: 'earn', group: 'Yields 2', flowIds: ['yields2', 'yields2-deposit', 'yields2-withdraw'] },
- { domain: 'earn', group: 'Yields 3', flowIds: ['yields3', 'yields3-deposit', 'yields3-withdraw'] },
- { domain: 'earn', group: 'Yields 4', flowIds: ['yields4', 'yields4-deposit', 'yields4-withdraw'] },
- { domain: 'earn', group: 'Yields 5', flowIds: ['yields5', 'yields5-deposit', 'yields5-withdraw'] },
- { domain: 'earn', group: 'Reviewed', flowIds: ['caixinha-create', 'caixinha-manage', 'caixinha-deposit-reviewed', 'caixinha-withdraw-reviewed'] },
{ domain: 'add-funds', group: 'ACH Deposit', flowIds: ['deposit-ach', 'noah-registration'] },
]
@@ -603,6 +597,39 @@ export function seedDefaultGroups(_allFlows?: unknown): void {
writeState(state)
}
+// ── Cleanup: remove obsolete seeded earn groups from existing state ──
+
+const OBSOLETE_EARN_GROUPS_CLEANUP_KEY = 'picnic-design-lab:cleanup-obsolete-earn-groups'
+const OBSOLETE_EARN_GROUP_NAMES = new Set([
+ 'Caixinha Dólar',
+ 'Yields 2',
+ 'Yields 3',
+ 'Yields 4',
+ 'Yields 5',
+ 'Reviewed',
+])
+
+export function cleanupObsoleteEarnGroups(): void {
+ if (localStorage.getItem(OBSOLETE_EARN_GROUPS_CLEANUP_KEY)) return
+
+ const state = readState()
+ let changed = false
+
+ for (const [id, group] of Object.entries(state.groups)) {
+ if (group.domainId !== 'earn' || !OBSOLETE_EARN_GROUP_NAMES.has(group.name)) continue
+
+ const hasFlows = Object.values(state.memberships).some((m) => m.groupId === id)
+ if (hasFlows) continue
+
+ delete state.groups[id]
+ delete state.archivedGroups[id]
+ changed = true
+ }
+
+ if (changed) writeState(state)
+ localStorage.setItem(OBSOLETE_EARN_GROUPS_CLEANUP_KEY, '1')
+}
+
// ── vs1.0 Migration ──
const V1_MIGRATION_KEY = 'picnic-design-lab:v1-migration-done'