Skip to content

VS 2026: Team roster tool window #45

@csharpfritz

Description

@csharpfritz

Description

Create a WPF/XAML tool window displaying the Squad team roster. This is the first UI surface for the VS 2026 extension and equivalent to the VS Code "Team" tree view. Members are displayed in a hierarchical TreeView with details (role, status, GitHub integration).

This issue depends on Issue #44 (core services) being complete.

Acceptance Criteria

  • Tool window created and registered in extension
  • TreeView shows team members with proper hierarchy
  • Member details displayed: Name, Role, Status indicator (emoji or icon)
  • Expandable member nodes show GitHub issues assigned to that member
  • Visual Studio theme integration (dark, light, blue themes all work)
  • MVVM pattern used: ViewModel drives TreeView binding
  • Commands integrated:
    • Right-click member → View GitHub issues
    • Right-click member → View activity log (if available)
  • Auto-refresh when .ai-team/team.md changes (via FileWatcherService)
  • Tool window properly docked and styled (margins, fonts, colors)
  • Unit tests for ViewModel logic

Implementation Details

Project Structure

Add to VS 2026 project:

Tools/
  TeamRosterToolWindow.xaml       (UI)
  TeamRosterToolWindow.xaml.cs    (code-behind)
ViewModels/
  TeamRosterViewModel.cs          (MVVM ViewModel)
  TeamMemberViewModel.cs          (member list item)
Models/ (shared across extension)
  TeamMember.cs                   (data model from Issue #44)

XAML Tool Window

  • Root: WPF Window with standard VS 2026 chrome
  • Layout: TreeView with HierarchicalDataTemplate
  • Member nodes:
    ⚡ Danny (Lead/Architect) [Active]
      📝 #42 Fix login validation
      📝 #45 Refactor auth service
    💤 Rusty (Extension Dev) [Idle]
      (no issues assigned)
    
  • Visual indicators:
    • Status: ⚡ (active/working), 💤 (idle), 🟢 (available)
    • Role badge: (Lead), (Dev), (QA), etc.
    • Issue count: shown in node or separate column

MVVM ViewModel

Create TeamRosterViewModel:

  • Teams: ObservableCollection<TeamMemberViewModel> — bindable list
  • SelectedMember: TeamMemberViewModel — selection tracking
  • RefreshCommand: ICommand — manual refresh
  • OnTeamMdChanged() method — triggered by FileWatcherService
  • Properties: IsLoading, ErrorMessage, LastRefreshTime

Create TeamMemberViewModel:

  • Name, Role, Status — display properties
  • IssueCount — calculated from GitHub integration (if available)
  • Issues: ObservableCollection<IssueViewModel> — expandable child nodes
  • IsExpanded binding for expand/collapse state

Theme Integration

  • Use VS 2026 color resources:
    • VsColors.WindowTextBrushKey for text
    • VsColors.WindowBackgroundBrushKey for backgrounds
    • VsColors.ToolWindowButtonDownBorderBrushKey for separators
  • Test on all three theme variants (Dark, Light, Blue)

Service Integration

  • Inject ITeamMdService to fetch team data
  • Inject IFileWatcherService to subscribe to .ai-team/ changes
  • On file change: call service's GetTeamMembers() and refresh ViewModel

Commands

  • Right-click context menu on member:
    • "View GitHub Issues" → Opens browser to member's GitHub issues filter
    • "Copy GitHub Username" → Clipboard

Size Estimate

M (Medium) — 4-6 hours

Priority

P1 (Critical Path)

Dependencies

Related

  • VS Code equivalent: src/views/SquadTreeProvider.ts — tree view logic
  • VS Code equivalent: src/views/SquadStatusBar.ts — status indicators

Notes

  • Keep ViewModel testable — separate UI binding from business logic
  • Use ObservableCollection<T> for automatic UI updates
  • Don't call async service methods on UI thread; use Task.Run with Dispatcher.InvokeAsync for callbacks
  • WPF performance: if team grows to 100+ members, consider virtualizing TreeView
  • Turk (VS 2026 Extension UI) leads this work with WPF/XAML expertise
  • Assigned to: squad:turk (VS 2026 Extension UI)

Metadata

Metadata

Assignees

No one assigned

    Labels

    deferredenhancementNew feature or requestsquad:turkAssigned to Turk (VS Extension Dev (VS 2026 UI))vs2026Visual Studio 2026 extension development

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions