NC Anima · Docs

Settings, keyboard shortcuts, auto-save and crash recovery

Settings (Preferences)

Anima ▸ Settings (macOS) or Edit ▸ Preferences (Windows/Linux), Cmd+Alt+;. The dialog has After Effects 2026's pages (General, Startup & Repair, Project, Composition, Previews, Appearance, Grids & Guides, Labels, Type, Import, Export, Audio, Disk, Memory & CPU, Video, 3D, Scripting & Expressions) with OK, Cancel, Previous and Next. Older page names still open the right page (prefs.open {"page": "Auto-Save"} opens Project, Media & Disk Cache opens Disk, Memory & Performance opens Memory & CPU).

The model is anima_engine::prefs::Prefs: serde, versioned (version), addressed by dotted keys (general.undoLevels, autoSave.intervalMinutes, labels.3.name). It is stored as prefs.json through the session's ConfigStore (the desktop app uses the platform config directory: ~/Library/Application Support/Anima on macOS, %APPDATA%\Anima on Windows, $XDG_CONFIG_HOME/anima on Linux, or AnimaData beside the executable when a portable.txt sits there, as in the Windows portable zip; the web app keeps it in browser storage: the Origin Private File System, or IndexedDB where OPFS can't write, see web.md). Loading migrates older layouts, keeps unknown keys (from newer versions) and falls back to defaults for values that don't parse.

Commands (CLI, MCP, control channel):

Command Parameters
prefs.get {key?} (omit for everything)
prefs.set {key, value} or {values: {key: value}}
prefs.reset {page?} (omit for everything)
prefs.open {page?} opens the Settings dialog
prefs.pages the page schema: every row, its key, type, range and whether it is wired

Settings that change behaviour

Display-only settings

These rows are in the dialog for After Effects parity and are stored, but have no Anima behaviour to change. prefs.pages reports them with "live": false; a test keeps this list in step with the schema.

Effect Controls uses compact, fixed 20 pt parameter rows, as After Effects does: each group level is indented beneath its effect, sibling names and values align, and a gap separates effects. The timeline keeps its fixed 19 pt rows. Both follow the whole-interface UI Scale.

Keyboard shortcuts

Edit ▸ Keyboard Shortcuts (Cmd+Alt+') opens the shortcut editor: an on-screen keyboard showing which keys are assigned for the held modifiers (purple: application-wide, green: panel-specific, both: split), modifier toggles, a searchable list of every command (all engine commands, menu entries with bound parameters and the frontend's tool / panel commands), and a preset menu.

Commands: shortcuts.list {query?, keys?, assigned?}, shortcuts.set {command, params?, keys}, shortcuts.reset {command?}, shortcuts.preset {op: select|new|duplicate|delete|rename, name?, from?, newName?}, shortcuts.export {preset?, path?}, shortcuts.import {path? | preset?}, shortcuts.conflicts.

Auto-save and crash recovery

Headless MCP clients can opt in with anima-cli mcp --autosave. Unlike the desktop's interval, this writes changed dirty projects before sending each tool reply, with separate version slots per server under Anima Auto-Save/MCP/ (or the custom folder's MCP/). It reads settings without sharing the desktop's writable settings store or session.lock. See headless recovery for how to reopen a checkpoint after a client restart.

Commands: file.autoSave (now), file.recoveryInfo, file.openRecent {index? | path?}, file.clearRecent, file.revert, file.incrementAndSave.

Logs

The desktop app writes its log records to standard error and to Logs/anima.log in the config directory. Each launch moves the previous log to anima.1.log (and that one to anima.2.log), so the log of a run that crashed survives the next start; a log stops growing at 16 MiB. A launch from the Dock, the Start menu or a launcher has no terminal, so attach these files to a bug report. Help ▸ Reveal Logging File shows this run's log (or Help ▸ Enable Logging's Anima Log.txt while that is on, which keeps every Anima record across launches).

By default the log has info records from Anima and warnings and errors from everything else. RUST_LOG replaces that with env_logger-style directives: debug, warn,anima_render=trace, wgpu_core=info. The control-channel token is never logged.