From 2083888738f0befa7947f8e3894b3d421a42cd59 Mon Sep 17 00:00:00 2001 From: Dotta Date: Mon, 13 Apr 2026 10:37:31 -0500 Subject: [PATCH] Fix inbox workspace grouping refresh persistence --- ui/src/lib/inbox.test.ts | 11 +++++++++++ ui/src/lib/inbox.ts | 8 ++++++++ ui/src/pages/Inbox.tsx | 6 ++++-- 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/ui/src/lib/inbox.test.ts b/ui/src/lib/inbox.test.ts index 70ecf497963..8759d914761 100644 --- a/ui/src/lib/inbox.test.ts +++ b/ui/src/lib/inbox.test.ts @@ -43,6 +43,7 @@ import { saveInboxIssueColumns, saveInboxWorkItemGroupBy, saveLastInboxTab, + shouldResetInboxWorkspaceGrouping, shouldShowInboxSection, type InboxWorkItem, } from "./inbox"; @@ -1079,4 +1080,14 @@ describe("inbox helpers", () => { saveInboxWorkItemGroupBy("workspace"); expect(loadInboxWorkItemGroupBy()).toBe("workspace"); }); + + it("does not reset workspace grouping before experimental settings have loaded", () => { + expect(shouldResetInboxWorkspaceGrouping("workspace", false, false)).toBe(false); + }); + + it("resets workspace grouping only when settings are loaded and workspace grouping is unavailable", () => { + expect(shouldResetInboxWorkspaceGrouping("workspace", false, true)).toBe(true); + expect(shouldResetInboxWorkspaceGrouping("workspace", true, true)).toBe(false); + expect(shouldResetInboxWorkspaceGrouping("none", false, true)).toBe(false); + }); }); diff --git a/ui/src/lib/inbox.ts b/ui/src/lib/inbox.ts index abfe2c7db5e..9f1373990b5 100644 --- a/ui/src/lib/inbox.ts +++ b/ui/src/lib/inbox.ts @@ -321,6 +321,14 @@ export function saveInboxWorkItemGroupBy(groupBy: InboxWorkItemGroupBy) { } } +export function shouldResetInboxWorkspaceGrouping( + groupBy: InboxWorkItemGroupBy, + isolatedWorkspacesEnabled: boolean, + experimentalSettingsLoaded: boolean, +): boolean { + return experimentalSettingsLoaded && groupBy === "workspace" && !isolatedWorkspacesEnabled; +} + export function shouldIncludeRoutineExecutionIssue( issue: Pick, showRoutineExecutions: boolean, diff --git a/ui/src/pages/Inbox.tsx b/ui/src/pages/Inbox.tsx index 3e8362e708a..e9f0ec8d6e4 100644 --- a/ui/src/pages/Inbox.tsx +++ b/ui/src/pages/Inbox.tsx @@ -116,6 +116,7 @@ import { loadInboxWorkItemGroupBy, normalizeInboxIssueColumns, resolveInboxNestingEnabled, + shouldResetInboxWorkspaceGrouping, resolveIssueWorkspaceName, resolveInboxSelectionIndex, saveInboxFilterPreferences, @@ -649,6 +650,7 @@ export function Inbox() { queryFn: () => instanceSettingsApi.getExperimental(), retry: false, }); + const experimentalSettingsLoaded = experimentalSettings !== undefined; const [searchQuery, setSearchQuery] = useState(""); const normalizedSearchQuery = searchQuery.trim(); const [filterPreferences, setFilterPreferences] = useState( @@ -1093,10 +1095,10 @@ export function Inbox() { const [nestingPreferenceEnabled, setNestingPreferenceEnabled] = useState(() => loadInboxNesting()); const nestingEnabled = resolveInboxNestingEnabled(nestingPreferenceEnabled, isMobile); useEffect(() => { - if (isolatedWorkspacesEnabled || groupBy !== "workspace") return; + if (!shouldResetInboxWorkspaceGrouping(groupBy, isolatedWorkspacesEnabled, experimentalSettingsLoaded)) return; setGroupBy("none"); saveInboxWorkItemGroupBy("none"); - }, [groupBy, isolatedWorkspacesEnabled]); + }, [experimentalSettingsLoaded, groupBy, isolatedWorkspacesEnabled]); const toggleNesting = useCallback(() => { setNestingPreferenceEnabled((prev) => { const next = !prev;