github.com-microsoft-vscode
all · 88 devs · built 2026-06-13
Repository snapshot
Monthly reports
Highlights
- *Copilot* capabilities were significantly expanded with *PDF support* [83b7ce68 · dileepyavan], flexible summarization thresholds [991f245d · Bhavya U], and a *keep-alive mechanism* for long tool calls [2787a511 · Vikram Nitin].
- The *Execution Subagent* was rolled out, defaulting to *Gemini-3-Flash* [9ebd1311 · Vikram Nitin], and a new "*rubber duck* critic subagent" was introduced with the `/rubber-duck` command [a1cc9c0f · Harald Kirschner].
- Major *performance optimizations* were implemented, including lazy creation of UI components in the *Status Bar* [e4074382 · Dmitriy Vasyura] and improved *pixel spinner* rendering using `IntersectionObserver` [918b342f · Justin Chen].
- A comprehensive *browser favorites system* was added to the *BrowserView* subsystem [ca1cfd52 · Kyle Cutler], enhancing user navigation and control.
- Widespread *refactoring* across *core workbench components* and *extensions* ensured proper disposal of timeouts and intervals, preventing *memory leaks* [0daa00e5 · Dmitriy Vasyura], [92fe1dc8 · Dmitriy Vasyura].
Observations
- Total output increased by +36% (324 current vs 238 5-month average) compared to the 5-month average, indicating a highly productive period.
- The *Grow* score surged +44% (150 current vs 104 5-month average) and *Maintenance* score increased by +85% (121 current vs 65 5-month average) compared to the 5-month average, highlighting significant feature development and system improvements.
- Commit volume decreased significantly by -33% (1609 current vs 2396 5-month average) compared to the 5-month average, suggesting that individual commits were more substantial or complex.
- A strong focus on *memory leak* prevention and resolution was observed, with at least 10 commits directly addressing memory or resource leaks across critical areas like *search results* [1c9f4bbd · Simon Siefke], *Electron IPC* [58178cb2 · Simon Siefke], *Chat UI* [1ded4952 · Dmitriy Vasyura], [c13a94e2 · Dmitriy Vasyura], *extension actions* [c9ce2c41 · Simon Siefke], *Getting Started* [1f98b392 · Dmitriy Vasyura], and *notebook search* [fc9ee2a9 · Dmitriy Vasyura].
- The *Copilot extension* and *agent host* features were areas of high activity, receiving numerous new capabilities and bug fixes, indicating ongoing rapid development and refinement in AI-assisted coding, including fixes for *AHP chat session forking* [0d42e11e · Connor Peet] and *GitHub token forwarding* [commit/82e074d].
Performance over time
ETV stacked by Growth, Maintenance and Fixes — 90-day moving average, normalized to ETV / month.
Average performance per developer
ETV per active developer per month — 30-day moving average.
Active developers over time
Unique developers committing each day — 90-day moving average.
Knowledge concentration
How dependent is this repo on a small number of contributors? Higher top-1 share = higher key-person risk.
Benjamin Pasero owns 7.1 % of commits.
Top contributors
Most impactful commits
Top 20 by ETV in the all-time window.
- 5.3ETVInitial revision of automated release sanity checks. (#280857)Dmitriy Vasyura · b1bf400d · 2026-01-09
- 4.9ETVdebt - fix some leaks found by copilot (#293731)Benjamin Pasero · 45a35b80 · 2026-02-09
- 3.6ETVCopies sources from vscode (#688) * Copy sources from vscode * NodeJS.Timeout -> TimeoutHandle * Fixes copy sources fallout * Fixes snapshotsHenning Dieterichs · 5a50ffb9 · 2025-08-20
- 3.6ETVChronicle - local and remote (#308602) * chronicle * local and cloud store * upload vscode events to remote store * few updates * consent ui and settings * few optimizations * test fix * feedback updates * test fix * check setting to enable cmd * fix test * Settings update and tool update * command update * Settings update * merge main * feedback updates * setting and test update * few updates * updates * test update * blocks ci update * feedback updates * comment updateVijay Upadya · 602484ad · 2026-04-16
- 3.5ETVPrompt files provider API V2 (#286457) * wip * updates * Apply suggestion from @Copilot Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * test * dispose * clean * remove * invalidate * wip * pr * use enum * PR * clean * more cleanup * more cleanup * more cleanup * more cleanup * more cleanup * nit * add optional metadata * use new proposal * clean * clean * nit * v2 * yaml clean * clean * Update src/vs/workbench/api/common/extHostChatAgents2.ts Co-authored-by: Martin Aeschlimann <martinae@microsoft.com> * PR * wip * PR * Update src/vs/base/common/yaml.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * add command * pr * PR * PR * PR * clean * PR * use cache * nit clean * clean --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Martin Aeschlimann <martinae@microsoft.com>Paul · a357e63b · 2026-01-15
- 3.5ETVmerge to main (#299794) * sessions - fix chat input shrinking at narrow widths (#299498) style - set width to 100% for `interactive-input-part` * modal - force focus into first modal editor always * fix: update precondition for FixDiagnosticsAction and hide input widget on command execution (#299499) fixes https://github.com/microsoft/vscode/issues/299251 * refactor: remove workspace context service dependency from FolderPicker * Add logging for agent feedback actions * modal - some fixes to actions and layout * modal - surface some editor actions in a new toolbar (#299582) * modal - surface some editor actions in a new toolbar * ccr * keybindings - remove "Edit as JSON" as its now available from the title menu * settings - remove "Edit as JSON" as its now available from the title menu * update hover fixes * terminal fixes * terminal improvements * Sessions: fix auth scopes of gh FSP * sessions customizations: make it easier to scan mcp/plugin marketplac… (#299636) sessions customizations: make it easier to scan mcp/plugin marketplace list * sessions: add built-in prompt files with override support (#299629) * sessions: add built-in prompt files with override support Ship bundled .prompt.md files with the Sessions app that appear as slash commands out of the box. Built-in prompts use a BUILTIN_STORAGE constant (cast as PromptsStorage) defined in the aiCustomization layer, avoiding changes to the core PromptsStorage enum and prompt service types. - AgenticPromptsService discovers prompts from vs/sessions/prompts/ at runtime via FileAccess and injects them into the listing pipeline - Override logic: user/workspace prompts with matching names take precedence over built-in ones - Built-in prompts open as read-only in the management editor - Sessions tree view, workspace service, and counts handle BUILTIN_STORAGE - Add /create-pr as the first built-in prompt - Bundle prompt files via gulpfile resource includes Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Update src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * sessions: use AICustomizationPromptsStorage type for builtin storage Adopt the new AICustomizationPromptsStorage union type in the sessions tree view method signature. Use string-keyed Records and targeted casts at the PromptsStorage boundary to stay type-safe. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: remove PromptsStorage casts, widen IStorageSourceFilter Use AICustomizationPromptsStorage in sessions-local interfaces (IAICustomizationGroupItem, IAICustomizationFileItem) and widen IStorageSourceFilter.sources to readonly string[] so BUILTIN_STORAGE flows through without casts. The only remaining cast is at the IPromptPath creation boundary in AgenticPromptsService. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: move BUILTIN_STORAGE to sessions common layer Move AICustomizationPromptsStorage type and BUILTIN_STORAGE constant from the workbench browser UI module to sessions/contrib/chat/common so that AgenticPromptsService (a service) does not depend on UI code. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * sessions: fix ESLint dangerous type assertion in builtin prompts (#299663) Replace the `as IPromptPath` cast in discoverBuiltinPrompts with a createBuiltinPromptPath factory function that contains the type narrowing in one place, satisfying the code-no-dangerous-type-assertions ESLint rule. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Enhance Agent Sessions Control and Renderer with observable active session resource * fix terminal * Enable model management in NewChatWidget * review feedback * different competion settings for copilot markdown and plaintext --------- Co-authored-by: Benjamin Pasero <benjamin.pasero@gmail.com> Co-authored-by: Benjamin Pasero <benjamin.pasero@microsoft.com> Co-authored-by: Johannes Rieken <johannes.rieken@gmail.com> Co-authored-by: BeniBenj <besimmonds@microsoft.com> Co-authored-by: Osvaldo Ortega <osortega@microsoft.com> Co-authored-by: Josh Spicer <23246594+joshspicer@users.noreply.github.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>Sandeep Somavarapu · 2b32258b · 2026-03-06
- 3.4ETVFix Copilot AH plugin sync errors on reconnection (#320193) * Fix Copilot AH plugin sync errors on reconnection (#319744) Two-part fix for #319744: 1. AHPFileSystemProvider gets a brief reconnection grace window. Per- authority entries keep a stack of connections (newest = active) and hold open requests across a transient disconnect. Watchers auto-reattach across reconnects via a class-level connection-change event. New tests cover reconnect grace, fallback to prior connection, immediate reject for never-registered authorities, and watch reattach across disconnect / late attach. 2. Plugin controller is split into two: - PluginController (shared, process-wide): host customizations, parsing helpers, and the IAgentPluginManager. - SessionPluginController (per CopilotAgentSession): client customizations, session-discovered on-disk customizations, and per-session enablement overrides. Publishes SessionActions directly via onDidPublish — no more clientId-based cross-session routing. ActiveClient is now Disposable, owns its SessionPluginController, and forwards publish events into the session's progress stream. setCustomizationEnabled fans out to every session controller, matching Claude's per-session model. sendMessage retries any previously-failed client customization sync so a transient connection drop during reconnection doesn't pin the error. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Address Copilot review feedback - agentHostFileSystemProvider: fix _getConnection race by re-checking state after subscribing - agentHostFileSystemProvider: explicit void on fire-and-forget reattach() calls in watch() - copilotAgent: remove duplicate JSDoc block on PluginController Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Use timeout(0) instead of setImmediate in browser-runnable tests setImmediate is not available in WebKit, causing macOS / Browser CI unit tests to fail. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>Connor Peet · bad33e15 · 2026-06-06
- 3.3ETVci and PR review comments in agent feedbackBeniBenj · f316d9db · 2026-03-10
- 3.3ETVManage language models editor (#274207) * copilot management editor * fix command id * fix command id * fix commands * more feedback * clean up * more enhancements * add unit tests * only keep it in insiders * cleanup * copilot feedback * fix smoke testsSandeep Somavarapu · ef37dc63 · 2025-10-30
- 3.2ETVupdate to latest vscode sources (#3118)Ulugbek Abdullaev · 311d7fab · 2026-01-26
- 3.2ETVagentHost: fix orphaned client tool calls after window reload - A window reload reconnects with a new clientId but an identical tool list. The cached SDK session was reused with the dead window's clientId baked in, so every later client tool call was stamped with that dead id, routed to passive render, and hung forever with nobody to invoke it. - Introduces a live, shared ActiveClientState so the owning clientId is read at tool-call stamp time instead of being frozen at session creation, and makes the staleness check restart only on structural tool/plugin changes — a clientId-only change no longer needlessly restarts (Copilot) or yield-rebinds (Claude) the session. - Adds a server-side safety net so a client tool call stamped for a client that is not connected (including one that disconnected before the call was even issued) fails after a grace window rather than hanging, with the grace measured from when that client was last seen. - Lets a completion that races ahead of the SDK tool handler resolve via a buffered result, preserving the previous out-of-order tolerance. Fixes #319641 (Commit message generated by Copilot)Connor Peet · 216f88de · 2026-06-09
- 3.1ETVAgents web: Host filtering improvements and mobile improvements (#313062) * sessions: mobile UI improvements — filter chips, terminal view, diff view, tool cards - Feature 1: Add horizontally scrollable filter chips below session list header on phone layout. Chips for Completed, In Progress, and Failed status filters; active state highlights chip. - Feature 2: Improve touch targets for collapsible tool cards in chat on mobile. Minimum 44px height for tool card toggle buttons and always-visible chevron. - Feature 3: Add dedicated full-screen mobile terminal view overlay. Tapping a terminal tool invocation on phone opens a full-screen output view with back navigation, monospace output, and copy/search footer actions. - Feature 4: Add dedicated full-screen mobile diff view overlay. Tapping a file change on phone opens a Diff/File segmented control view with inline unified diff (colored +/- gutters) and full file content tab. All features are phone-only (IsPhoneLayoutContext). Desktop behavior is unchanged. Layer rules preserved: sessions/browser imports only vs/workbench/services; contrib-layer command handlers bridge to local-interface view functions. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * MVP Co-authored-by: Copilot <copilot@github.com> * Review * Clean up * Filter fixes * Search fix Co-authored-by: Copilot <copilot@github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: Copilot <copilot@github.com>Osvaldo Ortega · 4701612e · 2026-04-28
- 3.1ETVcopilot: updateSources (#315005) * copilot: updateSources * updateMartin Aeschlimann · 904c9147 · 2026-05-07
- 3.1ETVMobile agents: home screen improvements (#314226) * Mobile home screen tweaks * Full * Update * Updates * UpdatesOsvaldo Ortega · 2fc10e36 · 2026-05-04
- 3.0ETVAdopt strict no explicit any (#269874)Alexandru Dima · 3d6c0d4a · 2025-10-05
- 3.0ETVAdd annotations support for agent feedback (#321133) * commit phase 1 * phase 2 * phase 3 * phase 4 * phase 5 * :lipstick: * fixes * fix cycle * auto approve tool * attachment fixesBenjamin Christopher Simmonds · b36d3a4c · 2026-06-12
- 2.9ETVimplement configuring language models from the editor (#286616) * improvements to manage models * fix errors * remove quality check * fix compilation * handle errors and display in table * remove commented code * fix tests * fix tests * use unique model identifier across groups * fix handling model identifier in the editorSandeep Somavarapu · 5f2a60a7 · 2026-01-11
- 2.8ETVAdd Cache Explorer view to chat debug panel (#313620) * Add Cache Explorer view to chat debug panel Add a new "Cache Explorer" entry under "Explore Trace Data" in the chat debug overview. The view helps diagnose prompt-cache misses by diffing two model-turn requests side by side. The pure diff engine (chatDebugCacheDiff.ts) parses the input messages JSON exposed via IChatDebugEventModelTurnContent.sections, normalizes each message to {role, name, text, byteLength}, and produces a per- position signature of the prompt prefix. The first position whose role, length, or content diverges is reported as the cache break — anything after that point cannot be served from the prompt cache. The view (chatDebugCacheExplorerView.ts) lays out a left rail of model turns annotated with cache hit %, A/B summary cards, the prompt signature with the break marker, and a Components accordion that diffs the system prompt and any divergent messages. Sequential pairing is the default (B = current selection, A = previous turn); click in the rail to set B and shift-click to set A. The diff engine ships with 10 unit tests in chatDebugCacheDiff.test.ts. * Cache Explorer iteration: rail groups, OTel-backed metrics, prompt signature bars Iterate on the Cache Explorer view added earlier on this branch: - Left rail groups model turns by parent request and shows the user prompt as the group header. Group rows are collapsible and the full request id is shown in the header. - Each rail row reports agent source, cache hit %, duration, and time for the turn; rows with hit < 90% render the chip in red. - Single-selection model: clicking a row sets it as the current request and the row above is implicitly the previous one to diff against. - Producer plumbing: the file logger now persists copilot_chat.debug_name and gen_ai.response.id alongside the model-turn entry, and the modelTurn content carries a requestId. The summary card surfaces the full network requestId so it can be copied. - Replaced the chip-style prompt signature with a horizontal role- colored bar visualization showing both requests on a shared scale, with a vertical break marker at the divergence index. - Cache performance card replaces the pill row with a structured layout: cache hit headline + token reuse, where the cache broke + estimated lost tokens, and a one-line diff summary. - Component diff and signature lanes use Previous/Current labels instead of A/B. Refs https://github.com/microsoft/vscode/pull/313608 * Cache Explorer: char-level inline diff in Components accordion Replace the plain-text body of each Components row with a side-by-side line + character diff rendered directly into HTML. Uses the existing linesDiffComputers.getDefault().computeDiff() that Monaco's diff editor also uses internally; ignoreTrimWhitespace stays off so cache-relevant whitespace is visible. - Each line is emitted as a div with one of three classes `context`, `add`, `remove` for full-line styling. - Inner range mappings produce char-level <span> highlights inside added or removed lines. - Multi-line inner range mappings are skipped for v1; the surrounding add/remove styling already conveys the change. - Bounded by maxComputationTimeMs=200 so a stray giant tool-result diff cannot stall the renderer. No widget, no editor instance, no layout calls; replaces the existing two raw <div> bodies with a directly-styled HTML diff. Refs https://github.com/microsoft/vscode/pull/313620 * Cache Explorer: extract text from tool_call_response and tool_call parts The OTel input messages format wraps tool I/O as part-level objects, not as top-level text: - A user/tool message that returns tool output uses { type: 'tool_call_response', id, response: '...' } - An assistant message that invokes a tool uses { type: 'tool_call', id, name, arguments: {...} } Until now parseInputMessages only counted parts with type === 'text', so these messages showed up as zero-byte slots in the diff with both sides labeled '(not present)' \u2014 confusing because tool I/O is the single most cache-relevant content in an agentic loop. This change pulls the response payload out of tool_call_response (and the tool name + arguments out of tool_call) and includes them in the normalized text we diff against. We also reclassify the row's display role to 'tool' when the message is dominated by a tool result so the rail / signature / accordion label it consistently. Two new unit tests pin the extraction behaviour. Refs https://github.com/microsoft/vscode/pull/313620 * Cache Explorer: track request options + likely cache expiration Prompt caches invalidate on more than just message-array changes \u2014 flipping tool_choice, raising reasoning_effort, switching to Claude extended thinking, or changing the response_format all bust the cache even when the prompt prefix is byte-identical. Surface those changes. Producer: - New OTel attribute copilot_chat.request.options carrying a curated subset of the request body. Captures tool_choice, reasoning, reasoning_effort, thinking, thinking_budget, output_config, response_format, text, truncation, context_management, the various penalties, store, stream, stream_options, prediction, seed, parallel_tool_calls, service_tier, metadata, verbosity, snippy, state, intent, intent_threshold, include, plus an 'extra' catch-all for any unrecognised top-level fields. - Persisted onto llm_request entries in the file logger so the data survives session reloads. Consumer plumbing: - New requestOptions?: string on IChatDebugEventModelTurnContent and the matching DTO + ext-host class + proposed API. Read on both the live OTel span path and the on-disk entry path. View: - New 'Request Options' table renders every captured option with Previous and Current columns; rows whose values differ are highlighted with the diff-removed background. The model id is layered on top of the request_options blob so model swaps show up in the same table. - An inline 'Options changed: ...' banner sits below the summary cards so the user spots option drift without scrolling. - Cache performance card now detects the 'likely cache expiration' case: when the model reports 0% hit, the structural diff finds no prefix break, AND the option table is identical, the headline switches to '\u2014 likely cache expiration' with an explanation. When options are the only thing that changed, the break line says so explicitly. Refs https://github.com/microsoft/vscode/pull/313620 * Cache Explorer: address Copilot review nits from #313608 + #313602 Six small follow-ups: - Switch truthy checks to '!== undefined' for token fields in chatDebugFlowGraph.ts (model-turn tooltip) so a turn with 0 input or output tokens still gets a tooltip line. - Same fix for the modelTurn aria label in chatDebugLogsView.ts \u2014 a 0-token turn now still announces 'Model turn: <model> 0 tokens' instead of dropping the count. - Add the cached-tokens row to the modelTurn branch of formatEventDetail in chatDebugEventDetailRenderer.ts (regressed during a recent merge) and add the cachedTokens field to the existing 'modelTurn - with all fields' unit test. - chatDebugFlowGraph tooltip also gains a 'Cached tokens: N' line when present. - Restore the requestName deserialize in ExtHostChatDebug._deserialize Event \u2014 the serializer sends it but the round trip was dropping it. Add the corresponding requestName field to the ChatDebugModelTurnEvent ext-host class so the assignment compiles. * Cache Explorer: address Copilot review on #313620 Five fixes from Copilot's review: - Rename INormalizedMessage.byteLength to charLength (text.length is UTF-16 code units, not bytes), and update all UI labels from 'B' to 'chars' so the displayed unit matches what we actually measure. Touches the diff engine, the explorer view, and the unit tests. - setSession now clears collapsedGroups and resets openComponents to the default expanded set, mirroring how Flow Chart resets its collapse state on session change. Prevents unbounded growth and cross-session collapse-state leaks. - Rail rows are now keyboard accessible: each row is focusable (tabIndex=0), exposes role='button', aria-selected, and aria-label, and responds to Enter/Space. Adds a focus-visible outline. - render() now uses a monotonically-increasing renderToken captured at the start of each call and re-checked after each await; an older render whose model-turn resolves come back late will no longer write into a DOM the newer render has already rebuilt. - _reviveResolvedContent in mainThreadChatDebug now passes through maxInputTokens and maxOutputTokens, which were silently dropped. Refs https://github.com/microsoft/vscode/pull/313620 * Cache Explorer: address Councillor-Opus follow-up nits Five fixes prompted by the council review: - breakBytePos used to fall through to 'cumulative' (the right edge of the bar) when the diff's break index was outside the side's segment list \u2014 it now returns undefined, which the renderer already handles as 'no break marker for this side'. Prevents a logic mismatch between the diff and the segment list from being silently masked as a misleading 'cache broke at the end' marker. - pickCacheRelevantRequestOptions drops the 'extra' catch-all. We now only forward an explicit allowlist of cache-keying body fields to OTel and the on-disk debug log. Keeps any future provider- specific body fields (auth tokens, API keys, personalization) from leaking through; new cache knobs must be added explicitly. - Replace the local JSON-stringify based deepEqual helper in the view with the equals function from vs/base/common/objects, which is already used elsewhere in the workbench for value comparisons. - Add a fast-fail comment to messagesEqual explaining why charLength stays even though it is implied by text equality. - Document the trailing-context loop in renderInlineDiff and the silent selectedIndex clamp on session change so future readers don't think they're bugs. Expand the isLikelyCacheExpiration JSDoc to enumerate other invalidation causes the heuristic cannot distinguish. * Cache Explorer: clarify stableStringify fallback intent Document why stableStringify falls back to String(value) (circular refs / BigInt) and why the diff engine deliberately does not take an ILogService dependency to log such cases. The fallback produces a stable but lossy representation that still surfaces as content drift in the UI, so the failure mode is visible rather than silent. * Cache Explorer: address Copilot review nits round 2 Four small fixes from the latest Copilot review pass: - Update parseInputMessages JSDoc: was still describing charLength as 'byte length' even though the field was renamed. - Update diffPromptSignature comment: it claimed every position from the divergence onward is reported as non-identical, but the algorithm classifies each position independently. The first divergence is what breaks the cache; later identical positions are reported truthfully and the UI keys off the first break index. - Rename the 'bytes' field on the local renderSignature segment type to 'chars' (and the breakBytePos helper to breakCharPos) so the source code matches what the user-visible labels already say. - Drop the dead 'tools' entry from the openComponents Set seed in setSession and the field initializer; the diff pipeline only emits 'system' and 'messages[N]' component names, so the 'tools' entry never matched and had no visible effect.Bhavya U · 8c4048e0 · 2026-05-01
- 2.7ETVIntegrated Browser (#278677) * [WIP] Integrated Browser * clean * refactor * structure * focus * tooltips * rename * polish * start unpinned * More polish * commands * tweaks, new tab support * clean * shortcut fixes * warnings * Update src/vs/workbench/contrib/browserView/electron-browser/browserEditor.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Telemetry * load errors * PR feedback * PR feedback * Permissions, unloads, trust * Storage controls * Handle render process gone * devtools * Screenshot rect * close * Fix focused context * Fix merge * disposables * :lipstick: * Multi-window improvements * Fix reopen * PR feedback * Actions fixes --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Benjamin Pasero <benjamin.pasero@gmail.com> Co-authored-by: Benjamin Pasero <benjamin.pasero@microsoft.com>Kyle Cutler · f85cf0ad · 2026-01-08
- 2.7ETVdebt - reduce explicit `any` usage (#269814)Benjamin Pasero · 7e8c7bef · 2025-10-06