MotirBuilding in public
MOTIR · moooon
onMotir
You’re viewing a public project. Anyone can view it — no account needed. Sign in to submit, upvote, or comment on requests.View-only — you can’t edit work items
MOTIR-116

2.5.5 Inline row edits — status + assignee (reuse 2.4.4's gated controls)

Done
Description

Estimate: 10m · Depends on: 2.5.3

Make the STATUS and ASSIGNEE cells editable in place — the card's "inline status/assignee edits." This is a reuse subtask, not new mutation work: the STATUS pill opens the shared StatusPicker (legal next statuses from the row's workflow) committing via 2.4.4's gated changeStatusAction → 2.2.4 updateStatus; the ASSIGNEE cell opens the shared AssigneePicker committing via updateIssueAction → the status-free updateWorkItem (null = unassign, writes a revision). Same components and Server Actions the detail page's CoreFieldsPanel (2.4.4) uses — identical gating (workspace + membership; cross-workspace target 404s; no client-trusted ids).

List-specific UX. Editing commits optimistically and revalidatePaths /issues so the row reconciles without a full reload; an illegal/stale change surfaces the typed error as a toast and leaves the cell unchanged. Opening an inline control does NOT trigger the row's navigate-to-detail link (stop propagation). The status picker offers only legal targets for THAT row's current status (per-row workflow context).

Acceptance criteria

  • A row's STATUS cell edits inline via the shared StatusPickerchangeStatusAction (legal targets only; illegal/stale → toast, no change); ASSIGNEE edits + unassigns via AssigneePickerupdateIssueAction (revision written).
  • Both reuse 2.4.4's components + actions — NO parallel components or new actions; the list and detail page share them.
  • Both are Server-Action-gated (workspace + membership); a forged cross-workspace target 404s; opening a control does not navigate the row.
  • Commit is optimistic + revalidates the list; component test asserts the cell opens the shared picker and calls the shared action (legal-target listing covered by the shared 2.4.4 tests).

Context refs

  • 2.4.4 CoreFieldsPanel inline pattern + changeStatusAction / updateIssueAction (app/(authed)/issues/[key]/edit/actions.ts) — reuse verbatim
  • 2.3.6 StatusPicker / AssigneePicker; 2.5.2 TreeTable cell render-props; 2.5.1 node DTO (each row's status + workflow context)
  • motir-core/CLAUDE.md — Server-Action gate / finding #26
Status
Done
Type
Sub-task