Command palette
The command palette is the editor's universal action launcher. Open it with Ctrl+K (or Ctrl+P if you came from VSCode), type a few characters of the action name, press Enter to run.
It's the fastest path to almost everything in the editor — every tool, every dialog, every project / palette / animation action has a command. ~60 commands ship today.
💡 The palette opens even from inside text inputs. It's an escape hatch — when you're lost in a dialog field,
Ctrl+Kalways works.
![Screenshot: command palette open with 'pen' typed, "Pencil" highlighted at the top of the matched results — placeholder]
Where to find it
- Hotkey:
Ctrl+K(primary) orCtrl+P(alternative). Both bypass the browser's default behaviours:Ctrl+PispreventDefault'd so the print dialog doesn't intercept. - The palette has no top-bar button — it's keyboard-first by design.
How to use it
- Press
Ctrl+K. - Start typing — the list filters in real time using fuzzy matching across the command title and a list of synonyms (
erasematches "Eraser",deletematches "Eraser" too). - Use ↑ / ↓ to move the highlight, Enter to run the selected command, Esc to close.
- Hovering a row also moves the highlight, so mouse + keyboard mix freely.
- Each row shows:
- An icon for the command's category
- The command title with matched characters highlighted
- The bound shortcut as a chip on the right (when there's one)
- A category pill (Tools / Palette / Layers / Animation / …) — useful when several commands have similar names
When the search box is empty, the palette shows your most recently run commands under a "Recent" header (max 8), followed by every other command under "All commands".
Commands shipped
The list grows every release; here's the categorical breakdown as of v0.15.0:
| Category | Examples |
|---|---|
| Tools | Pencil, Eraser, Eyedropper, Fill, Color Replace, Shade, Line, Rectangle, Ellipse, Rect Select, Magic Wand, Lasso, Selection Brush, Slice, Gradient |
| Palette | Sort by hue / luminosity, Remove unused, Open palette tools, Convert to Indexed / RGB, palette-preset cycle, "Load palette: DB16" (one per built-in preset, hidden when already active) |
| Layers | Add layer, Add group, Duplicate, Delete (with toast undo), Toggle visibility / lock, Solo, Link / Unlink across frames |
| Animation | New / Duplicate / Delete frame, New frame tag, Toggle onion skin, Interpolate frames, Generate auto-tile 47, Import image as new frame |
| Workspace | Toggle tile preview / pixel-perfect / symmetry / preview window, Free Transform, Workspace presets dialog |
| View | Zoom in / out / 100%, Flip H / V, Rotate 90° CW / CCW |
| Export | Export PNG / sheet / GIF / JSON, Smart upscale dialog |
| Project | New / Open project, Save (Ctrl+S), Export .mstack, Import .mstack, Create / Restore backup |
| Tutorials | Interactive tutorials — Drawing basics, Color cycling, Slices for gamedev, Auto-tile 47, … |
| Help | Keyboard shortcuts, Help & cheatsheet, Preferences, Plans (Free / Pro) |
All command titles and category labels are fully localized — they render in the active display language (English or Español, set in Preferences).
Disabled vs hidden commands
Commands that don't apply to the current state are hidden, not greyed out:
- "Unlink layer" only appears when the active layer is linked across frames.
- "Delete frame" only appears when there's more than one frame.
- "Convert to RGB mode" only appears when the project is in indexed mode (and vice versa for "Convert to Indexed").
- "Load palette: DB16" disappears when DB16 is already the active palette.
This keeps the search results compact — empty rows don't crowd the list.
Recents
The last 8 commands you ran persist in localStorage (motestack:command-recents). They reflect how you work across the whole editor, not which project you have open — switching projects keeps your recents.
Bound shortcuts
The chip on each row reads through the same getBinding() system the editor uses for hotkeys. Remap a shortcut in the Keyboard shortcuts dialog (⌨️ icon in the top bar), reopen the palette, and the chip will reflect the new binding.
Performance
The palette is a lazy chunk. It only loads when you press Ctrl+K for the first time — the editor's main bundle stays smaller. Once loaded, fuzzy search across ~60 commands is sub-millisecond on any machine.
See also
- Keyboard shortcuts — full list of bound actions, all remappable from the editor.
- Help & cheatsheet — searchable feature reference inside the editor (
?icon in the top bar). - Onboarding tour — re-runnable from Preferences.