Files
Naiyuan Qing df00c59239 refactor(spaces): decouple project↔space; drop alignment enforcement
Issue/project/autopilot each declare their own space(s) with no
cross-validation — an issue's space need not belong to its project's
space set. Removes:
- backend: ProjectSpaceAmbiguous error, the EnsureProjectHasSpace side
  effect, the 409 space_reassignments reconcile + renumber, and the
  now-orphaned CountProjectIssuesBySpace / ListIssuesByProjectAndSpace
  queries; ResolveSpace falls back to the workspace default for a
  multi-space project instead of erroring.
- frontend: both SpaceProjectConflictDialog wirings and the project-side
  ProjectSpaceReassignDialog, plus the conflict schema/types/i18n.

Data structures unchanged (project_space, issue.space_id,
autopilot.space_id); multi-space projects stay, managed inline via
SpaceMultiPicker on the project detail.

Also bundled from this branch's working tree:
- create-space: derive the key from the name, no silent "T" prefix
- space detail: normal-colour description, shadcn members trigger
- invitations: space_ids so invitees join chosen spaces on accept
  (migration 149)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-09 16:00:49 +08:00
..