Show display_name instead of UUID for private projects in CLI#718
Show display_name instead of UUID for private projects in CLI#718
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 35db52650e
ℹ️ About Codex in GitHub
Codex has been enabled to automatically 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 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| ) | ||
| row_data = { | ||
| "name": project_name, | ||
| "name": display_name or project_name, |
There was a problem hiding this comment.
Preserve canonical project identifier in list output
Replacing row_data["name"] with display_name makes bm project list --json emit a human label instead of the canonical identifier for private cloud projects, but other project commands still resolve by canonical name/permalink (src/basic_memory/cli/commands/project.py lines 480-482 and 568-570 call generate_permalink(name) before resolve; src/basic_memory/api/v2/routers/project_router.py lines 250-269 match against stored project.name). For UUID-backed private projects, piping .projects[].name from list output into project info/remove/default can no longer resolve the project. This should keep name canonical and expose display_name separately (or limit display substitution to the Rich table only).
Useful? React with 👍 / 👎.
The `bm project list` table rendered the raw project name, which is a UUID for private projects in team workspaces. Now uses display_name from the cloud response (e.g., "My Project") with fallback to name. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Joe P <joe@basicmemory.com>
Verifies that private projects with display_name show "My Project" in the Name column instead of the raw UUID. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Joe P <joe@basicmemory.com>
a83f0e2 to
c090ebe
Compare
The cloud proxy route for project list filtering is registered at /v2/projects (no trailing slash). Requests to /v2/projects/ were falling through to the catch-all route, bypassing private project filtering and display_name enrichment. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Joe P <joe@basicmemory.com>
Summary
In team workspaces,
bm project listshowed the raw UUID for private projects (e.g.,f1df8f39-d5aa-4095-ae05-8c5a2883029a) instead of the human-readable display name ("My Project").The cloud API already injects
display_nameinto the project list response viafilter_project_list_response(), but the CLI table rendering ignored it.Fix
Use
cloud_project.display_namewhen available, with fallback to the raw project name:Related
Test plan
ruff check+pyrightpassbm project list --cloud --workspace <team-workspace-id>and verify private project shows "My Project"🤖 Generated with Claude Code