diff --git a/frontend/src/components/home/Navigation.vue b/frontend/src/components/home/Navigation.vue
index 4d3259f95..aedbaae33 100644
--- a/frontend/src/components/home/Navigation.vue
+++ b/frontend/src/components/home/Navigation.vue
@@ -84,7 +84,7 @@
class="menu"
>
diff --git a/frontend/src/components/home/ProjectsNavigationItem.vue b/frontend/src/components/home/ProjectsNavigationItem.vue
index 532425688..3e9b9688f 100644
--- a/frontend/src/components/home/ProjectsNavigationItem.vue
+++ b/frontend/src/components/home/ProjectsNavigationItem.vue
@@ -52,7 +52,7 @@
{
.filter(p => !p.isArchived)
.sort((a, b) => a.position - b.position)
})
+
+const canToggleFavorite = computed(() => {
+ // Allow favorite toggle for:
+ // 1. Regular projects (id > 0) with write permission
+ // 2. Saved filters (id < -1) - user owns their own filters
+ if (props.project.id === -1) return false // Favorites pseudo-project
+ if (props.project.id > 0) {
+ return props.project.maxPermission !== null && props.project.maxPermission > PERMISSIONS.READ
+ }
+ // Saved filters (negative IDs except -1)
+ return isSavedFilter(props.project)
+})