aboutsummaryrefslogtreecommitdiff
path: root/internal/admin/undo.go
diff options
context:
space:
mode:
authorhistoria <[not public]>2026-09-15 20:14:02 -0400
committerhistoria <[not public]>2026-09-15 20:14:02 -0400
commit69235cac5b3da5ff0dc20310e7474cabd8e63ba3 (patch)
treece96c9506531e219c157f29ac6a6dc53de1df15b /internal/admin/undo.go
parent6f3c43aca62a7d33a19f14f6ad7c16891952673a (diff)
downloadthehouseoficarus-69235cac5b3da5ff0dc20310e7474cabd8e63ba3.tar.gz
feat: route all html editor API mutations through single owner task
Diffstat (limited to 'internal/admin/undo.go')
-rw-r--r--internal/admin/undo.go4
1 files changed, 4 insertions, 0 deletions
diff --git a/internal/admin/undo.go b/internal/admin/undo.go
index 0f9744c..98d8d9a 100644
--- a/internal/admin/undo.go
+++ b/internal/admin/undo.go
@@ -61,6 +61,10 @@ type UndoInfo struct {
RedoSize int `json:"redo_size"`
}
+// UndoStack protects history with a mutex, not live game state. Production
+// callers must execute Push/Undo/Redo/Clear within the editor's owner task.
+// Undo/Redo and the subsequent rebuildAfterUndo are one task, not separate
+// dispatches; migrateRoomIDs is an owner-only callback.
type UndoStack struct {
mu sync.Mutex
dataDir string