Fix sidebar project removal

Remove projects through a daemon RPC so the sidebar can delete the project
record after archiving its active workspaces. Reopening a removed directory
recreates the missing project record so local projects keep their derived
basename, and History skips orphaned archived workspace rows.

Fixes #1583.
This commit is contained in:
Mohamed Boudra
2026-06-19 00:46:40 +07:00
parent f876b80f7a
commit 9a09ccb3d6
20 changed files with 736 additions and 29 deletions
+3
View File
@@ -249,6 +249,9 @@ describe("translation resources", () => {
it("includes sidebar and workspace creation keys for the Batch 4C migration", () => {
expect(en.sidebar.workspace.actions.copyPath).toBe("Copy path");
expect(en.sidebar.project.confirmations.removeTitle).toBe("Remove project?");
expect(en.sidebar.project.toasts.updateHostToRemove).toBe(
"Update the host to remove projects.",
);
expect(en.newWorkspace.title).toBe("New workspace");
expect(en.newWorkspace.refPicker.searchPlaceholder).toBe("Search branches and PRs");
expect(en.openProject.tiles.addProject.title).toBe("Add a project");
+1
View File
@@ -787,6 +787,7 @@ export const ar: TranslationResources = {
toasts: {
hostDisconnected: "Host غير متصل",
removeFailed: "فشل في إزالة بعض مساحات العمل",
updateHostToRemove: "قم بتحديث Host لإزالة المشاريع.",
},
empty: {
title: "لا توجد مشاريع حتى الآن",
+1
View File
@@ -794,6 +794,7 @@ export const en = {
toasts: {
hostDisconnected: "Host is not connected",
removeFailed: "Failed to remove some workspaces",
updateHostToRemove: "Update the host to remove projects.",
},
empty: {
title: "No projects yet",
+1
View File
@@ -814,6 +814,7 @@ export const es: TranslationResources = {
toasts: {
hostDisconnected: "Hostno está conectado",
removeFailed: "No se pudieron eliminar algunos espacios de trabajo",
updateHostToRemove: "Actualiza el host para eliminar proyectos.",
},
empty: {
title: "Aún no hay proyectos",
+1
View File
@@ -813,6 +813,7 @@ export const fr: TranslationResources = {
toasts: {
hostDisconnected: "Hostn'est pas connecté",
removeFailed: "Échec de la suppression de certains espaces de travail",
updateHostToRemove: "Mettez à jour le host pour supprimer des projets.",
},
empty: {
title: "Aucun projet pour l'instant",
+1
View File
@@ -806,6 +806,7 @@ export const ru: TranslationResources = {
toasts: {
hostDisconnected: "Host не подключен",
removeFailed: "Не удалось удалить некоторые рабочие области.",
updateHostToRemove: "Обновите host, чтобы удалять проекты.",
},
empty: {
title: "Пока нет проектов",
+1
View File
@@ -779,6 +779,7 @@ export const zhCN: TranslationResources = {
toasts: {
hostDisconnected: "Host 未连接",
removeFailed: "部分 workspace 移除失败",
updateHostToRemove: "更新 host 以移除 projects。",
},
empty: {
title: "还没有 projects",