csharpfritz / csharpfritz/SquadUI

VS 2026: Team roster tool window

Open
#45 1 comment 0 reactions 0 assignees View on GitHub
deferred enhancement squad:turk vs2026
Dominant language
TypeScript
Stars
18
Forks
3
PR merge metrics
No merged PRs in 30d

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.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` — 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` — 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
- **Depends on:** Issue #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` 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)

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.