@@ -864,6 +864,10 @@ export function PersonalWorkspacePage({
864864 const [ lifecycleBusyGoalIds , setLifecycleBusyGoalIds ] = useState < ReadonlySet < string > > ( ( ) => new Set ( ) ) ;
865865 const [ quickCompletingTodoIds , setQuickCompletingTodoIds ] = useState < ReadonlySet < string > > ( ( ) => new Set ( ) ) ;
866866 const [ refreshState , setRefreshState ] = useState < "idle" | "loading" | "done" | "error" > ( "idle" ) ;
867+ const refreshResetTimer = useRef < number | null > ( null ) ;
868+ useEffect ( ( ) => ( ) => {
869+ if ( refreshResetTimer . current !== null ) window . clearTimeout ( refreshResetTimer . current ) ;
870+ } , [ ] ) ;
867871 const [ historyRefreshRevision , setHistoryRefreshRevision ] = useState ( 0 ) ;
868872 const [ sessionProposalIds , setSessionProposalIds ] = useState < string [ ] > ( [ ] ) ;
869873 const [ managerChannelProposalIds , setManagerChannelProposalIds ] = useState < string [ ] > ( [ ] ) ;
@@ -1928,6 +1932,10 @@ export function PersonalWorkspacePage({
19281932
19291933 async function refreshWorkspace ( ) {
19301934 if ( ! callbacks . onRefresh || refreshState === "loading" ) return ;
1935+ if ( refreshResetTimer . current !== null ) {
1936+ window . clearTimeout ( refreshResetTimer . current ) ;
1937+ refreshResetTimer . current = null ;
1938+ }
19311939 setRefreshState ( "loading" ) ;
19321940 try {
19331941 await callbacks . onRefresh ( ) ;
@@ -1936,7 +1944,10 @@ export function PersonalWorkspacePage({
19361944 } catch {
19371945 setRefreshState ( "error" ) ;
19381946 }
1939- window . setTimeout ( ( ) => setRefreshState ( "idle" ) , 1800 ) ;
1947+ refreshResetTimer . current = window . setTimeout ( ( ) => {
1948+ refreshResetTimer . current = null ;
1949+ setRefreshState ( "idle" ) ;
1950+ } , 1800 ) ;
19401951 }
19411952
19421953 const settingsPage = settingsOpen ? (
0 commit comments