Persona: keep new editable portraits as drafts until the user confirms Add
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 48/100
Research direction
Read the import and starter flows in Sources/StageKit/PersonaLibraryView.swift alongside addImage and the add operation in Sources/StageKit/Persona.swift; trace when each path commits and what Cancel currently does. Start by mapping how the editor represents a new item versus an existing one. Done means the listed cancellation and failure cases preserve the library until Add, while successful Add creates exactly one item and existing-card Cancel still works.
Written by the indexing model from the issue text.
Description
Outcome and priority
P2 cancellation defect, source-confirmed. Cancelling a new editable portrait should not leave an uncustomised saved item, changed selection or group membership.
Evidence and current path
Preview 2.3.0, build 20260928054038, clean source 00be555139f87d4557f48fcffc132b8621c251a2; macOS 26.5.1 (25F80), built-in display. Verified through Copy build details in the running app and bundle metadata.
The audit inspected the real editor and verified Cancel on an existing card leaves it unchanged. The new-item creation path was traced in source; it was not exercised against the user's library because that path commits before Cancel.
- Add persona → Import portrait for an editable card → choose an image; or choose a starter and Use portrait.
- The image/record is already saved before the label/colour editor appears.
- Cancel dismisses that editor, leaving the earlier addition and membership in place.
Import callback opens the editor after addImage and commit. The add operation writes artwork, appends the item, changes selection and adds membership. Starter Use portrait uses the same save route. Editor Cancel only dismisses.
Chosen behaviour
Treat choosing/importing and customising an editable portrait as one creation draft. Add persona is the final commit; it saves original artwork, appearance, selection and group membership exactly once. Cancel/Escape at any preceding stage restores the previous selection and leaves the library unchanged.
Editing an existing card retains Save/Cancel and its existing identity. Explicit finished-image import/paste can remain an immediate add when labelled clearly. Failed final saves retain the draft for retry and report the problem.
Acceptance
- Use an isolated library and synthetic portrait; cancel after choosing, after editing label/colour/shape, and with Escape. Count, selectedID, active group membership and originals are unchanged.
- Repeat cancellation without accumulating duplicates or orphaned creation files.
- Successful Add produces exactly one saved item and one intended membership.
- Inject a final save failure; the editable draft survives and retry creates exactly one record.
- Existing-card Cancel remains a successful counterexample: saved appearance and live snapshot are unchanged.
- Native retest both import and starter routes in the signed Preview with build details.
Coordination
Second-pass request under #164. Implement with the Persona appearance/editor owner so the new Circle default does not inherit the early-commit bug. Preserve original image and archive compatibility rules.
- Dominant language
- Swift
- Stars
- 0
- Forks
- 1
- Avg merge
- 8h 5m
- Merged PRs (30d)
- 215
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from Ship-Work/workbench
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
Maintainers usually reply within 1 day
-
documentation good first issue help wanted
Difficulty 2/5 Half a day Newbie friendliness 74/100
Ship-Work/workbench#29 · 1 comment ·
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 55/100
Maintainers usually reply within 1 day
All issues in Ship-Work/workbench
Similar issues
-
agent/sec-check help wanted security stage/010-actionable
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
hivecommons/hotshot#235 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
Emanuele-web04/remodex#203 ·
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 92/100
Maintainers usually reply within 1 day
-
test(BrainBar): inject synthetic observabilityCadence in BackupsHealth/one-page fixtures (DCI-1)Open
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
EtanHey/brainlayer#1367 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
omlahore/RemoveMacAI#63 · 1 comment · 1 reaction ·
Maintainers usually reply within 1 day