WIP: Locked-on-promote kebab states + Edit plan #295

Closed
toasterson wants to merge 0 commits from claude/wi-019f1817-locked-on-promote-kebab-states-edit-plan into main
Owner

Anima work item 019f1817-d9bf-7b72-a805-6443249caa8d.

What to build

Make the kebab state-driven and add Edit. When a Plan is promoted, the kebab hides Edit/Delete/Retire (only Copy link remains). Add an Edit action (rename + description via UpdatePlan) shown on un-promoted plans, in a modal.

Pushed context

ADR 0017: a promoted Plan is locked — neither edited, retired, nor deleted; the kebab hides inapplicable actions rather than disabling them (Q8 decision). Promotion is detectable on PlanDetail via the slice link (plan.sliceId / a work_slices row with this plan_id — PlanDetail already resolves this for its "Work slice" card). UpdatePlan already exists server-side (crates/anima-server/src/services/plan.rs); wire it through src/lib/grpcApi.ts + src/lib/api.ts if not present, and add the Edit modal to src/pages/PlanDetail/PlanDetail.tsx reusing the Menu primitive. Scope: Edit = title + description only. The full PlanDetail rebuild and the Add-Work-Item button are a SEPARATE follow-on plan — out of scope here.

Acceptance criteria

  • Promoted plan: kebab shows only Copy link (Edit/Delete/Retire hidden)
  • Un-promoted plan: Edit appears in the kebab
  • Edit opens a modal to change title + description, persists via UpdatePlan, and the page reflects the change

Blocked by

  • WI 019f1817-5e54-73a2-9fa0-831a91db5e0f (kebab menu primitive + Copy link)
Anima work item `019f1817-d9bf-7b72-a805-6443249caa8d`. ## What to build Make the kebab state-driven and add Edit. When a Plan is **promoted**, the kebab **hides** Edit/Delete/Retire (only Copy link remains). Add an **Edit** action (rename + description via `UpdatePlan`) shown on un-promoted plans, in a modal. ## Pushed context ADR 0017: a promoted Plan is locked — neither edited, retired, nor deleted; the kebab hides inapplicable actions rather than disabling them (Q8 decision). Promotion is detectable on PlanDetail via the slice link (`plan.sliceId` / a `work_slices` row with this `plan_id` — PlanDetail already resolves this for its "Work slice" card). `UpdatePlan` already exists server-side (`crates/anima-server/src/services/plan.rs`); wire it through `src/lib/grpcApi.ts` + `src/lib/api.ts` if not present, and add the Edit modal to `src/pages/PlanDetail/PlanDetail.tsx` reusing the Menu primitive. Scope: Edit = title + description only. The full PlanDetail rebuild and the Add-Work-Item button are a SEPARATE follow-on plan — out of scope here. ## Acceptance criteria - [ ] Promoted plan: kebab shows only Copy link (Edit/Delete/Retire hidden) - [ ] Un-promoted plan: Edit appears in the kebab - [ ] Edit opens a modal to change title + description, persists via `UpdatePlan`, and the page reflects the change ## Blocked by - WI 019f1817-5e54-73a2-9fa0-831a91db5e0f (kebab menu primitive + Copy link)
toasterson force-pushed claude/wi-019f1817-locked-on-promote-kebab-states-edit-plan from 17b91ff2b3 to da3f7ce9ed 2026-07-05 03:23:50 +00:00 Compare
toasterson force-pushed claude/wi-019f1817-locked-on-promote-kebab-states-edit-plan from da3f7ce9ed to 7674803821 2026-07-06 20:36:01 +00:00 Compare
toasterson force-pushed claude/wi-019f1817-locked-on-promote-kebab-states-edit-plan from 7674803821 to 72f77ef54e 2026-07-06 21:41:30 +00:00 Compare
Author
Owner

Merged at ae5d72d. The four plan-UI PRs (#292 Copy, #294 Delete, #295 Edit, #296 Retire/Restore) each built an independent kebab against the shared base; they were hand-woven into a single PlanDetail kebab on the shared Menu primitive (Edit when unpromoted, Copy always, Delete for empty plans, Retire for non-empty, Restore when retired). Your Edit action + modal + updatePlan wiring landed. Note: this branch had regressed #314's project-scoped listWorkItems — the merged version keeps #314's fix. Closing.

Merged at `ae5d72d`. The four plan-UI PRs (#292 Copy, #294 Delete, #295 Edit, #296 Retire/Restore) each built an independent kebab against the shared base; they were hand-woven into a single `PlanDetail` kebab on the shared `Menu` primitive (Edit when unpromoted, Copy always, Delete for empty plans, Retire for non-empty, Restore when retired). Your Edit action + modal + `updatePlan` wiring landed. Note: this branch had regressed #314's project-scoped `listWorkItems` — the merged version keeps #314's fix. Closing.
toasterson closed this pull request 2026-07-09 17:54:50 +00:00

Pull request closed

Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
toasterson/Anima!295
No description provided.