[codex] Add project manager core#168
Conversation
- Implemented Login UI and Auth context with localStorage persistence. - Added Admin/Worker role-based view gating. - Integrated mock data for 19 real volumes from cluster export. - Resolved merge conflicts with upstream/main and handled WorkflowSelector sunset.
- Implemented Login UI and Auth context with localStorage persistence. - Added Admin/Worker role-based view gating. - Integrated mock data for 1000 volumes (real data ingestion pending). - Resolved merge conflicts with upstream/main.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 9973906b2e
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| } | ||
|
|
||
|
|
||
| @router.patch("/volumes/{volume_id}") |
There was a problem hiding this comment.
Handle slash-containing IDs in volume patch route
The patch endpoint is declared as /volumes/{volume_id}, which only matches a single path segment, but ingested IDs are built from rel_path and can include / for nested files (for example dataset_a/subdir/vol.h5). In those common cases, status/assignee updates will 404 even though the volume exists, so admins/workers cannot update many discovered volumes.
Useful? React with 👍 / 👎.
| try { | ||
| const res = await apiClient.post("/api/pm/data/ingest"); | ||
| if (res.data.ok) { | ||
| setPmState(res.data.data); |
There was a problem hiding this comment.
Preserve global progress after ingestion
After POST /api/pm/data/ingest, this code stores res.data.data directly into pmState, but that payload comes from _read_data() and does not include global_progress. Because provider values fall back to zeros when pmState.global_progress is missing, the UI continues to show 0 tracked volumes / “needs sync” immediately after a successful ingest until a later refresh or per-volume update.
Useful? React with 👍 / 👎.
What changed
This is an intermediate merge candidate that brings the core Project Manager feature into
mainwithout pulling in the entire original PR payload.It adds:
Project Managertab in the app shell/api/pm.h5,.hdf5,.tif,.tiff,.nii,.nii.gz,.mrc,.zarr,.n5, and image-stack directoriesWhy
PR #136 had the right semantic direction, but the original branch had become too broad to merge cleanly as one artifact. This draft captures the operational core:
User impact
Users can now:
Validation
Ran:
uv run --with pytest python -m pytest tests/test_project_manager_routes.py tests/test_project_manager_discovery.py -qnpm run buildNotes
This is intentionally scoped as an initial mergeable PM core, not the full original PR. Additional follow-up cleanup and expansion can land separately once this base is in
main.