Originally created by: adityaharishch
Summary
- Full Azure DevOps integration as a fifth PM provider (alongside Jira, GitHub, Linear, Trello)
- PAT-based auth supporting all three URL shapes:
dev.azure.com/{org}, {org}.visualstudio.com, on-premises TFS/Azure DevOps Server
- Dynamic state filtering via the per-type states API (no state names injected into WIQL — handles custom states and apostrophes safely)
- Worklogs posted as work item comments using the 7.1-preview.4 endpoint (same pattern as GitHub/Linear/Trello)
- UI integrations panel detects connection, shows setup steps with copy-paste env block
meridian setup / install-from-bundle.sh prompt for PAT + org + project interactively
What was verified
- WIQL fetch against
dev.azure.com/adithyaharish/Meridian: returns assigned work item IDs ✓
- States API (
/_apis/wit/workitemtypes/Task/states): returns correct state→category mapping ✓
- Batch work item fetch: returns Title, WorkItemType, State, ChangedDate ✓
- Worklog comment post to work item [#3]:
id=8307849 returned ✓
- All 26 unit tests pass; 4 integration tests pass; clippy clean; UI builds clean ✓
Note: On-premises support is built to the Azure DevOps REST API spec but not live-tested (no on-prem instance available). Cloud (dev.azure.com) is fully verified.
Reminder for the reviewer: the test PAT in .env was used during development and should be rotated before any deployment.
Test plan
- [ ] Set
AZURE_DEVOPS_PAT, AZURE_DEVOPS_ORG, AZURE_DEVOPS_PROJECT and run meridian force-pm-sync
- [ ] Verify work items appear in Tasks view of the dashboard with
Az glyph
- [ ] Approve a worklog draft in the Worklogs view and confirm a comment appears on the Azure DevOps work item
- [ ] Disconnect via the integrations panel and confirm keys are cleared from
.env
- [ ] Test legacy URL: set
AZURE_DEVOPS_ORG=yourorg.visualstudio.com (no AZURE_DEVOPS_ORG_URL) and verify it resolves correctly
Ticket changed by: Akarsh-Hegde
Originally posted by: adityaharishch
🎉 This PR is included in version 1.39.0 🎉
The release is available on:
v1.39.0Your semantic-release bot 📦🚀