From 40ac2ec67b56d93162c9072223ce268ee7aaaf4b Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 3 Nov 2025 22:30:17 +0000 Subject: [PATCH 1/7] Initial plan From ce2b2cb814b487d7b4d8ca07decf2f933eb1f143 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 3 Nov 2025 22:41:58 +0000 Subject: [PATCH 2/7] Fix project dropdown not updating after creating new project Co-authored-by: stnguyen90 <1477010+stnguyen90@users.noreply.github.com> --- src/lib/components/breadcrumbs.svelte | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/lib/components/breadcrumbs.svelte b/src/lib/components/breadcrumbs.svelte index 6a7fe48784..dfae9326f4 100644 --- a/src/lib/components/breadcrumbs.svelte +++ b/src/lib/components/breadcrumbs.svelte @@ -244,7 +244,8 @@ $: shouldReloadProjects = isLoadingProjects ? false : currentProject && loadedProjects.projects.length - ? loadedProjects.projects[0].teamId != currentProject.teamId + ? loadedProjects.projects[0].teamId != currentProject.teamId || + !loadedProjects.projects.some((p) => p.$id === currentProject.$id) : !loadedProjects.projects.length; $: if (shouldReloadProjects) { From 2260b20c18ae2f27652ddc78de94ad6497782b1d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 21 Nov 2025 18:12:59 +0000 Subject: [PATCH 3/7] Ensure dropdown refreshes after project deletion Co-authored-by: stnguyen90 <1477010+stnguyen90@users.noreply.github.com> --- src/lib/components/breadcrumbs.svelte | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/lib/components/breadcrumbs.svelte b/src/lib/components/breadcrumbs.svelte index dfae9326f4..3dd73c7d0a 100644 --- a/src/lib/components/breadcrumbs.svelte +++ b/src/lib/components/breadcrumbs.svelte @@ -74,6 +74,7 @@ let isLoadingProjects = false; let loadedProjects: Models.ProjectList = { total: 0, projects: [] }; + let wasOnProjectPage = false; export let organizations: Organization[] = []; export let currentProject: Models.Project | null = null; @@ -241,6 +242,21 @@ $: organizationId = currentProject?.teamId; + // Track navigation to/from project pages to detect when cache might be stale + $: { + const isOnProjectPage = !!currentProject; + if (!isOnProjectPage && wasOnProjectPage) { + // Navigated away from a project page - mark cache as potentially stale + wasOnProjectPage = false; + } else if (isOnProjectPage && !wasOnProjectPage && loadedProjects.projects.length > 0) { + // Navigated back to a project page - invalidate cache + loadedProjects = { total: 0, projects: [] }; + wasOnProjectPage = true; + } else if (isOnProjectPage) { + wasOnProjectPage = true; + } + } + $: shouldReloadProjects = isLoadingProjects ? false : currentProject && loadedProjects.projects.length From c35a9d6c0c6ae13081730b665d7e27b4ea36817e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 21 Nov 2025 18:16:11 +0000 Subject: [PATCH 4/7] Simplify navigation tracking logic for better readability Co-authored-by: stnguyen90 <1477010+stnguyen90@users.noreply.github.com> --- src/lib/components/breadcrumbs.svelte | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/lib/components/breadcrumbs.svelte b/src/lib/components/breadcrumbs.svelte index 3dd73c7d0a..e405739435 100644 --- a/src/lib/components/breadcrumbs.svelte +++ b/src/lib/components/breadcrumbs.svelte @@ -242,19 +242,19 @@ $: organizationId = currentProject?.teamId; - // Track navigation to/from project pages to detect when cache might be stale + // Invalidate cache when navigating from non-project page back to project page + // This handles cases like project deletion where user is redirected to org page $: { const isOnProjectPage = !!currentProject; - if (!isOnProjectPage && wasOnProjectPage) { - // Navigated away from a project page - mark cache as potentially stale - wasOnProjectPage = false; - } else if (isOnProjectPage && !wasOnProjectPage && loadedProjects.projects.length > 0) { - // Navigated back to a project page - invalidate cache + const hasNavigatedBackToProjects = + isOnProjectPage && !wasOnProjectPage && loadedProjects.projects.length > 0; + + if (hasNavigatedBackToProjects) { + // Clear cache to force reload after being away from project pages loadedProjects = { total: 0, projects: [] }; - wasOnProjectPage = true; - } else if (isOnProjectPage) { - wasOnProjectPage = true; } + + wasOnProjectPage = isOnProjectPage; } $: shouldReloadProjects = isLoadingProjects From ba2dc94d28d69e6ff928630ba65fec69f1495cc9 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 21 Nov 2025 18:17:52 +0000 Subject: [PATCH 5/7] Add clarifying comment for team ID check Co-authored-by: stnguyen90 <1477010+stnguyen90@users.noreply.github.com> --- src/lib/components/breadcrumbs.svelte | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/lib/components/breadcrumbs.svelte b/src/lib/components/breadcrumbs.svelte index e405739435..5a61a5fd84 100644 --- a/src/lib/components/breadcrumbs.svelte +++ b/src/lib/components/breadcrumbs.svelte @@ -260,7 +260,8 @@ $: shouldReloadProjects = isLoadingProjects ? false : currentProject && loadedProjects.projects.length - ? loadedProjects.projects[0].teamId != currentProject.teamId || + ? // All projects in cache belong to same org, so check first project's teamId + loadedProjects.projects[0].teamId != currentProject.teamId || !loadedProjects.projects.some((p) => p.$id === currentProject.$id) : !loadedProjects.projects.length; From 2c721bf1fce013099f6ff99ca2bdc6a48afb11e8 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 21 Nov 2025 22:36:02 +0000 Subject: [PATCH 6/7] Simplify dropdown refresh logic using allProjectsCount Co-authored-by: stnguyen90 <1477010+stnguyen90@users.noreply.github.com> --- src/lib/components/breadcrumbs.svelte | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/lib/components/breadcrumbs.svelte b/src/lib/components/breadcrumbs.svelte index 5a61a5fd84..f54948ba27 100644 --- a/src/lib/components/breadcrumbs.svelte +++ b/src/lib/components/breadcrumbs.svelte @@ -74,7 +74,6 @@ let isLoadingProjects = false; let loadedProjects: Models.ProjectList = { total: 0, projects: [] }; - let wasOnProjectPage = false; export let organizations: Organization[] = []; export let currentProject: Models.Project | null = null; @@ -242,27 +241,15 @@ $: organizationId = currentProject?.teamId; - // Invalidate cache when navigating from non-project page back to project page - // This handles cases like project deletion where user is redirected to org page - $: { - const isOnProjectPage = !!currentProject; - const hasNavigatedBackToProjects = - isOnProjectPage && !wasOnProjectPage && loadedProjects.projects.length > 0; - - if (hasNavigatedBackToProjects) { - // Clear cache to force reload after being away from project pages - loadedProjects = { total: 0, projects: [] }; - } - - wasOnProjectPage = isOnProjectPage; - } - $: shouldReloadProjects = isLoadingProjects ? false : currentProject && loadedProjects.projects.length ? // All projects in cache belong to same org, so check first project's teamId loadedProjects.projects[0].teamId != currentProject.teamId || - !loadedProjects.projects.some((p) => p.$id === currentProject.$id) + !loadedProjects.projects.some((p) => p.$id === currentProject.$id) || + // Reload if total project count changed (handles creation/deletion) + (page.data?.allProjectsCount !== undefined && + loadedProjects.total !== page.data.allProjectsCount) : !loadedProjects.projects.length; $: if (shouldReloadProjects) { From a2dfa1fa93130b1f7e96eb0245fc5d09b78fc1c8 Mon Sep 17 00:00:00 2001 From: Steven Nguyen Date: Fri, 21 Nov 2025 18:01:35 -0800 Subject: [PATCH 7/7] fix: project breadcrumbs reload logic Ensure the project dropdown reloads correctly when creating/deleting projects. --- src/lib/components/breadcrumbs.svelte | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/lib/components/breadcrumbs.svelte b/src/lib/components/breadcrumbs.svelte index f54948ba27..fe0bc8e34b 100644 --- a/src/lib/components/breadcrumbs.svelte +++ b/src/lib/components/breadcrumbs.svelte @@ -241,13 +241,17 @@ $: organizationId = currentProject?.teamId; + // Should reload if + // 1. Not loading and + // 2. There is a current project and loaded projects + // a. Team ID mismatch + // b. Total project count mismatch + // 3. No loaded projects $: shouldReloadProjects = isLoadingProjects ? false : currentProject && loadedProjects.projects.length ? // All projects in cache belong to same org, so check first project's teamId loadedProjects.projects[0].teamId != currentProject.teamId || - !loadedProjects.projects.some((p) => p.$id === currentProject.$id) || - // Reload if total project count changed (handles creation/deletion) (page.data?.allProjectsCount !== undefined && loadedProjects.total !== page.data.allProjectsCount) : !loadedProjects.projects.length;