import { useRef, useReducer } from 'react' export interface UndoEntry { label: string undo: () => Promise | void } export function usePlannerHistory(maxEntries = 30) { const historyRef = useRef([]) const [, forceUpdate] = useReducer((x: number) => x + 1, 0) const pushUndo = (label: string, undoFn: () => Promise | void) => { historyRef.current = [{ label, undo: undoFn }, ...historyRef.current].slice(0, maxEntries) forceUpdate() } const undo = async () => { if (historyRef.current.length === 0) return const [first, ...rest] = historyRef.current historyRef.current = rest forceUpdate() try { await first.undo() } catch (e) { console.error('Undo failed:', e) } } const canUndo = historyRef.current.length > 0 const lastActionLabel = historyRef.current[0]?.label ?? null return { pushUndo, undo, canUndo, lastActionLabel } }