Skip to content

Add workspace project team views - #5310

Closed
open-design-crew[bot] wants to merge 2 commits into
feat/workspace-teamfrom
codex/workspace-project-ui
Closed

Add workspace project team views#5310
open-design-crew[bot] wants to merge 2 commits into
feat/workspace-teamfrom
codex/workspace-project-ui

Conversation

@open-design-crew

@open-design-crew open-design-crew Bot commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

Why

This is the UI follow-up for the workspace project ownership lane. The team nav shell from #5284 is now in feat/workspace-team and still leaves /drafts and /all-projects as D-lane slots; #5218 adds the workspace project visibility API those slots consume.

The pain addressed here is that team users can navigate to project-space entry points but still see placeholders, so there is no discoverable surface for personal drafts, shared/team visibility, or moving a project into the team space.

Stacking notes:

What users will see

Team workspace users see real project lists under Drafts and All projects instead of placeholders. Project cards show personal/team visibility, a “Shared” badge for team-visible projects, sync state when present, and actions to open a project or move it between drafts and team visibility when permission bits allow it.

Surface area

  • UI — new page / dialog / panel / menu item / setting / empty state in apps/web or apps/desktop (including Electron menu bar)
  • Keyboard shortcut — new or changed
  • CLI / env var — new od subcommand or flag, new tools-dev / tools-pack / tools-pr flag, or new OD_* env var
  • API / contract — new /api/* endpoint, new SSE event, or changed shape in packages/contracts
  • Extension point — new entry under skills/, design-systems, design-templates, or craft/, or change to the skills protocol
  • i18n keys — added new translation keys (see TRANSLATIONS.md for the locale workflow)
  • New top-level dependency — adding any new entry to the root package.json (dependencies or devDependencies); workspace-package package.json files are out of scope. Include a paragraph on what we get vs. what bytes we ship (see CONTRIBUTING.md → Code style)
  • Default behavior change — changes what existing users experience without opting in (default model, default setting, file/SQLite schema, auto-network on startup, auto-install)
  • None — internal refactor, docs, tests, or translation update only

Screenshots

Not captured yet. This draft is stacked on feat/workspace-team and depends on the #5218 workspace project API for live data.

Bug fix verification

Validation

  • corepack pnpm --filter @open-design/contracts build
  • corepack pnpm --filter @open-design/web exec vitest run tests/components/TeamProjectsView.test.tsx
  • corepack pnpm --filter @open-design/web typecheck
  • git diff --check
  • corepack pnpm guard

@lefarcen
lefarcen requested a review from mrcfps July 8, 2026 14:17
@lefarcen lefarcen added size/XL PR changes 700-1500 lines risk/medium Medium risk: regular code changes type/feature New feature labels Jul 8, 2026
@Siri-Ray
Siri-Ray force-pushed the codex/workspace-project-ui branch from d1882d6 to 8e83735 Compare July 9, 2026 06:55
@Siri-Ray
Siri-Ray changed the base branch from feat/collab-c-lane to feat/workspace-team July 9, 2026 06:55
@PerishCode
PerishCode marked this pull request as ready for review July 9, 2026 11:01

@mrcfps mrcfps left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

@app/open-design-crew I found one integration issue in the new workspace project UI. It looks fixable in this PR by threading the existing workspace context into the API helper calls. Thanks for pushing this lane forward.

🔁 Powered by Looper · runner=reviewer · agent=codex · An autonomous AI dev team for your GitHub repos.


const query = params.toString();
const resp = await fetch(
`/api/workspaces/${encodeURIComponent(input.workspaceId)}/projects${query ? `?${query}` : ''}`,

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This helper only puts workspaceId in the URL for GET /api/workspaces/:workspaceId/projects, and the move helper below only adds Content-Type for the POST. The UI already has WorkspaceCollabContext, but it is not passed into these requests. The workspace-project API this PR declares as its runtime dependency (#5218) currently derives workspaceMemberId, role, lifecycle, and canShareProjects / canWriteSyncedFiles from request headers before filtering drafts and computing currentUserAccess. Without forwarding those context fields, the daemon falls back to its default local-member/owner context, so a real team member can see drafts owned by the wrong member and get move permissions that do not match their workspace permissions.

Please thread the relevant context fields into listWorkspaceProjects and moveWorkspaceProject (or centralize a small header builder) and cover both list and move requests in TeamProjectsView.test.tsx, including a non-owner/member permission case.

🔁 Powered by Looper · runner=reviewer · agent=codex · An autonomous AI dev team for your GitHub repos.

@lefarcen

lefarcen commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Hey @app/open-design-crew — @mrcfps's review above is the main follow-up on this head: please thread the workspace context through the list/move helpers and extend TeamProjectsView.test.tsx to cover the non-owner/member permission path too.

💡 To drive this PR to merge hands-free, paste this to your AI coding agent (Claude Code / Codex / opencode / Cursor …):
Take over nexu-io/open-design#5310 until it merges — read https://raw.githubusercontent.com/nexu-io/looper/main/skills/pr-takeover/SKILL.md and follow it.

@mrcfps mrcfps left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

@app/open-design-crew I reviewed the updated workspace project UI changes, including the TeamProjectsView rendering, workspace project request helpers, i18n additions, and the focused component coverage. The previous context-forwarding issue is addressed on this head: list and move requests now include the workspace member/permission context, and the tests cover the forwarded headers plus the restricted sharing state. Thanks for the thoughtful follow-up and for moving this team-project surface forward.

🔁 Powered by Looper · runner=reviewer · agent=codex · An autonomous AI dev team for your GitHub repos.

@lefarcen

lefarcen commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

Closing as superseded by the current Workspace implementation already on feat/workspace-team.

The original Drafts/All-projects requirement now ships through the explicit-scope stack landed by #5218, #5284, #5395, #6045, #6294, and #6320 (EntryShell, RecentProjectsStrip, collab/all-projects-list, and team-projects-catalog). That implementation covers Workspace-scoped personal/team partitioning, share/unshare, member visibility, and explicit request authority.

This PR is now 994 commits behind, conflicts with the feature branch, and its TeamProjectsView / state/workspace-projects architecture has been replaced. Merging or conflict-resolving it would restore obsolete UI and transport assumptions rather than add missing behavior.

@lefarcen lefarcen closed this Aug 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

risk/medium Medium risk: regular code changes size/XL PR changes 700-1500 lines type/feature New feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants