Repository navigation
Description
Before submitting
- I searched existing issues and did not find a duplicate.
- I included enough detail to reproduce or investigate the problem.
Area
apps/server
Steps to reproduce
- Open an active Azure DevOps pull request in T3 Code (Pull requests page or a thread's PR panel).
- From outside T3 Code, push a commit to its branch or add a comment in Azure DevOps.
- Leave the panel open for a few minutes.
Expected behavior
updatedAt follows the pull request's latest activity, as it does for GitHub. The panel's "updated" label moves, and anything T3 Code refreshes on an updatedAt change picks up the push or comment.
Actual behavior
For open Azure DevOps pull requests, updatedAt is always the creation time. It only changes when the pull request closes (it becomes closedDate).
Azure's pull request resource has no last-updated field (same fields in REST 5.0, which az repos pr show/list use, 7.1 and 7.2-preview). The adapter falls back to closedDate ?? creationDate:
packages/source-control-azure-devops/src/server/azureDevOpsPullRequestJson.ts:223packages/source-control-azure-devops/src/server/azureDevOpsPullRequests.ts:178
Azure does record activity elsewhere. Every push, vote, reviewer change, status change and comment creates or updates a pull request thread, and each thread carries lastUpdatedDate.
Impact
T3 Code uses an updatedAt change as its signal that a pull request moved. For Azure DevOps that signal never fires while the pull request is open.
| Feature | Observed (dev build, Azure DevOps Services) |
|---|---|
| Open PR panel, Code tab | After a push the diff stayed on the old version for 2+ min, also after switching tabs. The client sent no further detail or diff request. |
| Open PR panel, comments | A new comment stayed missing (Comments (0)) for 2+ min. |
| "updated X ago" in panel and list | Shows the creation time, e.g. "updated 3m ago" 30 s after a push. |
| Background sync of linked PRs | Every Azure PR is treated as quiet 30 min after creation, however active, and is then read every 5 min instead of every minute (measured: 5 min 26 s vs 84 s to pick up a rename). |
| "Recently updated" sort | Sorts by creation time; a PR commented on a minute ago sorted below a newer, idle one. |
Found in code, not exercised: mobile drops a list row's cached diff stats only when its updatedAt moves, and a thread orders its linked PRs by updatedAt.
Version or commit
Reproduced on bc3eb6d. The code is unchanged on current main.
Environment
Linux, web client served by vp run dev; Azure CLI 2.92.0 with azure-devops 1.0.10; Azure DevOps Services.
Logs or stack traces
Azure vs. T3 Code after a push and a comment (test PR 1)
azure creationDate=2026-11-11T20:55:57.58Z closedDate=null
azure latest iteration updatedDate=2026-11-11T20:56:11.68Z (2 iterations)
azure latest thread lastUpdatedDate=2026-11-11T20:56:14.34Z (RefUpdate, comment, ReviewersUpdate, VoteUpdate)
t3 detail, summary and list updatedAt=2026-11-11T20:55:57.58Z
Background sync, both PRs renamed on Azure at 21:25:59
test PR 3 created 21:14:55 (active) rename picked up 21:27:23 (84 s)
test PR 1 created 20:55:57 (quiet) rename picked up 21:31:26 (5 min 26 s)
Screenshots, recordings, or supporting files
A pull request linked to a thread, its panel left open on the Code tab, and a push from outside T3 Code:
Workaround
The Pull requests page's Refresh button drops the cached reads, so the Code tab and comments catch up. The "updated" time stays wrong.

Activity