Megan Rogge
90d · built 2026-09-30
Performance
What Megan Rogge shipped in the selected window, measured in ETV, and how it compares with the 90 days before it.
Effective capacity
+19.4engineers
delivers like 20.4 (20.4x pre-AI)
Output (ETV)
111.8ETV
+394.6% vs 22.6 prior
Features share
40.7%
+8.9 pp vs prior window
Fixes share
15.5%
−30.5 pp vs prior window
Work mix
40.7% Features11.2% Maintenance31.9% Tests0.6% Docs15.5% Fixes
253 commits over 90 days, ending 2026-09-30.
Where this dev ranks
Percentile against the global top-100 leaderboard (all-time totals).
- By commits
- Top 14 %
- By Features share
- Top 29 %
Daily performance
Daily ETV, stacked by Features, Maintenance, Tests, Docs and Fixes.
Repository spread
Where this developer's commits land. Concentrated work (top1 > 80%) vs polymath spread (top1 < 30%).
Most impactful commits
Top 10 by ETV in the last 90 days.
- 13.9ETVagent bakeoff (#335498) * sessions: add agent attempt comparisons Add a multi-harness comparison workflow with isolated child sessions, provider-owned shared-model resolution, visible judging, evidence review, synthesis, and explicit cleanup.\n\nFixes #335085\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: address agent comparison feedback Preserve comparison configuration and provenance, make comparison evidence and controls accessible, normalize worktree changes, and add lifecycle regression coverage. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: fix agent comparison CI Format comparison sources, preserve provider option shapes when provenance is absent, and compare persisted creation references through their public URI representation. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: register comparison service in fixture Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: refresh comparison fixture modules Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: invalidate comparison fixture cache Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: stabilize comparison fixtures Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: update comparison screenshots Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: remove fixture cache diagnostics Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: add agent comparison attempt setup Represent comparisons as uniquely identified attempts with provider-local model selection. Add a focused setup dialog, shared-context and usage disclosures, and keep synthesis explicit. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: refine agent attempt comparisons Improve the parallel-attempt setup and comparison hierarchy, add structured Judge evidence and verdict tools, and record provider-neutral token usage with OTel correlation.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: add post-judge review flow Make the Judge review every attempt and record validation provenance, then surface a recommendation-first result with explicit human review routing. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: tile comparison attempts while running Open live attempt sessions in an adaptive grid while work is active, then return to the standard comparison editor when all attempts are terminal. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: ae987bcc-580a-4ea6-8789-828cf5d1d6fa * sessions: refine comparison review completion Load Judge instructions from a packaged prompt, open the comparison when judging completes, and present a winner-focused result with deterministic synthesis evidence. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: polish comparison progress and actions Keep comparison participants visually connected, preserve progress visibility, hide stale details on participant navigation, and place winner/synthesis actions at the end of completed results. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: move comparison results into judge Replace the standalone comparison editor with a participant grid and a Judge-owned result card. Keep custom dialog controls in the keyboard focus loop so attempt agent and model selectors are operable without a mouse.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: use tmux-style comparison grid layouts Choose comparison grid columns from the number of active attempts so four sessions form a 2x2 grid, six form 3x2, and nine form 3x3. Keep phone layouts in a single column. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: ae987bcc-580a-4ea6-8789-828cf5d1d6fa * sessions: prioritize comparison review sessions Show Judge and synthesis before attempt sessions in both the list and tiled grid. Keep group connector decoration limited to implementation attempts.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: fix comparison attempt scrolling Constrain the element measured by DomScrollableElement so additional attempt rows activate the custom scrollbar.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: improve comparison accessibility Ensure setup groups, result actions, and compact comparison attempts expose names that match their visible presentation. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: improve comparison judge reliability Make attempt validation use authoritative worktrees, represent inapplicable validation explicitly, and allow rejected verdicts to be corrected. Repair the affected test and fixture infrastructure exposed by CI. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: use stable attempt numbers in judge verdicts Prevent verdict submission failures caused by models mistyping or combining participant and session UUIDs. Map manifest attempt numbers back to internal participant IDs when persisting the verdict. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: fix parallel agents action label Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: refine comparison progress UI Keep the parallel-agent workflow discoverable when the selected workspace cannot create isolated worktrees, and rely on progress indicators instead of redundant working/completed labels. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: add customizable synthesis plans Let the Judge identify semantic implementation decisions, allow users to choose an attempt per section, and pass the persisted plan to the isolated synthesis session. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: ae987bcc-580a-4ea6-8789-828cf5d1d6fa * sessions: simplify synthesis option labels Show only the agent and model in synthesis approach selectors while keeping stable attempt numbers in the Judge contract. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: ae987bcc-580a-4ea6-8789-828cf5d1d6fa * sessions: remove visible attempt number prefixes Show comparison attempts by agent and model across session titles, pane headers, sidebar rows, and Judge results. Migrate untouched legacy generated titles while retaining stable attempt numbers in the Judge protocol. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: ae987bcc-580a-4ea6-8789-828cf5d1d6fa * sessions: hide editor when opening comparison grid Give parallel participant chats the full Sessions area by hiding the editor only after the comparison grid opens successfully. Copilot-Session: ae987bcc-580a-4ea6-8789-828cf5d1d6fa * sessions: fix comparison tool CI Format the comparison evidence mapping and make its worktree path assertion platform-native. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: harden comparison lifecycle Reject unusable comparison launches, preserve frozen permissions for Judge and synthesis sessions, restore telemetry coverage, and remove comparison APIs without production callers. Fix the comparison setup regression test so it exercises an eligible session. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: type comparison launch results Keep concurrent attempt results widened to the persisted participant contract so launch-threshold checks typecheck. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: open comparison setup before config resolves Fall back to the selected workspace repository branch when Agent Host creation config has not resolved yet, so Execute Parallel Agents opens its setup dialog instead of refocusing the workspace picker. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: add close affordance to tiled headers Copilot-Session: ae987bcc-580a-4ea6-8789-828cf5d1d6fa * sessions: refine comparison grid focus Copilot-Session: ae987bcc-580a-4ea6-8789-828cf5d1d6fa * sessions: keep comparison selection border visible Copilot-Session: ae987bcc-580a-4ea6-8789-828cf5d1d6fa * sessions: configure models per comparison participant Copilot-Session: ae987bcc-580a-4ea6-8789-828cf5d1d6fa * sessions: refine comparison navigation Hide comparison setup when the selected folder cannot support isolated attempts, and route comparison group activation to the latest active stage. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agent host: strip unsupported Codex service tier The Codex app server marks fast models with service_tier=priority, but the Copilot Responses endpoint rejects that request field. Remove it at the proxy boundary while preserving the fast model identifier. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agent host: avoid duplicate Codex fast mode VS Code exposes fast CAPI variants as distinct model IDs. Disable Codex's native Fast Mode so it does not also send the unsupported service_tier field, and remove the broader proxy rewrite. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: make comparison setup resizable Allow the comparison setup dialog to be resized with pointer or keyboard controls, and restore its profile-scoped size across openings.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: let comparison content fill dialog Keep the comparison setup content aligned with the resized dialog instead of retaining its intrinsic width.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: add exact comparison permissions Copilot-Session: ae987bcc-580a-4ea6-8789-828cf5d1d6fa * sessions: refine comparison setup controls Add a modal-owned branch picker and present attempts in a compact, accessible table with consistent agent and model controls. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: remove stale comparison permission state Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: add workspace picker to comparison setup Reuse the new-session workspace picker in the modal and refresh comparison defaults when its workspace changes. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: fix comparison rebase integration Reconcile comparison grid and composer behavior with the latest Sessions APIs after rebasing onto main. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: refine comparison evaluator setup Add independent Judge and Synthesizer defaults and keep the comparison setup dialog responsive and scrollable. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: isolate active comparison Judge Copilot-Session: ae987bcc-580a-4ea6-8789-828cf5d1d6fa * sessions: refine comparison evaluation and synthesis Add evaluator defaults and permissions, Git repository validation, custom synthesis decisions, stage telemetry, semantic Judge evidence, and protected comparison grouping. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: address comparison review feedback Preserve comparison context for evaluation, make verdicts immutable, clean up deleted comparison groups, and hash session telemetry identifiers. Keep dialog focus handling feature-local and remove unrelated Codex, dialog, prompt packaging, and learnings changes. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 6634f44b-98ed-4183-b012-093cee87cfa3 * sessions: preserve bulk permissions for new attempts Copilot-Session: ae987bcc-580a-4ea6-8789-828cf5d1d6fa * sessions: isolate Judge without closing sessions Copilot-Session: ae987bcc-580a-4ea6-8789-828cf5d1d6fa * sessions: refine parallel comparison experience * sessions: simplify comparison setup flow Split comparison setup into Attempts and Evaluation steps, keep evaluator controls together, and remove persisted evaluator defaults. Keep navigation actions aligned outside the scrollable content. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: refine evaluator guidance and focus Move Judge and Synthesizer descriptions behind accessible information buttons while keeping the optional synthesis state visible. Ensure comparison focus handling runs before the generic dialog fallback so Tab and Shift+Tab preserve the custom control order. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: inset comparison dialog actions Reserve bottom and right space around the custom action row so focused button borders are not clipped by the dialog edge. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: add comparison stop controls * sessions: default inactive comparison inputs on * sessions: make comparison stop controls red * sessions: fix comparison stop styling * sessions: hide permissions in comparison titles * sessions: structure comparison verdict rationale * sessions: refine comparison result actions Render Judge output as safe Markdown, keep custom synthesis compact and scrollable, and hide redundant synthesis choices for a single decision. Add direct navigation to alternate attempts and resolve comparison UI hygiene failures. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: identify comparison attempt telemetry Include bounded provider, agent, and resolved model identifiers on attempt completion and Judge outcome events so attempt latency and recommendation rates can be analyzed without cross-event joins. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: add synthesis instructions * sessions: refine comparison results and telemetry Add collapsed per-attempt timing and token details, open comparison groups in the attempts grid, and correlate elapsed/model telemetry with provider-native OTel token spans. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: make comparison results scrollable * sessions: gate comparisons on resolved git remote Propagate Agent Host remote metadata into draft workspaces and only use repository state from the currently selected folder before showing Run and Compare Agents. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: use reported comparison duration Use the producer-measured first-turn duration instead of subtracting timestamps from different clocks. Preserve accurate telemetry and show unavailable timing when the provider has not supplied it.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: refine multi-panel comparisons Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: ae987bcc-580a-4ea6-8789-828cf5d1d6fa * sessions: link comparison attempt titles Let users reveal winner and alternate sessions directly from their names in Judge results, with native link semantics and accessible focus styling.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: fix comparison follow-up flows Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: ae987bcc-580a-4ea6-8789-828cf5d1d6fa * sessions: show inputs and archive comparisons Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: ae987bcc-580a-4ea6-8789-828cf5d1d6fa * sessions: refine comparison result experience Expand Judge results to the chat width, add an accessible view and clearer rationale and metric hierarchy, and preserve custom synthesis selections in the synthesis prompt. Keep recommended synthesis available for single-decision comparisons. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: test mixed synthesis selections Verify that selections from different attempts remain present both before synthesis creation completes and in the generated prompt. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: refine comparison scrolling and model picker Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: ae987bcc-580a-4ea6-8789-828cf5d1d6fa * sessions: stabilize comparison setup layout Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: ae987bcc-580a-4ea6-8789-828cf5d1d6fa * sessions: refine comparison validation and synthesis Prevent Judge sessions from rerunning reported validation or substituting unrelated checks when worktree artifacts are unavailable. Rename the primary synthesis action to describe synthesizing the attempts. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: restore Claude comparison effort Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: ae987bcc-580a-4ea6-8789-828cf5d1d6fa * sessions: preserve comparison model configuration Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: ae987bcc-580a-4ea6-8789-828cf5d1d6fa * sessions: restore single-decision custom synthesis Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: ae987bcc-580a-4ea6-8789-828cf5d1d6fa * sessions: fix comparison review issues Gate comparison tools on the experiment, preserve configured attempt ordinals across launch failures, and provide the synthesizer with a bounded mapped Judge verdict. Model validation evidence as consistent state/source pairs and align rationale and attachment contracts. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: fix comparison CI checks Apply the repository formatter to the comparison tool and accept the Linux screenshot hashes introduced by the merged upstream new-session fixtures.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: clean up abandoned comparison sessions Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: e8da91a2-46e1-4b3b-bb45-520dade3cb8d * sessions: gate compare action on confirmed git remote Hide Run and Compare Agents unless the selected folder matches the active draft and the folder is confirmed to have a git remote. Add regression tests for mismatched folders, remote=false, and unresolved remote metadata states. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: fix compare-action nullability guard Fix compile-time strict nullability by guarding session access in compare action visibility logic. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix: harden comparison launch and cancellation flows Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Polish comparison attempt connectors Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4b4fd325-2a19-486a-aa6f-33c4d9d1b58b * Show Auto optimization in comparison attempts Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 3f21994c-2ebb-47ca-9997-5269a2ea36a2 * Fix comparison session chat fixture Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: e8da91a2-46e1-4b3b-bb45-520dade3cb8d * sessions: persist comparison launch metadata for host Record bounded launch metadata on comparison attempts so Agent Host can recover\ncomparison lifecycle orchestration after client disconnects. Also extend\nmetadata validation tests and update Session Comparisons architecture notes. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: recover comparison judge after attempt deletion Treat missing attempt sessions as explicit launch failures so comparison\norchestration does not stall when a participant is deleted or disappears.\nAlso add a regression test that verifies Judge launch still proceeds when at\nleast two completed attempts remain. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: recover session comparison judge launch after client disconnect Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: launch comparison synthesis fallback after disconnect Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: fix comparison fallback compile and telemetry tests Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: use tabbed model picker in comparison setup Force the comparison setup dialog to use the experimental provider-tab model picker for both Attempts and Evaluation controls, and keep dialog-hosted model pickers anchored below their invoking row so top-row dropdowns stay aligned. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * chat: fix model picker IActionListOptions import Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: clarify comparison start action warning Rename the evaluation action to 'Start N sessions in parallel' and add a warning codicon with hover guidance that token usage applies per session. Also update related accessibility/help and fixture copy. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: fix comparison CI regressions Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix agent comparison review findings Keep comparison orchestration client-owned, preserve successful attempts and archived results, scope tools and UI behavior, and bound lifecycle persistence work. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix agent comparison CI regressions Update Sessions test fixtures for archived comparisons, preserve scoped pane styling expectations, and refresh the generated component screenshot hash. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Use Autopilot for comparison allow-all Keep Manual and Assisted permissions interactive while mapping Copilot Allow all to Autopilot with automatic tool approval. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Limit Copilot comparison permissions Expose only Manual and Allow all for comparison sessions, with Allow all mapped to Autopilot. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Scope Autopilot to bakeoff toggle Keep ordinary Copilot permission choices unchanged while applying Autopilot only when Agent Bakeoff bulk-selects Allow all. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: fix comparison result scrolling * sessions: fix comparison navigation and list actions Report whether comparison grid navigation committed before hiding panes. Resolve comparison-wide actions from complete participant membership and allow archived participants to be regrouped without losing historical lookup.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: dedupe picker test imports Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: Anthony Kim <anthonykim@microsoft.com> Copilot-Session: ae987bcc-580a-4ea6-8789-828cf5d1d6fa Copilot-Session: 6634f44b-98ed-4183-b012-093cee87cfa3 Copilot-Session: e8da91a2-46e1-4b3b-bb45-520dade3cb8d Copilot-Session: 4b4fd325-2a19-486a-aa6f-33c4d9d1b58b Copilot-Session: 3f21994c-2ebb-47ca-9997-5269a2ea36a2github.com-microsoft-vscode · d838bdb2 · 2026-09-23
- 6.6ETVOmni-chat with multi-session routing (#326698)github.com-microsoft-vscode · 49af1f71 · 2026-08-07
- 3.9ETVsessions: redesign new session context picker (#332825)github.com-microsoft-vscode · c4140d71 · 2026-08-27
- 3.0ETVMake Omni Chat exclusive to the Agents window and improve UX (#330688)github.com-microsoft-vscode · 79537b36 · 2026-08-13
- 2.9ETVImprove Omni Chat window and voice ownership (#330886)github.com-microsoft-vscode · 9650e9c2 · 2026-08-14
- 2.8ETVnew session chat input revamp (#338465) * Refine Agents prompt with responsive session options Add a centered, collapsible session-options tray above the prompt, align picker controls, and compact labels progressively as space narrows. Move agent and mode controls into the prompt and cover layout, animation, keyboard navigation, and provider selections with regression tests. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Left-align the Agents session options tray Preserve the existing prompt inset and responsive disclosure behavior, and assert stable left alignment for expanded and collapsed desktop layouts while retaining the phone layout. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Refine Agents prompt with responsive session options Add a centered, collapsible session-options tray above the prompt, align picker controls, and compact labels progressively as space narrows. Move agent and mode controls into the prompt and cover layout, animation, keyboard navigation, and provider selections with regression tests. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Left-align the Agents session options tray Preserve the existing prompt inset and responsive disclosure behavior, and assert stable left alignment for expanded and collapsed desktop layouts while retaining the phone layout. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: harden new session options disclosure Persist disclosure and repository-scoped harness choices, surface non-default launch configuration in one accessible disclosure, and keep the experimental layout fully gated. Add privacy-safe telemetry and focused unit and component fixture coverage. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: fix new session options experiment boundaries Restore the legacy composer layout outside the experiment, use the selected repository for harness persistence, and gate Agent placement and accessibility guidance on the effective layout. Fix the browser-specific repository label assertion and add focused regression coverage.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: fix new session component fixture checks Make fixture assertions respect the effective composer layout and account for bordered picker groups, then accept the reviewed Ubuntu screenshot baselines. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: fix new session fixture CI Apply the repository formatter to the fixture assertions and accept the reviewed Ubuntu screenshot baselines for the intended composer layout changes. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: gate session options accessibility help to the experimental layout The session options tray and its Hide/Show disclosure only exist in the experimental composer layout. In the legacy layout the repository and harness controls render below the input with no disclosure toggle, so the unconditional help paragraph contradicted the legacy control and Sync Changes guidance for screen reader users. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: remember the new session options expanded state Persist whether the session options tray is expanded to profile storage and restore it when a composer is created, so a user who trusts their defaults can keep the composer collapsed across sessions instead of it re-expanding every time. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: refine experimental new session composer disclosure and tip Keep the session options expanded (no disclosure toggle) while a screen reader is active so the pickers never leave the accessibility tree, and adapt the accessibility help accordingly. Left-align the options tray with the input's edge, and demote the getting-started tip to a standalone notice below the input (like the migration notice) so it no longer sits between the pickers and the field. All gated on the experimental layout, which requires the unified workspace picker. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: add collapsed icon rail and fix composer tip and corner radii Add an experimental setting that keeps the collapsed session options as an always-available icon rail (labels hidden) instead of hiding them, so the pickers stay reachable without taking real estate. Give the demoted getting-started tip a full border and rounded corners as a standalone card, and square the input's top-left corner where the options tray joins it. All scoped to the experimental composer, which requires the unified workspace picker. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: fix prompt picker over-compaction and tip hover overlap The primary picker responsive layout measured against the config container alone, so in the experimental layout the reparented Agent/Mode controls in the sibling container to its left always fell outside the measured lane and forced every picker to compact to icons even with room. Measure against the whole toolbar so the pickers keep their labels until the row is genuinely full. Also increase the demoted tip's top gap so its floating hover actions clear the input above. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: give the session options tab a shoulder like connected tabs The collapsed session options read as a tab joined to the input, so flare its bottom-right corner into the input surface with the same shoulder radius (cornerRadius-small + strokeThickness) and pseudo-element technique the connected editor tabs use, instead of a hard step. The left edge stays flush with the input, so only the right side needs a shoulder. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: stop the workspace picker flickering shut on a touch tap A touch or trackpad tap fires a Gesture Tap and then a browser ghost click; both toggled the workspace picker, so a single tap opened and immediately re-closed it. Split the combined tap/click listener so a click within a short window of a tap on the same trigger is treated as that ghost click and ignored. Deliberate mouse clicks have no preceding tap, so double-click toggling still works. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: make the collapsed icons setting ExP-controllable with a trigger Add experiment: { mode: 'auto' } so ExP can set the collapsed-session-options icons default, matching the composer layout setting. Because the setting only affects a collapsed tray, log a settings experiment trigger when the composer reaches the collapsed state, before reading the setting, so both arms count and the many users who never collapse do not dilute the scorecard. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: center the model picker separator dot between its values The dot's own margin-right doubled with the value label's margin-left, so the separator sat 6px from the model name but 12px from the configuration value, hugging the name. Drop the redundant margin so the gap is symmetric, and assert the symmetry in the fixture. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: make tray compaction fixtures platform-robust The NewSessionOptionsExpandedNarrow and NewSessionPromptPickersCompact fixtures asserted an exact label-visibility sequence at hardcoded pixel widths. Those breakpoints were calibrated on macOS and drift on CI Ubuntu as font metrics shift the widths at which labels collapse to icons, so the assertions failed in CI while passing locally. Assert the width-independent invariants instead: visible labels always form a left-aligned prefix (compaction runs right to left), narrowing only ever hides labels until the tray fully compacts, and widening restores them left to right until every label is visible again. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Hover-to-preview session options in the new-session composer Hovering or focusing the collapsed workspace picker row transiently expands the session options so they can be previewed, and collapses them again a few seconds after both pointer and focus leave. The preview overlays the persisted expanded/collapsed choice via a separate transient observable, so it never overwrites the user's remembered state. Also default the experimental collapsedSessionOptionsShowIcons setting to false so collapsing hides the pickers rather than keeping an icon rail. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Polish new-session composer: drop separator dots, duplicate heading, fix disclosure - Remove the separator dots from the combined model ("Auto Balance") and mode ("Interactive | Manual permissions") pickers that this branch introduced. - Revert the always-on "What should we build?" heading this branch added; it duplicated the existing setting-gated welcome phrases (which already live in main) and stacked a second heading above the composer. - Fix the expand/collapse disclosure fighting the hover-to-preview behavior: the toggle now acts on the state the user actually sees, and an explicit collapse while hovering is honored (and not immediately re-expanded) until the pointer leaves and hovers again. - Update fixtures accordingly; all 74 render without error. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Address code review: stale a11y heading text and unguarded config error toast - Remove the reference to the removed "What should we build?" heading from the new-session accessibility help; the composer's only heading is the dynamic welcome phrase, so no fixed heading text can be asserted. - Guard the session config-value setter's error toast with isCancellationError so benign aborts (e.g. a session switch) no longer surface a modal error, matching the silent best-effort sibling call sites while still reporting real protocol/checkout failures. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Gate composer layout changes on the setting; align in-session input Issue 1 - keep the disabled layout unchanged: the new-session composer's toolbar restyling leaked into the legacy layout because several rules were scoped only to .new-chat-widget-container, not the .experimental-new-session-composer gate. In particular the session-controls group kept its experimental styling after being moved below the input. Gate those rules on the experimental class, and make the disclosure chevron honor its [hidden] attribute (the base .monaco-text-button display rule was overriding it, so the chevron showed when the feature was off). Issue 2 - align the in-session chat input with the new composer: apply the experimental-session-composer class to the in-session chat view when the setting is enabled, activating the existing CSS that right-aligns the agent/model controls and lifts the context-usage widget into the input's top-right corner. Also drive the NewChatInSessionWidget (start-new-topic composer) off the same setting so its controls match the new-session composer. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Never auto-collapse the hover preview while focus is inside the options row The collapse timer tracked focus with a boolean that desynced when focus moved into a picker or a picker opened a dropdown overlay (whose in-row trigger stays aria-expanded while the focused element is the overlay outside the row). The tray could then collapse out from under the user mid-interaction. Compute the interaction state live instead: stay open while the pointer is over the row, the active element is within the row, or any picker opened from the row is still expanded (excluding the disclosure toggle's own aria-expanded). Re-check the same condition when the timer fires, so focus that lands in a picker after the timer was scheduled still cancels the collapse. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Align the in-session chat input with the new-session composer Add a renderSecondaryControlsInInput option to ChatInputPart (threaded through ChatWidget view options) that lifts the secondary controls into the input to match the Agents new-session composer: the mode/permissions pickers lead the input toolbar row, and the context-usage widget becomes a direct child of the input container so the existing experimental-session-composer CSS can position it in the input's top-right corner. The sessions chat view enables it when the experimental composer layout setting is on, and makes .chat-input-container the positioning context for the usage widget. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Keep the reparented context-usage widget out of flow to avoid width mismatch Follow-up hardening for the in-session usage-widget placement. #337149 moved the context-usage widget into the composer by reserving flow space, which expanded the container past the editor cap and required the #337490 width fix. Avoid that class of issue here: - The widget is positioned absolutely, so it never reserves flow space or widens the input. The sessions chat also does not use the compact render style, so the toolbar width reservation that includes the usage widget never runs for it. - Bind the absolute positioning to a .chat-secondary-controls-in-input marker class added by ChatInputPart at the moment it reparents the widget, instead of the reactive composer class. This makes the out-of-flow guarantee intrinsic to the reparent, so the widget can never briefly render in-flow and widen the input if the reactive class lags. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Drop hover-to-expand; keep add-context first in the in-session input row - Remove the hover/focus preview for the new-session options tray. The tray now simply defaults to expanded and stays that way until the user collapses it via the disclosure chevron, which is already persisted and remembered. This deletes the transient _hoverExpanded overlay, its pointer/focus tracking, and the auto-collapse timer, restoring the toggle to a plain expand/collapse. - In the in-session input, insert the relocated mode/permissions pickers after the add-context toolbar instead of prepending them, so the add-context button stays first (matching the composer order: Add Context, then mode/permissions, then the execute controls). The button no longer shifts when the controls move into the input row. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Reserve editor space for the lifted usage widget (reuse prior trailing-space API) Reuse the context-usage placement mechanism from the earlier composer work (microsoft/vscode#337149): placeContextUsageWidget() to reparent and setInputEditorTrailingSpace() / inputEditorTrailingSpace to reserve room at the editor's trailing edge, with a fixed CONTEXT_USAGE_WIDGET_TRAILING_SPACE (72) instead of an ad-hoc live measurement. The reserved width is subtracted from the editor width so the first line of text never slides under the widget. This does not reintroduce the split-composer width mismatch fixed in microsoft/vscode#337490: the widget stays absolutely positioned and out of flow (bound to the .chat-secondary-controls-in-input marker the reparent adds), so it never widens the input, and the split-width cap handling that #337490 added (lifting the centered-content cap to infinity for split Sessions) remains in place in the sessions chat view. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Align usage widget with send button; make config pickers prefer opening below - Nudge the lifted context-usage widget's right edge to line up with the send button below it (right: 6px, matching the send button's offset). - Give the agent-host session config pickers a preferredAnchorPosition of BELOW so the tall, dynamic branch picker opens downward like the short pickers (isolation, harness) instead of flipping above, keeping the pickers aligned. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Force the session config pickers to open below their trigger The branch picker still flipped above because preferredAnchorPosition only prefers a side and falls back to the opposite when the tall, dynamic branch list does not fit below (placement 'overlap' picks whichever side has more space). Use the fixed anchorPosition: BELOW instead so the branch and isolation pickers always open downward like the short pickers, scrolling within the space below when the list is long. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Match in-session control order to the composer (model right-aligned) Align the experimental in-session input toolbar row with the new-session composer: "+ Add Context", then the mode/permissions pickers, then a right-aligned model picker, then the execute controls. The model picker is a MenuId.ChatInput item nested inside the add-context toolbar (before the mode/permissions container), so CSS order/margin can't reach it in place. ChatInputPart relocates the model element to a right-aligned slot in the toolbar row and re-applies it on every toolbar rebuild (the menu recreates the item). The toolbar tracks items by index, so relocating the element does not break responsive compaction. Flex order/margin on the row keeps the add-context toolbar compact on the left so only the model's margin creates the gap. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix in-session relocated model picker styling Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Revert in-session composer layout wiring Align with prior PR revert behavior by removing in-session secondary-control relocation and context-usage reparenting hooks. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Restore reverted in-session toolbar behavior Bring back the in-session experimental composer behavior that was removed in #337753: class-gated toolbar alignment, lifted context-usage widget, and input trailing-space reservation. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Place in-session permissions next to agent picker In running-session experimental composer mode, render secondary controls in the input toolbar row so ordering is +, agent picker, then permissions; keep execute controls right-aligned. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Right-align in-session model picker Move the in-session model picker into a dedicated right-side slot so the running-session row orders as +, agent, permissions, then model near execute controls. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix in-session model relocation gap Relocate the full model action container instead of only the inner picker element so no empty placeholder width remains in the left toolbar cluster. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Stabilize in-session model and permissions layout Keep permissions cluster from over-compacting and keep relocated model chip rendering at full width in the right slot for running-session experimental composer layout. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Keep relocated model picker expanded When rendering secondary controls in the in-session toolbar row, keep the model picker out of responsive compact/minimal mode so its right-side label does not collapse into separators. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Match relocated model slot to session toolbar styling Apply the same split-label sizing semantics used by the new-session config toolbar to the relocated in-session model slot, and hide config summary dots that were consuming left-row space. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Revert "Match relocated model slot to session toolbar styling" This reverts commit 0d9a9cad2795d6cb5d74918b62532c8034c51b2a. * Revert "Keep relocated model picker expanded" This reverts commit e57156bb4b0f47f9472d76210f4327bd3e607aee. * Revert "Stabilize in-session model and permissions layout" This reverts commit 12c8dff37b138b3a2ed0edc135263f56d43e55c8. * Revert "Fix in-session model relocation gap" This reverts commit f5346c7d86b99063bd36181d5928956bd85a89f9. * Revert "Right-align in-session model picker" This reverts commit d80fab08e7c41e2621f51d748bd18e1abaa99ba7. * Revert "Place in-session permissions next to agent picker" This reverts commit 01bc28500a29a6a30f0ec48b98204c198729ed54. * Revert "Restore reverted in-session toolbar behavior" This reverts commit 5a997b5e903261384f963ce7bb6742599e577555. * sessions: copy in-session composer behavior from #337149 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: move running session approvals into input Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: keep chat agent picker first Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: keep running chat controls left-aligned Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: keep model picker on right in chat Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: fix agent-host CI regressions Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: align running permissions chip with model Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: restore model-thinking divider in chat inputs Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: restore in-session permissions separator Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Rohan Malpani <romalpan@microsoft.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>github.com-microsoft-vscode · 5f55758d · 2026-09-30
- 2.8ETVSuggest agent session storage cleanup when worktrees accumulate (#338502) * Saving uncommitted changes before archiving session * sessions: add agent session storage management Detect accumulated session worktrees, surface cleanup guidance, and provide a storage manager with safe manual and automatic lifecycle cleanup. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Add agent session storage cleanup suggestion and manager Users who never enabled auto-archive accumulate session worktrees that consume significant disk space. Surface a suggestion notice below the Sessions list when cleanup is worthwhile, and add a Manage Agent Session Storage editor to review and clean up eligible sessions. - Show the notice when 20+ eligible worktrees exist or eligible inactive worktrees can reclaim 5 GiB or more. Only eligible candidates count toward the worktree threshold. - Add the Manage Agent Session Storage editor with an inactivity-days filter, a worktree-only filter, and a suggestion toggle. - Gate the notice behind chat.agentSessions.sessionStorageCleanupSuggestion.enabled and support per-window suppression. - Add a Disable Session Storage Cleanup Suggestions command so screen reader users have a non-visual equivalent of Don't Show Again. - Announce the notice to screen readers and document the flow in the Sessions accessibility help dialog. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Only show sessions with measurable worktrees in storage manager Marking a session that has no worktree as done reclaims no disk space, so it does not belong in a storage manager. Report only sessions with a measured worktree and remove the "Sessions with worktrees only" filter, the hasWorktree field, and the "No worktree" storage cell. The Sessions list already owns decluttering sessions that hold no storage. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Match storage cleanup notice dismiss button to standard close style The dismiss (x) button used a monaco Button whose background and border come from inline styles, so the intended borderless look could not be applied from CSS and it rendered as a bordered box. Render it as a plain borderless icon button matching the session input banner's close button, with a hover background and focus-visible outline, and use IHoverService for its tooltip. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Address PR review feedback for session storage cleanup - Identify the active session by sessionId instead of reference equality, since the active session is a VisibleSession wrapper while getSessions returns provider facades. - Aggregate disk usage across every worktree an Agent Host session owns instead of only the first, and carry the worktree count through the cleanup model so the worktree threshold counts worktrees, not sessions. - Only suppress the protocol NotFound error when measuring worktree disk usage; auth, permission, and transport failures now surface. - Collapse the storage editor table to a stacked layout in narrow windows so Storage and Open Session are not clipped. - Add an editor-scoped accessibility help provider, focus context key, and verbosity setting, and exclude the storage editor from the window-wide chat help. - Report archiving rejections through the notification service instead of leaving an unhandled rejection. - Remove a duplicate side-effect import of agentSessionsConfiguration. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Let ExP control the session storage cleanup suggestion default The setting was tagged experimental but lacked the experiment metadata, so ExP could not set its default through the config.<setting id> treatment. Add experiment: { mode: 'auto' } to match the other experimental Agents window settings. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Refine worktree cleanup UX from team feedback - Focus the primary actions on the cleanup outcome: "Clean Up Agent Worktrees" for the command, editor, and Sessions-list notice, and "Clean Up {N} Worktrees" for the modal's primary button and confirmation. - Open a session from its title link in the table and drop the separate Actions/Open Session column. - Make the in-modal settings read clearly as settings: a "Cleanup Settings" heading with a gear icon and a note that the options change your settings. - Update the accessibility help and tests to match the new terminology and the title-link interaction. Keeps the settings inline in the modal and the entry point below the Sessions list per the Agents window discussion. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Tighten worktree cleanup layout from UX feedback - Drop the redundant "return here any time" paragraph from the editor. - Move the primary cleanup button up beside the summary line, right aligned, instead of a full-width row below it. - Remove the database icon from the Sessions-list notice to reclaim horizontal space and align the text and actions to the edge. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Add per-setting "Configure in Settings" gear to cleanup editor Each row in the Cleanup Settings section now has a gear button that opens the Settings editor filtered to that setting, for users who prefer to configure it there directly. The button names the setting for its hover tooltip and its screen reader label. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>github.com-microsoft-vscode · a58d8774 · 2026-09-29
- 2.3ETVAdd opt-in auto-archive/delete inactive sessions with merged pull requests (#334341)github.com-microsoft-vscode · b5db36cf · 2026-09-09
- 1.9ETVsessions: align experimental composer controls (#337149)github.com-microsoft-vscode · 597d6c38 · 2026-09-22
- 1.8ETVChat input dictation (speech-to-text) (#326044)github.com-microsoft-vscode · 85264502 · 2026-07-16