Goal
During onboarding, ask which IDE the user is coming from and apply a matching keybinding preset so Atlas respects established muscle memory. Support at least Atlas default, VS Code/Cursor-style, and Zed-style presets, then let every Atlas shortcut be inspected, changed, reset, imported/exported, and persisted.
This is deliberately a foundational issue: it must establish a real keybinding system rather than layering a few conditional checks over hard-coded shortcuts.
Investigation
- Global shortcuts are hard-coded in
src/App.tsx through useHotkeys; the binding type only models a key plus meta/shift/alt booleans.
- CodeMirror editor, chat composer, terminal, and Knowledge Base each register their own keymaps, so actual behavior is distributed across multiple subsystems.
- Settings → Keybindings is currently a static documentation list, not an editor; it does not write user preferences.
- There is no first-run onboarding flow for IDE preference or keybinding presets.
- ATL-109 proposes a versioned, editable Atlas configuration file and a self-configuration skill. Keymaps should use that same config/schema and supported write surface.
Scope
- Build an action-based, centrally registered keybinding architecture with declarative defaults, context/scope, platform normalization, conflict detection, and precedence.
- Add first-run onboarding that asks the user’s prior IDE (with “skip/use Atlas defaults”), explains that the choice is reversible, and applies the preset.
- Deliver a Settings keybinding editor plus config-file representation for every user-configurable command.
Acceptance criteria
- On first run/onboarding, Atlas asks users to select an IDE/keybinding preset: Atlas default, VS Code/Cursor, Zed, and “decide later.” The choice is visible and reversible in Settings.
- Presets are action mappings, not scattered conditional branches; they cover global, editor, terminal, chat, panel/layout, and tab-navigation commands where equivalents exist.
- Every Atlas command that can reasonably be user-configured has a stable action id, default binding, scope/context, and editable binding representation.
- Settings lets users search commands, view current/default bindings, record a new shortcut, reset one/all commands, and resolve/reject conflicts before saving.
- Context precedence is explicit: focused editor/chat/terminal/panel bindings may override global bindings without unintentionally blocking system-reserved shortcuts.
- The system works on macOS and non-macOS conventions, preserves accessibility, and clearly warns about reserved/unavailable keys.
- User changes persist in the config mechanism defined by ATL-109; config edits and Settings edits round-trip without loss.
- Import/export or copy/paste of a keymap is supported in a documented stable format.
- Add migration from existing Atlas defaults and comprehensive tests for matching, context precedence, conflicts, presets, and config validation.
Relationship
Related to ATL-109 because keybinding presets and overrides should be part of the same config-file, validation, migration, and self-configuration foundation.
Goal
During onboarding, ask which IDE the user is coming from and apply a matching keybinding preset so Atlas respects established muscle memory. Support at least Atlas default, VS Code/Cursor-style, and Zed-style presets, then let every Atlas shortcut be inspected, changed, reset, imported/exported, and persisted.
This is deliberately a foundational issue: it must establish a real keybinding system rather than layering a few conditional checks over hard-coded shortcuts.
Investigation
src/App.tsxthroughuseHotkeys; the binding type only models a key plus meta/shift/alt booleans.Scope
Acceptance criteria
Relationship
Related to ATL-109 because keybinding presets and overrides should be part of the same config-file, validation, migration, and self-configuration foundation.