Skip to content

Add operation history tracking #14

Description

@willibrandon

Feature Request

Track all operations applied to a sprite and enable undo via operation history.

Motivation

Users need to understand what operations have been applied to a sprite and have the ability to undo recent changes. This provides transparency and safety for multi-step workflows.

Proposed Solution

Add operation history tracking and undo capability:

1. Track operations automatically

Every tool that modifies a sprite should record the operation in sprite metadata.

History Entry:

{
  "operation": "quantize_palette",
  "timestamp": "2025-10-18T23:45:00Z",
  "parameters": {
    "target_colors": 16,
    "algorithm": "median_cut"
  },
  "snapshot_id": "snap_1234567890"
}

2. get_operation_history

Retrieve operation history for a sprite.

Input:

{
  "sprite_path": "sprite.aseprite"
}

Output:

{
  "success": true,
  "history": [
    {
      "operation": "quantize_palette",
      "timestamp": "2025-10-18T23:45:00Z",
      "parameters": {...}
    },
    {
      "operation": "apply_auto_shading",
      "timestamp": "2025-10-18T23:46:00Z",
      "parameters": {...}
    }
  ]
}

3. undo_last_operation

Revert the most recent operation.

Input:

{
  "sprite_path": "sprite.aseprite"
}

Output:

{
  "success": true,
  "undone_operation": "apply_auto_shading",
  "restored_to": "snap_1234567890"
}

Implementation Notes

Storage:

Tracking:

  • Automatically create snapshot before each operation
  • Record operation details in sprite metadata
  • Clean up old snapshots when history limit reached

Dependencies:

Benefits

  • Complete audit trail of sprite modifications
  • Undo capability for recent operations
  • Better debugging of workflow issues
  • Transparency for users

Future Enhancements

  • Undo to specific operation (not just last)
  • Redo capability
  • Clear history
  • Export history as workflow script

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions