A comprehensive Stream Deck plugin that provides real-time monitoring and control of your Azure DevOps environment directly from your Stream Deck. Now featuring 10 powerful actions for complete DevOps visibility!
- 10 Powerful Actions: Complete Azure DevOps monitoring suite
- Real-time Updates: Live status updates with configurable refresh intervals
- Profile Management: Manage multiple Azure DevOps organizations
- Secure Storage: AES-256-GCM encryption for all credentials
- Visual Indicators: Color-coded states for instant status recognition
- One-Click Actions: Execute DevOps operations directly from Stream Deck
- Smart Caching: Optimized API usage with intelligent caching
- 100% Test Coverage: Thoroughly tested with 1043 passing tests
The plugin now features a powerful profile-based configuration system:
- Multiple Profiles: Manage multiple Azure DevOps organizations and projects
- Centralized Management: Configure credentials once, use everywhere
- Quick Switching: Easily switch between different environments
- Secure Storage: All credentials are encrypted using AES-256-GCM
- Import/Export: Share configurations with your team (without sensitive data)
See the Profile Configuration Guide for detailed setup instructions.
- Profile Management: Create and manage multiple Azure DevOps configurations
- Centralized Credentials: Store credentials once, use across all actions
- Connection Testing: Verify connections before saving
- Profile Import/Export: Share configurations with team members
- Profile Duplication: Quickly create similar configurations
- Default Profile: Set a default profile for new actions
- Real-time Build Status: View the current status of your Azure DevOps pipelines
- Branch Filtering: Monitor specific branches (main, develop, feature branches) or all branches
- Visual Indicators: Color-coded states for Success (green), Failed (red), Running (blue), Partial (yellow), Canceled (gray)
- Build Details: Shows build number, version, duration, and last run time
- One-Click Access: Press to open pipeline directly in Azure DevOps
- Auto-refresh: Configurable intervals from 30 seconds to 5 minutes
- Smart Caching: Minimizes API calls with intelligent result caching
- PR Status Tracking: Monitor open, active, and draft pull requests
- Multi-Repository Support: Track PRs across all or specific repositories
- Advanced Filtering:
- By status (Active, Draft, Completed, Abandoned)
- By target branch
- By creator or reviewer
- By age (days since creation)
- Visual Metrics: Shows PR count, age, and merge conflicts
- Review Status: See approval status and required reviewers
- Quick Navigation: Click to open PR list in browser
- Real-time Tracking: Monitor assigned work items, bugs, and tasks
- Advanced Filtering: By iteration, area path, assignee, or state
- Visual Priority: Color-coded priority indicators
- Quick Updates: Update work item status directly from Stream Deck
- Smart Grouping: Group by type, state, or assignee
- Sprint Burndown: Real-time visualization of sprint progress
- Story Points: Track completion percentage and velocity
- Sprint Metrics: Current velocity vs. average velocity
- Time Tracking: Days remaining with on-track/behind indicators
- Alert System: Automatic alerts when sprint is at risk
- Commit Activity: Monitor recent commits and trending activity
- Branch Management: Track active branches and PR readiness
- Code Metrics: Lines of code, churn rate, and growth trends
- Contributor Insights: See who's actively contributing
- Repository Health: Size, last activity, and maintenance indicators
- Multi-Environment: Track deployments across all environments
- Stage Progression: Visual stage-by-stage deployment status
- Approval Tracking: See pending approvals and approvers
- Deployment History: Recent deployments with success rates
- Quick Actions: Approve, reject, or redeploy from Stream Deck
- Queue Visibility: See all queued and running builds
- Agent Pool Status: Available vs. busy agents
- Queue Position: Your build's position in the queue
- Build Control: Queue new builds or cancel existing ones
- Wait Time Estimates: Predicted wait times based on current queue
- Test Metrics: Pass/fail rates with trend analysis
- Coverage Tracking: Code coverage percentage and trends
- Failed Test Details: Quick access to failing test names
- Performance Metrics: Test execution duration trends
- Flaky Test Detection: Identify unreliable tests automatically
- Stream Deck 6.5 or later
- Windows 10+ or macOS 12+
- Azure DevOps account with appropriate permissions
- Personal Access Token (PAT) with Build (read) permissions
- Download the latest
.streamDeckPlugin
file from the Releases page - Double-click the downloaded file to install it in Stream Deck
- The plugin will appear in your Stream Deck application automatically
# Clone the repository
git clone https://github.com/SShadowS/azure-devops-stream-deck.git
cd azure-devops-stream-deck
# Install dependencies
npm install
# Build the plugin
npm run build
# Link to Stream Deck (for development)
streamdeck link com.sshadows.azure-devops-info.sdPlugin
# Or create a packaged plugin
streamdeck pack com.sshadows.azure-devops-info.sdPlugin
-
Add the action to your Stream Deck
- Open Stream Deck software
- Search for "Pipeline Status" in the actions list
- Drag it to a button on your Stream Deck
-
Configure Azure DevOps connection
- Click on the button to open Property Inspector
- Enter your settings:
- Organization URL:
https://dev.azure.com/yourorg
- Project Name: Your Azure DevOps project
- Pipeline ID: Numeric ID (found in pipeline URL)
- Branch Name (Optional): Specific branch to monitor
- Personal Access Token: Your PAT (see below)
- Refresh Interval: 30-300 seconds
- Organization URL:
-
Test and verify
- Click "Test Connection" to validate settings
- Button will display current pipeline status
- Add PR Checks action to Stream Deck
- Configure in Property Inspector:
- Azure DevOps credentials (same as pipeline)
- Repository filter (all or specific)
- PR status filter (Active, Draft, etc.)
- Optional: Branch, creator, reviewer filters
- Button shows PR count and status
- Sign in to your Azure DevOps organization
- Click on your profile picture β Security β Personal access tokens
- Click "New Token"
- Configure the token:
- Name:
Stream Deck Plugin
- Organization: Select your organization
- Expiration: Set as needed (up to 1 year)
- Scopes:
- β Build β Read
- β Code β Read (for PR monitoring)
- β Work Items β Read (for upcoming features)
- Name:
- Click "Create" and copy the token immediately
- Store it securely - you won't be able to see it again!
- Node.js 20+
- npm 10+
- Stream Deck SDK CLI:
npm install -g @elgato/cli
- Azure DevOps account with PAT
# Clone and setup
git clone https://github.com/SShadowS/azure-devops-stream-deck.git
cd azure-devops-stream-deck
npm install
# Development (with auto-reload)
npm run watch
# Testing
npm test # Run tests
npm run test:watch # Watch mode
npm run test:coverage # Coverage report
# Build & Package
npm run build # Build plugin
streamdeck pack com.sshadows.azure-devops-info.sdPlugin # Create .streamDeckPlugin
azure-devops-stream-deck/
βββ com.sshadows.azure-devops-info.sdPlugin/
β βββ manifest.json # Plugin metadata & 10 actions
β βββ bin/
β β βββ plugin.js # Compiled plugin (generated)
β βββ ui/ # Property Inspector HTML (10 actions)
β β βββ pipeline-status.html
β β βββ pr-checks.html
β β βββ work-item-status.html
β β βββ sprint-progress.html
β β βββ repository-stats.html
β β βββ release-pipeline.html
β β βββ build-queue.html
β β βββ test-results-summary.html
β β βββ configuration-manager.html
β βββ imgs/ # Action icons (multiple sizes)
β βββ actions/ # Icons for all 10 actions
βββ src/
β βββ plugin.ts # Main entry point
β βββ interfaces/ # TypeScript interfaces for DI
β βββ actions/ # Stream Deck action handlers (10)
β β βββ pipeline-status.ts
β β βββ pr-checks.ts
β β βββ work-item-status.ts
β β βββ sprint-progress.ts
β β βββ repository-stats.ts
β β βββ release-pipeline-monitor.ts
β β βββ build-queue-manager.ts
β β βββ test-results-summary.ts
β β βββ configuration-manager.ts
β βββ services/ # Azure DevOps API services
β β βββ azure-devops-client.ts
β β βββ pipeline-service.ts
β β βββ pull-request-service.ts
β β βββ work-item-service.ts
β β βββ sprint-service.ts
β β βββ repository-stats-service.ts
β β βββ release-pipeline-service.ts
β β βββ build-queue-service.ts
β β βββ test-results-service.ts
β β βββ profile-manager.ts
β βββ utils/ # Helpers & utilities
β β βββ credential-manager.ts
β β βββ action-state-manager.ts
β β βββ settings-manager.ts
β β βββ error-handler.ts
β βββ test-helpers/ # Testing utilities
βββ .github/
β βββ workflows/ # CI/CD pipelines
β βββ ci.yml # Test, build, release
βββ package.json # Dependencies & scripts
- SOLID Principles: Full implementation of SOLID design principles for maintainability
- Dependency Injection: Constructor-based DI for improved testability and flexibility
- Actions: Singleton pattern for managing multiple button instances
- Services: Abstracted Azure DevOps API interactions with intelligent caching
- Security: AES-256-GCM encryption for credential storage
- Performance: Connection pooling, request debouncing, smart caching, memory optimization
- Testing: Jest with 100% test pass rate (1043 tests), comprehensive mocking
- Error Handling: Robust error recovery with exponential backoff and retry logic
- State Management: Centralized state management with ActionStateManager
- β Verify PAT hasn't expired
- β Check token has required permissions (Build: Read, Code: Read)
- β
Confirm organization URL format:
https://dev.azure.com/yourorg
- β Ensure project name matches exactly (case-sensitive)
- β
Use numeric Pipeline ID from URL (e.g.,
123
from.../pipelines/123
) - β Verify you have access to the pipeline
- β Check project name spelling
- β
Check logs:
- Windows:
%appdata%\Elgato\StreamDeck\logs\
- macOS:
~/Library/Logs/ElgatoStreamDeck/
- Windows:
- β Verify network/proxy settings
- β Increase refresh interval if rate-limited
- β Try "Test Connection" button
- Increase refresh interval (60+ seconds recommended)
- Check for multiple instances monitoring same pipeline
- Verify no connection errors causing retry loops
Enable detailed logging by editing src/plugin.ts
:
streamDeck.logger.setLevel(LogLevel.TRACE);
- Encryption: PATs encrypted with AES-256-GCM
- Storage: Credentials stored in Stream Deck's secure settings
- Transmission: Direct HTTPS to Azure DevOps only
- Logging: Tokens never logged or exposed
- Expiration: Automatic detection and user notification
- Best Practices:
- Use minimum required permissions
- Rotate tokens regularly
- Set appropriate expiration dates
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch:
git checkout -b feature/amazing-feature
- Make your changes and test thoroughly
- Commit using conventional commits:
feat:
New featurefix:
Bug fixdocs:
Documentation changestest:
Test additions/changesrefactor:
Code refactoring
- Push to your fork:
git push origin feature/amazing-feature
- Open a Pull Request
We use Conventional Commits for automatic versioning:
fix: correct pipeline status color
β Patch release (1.0.1)feat: add work item tracking
β Minor release (1.1.0)feat!: redesign API
orBREAKING CHANGE:
β Major release (2.0.0)
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with Elgato Stream Deck SDK v2
- Powered by Azure DevOps Node API
- Icons and UI components from Stream Deck SDK
- Community feedback and contributions
- Issues & Bugs: GitHub Issues
- Discussions: GitHub Discussions
- Latest Releases: GitHub Releases