jiebi/CodeConvo huggingface dataset:
Change:
Testing Would it be more beginner-friendly to say 'It is useful for making changes to the current editor. For example, fixing diagnostics, documenting or refactoring code.' ? Maybe more general 'via code actions' ? I think this should be and ! Do you think we could confuse the reader mentioning context menu actions for inline chat because they aren't accessible through the inline chat? Maybe we could rather mention that putting in slash will offer several ready-made requests? One could then discover all slash commands ! Can't tab into the diff editor. Made an
They arrive at the inline chat via those, so I think they should be mentioned
Just FYI there're more items these days: <img width="187" alt="image" src=""
Thanks and good point. I'll address this in July when I remove the hard coding (don't have the issue currently as afk)
there's a localization string issue, should be fixed by - tricky closing parentheses! <img width="1099" alt="image" src=""Note this may not yet be released in insiders if you're trying to verify this issue!
<!-- UNABLETOLOCATECOMMITMESSAGE issue --Issue marked as unreleased but unable to locate closing commit in issue timeline. You can manually reference a commit by commenting , or directly add the label if you know this has already been releaased

Discussion:
const upHistoryKeybinding = keybindingService.lookupKeybinding('inlineChat.previousFromHistory')?.getAriaLabel(); const downHistoryKeybinding = keybindingService.lookupKeybinding('inlineChat.nextFromHistory')?.getAriaLabel(); if (upHistoryKeybinding && downHistoryKeybinding) { <del> content.push(localize('inlineChat.requestHistory', 'In the input box, use {0} and {1} to navigate your request history. Edit input and use enter or the submit button to run a new request.'), upHistoryKeybinding, downHistoryKeybinding); </del> <ins> content.push(localize('inlineChat.requestHistory', 'In the input box, use {0} and {1} to navigate your request history. Edit input and use enter or the submit button to run a new request.', upHistoryKeybinding, downHistoryKeybinding)); </ins> } content.push(localize('inlineChat.contextActions', "Context menu actions may run a request prefixed with /fix or /explain. Type / to discover more ready-made commands.")); content.push(localize('inlineChat.fix', "When a request is prefixed with /fix, a response will indicate the problem with the current code. A diff editor will be rendered and can be reached by tabbing."));
Change:
open a file with color values (testing , ) split the editor pane, have the setting UI on the RHS resize a color picker hover :bug: it gets stuck to a wrong max width this seems not to happen having a text editor to its side
setting June for investigation
It appears the error is due to the fact that after the normal rendering, we do not fid the maximum resizable node dimensions and do not update the height or width of the widget hover if the dimensions are bigger than the resizable node max dimensions. A PR has been made here:

Discussion:
if (!this._editor || !this._editor.hasModel()) { return; } <del> const editorBox = dom.getDomNodePagePosition(this._editor.getDomNode()); const glyphMarginWidth = this._editor.getLayoutInfo().glyphMarginWidth; const leftOfContainer = this._hover.containerDomNode.offsetLeft; return editorBox.width + editorBox.left - leftOfContainer - glyphMarginWidth; </del> <ins> const bodyBoxWidth = dom.getClientArea(document.body).width; const horizontalPadding = 14; return bodyBoxWidth - horizontalPadding; </ins> } public isMouseGettingCloser(posx: number, posy: number): boolean {
Change:
Testing Steps: disable Remote Repos, GitHub Repos, Azure Repos. Then I Continue Working in shows up so I picked it nothing happens This might be but I see the same behavior when I disable Codespaces so it might be a different issue.
Ooh I just reproed this in OSS, log says

Discussion:
import * as vscode from 'vscode'; import { API as GitAPI, RefType, Repository } from './typings/git'; <del> import { getRepositoryFromUrl } from './util'; </del> <ins> import { getRepositoryFromUrl, repositoryHasGitHubRemote } from './util'; </ins> export function isFileInRepo(repository: Repository, file: vscode.Uri): boolean { return file.path.toLowerCase() === repository.rootUri.path.toLowerCase() ||

export async function getLink(gitAPI: GitAPI, useSelection: boolean, shouldEnsurePublished: boolean, hostPrefix?: string, linkType: 'permalink' | 'headlink' = 'permalink', context?: LinkContext, useRange?: boolean): Promise<string | undefined> { hostPrefix = hostPrefix ?? 'https://github.com'; const fileAndPosition = getFileAndPosition(context); <del> if (!fileAndPosition) { return; } const uri = fileAndPosition.uri; </del> <ins> const fileUri = fileAndPosition?.uri; </ins> // Use the first repo if we cannot determine a repo from the uri. <del> const gitRepo = (uri ? getRepositoryForFile(gitAPI, uri) : gitAPI.repositories[0]) ?? gitAPI.repositories[0]; </del> <ins> const githubRepository = gitAPI.repositories.find(repo => repositoryHasGitHubRemote(repo)); const gitRepo = (fileUri ? getRepositoryForFile(gitAPI, fileUri) : githubRepository) ?? githubRepository; </ins> if (!gitRepo) { return; } <del> if (shouldEnsurePublished) { await ensurePublished(gitRepo, uri); </del> <ins> if (shouldEnsurePublished && fileUri) { await ensurePublished(gitRepo, fileUri); </ins> } let repo: { owner: string; repo: string } | undefined;

} const blobSegment = gitRepo.state.HEAD ? (`/blob/${linkType === 'headlink' && gitRepo.state.HEAD.name ? encodeURIComponentExceptSlashes(gitRepo.state.HEAD.name) : gitRepo.state.HEAD?.commit}`) : ''; <del> const encodedFilePath = encodeURIComponentExceptSlashes(uri.path.substring(gitRepo.rootUri.path.length)); </del> <ins> const uriWithoutFileSegments = `${hostPrefix}/${repo.owner}/${repo.repo}${blobSegment}`; if (!fileUri) { return uriWithoutFileSegments; } const encodedFilePath = encodeURIComponentExceptSlashes(fileUri.path.substring(gitRepo.rootUri.path.length)); </ins> const fileSegments = fileAndPosition.type === LinkType.File ? (useSelection ? `${encodedFilePath}${useRange ? rangeString(fileAndPosition.range) : ''}` : '') : (useSelection ? `${encodedFilePath}${useRange ? notebookCellRangeString(fileAndPosition.cellIndex, fileAndPosition.range) : ''}` : ''); <del> return `${hostPrefix}/${repo.owner}/${repo.repo}${blobSegment }${fileSegments}`; </del> <ins> return `${uriWithoutFileSegments}${fileSegments}`; </ins> } export function getBranchLink(url: string, branch: string, hostPrefix: string = 'https://github.com') {
Change:
Testing <img width="497" alt="image" src=""<img width="667" alt="image" src=""
same is true for "Peek Type Hierarchy"
Hi Rob and Johannes, Would you mind if I took a crack at this issue? I am just starting open source, and I think this would be a great learning experience to do!
I stand in line
Hey have you started working on this issue?
Yes I have! I have already wrote code for this issue, just haven't made a pr yet :)
Hey can you take a little time and help me if you have resolved this issue how you did it? just a brief, also where is your pr I want to take a look at it!
It's been quite a while that no updates about the fix is coming out, so I've committed mine in .
To verify: open a TS file, wait the language service to be ready select F1 and type Peek Call Hierarchy

Discussion:
registerEditorContribution(CallHierarchyController.Id, CallHierarchyController, EditorContributionInstantiation.Eager); // eager because it needs to define a context key <del> registerAction2(class extends EditorAction2 { </del> <ins> registerAction2(class PeekCallHierarchyAction extends EditorAction2 { </ins> constructor() { super({

precondition: ContextKeyExpr.and( _ctxHasCallHierarchyProvider, PeekContext.notInPeekEditor <del> ) </del> <ins> ), f1: true </ins> }); }

registerEditorContribution(TypeHierarchyController.Id, TypeHierarchyController, EditorContributionInstantiation.Eager); // eager because it needs to define a context key // Peek <del> registerAction2(class extends EditorAction2 { </del> <ins> registerAction2(class PeekTypeHierarchyAction extends EditorAction2 { </ins> constructor() { super({

precondition: ContextKeyExpr.and( _ctxHasTypeHierarchyProvider, PeekContext.notInPeekEditor <del> ) </del> <ins> ), f1: true </ins> }); }
Change:
Testing When the accessibility view is opened, it always reads "the editor has auto complete, multi line", which is irrelevant, especially that this editor is readonly so should not mention "auto complete" at all.
interesting, I do not see that. do you have any settings that could be causing that?
It's a vanilla setup on Windows, with Jupyter and Python extension packs, and here are my settings and also I can reproduce in terminal on Windows.
ok so it turns out those are properties set here. and the screen reader is announcing those. - I think that means these messages are expected and as designed. do you agree?
Yes, I do agree. Actually, the information is not completely irrelevant since the use of the / can produce suggestions.
Can we set to none when the editor is readonly? I believe readonly implies auto complete is not possible.
I can't get the screen reader to read "multi-line" in the accessible view. What's the best way to verify this?
I couldn't reproduce that either. Could you pls test this?
<!-- AUTHORVERIFICATIONREQUEST --This bug has been fixed in the latest release of ! you can help us out by commenting if things are now working as expected. If things still don't seem right, please ensure you're on version of Insiders (today's or later - you can use in the command palette to check), and leave a comment letting us know what isn't working as expected. Happy Coding!
I'm not sure I understand what we are trying to reproduce. I believe the only screen reader on windows that identifies multi lines text fields as such is NVDA, and it is announcing that in this case. The autocomplete is no longer present, but that's different from the mmulti line announcement. I hope that helps.

Discussion:
this.textArea.setAttribute('role', 'textbox'); this.textArea.setAttribute('aria-roledescription', nls.localize('editor', "editor")); this.textArea.setAttribute('aria-multiline', 'true'); <del> this.textArea.setAttribute('aria-haspopup', 'false'); this.textArea.setAttribute('aria-autocomplete', 'both'); </del> <ins> this.textArea.setAttribute('aria-autocomplete', options.get(EditorOption.readOnly) ? 'none' : 'both'); </ins> this._ensureReadOnlyAttribute();
Change:
<!-- Do Not Delete This! bugreporttemplate --<!-- Please read our Rules of Conduct: --<!-- Read our guide about submitting issues: --<!-- Search existing issues to avoid creating duplicates. --<!-- Test using the latest Insiders build to see if your issue has already been fixed: --<!-- Instead of creating your report here, use 'Report Issue' from the 'Help' menu in VS Code to pre-fill useful information. --<!-- Launch with to check. --Does this issue occur when all extensions are disabled?: Yes/No Yes <!-- If you answered No above, use 'Help: Start Extension Bisect' from Command Palette to try to identify the cause. --<!-- Issues caused by an extension need to be reported directly to the extension publisher. The 'Help Report Issue' dialog can assist with this. --- VS Code Version: 1.79.2 OS Version: Windows_NT x64 10.0. Steps to Reproduce: go to references/definitions to open a reference view window to the bottom of the embedded editor scrolling will scroll the outer editor It's quite annoying sometimes, make it behaves like the file tree in the right side would be nice But I saw this, so is this behavior intended? If so may I ask why?
To verify open peek references in embedded editor scroll to the end and make sure scrolling stops
Verified on

Discussion:
useShadows: true, verticalHasArrows: false, horizontalHasArrows: false, <del> alwaysConsumeMouseWheel: false </del> <ins> alwaysConsumeMouseWheel: true </ins> }, overviewRulerLanes: 2, fixedOverflowWidgets: true,
Change:
I pushed this: And the build error from is:
Relies on structural equivalence, e.g the shape of all exported properties of the -modules happens to match that of the interface. Mangling renames the exported properties and hence breaks this equivalence. Technically this happens with any rename and the difference with mangling is just that renaming happens implicitly during build. Did you encounter similar situation before and how did you deal with them?
Yes I fixed a handful of cases where an entire module's shape was taken as API: There were so few instances of this, and it was so easy to work around, that I decided it didn't block merging Not sure there's a smarter way to handle this. To fix the error, simply list the specific properties you need from the module. Take a look at what the example above with does as an example

Discussion:
import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService'; import { URI } from 'vs/base/common/uri'; import * as resources from 'vs/base/common/resources'; <del> import * as path from 'vs/base/common/path'; </del> <ins> import { isAbsolute as localPathIsAbsolute, normalize as localPathNormalize } from 'vs/base/common/path'; </ins> import { IInstantiationService, } from 'vs/platform/instantiation/common/instantiation'; import { ISimpleFileDialog, SimpleFileDialog } from 'vs/workbench/services/dialogs/browser/simpleFileDialog'; import { IWorkspacesService } from 'vs/platform/workspaces/common/workspaces';

const preferredHomeConfig = this.configurationService.inspect<string>('files.dialog.defaultPath'); const preferredHomeCandidate = preferLocal ? preferredHomeConfig.userLocalValue : preferredHomeConfig.userRemoteValue; if (preferredHomeCandidate) { <del> const pathLib = preferLocal ? path : await this.pathService.path; if (pathLib.isAbsolute(preferredHomeCandidate)) { const preferredHomeNormalized = pathLib.normalize(preferredHomeCandidate); </del> <ins> const isPreferredHomeCandidateAbsolute = preferLocal ? localPathIsAbsolute(preferredHomeCandidate) : (await this.pathService.path).isAbsolute(preferredHomeCandidate); if (isPreferredHomeCandidateAbsolute) { const preferredHomeNormalized = preferLocal ? localPathNormalize(preferredHomeCandidate) : (await this.pathService.path).normalize(preferredHomeCandidate); </ins> const preferredHome = resources.toLocalResource(await this.pathService.fileURI(preferredHomeNormalized), this.environmentService.remoteAuthority, this.pathService.defaultUriScheme); if (await this.fileService.exists(preferredHome)) { return preferredHome;
Change:
Running the open accessible view command doesn't do anything for me. It doesn't work regardless of whether screen reader mode is on Version: 1.80.0-insider (user setup) Commit: Date: 2023-06-28T08:01:04.380Z Electron: 22.3.14 ElectronBuildId: Chromium: 108.0.5359.215 16.17.1 V8: 10.8.168.25-electron.0 OS: Windows_NT x64 10.0.
It won't do anything unless you have a hover or a chat response focused
what is focused when you tried?
That was with focus in terminal, editor and sidebar. I tried just now with the terminal focused (chat visible) and it showed some very unexpected text: !
With focus in a hover or chat response, it should show. Otherwise, it shouldn't.
this one doesn't seem too critical so could move to July?
Well, it could be disorienting for SR users if it's showing content unexpectedly. But yeah probably risky at this point
actual fix will be in the linked PR, but a related issue will need to be resolved before this works fully
Works generally now, I found this edge case though

Discussion:
import { NEW_UNTITLED_FILE_COMMAND_ID } from 'vs/workbench/contrib/files/browser/fileConstants'; import { ModesHoverController } from 'vs/editor/contrib/hover/browser/hover'; import { withNullAsUndefined } from 'vs/base/common/types'; <ins> import { EditorContextKeys } from 'vs/editor/common/editorContextKeys'; </ins> registerAccessibilityConfiguration(); registerSingleton(IAccessibleViewService, AccessibleViewService, InstantiationType.Delayed);

} }); return true; <del> })); </del> <ins> }, EditorContextKeys.hoverFocused)); </ins> } }
Change:
Previously this went to VS Code's a11y help - ! Now it goes to monaco's? -
Hm, I thought I was using the same link as the original help menu
Also forgot to remove the and , which are no longer used

Discussion:
this._editor.focus(); this.dispose(); } <del> options: IAccessibleViewOptions = { type: AccessibleViewType.HelpMenu, ariaLabel: localize('terminal-help-label', "terminal accessibility help") }; </del> <ins> options: IAccessibleViewOptions = { type: AccessibleViewType.HelpMenu, ariaLabel: localize('editor-help', "editor accessibility help"), readMoreUrl: 'https://go.microsoft.com/fwlink/?linkid=851010' }; </ins> id: string = 'editor'; constructor( private readonly _editor: ICodeEditor, @IKeybindingService private readonly _keybindingService: IKeybindingService ) { super(); <del> let url = (this._editor.getRawOptions() as any).accessibilityHelpUrl; if (typeof url === 'undefined') { url = 'https://go.microsoft.com/fwlink/?linkid=852450'; } this.options.readMoreUrl = url; </del> } private _descriptionForCommand(commandId: string, msg: string, noKbMsg: string): string {
Change:
Accessible view should show content of currently focused chat message, of the most recent if the textbox has focus. Currently if I focus some message in the past and hit alt+f2, it brings up the most recent message instead.
This should be working Are you focusing a response? Or a request? It only works for responses since a user will not need to inspect their request more closely.
This didn't come up in testing via the TPI which is surprising if it's not working.
Focusing responses it definitely happens for me: !
Yeah something changed as this used to work. I can repro

Discussion:
import { registerClearActions } from 'vs/workbench/contrib/chat/browser/actions/chatClearActions'; import { AccessibleViewAction } from 'vs/workbench/contrib/accessibility/browser/accessibilityContribution'; import { AccessibleViewType, IAccessibleViewService } from 'vs/workbench/contrib/accessibility/browser/accessibleView'; <del> import { ICodeEditorService } from 'vs/editor/browser/services/codeEditorService'; import { IChatResponseViewModel, isResponseVM } from 'vs/workbench/contrib/chat/common/chatViewModel'; </del> <ins> import { isResponseVM } from 'vs/workbench/contrib/chat/common/chatViewModel'; </ins> import { CONTEXT_IN_CHAT_SESSION } from 'vs/workbench/contrib/chat/common/chatContextKeys'; import { ChatAccessibilityService } from 'vs/workbench/contrib/chat/browser/chatAccessibilityService';

super(); this._register(AccessibleViewAction.addImplementation(100, 'panelChat', accessor => { const accessibleViewService = accessor.get(IAccessibleViewService); <del> const codeEditorService = accessor.get(ICodeEditorService); const editor = codeEditorService.getActiveCodeEditor() || codeEditorService.getFocusedCodeEditor(); </del> const widgetService = accessor.get(IChatWidgetService); <del> const editorUri = editor?.getModel()?.uri; </del> const widget: IChatWidget | undefined = widgetService.lastFocusedWidget; const focusedItem: ChatTreeItem | undefined = widget?.getFocus(); <del> if (!widget || !focusedItem) { </del> <ins> if (!widget || !focusedItem || !isResponseVM(focusedItem)) { </ins> return false; } <del> const codeBlockInfo = editorUri ? widget!.getCodeBlockInfoForEditor(editorUri) : undefined; let responseItem: ChatTreeItem | undefined; if (codeBlockInfo) { responseItem = codeBlockInfo.element; } else { responseItem = widget!.viewModel?.getItems().reverse().find((item): item is IChatResponseViewModel => isResponseVM(item)); } if (!isResponseVM(responseItem)) { return false; } const responseContent = responseItem?.response.value; </del> <ins> const responseContent = focusedItem?.response.value; </ins> if (!responseContent) { return false; }
Change:
Does this issue occur when all extensions are disabled?: Yes Version: 1.80.0-insider (Universal) Commit: Date: 2023-06-29T07:48:55.355Z Electron: 22.3.14 ElectronBuildId: Chromium: 108.0.5359.215 16.17.1 V8: 10.8.168.25-electron.0 OS: Darwin arm64 20.6.0 ProductName: macOS ProductVersion: 11.7.8 BuildVersion: 20G1351 not triggering when returns empty array on initial call and non-empty array thereafter. Steps to Reproduce: the following extension sample. Open a TypeScript file. inlay hint at the first line. you resize the window, the inlay hint appears.

Discussion:
export class InlayHintsFragments { <ins> private static _emptyInlayHintList: InlayHintList = Object.freeze({ dispose() { }, hints: [] }); </ins> static async create(registry: LanguageFeatureRegistry<InlayHintsProvider>, model: ITextModel, ranges: Range[], token: CancellationToken): Promise<InlayHintsFragments> { const data: [InlayHintList, InlayHintsProvider][] = [];

const promises = registry.ordered(model).reverse().map(provider => ranges.map(async range => { try { const result = await provider.provideInlayHints(model, range, token); <del> if (result?.hints.length) { data.push([result, provider]); </del> <ins> if (result?.hints.length || provider.onDidChangeInlayHints) { data.push([result ?? InlayHintsFragments._emptyInlayHintList, provider]); </ins> } } catch (err) { onUnexpectedExternalError(err);
Change:
<img width="1440" alt="image" src=""path:
thanks again for all these reports, these are great!
we had a similar issue with outputs in Jupyter extension, still looking for that. Looks like we've fixed the same issue in terminals, as well.

Discussion:
// If any candidates end with special characters that are likely to not be part of the // link, add a candidate excluding them. <del> const specialEndCharRegex = /[[]"']$/; </del> <ins> const specialEndCharRegex = /[[]"'.]$/; </ins> const trimRangeMap: Map<string, number> = new Map(); const specialEndLinkCandidates: string[] = []; for (const candidate of linkCandidates) {
Change:
This is the reason js-debug isn't working but git is: This is probably a good candidate for recovery, not a good reason to push 1.80.0 out though.
Fixed in main
Thanks for taking care of it while I was out! Can this be closed?
this one's going into the recovery build, didn't quite make the cut for 1.80.0.
verified that JavaScript debug terminals are getting the expected env - can you pls lmk what the repro steps were here?
You can add the following setting to activate description for Python ext: in User settings and reload. After which, if you select a virtual environment (Python: Select Interpreter), it should use env collection to activate terminal with appropriate description, something like: ! Description is the "Enable Nodejs..." string next to "Javascript debugger:", it appears when hovering over the terminal label.
!
Seems to work
The actual verify steps for this is to ensure 2 list items appear in the same section. Verified below. Insiders: ! Stable: !

Discussion:
getVariableMap(scope: EnvironmentVariableScope | undefined): Map<string, IExtensionOwnedEnvironmentVariableMutator[]> { const result = new Map<string, IExtensionOwnedEnvironmentVariableMutator[]>(); <del> this.map.forEach((mutators, _key) => { </del> <ins> for (const mutators of this.map.values()) { </ins> const filteredMutators = mutators.filter(m => filterScope(m, scope)); if (filteredMutators.length > 0) { // All of these mutators are for the same variable because they are in the same scope, hence choose anyone to form a key. result.set(filteredMutators[0].variable, filteredMutators); } <del> }); </del> <ins> } </ins> return result; } getDescriptionMap(scope: EnvironmentVariableScope | undefined): Map<string, string | undefined> { const result = new Map<string, string | undefined>(); <del> this.descriptionMap.forEach((mutators, _key) => { </del> <ins> for (const mutators of this.descriptionMap.values()) { </ins> const filteredMutators = mutators.filter(m => filterScope(m, scope, true)); <del> if (filteredMutators.length > 0) { // There should be exactly one description per extension per scope. result.set(filteredMutators[0].extensionIdentifier, filteredMutators[0].description); </del> <ins> for (const mutator of filteredMutators) { result.set(mutator.extensionIdentifier, mutator.description); </ins> } <del> }); </del> <ins> } </ins> return result; }