Snap editor records one Undo step per keystroke and per slider tick
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 48/100
Línea de trabajo
Start with the change() and undo() logic in ImageWorkspaceEditing.swift (around lines 103-118 and 110), then the updateSelected calls for the caption and sliders in SnapEditorView.swift (lines 94, 103, 109). Compare with the canvas drag commit in ImageWorkspaceCanvas.swift (lines 212-213). Done means the acceptance cases pass under --check-image-workspace: 150 keystrokes make one undo step, and undo order is text, mark, then crop.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Outcome: typing a caption or dragging Text size or Line width makes one Undo step, so earlier crops and marks stay undoable.
Evidence (main edc15df)
- The text binding and the sliders call
updateSelectedon every change (SnapEditorView.swift:94, :103, :109). change()pushes every edit and trims to 100 entries (ImageWorkspaceEditing.swift:103-118). A caption of about 100 characters therefore drops the crop from history.undo()clears the selection (:110), which closes the inspector.- Canvas drags already commit once (ImageWorkspaceCanvas.swift:212-213).
- docs/snap.md:22 promises Undo for crop, text and marks.
Change
- Add a coalescing key (mark id plus property). Consecutive edits with the same key replace the top entry.
select,undoandredoreset the key.- After undo or redo, reselect the mark if it still exists.
Acceptance
In --check-image-workspace:
- 150 keystrokes make one step.
- Undo order is text, then the mark, then the crop.
- Redo restores.
- A fontSize run is one step.
- A selection change or an unkeyed edit splits runs.
- An edit after undo starts a new step.
Value before scope
- Outcome: Undo works on the capture-to-deck path. Evidence: the traced stack.
- Simpler route: none.
- Owner: ImageWorkspaceEditing.
- Complexity: one key.
- Verified by: source checks.
Grammar: Quality.
Refs #154
Build-ready record from the overnight lead session of 15 Oct 2026, verified against main edc15df by an independent skeptic per item. Implementation follows on a claude/* branch; this issue closes only after native acceptance.
- Lenguaje dominante
- Swift
- Estrellas
- 0
- Forks
- 1
- Merge medio
- 8 h 5 min
- PR fusionados (30 d)
- 215
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de Ship-Work/workbench
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
Los mantenedores suelen responder en 1 día
-
documentation good first issue help wanted
Dificultad 2/5 Medio día Aptitud para principiantes 74/100
Ship-Work/workbench#29 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 55/100
Los mantenedores suelen responder en 1 día
Todos los issues de Ship-Work/workbench
Issues similares
-
addition
Dificultad 1/5 Menos de una hora Aptitud para principiantes 82/100
jaywcjlove/awesome-mac#3621 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
SwiftKickMobile/skai#84 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
bangumi/Bangumi-iOS#225 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
raullenchai/Rapid-MLX#4889 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 75/100
Los mantenedores suelen responder en 1 día