Skip to content

feat(FR-2696): create project admin data page#6962

Open
ironAiken2 wants to merge 1 commit into04-23-feat_fr-2691_relocate__data_header_panels_dashboard_host-capacity_cellfrom
04-24-feat_fr-2696_create_project_admin_data_page
Open

feat(FR-2696): create project admin data page#6962
ironAiken2 wants to merge 1 commit into04-23-feat_fr-2691_relocate__data_header_panels_dashboard_host-capacity_cellfrom
04-24-feat_fr-2696_create_project_admin_data_page

Conversation

@ironAiken2
Copy link
Copy Markdown
Contributor

@ironAiken2 ironAiken2 commented Apr 24, 2026

Resolves #6956 (FR-2696)

Summary

Adds a new Project Admin Data page at /project-data for project admins to manage project-owned virtual folders, and lays down the V2 (Strawberry VFolder) component foundation required for the follow-up page migrations in FR-2573.

Changes

New page — /project-data

  • ProjectAdminDataPage.tsx — V2-backed listing using the new projectVfolders Strawberry query, with search/filter/sort, active/trash tabs with live counts, and a project-scoped creation flow.
  • useWebUIMenuItems + routes.tsx — registers the project-data menu item (admin scope) and a lazy-loaded route.

Project-scoped folder creation

  • FolderCreateModalV2 — adds folderType='project' variant, shared-banner support, and a new project-only mutation path (createVFolderInProject) that maps form values to the VFolderUsageMode / VFolderMountPermission enums.
  • schema.graphql — adds CreateVFolderInScopeInput input and createVFolderInProject mutation.
  • Adds data.folders.ProjectFolderAlertMessage i18n key for the modal's warning banner (22 locales).

V2 fragment foundation (for FR-2573 follow-ups)

  • Migrated to V2 VFolder fragment: VFolderNodesV2, DeleteVFolderModalV2, DeleteForeverVFolderModalV2, RestoreVFolderModalV2 — swapped legacy name/permission paths to metadata.name / accessControl.permission.
  • New V2 sub-components: VFolderNodeIdenticonV2, VFolderPermissionCellV2, SharedFolderPermissionInfoModalV2, BAIVFolderDeleteButtonV2.

Temporary V1 compatibility

  • VFolderNodeListPage and AdminVFolderNodeListPage are temporarily switched back to the non-V2 VFolderNodes / modals so this PR stays compile-isolated. The page-level V2 migration (myVfolders / adminVfoldersV2) lands in the FR-2573 follow-up stacked on top of this PR.

Checklist

  • Documentation
  • Minimum required manager version — manager must expose projectVfolders + createVFolderInProject (RBAC VFOLDER_ADMIN)
  • Specific setting for review — log in as a project admin (not super/domain admin) to see the /project-data menu
  • Minimum requirements to check during review — create/delete/restore/permanent-delete a project folder; verify Active/Trash counts update
  • Test case(s) — manual: create → move to trash → restore → permanent delete flow on /project-data

Copy link
Copy Markdown
Contributor Author

ironAiken2 commented Apr 24, 2026

Warning

This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more


How to use the Graphite Merge Queue

Add either label to this PR to merge it via the merge queue:

  • flow:merge-queue - adds this PR to the back of the merge queue
  • flow:hotfix - for urgent changes, fast-track this PR to the front of the merge queue

You must have a Graphite account in order to use the merge queue. Sign up using this link.

An organization admin has required the Graphite Merge Queue in this repository.

Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue.

This stack of pull requests is managed by Graphite. Learn more about stacking.

@ironAiken2 ironAiken2 marked this pull request as ready for review April 24, 2026 04:03
@ironAiken2 ironAiken2 requested review from agatha197, Copilot, nowgnuesLee and yomybaby and removed request for Copilot April 24, 2026 04:03
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 24, 2026

Coverage report for ./packages/backend.ai-ui

St.
Category Percentage Covered / Total
🟢 Statements 81.87% 429/524
🟡 Branches 70.43% 362/514
🟡 Functions 76.86% 93/121
🟢 Lines 83.19% 391/470

Test suite run success

319 tests passing in 13 suites.

Report generated by 🧪jest coverage report action from fd60446

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 24, 2026

Coverage report for ./react

St.
Category Percentage Covered / Total
🔴 Statements
8.79% (-0.05% 🔻)
1857/21120
🔴 Branches
8% (-0.03% 🔻)
1187/14830
🔴 Functions
5.15% (-0.03% 🔻)
295/5730
🔴 Lines
8.53% (-0.05% 🔻)
1749/20495
Show new covered files 🐣
St.
File Statements Branches Functions Lines
🔴
... / ProjectAdminDataPage.tsx
0% 0% 0% 0%
🔴
... / SharedFolderPermissionInfoModalV2.tsx
0% 0% 0% 0%
🔴
... / VFolderNodeIdenticonV2.tsx
0% 100% 0% 0%
🔴
... / VFolderPermissionCellV2.tsx
0% 0% 0% 0%

Test suite run success

865 tests passing in 40 suites.

Report generated by 🧪jest coverage report action from fd60446

Copy link
Copy Markdown
Contributor

@agatha197 agatha197 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please update pr description

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Introduces a new Project Admin Data page/route in the WebUI to manage project-owned virtual folders, alongside ongoing VFolder “V2” (Strawberry) integration work (new fragments/components and a new project-scoped creation mutation).

Changes:

  • Added /project-data route + menu entry, and implemented ProjectAdminDataPage (V2-backed vfolder listing/actions + project-folder creation flow).
  • Updated VFolder listing pages to use the non-V2 components/modals (and adjusted fragment spreads accordingly).
  • Extended GraphQL schema/client to support creating project-owned vfolders via a new createVFolderInProject mutation and supporting input type; added supporting V2 UI fragments/components.

Reviewed changes

Copilot reviewed 37 out of 37 changed files in this pull request and generated 8 comments.

Show a summary per file
File Description
resources/i18n/de.json Adds localized alert message for the Project Admin Data page folder-create modal.
resources/i18n/el.json Adds localized alert message for the Project Admin Data page folder-create modal.
resources/i18n/en.json Adds localized alert message for the Project Admin Data page folder-create modal.
resources/i18n/es.json Adds localized alert message for the Project Admin Data page folder-create modal.
resources/i18n/fi.json Adds localized alert message for the Project Admin Data page folder-create modal.
resources/i18n/fr.json Adds localized alert message for the Project Admin Data page folder-create modal.
resources/i18n/id.json Adds localized alert message for the Project Admin Data page folder-create modal.
resources/i18n/it.json Adds localized alert message for the Project Admin Data page folder-create modal.
resources/i18n/ja.json Adds localized alert message for the Project Admin Data page folder-create modal.
resources/i18n/ko.json Adds localized alert message for the Project Admin Data page folder-create modal.
resources/i18n/mn.json Adds localized alert message for the Project Admin Data page folder-create modal.
resources/i18n/ms.json Adds localized alert message for the Project Admin Data page folder-create modal.
resources/i18n/pl.json Adds localized alert message for the Project Admin Data page folder-create modal.
resources/i18n/pt-BR.json Adds localized alert message for the Project Admin Data page folder-create modal.
resources/i18n/pt.json Adds localized alert message for the Project Admin Data page folder-create modal.
resources/i18n/ru.json Adds localized alert message for the Project Admin Data page folder-create modal.
resources/i18n/th.json Adds localized alert message for the Project Admin Data page folder-create modal.
resources/i18n/tr.json Adds localized alert message for the Project Admin Data page folder-create modal.
resources/i18n/vi.json Adds localized alert message for the Project Admin Data page folder-create modal.
resources/i18n/zh-CN.json Adds localized alert message for the Project Admin Data page folder-create modal.
resources/i18n/zh-TW.json Adds localized alert message for the Project Admin Data page folder-create modal.
react/src/routes.tsx Registers new lazy-loaded ProjectAdminDataPage route at /project-data.
react/src/pages/VFolderNodeListPage.tsx Switches back to non-V2 vfolder nodes/modals and adjusts fragment spreads/UI actions accordingly.
react/src/pages/AdminVFolderNodeListPage.tsx Switches back to non-V2 vfolder nodes/modals and adjusts fragment spreads/UI actions accordingly.
react/src/pages/ProjectAdminDataPage.tsx New page: V2 project vfolder listing with filters, actions, and project-folder creation modal with alert banner.
react/src/hooks/useWebUIMenuItems.tsx Adds “project-data” to menu key sets and injects /project-data menu item under admin operations.
react/src/components/VFolderNodesV2.tsx Migrates VFolderNodesV2 fragment/columns to V2 VFolder shape and adds new V2 helper components/modals.
react/src/components/VFolderPermissionCellV2.tsx New V2 mount-permission cell based on VFolder.accessControl.permission.
react/src/components/VFolderNodeIdenticonV2.tsx New V2 identicon renderer for VFolder IDs.
react/src/components/SharedFolderPermissionInfoModalV2.tsx New V2 shared-folder permission info modal for VFolder.
react/src/components/RestoreVFolderModalV2.tsx Updates fragment fields from legacy name to V2 metadata.name.
react/src/components/FolderCreateModalV2.tsx Adds project-scoped creation flow + folderType="project" variant + alert banner support.
react/src/components/DeleteVFolderModalV2.tsx Updates fragment fields from legacy name to V2 metadata.name and removes legacy permission filtering.
react/src/components/DeleteForeverVFolderModalV2.tsx Updates fragment fields from legacy name to V2 metadata.name.
packages/backend.ai-ui/src/components/fragments/index.ts Re-exports new BAIVFolderDeleteButtonV2.
packages/backend.ai-ui/src/components/fragments/BAIVFolderDeleteButtonV2.tsx New delete button fragment/component for V2 VFolder.
data/schema.graphql Adds CreateVFolderInScopeInput and createVFolderInProject mutation; adds RBAC enum value.

Comment thread react/src/components/VFolderNodesV2.tsx
Comment thread react/src/components/VFolderNodesV2.tsx
Comment thread react/src/pages/ProjectAdminDataPage.tsx
Comment thread react/src/components/FolderCreateModalV2.tsx Outdated
Comment thread react/src/components/FolderCreateModalV2.tsx Outdated
Comment thread react/src/pages/ProjectAdminDataPage.tsx Outdated
Comment thread react/src/pages/ProjectAdminDataPage.tsx Outdated
Comment thread react/src/components/VFolderNodeIdenticonV2.tsx Outdated
@ironAiken2 ironAiken2 force-pushed the 04-23-feat_fr-2691_relocate__data_header_panels_dashboard_host-capacity_cell branch from 5ac60d3 to f6610e9 Compare April 24, 2026 04:45
@ironAiken2 ironAiken2 force-pushed the 04-24-feat_fr-2696_create_project_admin_data_page branch from bcfe011 to 84a12e2 Compare April 24, 2026 04:45
@ironAiken2 ironAiken2 force-pushed the 04-23-feat_fr-2691_relocate__data_header_panels_dashboard_host-capacity_cell branch from f6610e9 to 824d4b3 Compare April 24, 2026 06:02
@ironAiken2 ironAiken2 force-pushed the 04-24-feat_fr-2696_create_project_admin_data_page branch 2 times, most recently from 0c2b58e to b7d1711 Compare April 24, 2026 06:29
@ironAiken2 ironAiken2 force-pushed the 04-23-feat_fr-2691_relocate__data_header_panels_dashboard_host-capacity_cell branch from 824d4b3 to 058f802 Compare April 24, 2026 06:29
@ironAiken2 ironAiken2 force-pushed the 04-24-feat_fr-2696_create_project_admin_data_page branch from b7d1711 to a0d3a93 Compare April 24, 2026 06:36
@ironAiken2 ironAiken2 requested a review from agatha197 April 24, 2026 06:37
@ironAiken2 ironAiken2 force-pushed the 04-23-feat_fr-2691_relocate__data_header_panels_dashboard_host-capacity_cell branch from 058f802 to 9c45759 Compare April 27, 2026 02:42
@ironAiken2 ironAiken2 force-pushed the 04-24-feat_fr-2696_create_project_admin_data_page branch 2 times, most recently from 87a3ba7 to 19f1bad Compare April 27, 2026 04:19
@ironAiken2 ironAiken2 force-pushed the 04-23-feat_fr-2691_relocate__data_header_panels_dashboard_host-capacity_cell branch 2 times, most recently from 0f3fbf4 to c84cd7c Compare April 27, 2026 05:43
@ironAiken2 ironAiken2 force-pushed the 04-24-feat_fr-2696_create_project_admin_data_page branch 2 times, most recently from b9895f4 to c06993e Compare April 27, 2026 06:57
@ironAiken2 ironAiken2 force-pushed the 04-23-feat_fr-2691_relocate__data_header_panels_dashboard_host-capacity_cell branch 2 times, most recently from 91a0feb to 025ecbb Compare April 27, 2026 08:55
@ironAiken2 ironAiken2 force-pushed the 04-24-feat_fr-2696_create_project_admin_data_page branch from c06993e to 0162303 Compare April 27, 2026 08:55
@ironAiken2 ironAiken2 force-pushed the 04-23-feat_fr-2691_relocate__data_header_panels_dashboard_host-capacity_cell branch from 025ecbb to dabf732 Compare April 27, 2026 10:00
@ironAiken2 ironAiken2 force-pushed the 04-24-feat_fr-2696_create_project_admin_data_page branch from 0162303 to 0381546 Compare April 27, 2026 10:00
@ironAiken2 ironAiken2 force-pushed the 04-23-feat_fr-2691_relocate__data_header_panels_dashboard_host-capacity_cell branch from dabf732 to 7a91a43 Compare April 28, 2026 02:03
@ironAiken2 ironAiken2 force-pushed the 04-24-feat_fr-2696_create_project_admin_data_page branch from 0381546 to 2ab8da8 Compare April 28, 2026 02:03
Introduce the component-level V2 foundation for the upcoming project admin
data page — a V2-backed VFolder list view. Migrates VFolderNodesV2 and its
inner components from the legacy VirtualFolderNode fragment to the Strawberry
V2 VFolder fragment. V1 VFolderNodes remains untouched for 26.4.x backward
compatibility.

Components migrated to V2:
- react/src/components/VFolderNodesV2.tsx (fragment: VFolder)
- react/src/components/DeleteVFolderModalV2.tsx
- react/src/components/DeleteForeverVFolderModalV2.tsx
- react/src/components/RestoreVFolderModalV2.tsx

New sub-components on the V2 fragment:
- react/src/components/VFolderNodeIdenticonV2.tsx
- react/src/components/VFolderPermissionCellV2.tsx
- react/src/components/SharedFolderPermissionInfoModalV2.tsx
- packages/backend.ai-ui/src/components/fragments/BAIVFolderDeleteButtonV2.tsx

Pages (VFolderNodeListPage, AdminVFolderNodeListPage) are temporarily switched
back to V1 VFolderNodes / DeleteVFolderModal / RestoreVFolderModal to keep the
V1 query path compatible with this PR's isolated compile. The page migration
to V2 queries (myVfolders / adminVfoldersV2) is handled in the follow-up
FR-2573 on top of this PR.
@ironAiken2 ironAiken2 force-pushed the 04-24-feat_fr-2696_create_project_admin_data_page branch from 2ab8da8 to fd60446 Compare April 28, 2026 03:21
@ironAiken2 ironAiken2 force-pushed the 04-23-feat_fr-2691_relocate__data_header_panels_dashboard_host-capacity_cell branch from 7a91a43 to 2af4049 Compare April 28, 2026 03:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:i18n Localization area:ux UI / UX issue. size:XL 500~ LoC

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants