Files
multica/packages/core/issues
b2e682de97 MUL-6493 feat(issues): add Project as a grouping option on Board and Table (#7383)
* feat(issues): add Project as a grouping option on Board and Table

Board and Table only offered status / assignee (plus select properties) as
grouping dimensions, so a workspace that models each customer as a Project
could filter to one project everywhere but only ORGANISE by project in the
Swimlane. Closes #7337.

The server side already exists: the table group endpoint has carried
`{ kind: "project" }` — group expression, `__no_project__` bucket, ordering
by project title — since the Swimlane shipped, so this only widens the two
client grouping types and routes them to it.

Notes:

- `projectGroupId()` reproduces the server's group key exactly
  (`project:<id>` / `project:none`). The board builds column ids from cards
  and the server builds them from descriptors; a mismatch drops every card.
- `projectId` sits beside `assigneeId` on BoardColumnGroup, so the drop
  handler and the column heading both match it explicitly — the assignee
  fallthrough would otherwise unassign a card on every drop and head a
  project column with a no-assignee glyph.
- Group titles come from the projects query, which the surface now primes
  for this grouping. A project it cannot resolve reads as unavailable, never
  as its raw id.
- Sorting by project / assignee is deliberately not part of this change.

Co-authored-by: multica-agent <[email protected]>

* fix(issues): pin the No project board column and match the Table's unavailable wording

Review nits on #7383.

The "No project" column was derived from the result set like every other
project column, so a workspace where every card has a project lost it — and
with it the only way to clear a card's project by dragging. It is now kept
whenever the board has any columns at all; an entirely empty board still
renders its empty state rather than one lone column.

The board also fell back to an empty title for a project the projects query
cannot resolve, while the Table said "Unavailable value" for the same project.
Both now share the Table's wording, so a board column can no longer render as
an icon and a count with no name at all.

Both paths that build a project column go through one helper now, which is
what keeps the client fallback and the server-descriptor path from drifting
apart again.

Co-authored-by: multica-agent <[email protected]>

---------

Co-authored-by: Bohan-J <[email protected]>
Co-authored-by: multica-agent <[email protected]>
2026-08-21 14:35:08 +08:00
..