Skip to content

Add IDE-aware onboarding and fully configurable keybindings #79

Description

@uzayer

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

  1. Build an action-based, centrally registered keybinding architecture with declarative defaults, context/scope, platform normalization, conflict detection, and precedence.
  2. 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.
  3. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions