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} /> )