diff --git a/components/backlog/pbi-list.tsx b/components/backlog/pbi-list.tsx index 538dcaa..9586fd8 100644 --- a/components/backlog/pbi-list.tsx +++ b/components/backlog/pbi-list.tsx @@ -190,8 +190,18 @@ function SortablePbiRow({ export function PbiList({ productId, pbis, isDemo }: PbiListProps) { const { selectedPbiId, selectPbi } = useSelectionStore() const { pbiOrder, pbiPriority, initPbis, reorderPbis, rollbackPbis, updatePbiPriority } = usePlannerStore() - const [filterPriority, setFilterPriority] = useState('all') - const [filterStatus, setFilterStatus] = useState('all') + const [filterPriority, setFilterPriority] = useState(() => { + if (typeof window === 'undefined') return 'all' + const saved = localStorage.getItem('scrum4me:pbi_filter_priority') + if (!saved || saved === 'all') return 'all' + const n = parseInt(saved, 10) + return Number.isInteger(n) && n >= 1 && n <= 4 ? n : 'all' + }) + const [filterStatus, setFilterStatus] = useState(() => { + if (typeof window === 'undefined') return 'all' + const saved = localStorage.getItem('scrum4me:pbi_filter_status') + return saved === 'ready' || saved === 'blocked' || saved === 'done' ? saved : 'all' + }) const [sortMode, setSortMode] = useState(() => { const saved = typeof window !== 'undefined' ? localStorage.getItem('scrum4me:pbi_sort') : null return (saved === 'priority' || saved === 'code' || saved === 'date') ? saved : 'priority' @@ -201,6 +211,8 @@ export function PbiList({ productId, pbis, isDemo }: PbiListProps) { const [, startTransition] = useTransition() useEffect(() => { localStorage.setItem('scrum4me:pbi_sort', sortMode) }, [sortMode]) + useEffect(() => { localStorage.setItem('scrum4me:pbi_filter_priority', String(filterPriority)) }, [filterPriority]) + useEffect(() => { localStorage.setItem('scrum4me:pbi_filter_status', filterStatus) }, [filterStatus]) // Sync server data into store — use stable string dep to avoid infinite loop const pbiIdKey = pbis.map(p => p.id).join(',')