-
Notifications
You must be signed in to change notification settings - Fork 4
Open
Labels
deferredenhancementNew feature or requestNew feature or requestsquad:turkAssigned to Turk (VS Extension Dev (VS 2026 UI))Assigned to Turk (VS Extension Dev (VS 2026 UI))vs2026Visual Studio 2026 extension developmentVisual Studio 2026 extension development
Description
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.mdchanges (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 listSelectedMember: TeamMemberViewModel— selection trackingRefreshCommand: ICommand— manual refreshOnTeamMdChanged()method — triggered by FileWatcherService- Properties: IsLoading, ErrorMessage, LastRefreshTime
Create TeamMemberViewModel:
Name,Role,Status— display propertiesIssueCount— calculated from GitHub integration (if available)Issues: ObservableCollection<IssueViewModel>— expandable child nodesIsExpandedbinding for expand/collapse state
Theme Integration
- Use VS 2026 color resources:
VsColors.WindowTextBrushKeyfor textVsColors.WindowBackgroundBrushKeyfor backgroundsVsColors.ToolWindowButtonDownBorderBrushKeyfor separators
- Test on all three theme variants (Dark, Light, Blue)
Service Integration
- Inject
ITeamMdServiceto fetch team data - Inject
IFileWatcherServiceto 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
- Depends on: Issue VS 2026: Core services — .ai-team file parsing in C# #44 (VS 2026: Core services — .ai-team file parsing in C#)
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)
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
deferredenhancementNew feature or requestNew feature or requestsquad:turkAssigned to Turk (VS Extension Dev (VS 2026 UI))Assigned to Turk (VS Extension Dev (VS 2026 UI))vs2026Visual Studio 2026 extension developmentVisual Studio 2026 extension development