Pull Request Overview
- Opened on October 21, 2026
- Status Merged
- Commit count 3 with first commit October 21, 2026
Total Delta
Open Days
Test Delta
How long has this pull request spent in each phase of its lifecycle?
| Fraction of total time | Business days | Phase |
|---|---|---|
|
|
0.0 days | Authoring 2 commits before pull request opened for review |
|
|
0.0 days | Awaiting first review |
|
|
9.0 days | Merge to deploy (still awaiting deployment) |
Total time for pull request
0.0 business days
from first commit authored to merge
Still awaiting deployment
sessions: badge the activity bar Changes entry on unseen changes and show its stats on hover
What
In the Agents window, the Changes entry of the Session Activity Bar now:
- shows a blue badge (dot,
activityBarBadgecolors) over the icon's bottom-right corner — like the workbench activity bar — when the active chat has changes the user has not yet seen in the Changes tab; - shows the same stats as the Changes pill (
<n> Files +ins -del) in its hover and accessible label.
How
-
Activity service. NewISessionActivityBarActivityService(services/activity) mirrors the workbenchIActivityService:showActivity(commandId, IActivity)/getActivity/onDidChangeActivity, reusing the workbenchIActivity/IBadgetypes. Every Session Activity Bar entry is now aSessionActivityBarActionViewItemthat renders reported badges (count forNumberBadge, dot otherwise) and appends badge descriptions to its hover/aria label. -
Detecting new changes (contrib/changes/browser/changesActivity.ts). Per chat, we remember the Changes pill stats last seen while the session's Changes tab was shown (side pane visible, or in an auxiliary window). The badge shows when the current stats differ and there are changed files. The first observation of a chat only seeds the baseline, and stats are ignored while not loaded yet (changeset loading, or only a summary is known — Copilot provider restores), so opening/restoring sessions does not badge. Seen state is persisted (application storage, LRU 200 chats). -
Hover. The Changes entry uses a custom view item (viaIActionViewItemService) that extends the core one and renders the pill stats in the pill's colors. - Accessibility help for the Session Activity Bar mentions the new label content.
Notes for reviewers
- Known limitation: edits that leave the exact file/line counts unchanged are not detected; reverting changes while not looking badges (stats differ from what was seen).
- New fixture variant
sessionActivityBar/NewChanges(Dark/Light/HC) — screenshot baselines need to be accepted from CI.
Screenshots
Badge on unseen changes (live)
Hover shows the pill stats (live)

Badge across themes (fixture sessionActivityBar/NewChanges: Dark, Light, Dark HC, Light HC):

Testing
- Unit tests: activity service rendering/placement, seen-store persistence/eviction, contribution behavior (badge on unseen changes, cleared when the Changes tab is shown in the side pane or an auxiliary window, no badge for summary-only restores), loaded-stats helpers.
./scripts/test.shon the affected suites — 435 passing. -
npm run typecheck-client,npm run hygiene, ESLint, stylelint,npm run valid-layers-check,npm run check-cyclic-dependencies— clean. - Live in a dev build: a real agent turn with the Files tab active badges the entry; activating Changes clears it; reloading and visiting existing sessions (fresh seen state, side panel hidden) shows no false badges.
Comments Threads Pending Resolution
Resolved Comment Threads
> [!WARNING]
> Copilot couldn't run its full agentic review because it didn't start before the timeout. Make sure your repository has a runner available, or add a `copilot-code-review.yml` file specifying one with the `runs-on` attribute. See the [docs](https://gh.io/AA11tgch) for more details.
## Copilot review overview
7 open issues
-
[The rendered badge state is derived by summing all `NumberBadge`s and using `badges[0]` for colors,…](https://github.com/microsoft/vscode/pull/343335#discussion_r4341908856) · New
-
[The rendered badge state is derived by summing all `NumberBadge`s and using `badges[0]` for colors,…](https://github.com/microsoft/vscode/pull/343335#discussion_r4341908923) · New
-
[Every `set()` persists the full LRU map to storage via `JSON.stringify(...)`. When stats change…](https://github.com/microsoft/vscode/pull/343335#discussion_r4341908990) · New
-
[Every `set()` persists the full LRU map to storage via `JSON.stringify(...)`. When stats change…](https://github.com/microsoft/vscode/pull/343335#discussion_r4341909038) · New
-
[This test asserts exact `getBoundingClientRect()` pixel values for badge placement. Those values…](https://github.com/microsoft/vscode/pull/343335#discussion_r4341909114) · New
-
|
101
|
|
|||
|
102
|
|
Unspecified Git Hub Copilot Model | ||
|
103
|
|
|||
|
104
|
|
> [!WARNING]
> Copilot couldn't run its full agentic review because it didn't start before the timeout. Make sure your repository has a runner available, or add a `copilot-code-review.yml` file specifying one with the `runs-on` attribute. See the [docs](https://gh.io/AA11tgch) for more details.
## Copilot review overview
7 open issues
-
[The rendered badge state is derived by summing all `NumberBadge`s and using `badges[0]` for colors,…](https://github.com/microsoft/vscode/pull/343335#discussion_r4341908856) · New
[The rendered badge state is derived by summing all `NumberBadge`s and using `badges[0]` for colors,…](https://github.com/microsoft/vscode/pull/343335#discussion_r4341908923) · New
[Every `set()` persists the full LRU map to storage via `JSON.stringify(...)`. When stats change…](https://github.com/microsoft/vscode/pull/343335#discussion_r4341908990) · New
[Every `set()` persists the full LRU map to storage via `JSON.stringify(...)`. When stats change…](https://github.com/microsoft/vscode/pull/343335#discussion_r4341909038) · New
[This test asserts exact `getBoundingClientRect()` pixel values for badge placement. Those values…](https://github.com/microsoft/vscode/pull/343335#discussion_r4341909114) · New
-
-
-
-
-