Xit icon indicating copy to clipboard operation
Xit copied to clipboard

Tabbed sidebar

Open Uncommon opened this issue 1 year ago • 1 comments

Separate the sidebar groups - local branches & workspace, remotes, tags, stashes, submodules - into tabs, similar to Xcode.

  • Local: Keep "workspace" as a separate item at the top, and the hierarchical branch list below; may eventually contain workspaces
    • Indicate current branch
    • Filter can search entire name or last "path" component
    • Pull request and build status indicators
  • Remotes: Each remote is listed, with its branches as sub-items
  • Tags: Hierarchical list of tags
    • Solid or filled icon indicates regular vs lightweight tag
    • Certificate badge icon indicates signed tag
    • Maybe show date on the right for each tag
    • Rollover info icon has popover with more info
  • Stashes: Chronological list of stashes
    • Changed file count indicator
    • Future feature: filter searches in file changes
  • Submodules: Alphabetical list; does not affect the right side of the window

Each tab also has a filter field at the bottom, possibly also with an action popup and right-side icons for other filter options.

Add maybe in the future (to keep the initial scope contained):

  • Search: move the current search bar to the sidebar
    • Option to search commit messages or changes
    • Regular expressions, fuzzy, or exact
    • Case sensitive
  • File history: list changes to a selected/dragged file
    • Similar options as Search - regex etc
    • Selecting a result selects the commit and the file

Uncommon avatar Aug 31 '24 19:08 Uncommon

In-progress tasks:

  • [x] Cache the lists for each tab so it doesn't reload from the repo on every tab switch
  • [ ] Change the BranchAccessorizer mechanism to enable triggering updates externally
  • [ ] Implement find bar menu commands for branches
  • [ ] Implement find bar menu commands for remotes
  • [ ] Implement find bar menu commands for tags
  • [ ] Implement find bar menu commands for stashes
  • [ ] Implement find bar menu commands for submodules
  • [ ] Context menus
    • [ ] Branch
    • [ ] Remote
    • [ ] Remote branch
    • [ ] Tag
    • [ ] Submodule
    • [ ] Stash
  • [ ] Tag info popover
  • [ ] Implement pull request accessories
  • [ ] Implement build status accessories

Uncommon avatar Oct 09 '24 15:10 Uncommon