# Sprint 5 — Etapa 4F: Fix definitivo save de perfil + ETAPA_4E_PROMPT pendiente ## Contexto InQ ROI — React 18 + Vite + TypeScript + TanStack Router + Zustand + shadcn/ui + Supabase v2.106.2. Esta etapa resuelve DOS issues simultáneos: 1. **Save de perfil produce "sin llamadas de red + sin mensajes en consola"** al hacer click en Guardar 2. **Los Cambios 1-4 del ETAPA_4E_PROMPT.md nunca fueron aplicados al código** — solo se commitió el archivo del prompt --- ## Estado actual del código (ya verificado — no requiere re-lectura inicial) - `src/components/ProfileSheet.tsx`: ya usa `fetch()` nativo con token de localStorage. ✅ NO tocar este archivo salvo el Cambio 3 de abajo. - `src/lib/supabase.ts`: `getSessionSafe()` sigue presente, `lockAcquireTimeout` NO configurado. ❌ - `src/store/library-store.ts`: sigue con `await getSessionSafe()`. ❌ - `src/store/process-store.ts`: sigue con `await getSessionSafe()` (2 ocurrencias). ❌ - `src/features/report/useReportData.ts`: sigue con `await getSessionSafe()`. ❌ --- ## Causa raíz: botón deshabilitado por `name.trim() === ''` ### Diagnóstico `ProfileSheet.tsx` tiene: ```tsx