jiebi/CodeConvo huggingface dataset:
Change:
], { cancelId: 1, <del> detail: nls.localize('proxyDetail', "The proxy {0} requires a userame and password.", `${payload.authInfo.host}:${payload.authInfo.port}`), </del> <ins> detail: nls.localize('proxyDetail', "The proxy {0} requires a username and password.", `${payload.authInfo.host}:${payload.authInfo.port}`), </ins> checkbox: { label: nls.localize('rememberCredentials', "Remember my credentials"), checked: rememberCredentials

Discussion:
nls.localize() generally involves human visible output. Technically there are 2-3 arguments and the main human facing one is the second. The first argument is often treated as an "opaque" string, but in most systems, it's used to communicate to localizers, so, to some extent, there is value in not having misspellings there either. I can split out the identifiers if requested... Does this issue occur when all extensions are disabled?: Yes
can you provide me with more details about this. We use Transifex to translate our strings and the system contains both the value and the key.
This issue has been closed automatically because it needs more information and has not had recent activity. See also our guidelines. Happy Coding!
Change:
import { EnablementState, IExtensionManagementServerService } from 'vs/workbench/services/extensionManagement/common/extensionManagement'; import { IExtensionIgnoredRecommendationsService, IExtensionRecommendationsService } from 'vs/workbench/services/extensionRecommendations/common/extensionRecommendations'; import { ILabelService } from 'vs/platform/label/common/label'; <del> import { extensionButtonProminentBackground, ExtensionStatusAction, ReloadAction } from 'vs/workbench/contrib/extensions/browser/extensionsActions'; </del> <ins> import { extensionButtonProminentBackground, ExtensionStatusAction } from 'vs/workbench/contrib/extensions/browser/extensionsActions'; </ins> import { IThemeService, ThemeIcon, registerThemingParticipant } from 'vs/platform/theme/common/themeService'; import { EXTENSION_BADGE_REMOTE_BACKGROUND, EXTENSION_BADGE_REMOTE_FOREGROUND } from 'vs/workbench/common/theme'; import { Emitter, Event } from 'vs/base/common/event';

Discussion:
<!-- Do Not Delete This! featurerequesttemplate --<!-- Please read our Rules of Conduct: --<!-- Please search existing issues to avoid creating duplicates. --Hello, I searched for an existing ticket with , but didn't find anything related. <!-- Describe the feature you'd like. --Prior to v1.72.0, the extension sidebar showed which version an extension will be updated to. And when hovering over the extension in the sidebar, or opening the extension in a tab, you could see the currently installed one. That way you could see for example if an update is a major, minor, or patch update, and depending on that dig into the release notes or not. Further in the past, IIRC, the extension sidebar even showed both, installed and target version, which was even more convenient. Now with v1.72.0, I don't see anywhere the target version of an extension update. Many extensions don't keep a proper changelog, so that's not a reliable place to check. Here's an example for vscode-icons, a very popular extension with 12 million installs: ! Only when going to the Marketplace webpage () we see the target version: ! =Feature request: Please make the target version for extension updates visible inside of VS Code again.
Latest version is now shown in the hover. Update button in the extension editor shows the version.
Change:
import lifecycle = require('vs/base/common/lifecycle'); import nls = require('vs/nls'); import os = require('os'); <del> import platform = require('vs/base/common/platform'); </del> import xterm = require('xterm'); import {Dimension} from 'vs/base/browser/builder'; <del> import {IKeybindingContextKey} from 'vs/platform/keybinding/common/keybinding'; </del> <ins> import {IContextMenuService} from 'vs/platform/contextview/browser/contextView'; import {IInstantiationService} from 'vs/platform/instantiation/common/instantiation'; import {IKeybindingService, IKeybindingContextKey} from 'vs/platform/keybinding/common/keybinding'; </ins> import {IMessageService, Severity} from 'vs/platform/message/common/message'; import {ITerminalFont} from 'vs/workbench/parts/terminal/electron-browser/terminalConfigHelper'; import {ITerminalProcess, ITerminalService} from 'vs/workbench/parts/terminal/electron-browser/terminal';

Discussion:
Currently events are handled in each terminal instance, this means that event handlers go off for each terminal instances for an event on the terminal panel.
Change:
const scrollback: number = this._configurationService.getValue(TerminalSettingId.Scrollback); const maxBufferSize = scrollback + this._xterm.raw.rows - 1; const end = Math.min(maxBufferSize, buffer.length - 1); <del> if (lastBufferIndex) { </del> <ins> if (startIndex) { </ins> // If the last buffer index is requested, this is as a result of // a dynamic addition. Return only the last line to prevent duplication. const line = buffer.getLine(end - 1)?.translateToString(false).replace(new RegExp(' ', 'g'), 'xA0'); <del> const result = line ? (this._prependNewLine ? 'n' : '') + line + 'n' : ''; this._prependNewLine = false; </del> <ins> const result = line ? line + 'n' : ''; </ins> return result; } <del> this._bufferToEditorIndex = new Map(); </del> const lines: string[] = []; let currentLine: string = ''; for (let i = 0; i <= end; i++) {

Discussion:
Using here, I cannot enter the accessible buffer https://user-
The issue is that here, the default tab behavior is to focus the terminal tabs element edit: hard to repro, that's not the cause
ok this happens when is not applied to . See here that the buffer editor does get focused here, but you cannot see it https://user-
Repro: run some commands - - - Try to wasn't applied to so the accessible buffer isn't visible
https://user-

Currently when you use navigate accessible buffer you get a quick pick with the options, I expected changing these to scroll to the position without accepting it, and escape to revert to the original scroll position.
As part of this, providing ~1/3 of the viewport of context above would also be good
We'd need to think about how we to communicate the preview information to a screen reader user, as a pre"view" is usually visual
I don't think making this available to the screen reader makes sense, it would just complicate navigating the list. It is useful for sighted users though.
Oh I understand now - you mean on change of the active quick pick item, reveal the line and on enter, focus that line (as it already does)
Yep
To verify, in a terminal with shell integration, run some commands. to enter the accessible buffer. to . Without pressing , use the arrow keys to go between the options. It should scroll to the command if it is outside of the viewport.
Works but I opened
Change:
export class NotebookAccessibilityHelp implements IAccessibleViewImplentation { readonly priority = 105; readonly name = 'notebook'; <del> readonly when = NOTEBOOK_IS_ACTIVE_EDITOR; </del> <ins> readonly when = NOTEBOOK_EDITOR_FOCUSED; </ins> readonly type: AccessibleViewType = AccessibleViewType.Help; getProvider(accessor: ServicesAccessor) { const activeEditor = accessor.get(ICodeEditorService).getActiveCodeEditor()

Discussion:
Testing a notebook in the editor a chat response F1 :bug: a11y help appears for notebook, I have to close the notebook before I can get a11y help for chat
need a stricter clause here I think
Change:
// screen readers to read operations in the input box. dom.EventHelper.stop(e, true); list.clearFocus(); <del> } else if (!event.shiftKey && event.target === stops[stops.length - 1]) { </del> <ins> } else if (!event.shiftKey && dom.isAncestor(event.target, stops[stops.length - 1])) { </ins> dom.EventHelper.stop(e, true); stops[0].focus(); }

Discussion:
! In the video, I am tabbing from the input, to the first item, then to the first button, and then the next tab, leaves the quickpick completely (which caused the quickpick to close since it lost focus). It seems to only happen on the 2nd tab from a button to the next. /cc
I talked to about this and he mentioned that this is by-design in that we leave navigating around a widget (Actionbar in this case) to the arrow keys. please let me know if I have this wrong. in other words: Tab -navigation between widgets Arrow -navigation within widgets
Yeah this is by design. I agree that this situation here is not the best... check out this aria toolbar example which we are following.
I do get not being able to tab between the individual buttons (and having to use the arrows), but this issue isn't about that. If you open a quick pick without any buttons on items -- you can keep tabbing to cycle around all the parts of the quick pick and not have the quick pick disappear -- it will just cycle. But once an item has buttons, the "tab" after the buttons have focus, causes the whole quick pick to lose focus and if you don't have the "ignoreFocusOut" setting set, the quick pick will close. That IMO can't be by-design.
Yea I guess after that tab is should go back to the input box instead of the editor... do you know if there's a common way to loop around?
I see, thanks for clarifying. I agree with you. the only way I know is to listen to focus changes and programatically set and remove on HTML elements. Which is a pain.
hmm ok. I wonder why it's working without buttons but not with buttons... I'll investigate as soon as I get the time.
Verification: Install GitLens if you don't already have it hover over an inline blame to get the rich hover ! click the show more actions ! That gives you the quick pick mentions in the original issue. Hitting TAB should cycle between: input this list the first quick pick button The quick pick shouldn't be hidden at all during tabbing.
Woo! /verified
Change:
<ins> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g fill="#424242"><path d="M12.714 9.603c-.07.207-.15.407-.246.601l1.017 2.139c-.335.424-.718.807-1.142 1.143l-2.14-1.018c-.193.097-.394.176-.601.247l-.795 2.235c-.265.03-.534.05-.807.05-.272 0-.541-.02-.806-.05l-.795-2.235c-.207-.071-.408-.15-.602-.247l-2.14 1.017c-.424-.336-.807-.719-1.143-1.143l1.017-2.139c-.094-.193-.175-.393-.245-.6l-2.236-.796c-.03-.265-.05-.534-.05-.807s.02-.542.05-.807l2.236-.795c.07-.207.15-.407.246-.601l-1.016-2.139c.336-.423.719-.807 1.143-1.142l2.14 1.017c.193-.096.394-.176.602-.247l.793-2.236c.265-.03.534-.05.806-.05.273 0 .542.02.808.05l.795 2.236c.207.07.407.15.601.246l2.14-1.017c.424.335.807.719 1.142 1.142l-1.017 2.139c.096.194.176.394.246.601l2.236.795c.029.266.049.535.049.808s-.02.542-.05.807l-2.236.796zm-4.714-4.603c-1.657 0-3 1.343-3 3s1.343 3 3 3 3-1.343 3-3-1.343-3-3-3z"/><circle cx="8" cy="8" r="1.5"/></g></svg> </ins>  No newline at end of file

Discussion:
Needs one for some keybindings
Also should add a rename terminal button to each entry for easy discoverability
Change:
}); const ADD_COMMENT_COMMAND = 'workbench.action.addComment'; <del> CommandsRegistry.registerCommand({ </del> <ins> KeybindingsRegistry.registerCommandAndKeybindingRule({ </ins> id: ADD_COMMENT_COMMAND, <del> handler: (accessor, args?: { range: IRange; fileComment: boolean }) => { </del> <ins> handler: async (accessor, args?: { range: IRange; fileComment: boolean }) => { </ins> const activeEditor = getActiveEditor(accessor); if (!activeEditor) { return Promise.resolve();

Discussion:
[x] Indicate when a document has commentable ranges Aria status when a document is opened [x] Add keyboard shortcut for adding a comment [x] Provide commands to go to next and previous commentable range [x] Add an accessible help menu to the comment widget Esc dismisses widget Lists go to next/previous commentable range commands + keyboard shortcuts Lists command and keyboard shortcut to add a comment Lists keyboard shortcut to execute the comment primary action and what the primary action is [x] The Comments view should respect the enter/space = reveal+focus/reveal [x] Make the comment widget toolbar always visible when in screen reader mode
Related to
is the last part of this, and it's almost done!
Mr.KITSANAPAN MEEKEAW
Change:
'audioCues.chatResponsePending': { 'description': localize('audioCues.chatResponsePending', "Plays a sound on loop while the response is pending."), ...audioCueFeatureBase, <del> default: 'off' </del> <ins> default: 'auto' </ins> }, 'audioCues.chatResponseReceived': { 'description': localize('audioCues.chatResponseReceived', "Plays a sound on loop while the response has been received."),

Discussion:
cc Now that we have audio cues for the chat experience, all of which are off by default, we should think about what the best experience would be for most SR users and proceed with that once the final audio cues have been provided.
My choice here would be to only enable audioCues.chatResponsePending since it is the only one that provides information that is not redundant, however, this is an area in which I believe user research would be beneficial. for example, do people feel like these audio cues complement the screen reader feedback? are they distracting? Wen the chat is done generating the answer, do they prefer to receive screen reader feedback, the audio cue or both?
Yeah, that was my feeling as well Having all off by default would decrease discoverability, so I'm in favor of setting just that one to true until we have data that suggests otherwise
Just wanted to rule out any ambiguity here, does "audioCues.chatResponsePending" = the "progress" or "response" sound?
I believe he means progress because the response sound is redundant since the response gets read by the screen reader
Change:
const shouldMigrateToProfile = (!!this._configurationService.getValue(TerminalSettingPrefix.Shell + platform) || !!this._configurationService.inspect(TerminalSettingPrefix.ShellArgs + platform).userValue) && !!this._configurationService.getValue(TerminalSettingPrefix.DefaultProfile + platform); <del> if (shouldMigrateToProfile && this._storageService.getBoolean(SHOULD_PROMPT_FOR_PROFILE_MIGRATION_KEY, StorageScope.WORKSPACE, true) && !this.messageShown) { </del> <ins> if (shouldMigrateToProfile && this._storageService.getBoolean(SHOULD_PROMPT_FOR_PROFILE_MIGRATION_KEY, StorageScope.WORKSPACE, true) && !migrationMessageShown) { </ins> this._notificationService.prompt( Severity.Info, nls.localize('terminalProfileMigration', "The terminal is using deprecated shell/shellArgs settings, do you want to migrate it to a profile?"),

Discussion:
<img width="470" alt="Screen Shot 2021-05-28 at 11 40 58 AM" src="https://user-"This is my only shell/profile setting:
It should also show only once per window reload
Fixed already /duplicate of
Not sure how to get it to only show once per window reload. Custom implementation?
keep a boolean like at the top level of the file to track it.
This still happens because needs to be at the top level, not a member of TerminalInstance in order to be shared.
If we only do this for the first terminal that gets created though, if users change their settings and then create terminals, they won't see this message.
Just tested it and think that's fine
that's fine, they'd eventually hit it again after a restart. The main thing is that we're annoying people as little as possible.
Tried to verify, think this is still unreleased.
I think it should be released already since Alex Dima released a few hours ago an insider's based on release/1.57, which has the changes.
Works after updating
Change:
} const commands: { title: string; isCloseAffordance: boolean; handle: number }[] = []; <ins> let hasCloseAffordance = false; </ins> for (let handle = 0; handle < items.length; handle++) { const command = items[handle];

Discussion:
We'd been having a bug report where some of our dialogs in our extension were not showing the buttons correctly. Digging through, we realized this was a regression caused by Our extension was mistakenly setting isCloseAffordance on all buttons to be displayed. Before the above PR, all the buttons would work, and it would just be the last one passed that would be set as the cancel button. However after that PR, due to any buttons that had isCloseAffordance set to true wouldn't be to the buttons list, and instead would just overwrite the single cancel button. I'd be nice if we could get some release notes about this regression, and maybe a change to spit out a warning in the debugger if multiple buttons with isCloseAffordance are to a dialog. Currently its very hard to debug if this is occurring, because the buttons just don't show up, and its not clear why.
Change:
}; let body = format!( <del> "client_id={}&grant_type=urn:ietf:params:oauth:grant-type:device_code&device_code={}", provider.client_id(), init_code_json.device_code ); </del> <ins> "client_id={}&grant_type=urn:ietf:params:oauth:grant-type:device_code&device_code={}", provider.client_id(), init_code_json.device_code ); let mut interval_s = 5; </ins> while Utc::now() < expires_at { <del> sleep(std::time::Duration::from_secs(5)).await; </del> <ins> sleep(std::time::Duration::from_secs(interval_s)).await; </ins> match self.do_grant(provider, body.clone()).await { Ok(creds) => return Ok(creds), <ins> Err(AnyError::OAuthError(e)) if e.error == "slow_down" => { interval_s += 5; // https://www.rfc-editor.org/rfc/rfc8628#section-3.5 trace!(self.log, "refresh poll failed, slowing down"); } </ins> Err(e) => { trace!(self.log, "refresh poll failed, retrying: {}", e); }

Discussion:
Windows 11 Latest Insiders WSL with Ubuntu 20.04.5 LTS I am trying to get and run the insiders code cli on a WSL Ubuntu 20.04 instance. the linux x64 insiders cli from here: and save the file to someplace in your WSL Ubuntu 20.04 folder : the file is the same name as the stable x64 version, so i'm not sure if am really getting insiders. , note the time stamp in the future error disc i see a executable, why is there a code-insiders`? see 2 above the GitHub login dance Result - it hangs in the terminal, no URL is displayed, here's the output from (which repeats):
can you try again with today's Insiders build of the CLI? It should print more detailed information about the error, if any, that's happening.
works great today! i was able to log in, get the URL, and hit it from another machine. still, why is the executable and not ? I see I can use the option but that breaks my flow (always use from the terminal)
That's a to fix, tracked in I'll go ahead and close this issue for now. I have a feeling it was something on GH's end, but at least next time we see this, we should be able to get more info.
Change:
readonly onDidRequestClearLastProvider = this._onDidRequestClearProvider.event; private _focusedInstance: ITerminalInstance | undefined; constructor( <del> private readonly _instance: Pick<ITerminalInstance, 'onDidRunText' | 'focus' | 'shellType' | 'capabilities' | 'onDidRequestFocus' | 'resource' | 'onDisposed'>, </del> <ins> private readonly _instance: Pick<ITerminalInstance, 'onDidExecuteText' | 'focus' | 'shellType' | 'capabilities' | 'onDidRequestFocus' | 'resource' | 'onDisposed'>, </ins> private _bufferTracker: BufferContentTracker, customHelp: () => string, @IModelService _modelService: IModelService,

Discussion:
This configuration is probably pretty obscure (and I just had it due to testing) but: : , : the string into the terminal and shift+enter to get a newline buffer opens :bug:. The desc for says it's only after , so I don't think this is expected behavior (although I did just paste the selected text in the terminal manually).
did you happen to have enabled? that could explain what you describe, if so.
I don't have enabled.
Change:
return Math.max(Math.min(volume, 100), 0); } <del> private playingSounds = new Set<Sound>(); </del> <ins> private readonly playingSounds = new Set<Sound>(); </ins> public async playSound(sound: Sound, allowManyInParallel = false): Promise<void> { if (!allowManyInParallel && this.playingSounds.has(sound)) {

Discussion:
<!-- 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 <!-- 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.7.2 OS Version: windows Steps to Reproduce: a file with error on `cue: line has an error" settings the cursor to there
Thanks for creating this issue! It looks like you may be using an old version of VS Code, the latest stable release is 1.73.1. Please try upgrading to the latest version and checking whether this issue remains. Happy Coding!
it still occurs with 1.73.1
yeah I can reproduce this issue. is this expected?
This is not expected. Sounds should be played when cursor is navigated to the error line. worked on this initially and might have more details
I also have the same problem, but this only occurs in the insider version, I have the latest version and no sound is played Issue:
They play in OSS, but not insider's. any idea why that would be?
if that is the case then it is probably related to code bundling. Does that sound play when you F1 list audio cues?
It does play when I list audio cues in both OSS and insider's.
It also plays for terminal quick fixes - suggesting there's a bug in because I can also repro it not playing for other line feature types
This has been working for me lately, though it was definitely broken at one pt.
I have set to I navigate to a line with an error-squiggle but there is no sound being played
Change:
transformOptimization: false, filter: new SCMTreeFilter(), dnd: new SCMTreeDragAndDrop(this.instantiationService), <del> identityProvider: this.treeIdentityProvider, </del> <ins> identityProvider: new SCMResourceIdentityProvider(), </ins> sorter: new SCMTreeSorter(() => this.viewMode, () => this.viewSortKey), keyboardNavigationLabelProvider: this.instantiationService.createInstance(SCMTreeKeyboardNavigationLabelProvider, () => this.viewMode), overrideStyles: {

Discussion:
Steps to Reproduce: a folder/workspace that contains a git repository change to a file "Commit & Push" from the action button Actual command not found Commit from the action button Actual command not found
Change:
} break; default: <ins> if (outputInfo.mime.indexOf('text/') > -1) { disposables.get(outputInfo.id)?.dispose(); const disposable = renderText(outputInfo, element, latestContext); disposables.set(outputInfo.id, disposable); } </ins> break; } if (element.querySelector('div')) {

Discussion:
<!-- Do Not Delete This! featurerequesttemplate --Currently, if a notebook kernel outputs or some other mime type for which there is no registered renderer, a message is shown instead of the output. For mime types, the output should be rendered as plain text.
This is a really good idea.
After more than a year, I still think this is a very interesting idea that's worth a try. We might need to add match for mimetypes for the output renderer contribution. I assigned this to you for now.