Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Persona: keep new editable portraits as drafts until the user confirms Add

Open
#172 4 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
48/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Active
Tech stack
swift
Domain
desktop

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.

  1. Add persona → Import portrait for an editable card → choose an image; or choose a starter and Use portrait.
  2. The image/record is already saved before the label/colour editor appears.
  3. 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

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from Ship-Work/workbench

All issues in Ship-Work/workbench

Similar issues

More Swift issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.