From 09feddae4a588757517fc4e976b10e6ec9c1f92f Mon Sep 17 00:00:00 2001 From: Lars Date: Thu, 9 Jul 2026 07:53:28 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20Planen/Struktur=20=E2=80=94=20fehlender?= =?UTF-8?q?=20projectPath-Import=20verursachte=20wei=C3=9Fen=20Bildschirm.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Nach Vorhaben-Wahl in Planen crashte ProjectsSection; Ladezustand und Projekt-Löschen ergänzt. Co-authored-by: Cursor --- backend/version.py | 2 +- frontend/src/components/ProjectsSection.jsx | 1 + frontend/src/pages/modes/PlanStructurePage.jsx | 11 ++++++++++- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/backend/version.py b/backend/version.py index eebb605..7ec367d 100644 --- a/backend/version.py +++ b/backend/version.py @@ -1,3 +1,3 @@ -APP_VERSION = "0.16.2-ap1.9a" +APP_VERSION = "0.16.3-ap1.9a" DB_SCHEMA_VERSION = "014" APP_NAME = "jinkendo-kairo" diff --git a/frontend/src/components/ProjectsSection.jsx b/frontend/src/components/ProjectsSection.jsx index 1e287ab..662070a 100644 --- a/frontend/src/components/ProjectsSection.jsx +++ b/frontend/src/components/ProjectsSection.jsx @@ -7,6 +7,7 @@ import { containerKindLabel, } from '../utils/projectTree.js' import { gateTitleById } from './GateSelect.jsx' +import { projectPath } from '../utils/routes.js' function ProjectTreeNodes({ projects, diff --git a/frontend/src/pages/modes/PlanStructurePage.jsx b/frontend/src/pages/modes/PlanStructurePage.jsx index 71ec31f..a7e5f99 100644 --- a/frontend/src/pages/modes/PlanStructurePage.jsx +++ b/frontend/src/pages/modes/PlanStructurePage.jsx @@ -1,9 +1,11 @@ import { RequireInitiativeScope } from '../../components/RequireInitiativeScope.jsx' import { ScopedInitiativeProvider } from '../../layout/ScopedInitiativeProvider.jsx' import { ProjectsSection } from '../../components/ProjectsSection.jsx' +import { LoadingState } from '../../components/LoadingState.jsx' import { useInitiativeOperations } from '../../context/InitiativeOperationsContext.jsx' function PlanStructureInner() { + const ops = useInitiativeOperations() const { initiativeId, projects, @@ -11,8 +13,13 @@ function PlanStructureInner() { selectedProjectId, setSelectedProjectId, capabilities, + loading, error, - } = useInitiativeOperations() + } = ops + + if (loading) { + return + } return ( <> @@ -24,6 +31,8 @@ function PlanStructureInner() { selectedProjectId={selectedProjectId} onSelectProject={setSelectedProjectId} canManage={capabilities.has('kairo.project.manage')} + onDelete={ops.handleDeleteProject} + busy={ops.formBusy} /> )