Skip to main content

Undo a Change

  1. Press Ctrl+Z (or Cmd+Z on macOS) to undo the most recent change
  2. The grid reverts to its previous state and scrolls automatically to show the affected row
  3. Repeat to undo additional changes, up to the last 50 actions

Redo a Change

  1. Press Ctrl+Y (or Ctrl+Shift+Z on macOS) to reapply the most recently undone change
  2. The grid restores the change and positions the view on the affected row
If you undo several changes and then make a new edit, all undone changes are permanently removed from the redo history. You cannot redo them after making a new edit.

What Can Be Undone

The undo stack tracks the following types of operations:
OperationUndo Behavior
Cell editsRestores previous cell value and row height
Paste operationsReverts all pasted cells as a single action
Row additionRemoves the added row and scrolls to previous position
Row deletionRestores the deleted row (with limitations for unsaved items)
Dependent enum cascadesReverts all cascading child field changes together
Task removalRestores removed task or cleared task fields
Linked column changesRestores dependent column values for itemLink, multiItemLink, taskLink
diagram

Undo Cascading Dependent Enum Changes

When you edit a parent enum field that triggers cascading updates to child fields via configured relations, the entire cascade is tracked as a single undo action:
  1. Change a parent enum value — child fields update automatically
  2. Press Ctrl+Z — both the parent change and all child field updates are reverted together
  3. Press Ctrl+Y — the parent change and all cascading updates are reapplied
This applies to both single-row edits and bulk edits across multiple selected rows.

Undo Multi-Cell Paste Operations

When you paste values into multiple cells, the entire paste operation is bundled as a single undo action. Pressing Ctrl+Z reverts all pasted cells at once rather than requiring individual cell-by-cell undo.

Undo Linked Column and Merged Cell Changes

Undo operations on itemLink, multiItemLink, taskLink, and multiEnum columns automatically restore dependent column values. For merged cells (common in itemLink columns within hierarchical levels), the undo operation applies across all rows in the merged cell range. Multi-enum fields use specialized undo logic that converts between internal IDs and visible values, ensuring the display remains consistent after undo/redo.

Undo Task Operations

Task operations support full undo:
  • Task addition: Undoing a task addition removes the added task row and restores the grid to the previous position
  • Task removal: Undoing a task removal restores the task. For single-task items where task fields were cleared, undo restores all cleared task attributes
If you delete a row for a newly created work item that has not been saved (identifiable by a temporary ID), undo cannot restore it. A warning message appears: “It is not possible to Undo deletion of unsaved items.” Always save new items before performing delete operations.

Limitations

LimitationDetails
Stack sizeMaximum 50 undo actions. Older actions are automatically discarded.
Unsaved item deletionDeleted new (unsaved) items cannot be restored via undo.
Save operationsSaving the document is not an undoable action.
Redo after new editMaking any new change clears the entire redo stack.
Page reloadUndo history does not persist across page reloads.
Since undo history is limited to 50 actions and resets on page reload, save your document regularly. After saving, undo still works within the current session for reverting unsaved changes.

Verify Undo/Redo

After making changes:
  1. Edit a cell value, then press Ctrl+Z — the original value should reappear
  2. Press Ctrl+Y — the edited value should be restored
  3. Add a row, then undo — the row should be removed and the grid scrolls to the previous position
  4. Edit a parent enum with cascading dependents, then undo — all cascading child fields should also revert
You should now see undo and redo working consistently for cell edits, row operations, paste actions, and cascading enum changes.

See Also

Source Code
  • RedoCommand.ts
  • RelationActionController.ts
  • UndoCommand.ts
  • GridUndoStack.ts
  • RemoveTaskCommand.ts