Commit Graph

6 Commits

  • fix(coding-agent): make tests keybinding-agnostic
    Reset global editor keybindings to defaults in beforeEach for
    session-selector-rename and tree-selector tests. Pass
    KeybindingsManager.inMemory() to SessionSelectorComponent in tests
    to avoid reading user keybindings.json.
    
    Closes #2360
  • Pr 1724 (#1939)
    * feat(coding-agent): add fold/unfold to tree branch navigation
    
    Remap left/right arrow keys in the session tree to jump between branch
    segment starts (first child of each branching point). Left on a foldable
    node (root or segment start) folds it, hiding its descendants. Right on
    a folded node unfolds it. Nested fold state is preserved. Search and
    filter changes reset all folds.
    
    Folded branches show ⊞ in the connector (├⊞/└⊞) or as a prefix for
    roots. Active path marker • appears after the fold indicator.
    
    Add Page Up/Down support for paging through the tree list, consistent
    with session selector and config selector.
    
    * feat(coding-agent): improve tree branch folding closes #1724
    
    ---------
    
    Co-authored-by: Sviatoslav Abakumov <dust.harvesting@gmail.com>
  • Fix tree selector focus behavior (#1142)
    * fix(coding-agent): tree selector focuses nearest visible ancestor
    
    When the selected entry is not visible (filtered out by mode change or a
    metadata entry like model_change), walk up the parent chain to find the
    nearest visible ancestor instead of jumping to the last item.
    
    Fixes selection behavior for:
    
    - Initial selection when currentLeafId is a metadata entry
    - Filter switching, e.g. Ctrl+U for user-only mode
    
    * fix(coding-agent): tree selector preserves selection through empty filters
    
    When switching to a filter with no results, e.g. labeled-only with no
    labels and back, the cursor would reset to the first message instead of
    the original selection.
    
    Track lastSelectedId as a class member and only update it when
    filteredNodes is non-empty, preserving the selection across empty filter
    results.
    
    * test(coding-agent): add tree selector filter and selection tests
    
    - Test metadata entry handling (model_change, thinking_level_change)
    - Test filter switching with parent traversal (default ↔ user-only)
    - Test empty filter preservation (labeled-only with no labels)