Every view shows the numbers you asked for, your saved team comes back on every load, and a bad moment at Azure DevOps can no longer cost you your settings.
Your saved team comes back on every load again. If the project you had saved as your default was not the project the Azure DevOps page was opened from, the hub could restore the project but leave the team picker on “Select team” on every load and every refresh, so you had to pick your team again each time. The hub now waits for the saved project’s own team list before deciding, and re-applying your saved team no longer writes the same value back to your settings on every start.
Every view starts a fresh load when you change team, sprint, window or project, but the previous load was still running and whichever answer arrived last won, so clicking through teams faster than Azure DevOps answers could show one team’s throughput, cycle time, DORA figures, cumulative flow, heat map, delivery signals, process behaviour chart, executive report or investment split under another team’s name, with no error and no way to tell. All of these views now share one rule: only the load you actually asked for is allowed to draw, including its loading and error states. Org Hygiene scans the project you switched to with that project’s own teams, Sprint Detail, Retro Snapshot, the Readiness check and the add-team project picker no longer show a previous team’s data under the new name, and DORA’s CSV export buttons wait for the matching window’s figures.
Four stored documents used to answer a failed read the way they answer a brand-new install, with the built-in defaults, remember those for the session, and write them back over the real document on the next save. One hiccup could cost you your personal preferences, your notification webhooks, your work item type lists and Investment Tags, or your organisation’s access-control list, with a green “saved” message. A read that could not be completed is now never remembered, nothing is written over a document we could not read (you see “could not be loaded just now, so nothing was saved. Try again in a moment”), Configuration no longer offers to auto-detect your work item types when it could not read what you already have, access control is never bootstrapped off a failed read, and charts keep counting your custom work item types.
A sprint whose work items could not all be fetched used to come back short and be stored as the whole sprint for up to half an hour, so throughput, velocity, commitment reliability, carryover and scope change read low with nothing on screen to say so, and the failed batch fired up to two hundred more requests at a service that had just asked for fewer. A busy moment is now retried briefly with a pause; if some items still cannot be fetched, the Dashboard, Sprint Summary, Flow Metrics and Cycle Time all show the “some data could not be loaded” notice, and the short result is kept for minutes rather than half an hour. Team scoping no longer drifts for the rest of the session after one failed lookup, the project picker reads every project rather than the first hundred, and the first screen on a large project no longer waits on twenty-five sequential fetches.
Team Benchmarks shows a dash, not a bold green “0/0”, for a team the WIP Monitor has no data for, sorts such teams to the bottom of that column, and explains itself when the WIP Monitor has never been set up. Team Health’s WIP-control score no longer drops to zero for a utilisation number with a decimal. Delivery Signals’ Median Cycle Time, the Sprint Breakdown table, the trend lines under all four cards and the CSV export leave a sprint with nothing completed out instead of counting it as 0.0 days. The Cycle Time chart’s month labels and the Retro Snapshot’s sprint dates now show the calendar date the sprint used for people whose clock is set west of UTC.
Feature Analytics and Epic Analytics gather what they need first and read it in batches instead of one request per Feature, hold the result for a couple of minutes so switching away and back is instant, and have a Refresh button in the same place as the Executive Report’s. Epic Analytics reads only the Epics in your team scope. A Feature whose stories could not be read now says so instead of showing “0 stories, 0 SP, 0% complete” and is left out of the totals. Live Stats loads its teams four at a time. The hub and the dashboard tiles no longer download all six interface languages on every load: only English plus, when the interface is not in English, your language, and the screen fills in even if that language file is slow.
Dialogs take focus when they open, keep Tab inside, close on Escape and return focus afterwards. The licence-key field, the trial contact field and every other unlabelled input now has a real name, a visible focus ring appears when you tab to a control, tabs and toggle chips announce which one is selected, Org Hygiene’s sections, the heat map’s drill-down cells, Feature Analytics’ filter-clear buttons and the Live Stats team row work from the keyboard, and twelve charts that had no description for a screen reader now describe what they show. Investment Allocation’s error message is readable in light theme.
Configuration, Readiness now shows every diagnostic check, its detail and its next step in the language you picked, and AI Metrics translates its analysis (the metric glossary, benchmark and quadrant cards, recommended actions and methodology notes), not just its chrome. The AI Impact panel no longer shows an alert count built from sample data before an AI source is connected. Picking a team in a dashboard tile’s Configure panel now tells the dashboard straight away, so its Save button and preview respond the way every other Azure DevOps widget does. Sprint Capacity no longer risks mixing up two members who both have no display name.
Data & Privacy no longer describes the Sprint Assistant AI Coach or an OpenAI key setting that were removed in July, AI Metrics’ “Custom API” option is shown disabled with a plain explanation of why it cannot connect, and a custom endpoint must use HTTPS so your API key is never sent in the clear. “Export Configuration” now includes your Item Types and Investment Tags setup, so the downloaded snapshot is a complete backup of it.
Monte Carlo, DORA Metrics, WIP Monitor, Sprint Capacity, Next Sprint Planning, Retro Snapshot, Cycle Time Heatmap, Flow Efficiency, Org Hygiene, the dashboard widgets and the AI Metrics connection now tell us when they fail to load, the same way other views already did, so a broken view is caught sooner. This collects no new data: only that something failed and roughly why, never your project or work item content, and when a view crashes the error text itself is no longer sent, only a coarse category.