jiebi/CodeConvo huggingface dataset:
Change:
It seems that the mic icon requires at least one line above the prompt to show: ! It does not appear for me in the above case.
Thanks for the issue. Should be an easy fix and in this case the mic will have to go on the cursor line

Discussion:
import { IXtermMarker } from 'vs/platform/terminal/common/capabilities/capabilities'; import { ThemeIcon } from 'vs/base/common/themables'; import { Codicon } from 'vs/base/common/codicons'; <ins> import { alert } from 'vs/base/browser/ui/aria/aria'; import { localize } from 'vs/nls'; </ins> const symbolMap: { [key: string]: string } = { 'Ampersand': '&',

voiceTimeout = SpeechTimeoutDefault; } this._acceptTranscriptionScheduler = this._disposables.add(new RunOnceScheduler(() => { <del> this._terminalService.activeInstance?.sendText(this._input, false); </del> <ins> this._sendText(); </ins> this.stop(); }, voiceTimeout)); this._cancellationTokenSource = this._register(new CancellationTokenSource());

this._setInactive(); if (send) { this._acceptTranscriptionScheduler!.cancel(); <del> this._terminalService.activeInstance?.sendText(this._input, false); </del> <ins> this._sendText(); </ins> } this._marker?.dispose(); this._ghostTextMarker?.dispose();

this._input = ''; } <ins> private _sendText(): void { this._terminalService.activeInstance?.sendText(this._input, false); alert(localize('terminalVoiceTextInserted', '{0} inserted', this._input)); } </ins> private _updateInput(e: ISpeechToTextEvent): void { if (e.text) { let input = e.text.replaceAll(/[.,?;!]/g, '');

if (!xterm) { return; } <del> this._marker = activeInstance.registerMarker(-1); </del> <ins> const onFirstLine = xterm.buffer.active.cursorY === 0; this._marker = activeInstance.registerMarker(onFirstLine ? 0 : -1); </ins> if (!this._marker) { return; }

}); this._decoration?.onRender((e: HTMLElement) => { e.classList.add(...ThemeIcon.asClassNameArray(Codicon.micFilled), 'terminal-voice', 'recording'); <del> e.style.transform = 'translate(-5px, -5px)'; </del> <ins> e.style.transform = onFirstLine ? 'translate(10px, -2px)' : 'translate(-6px, -5px)'; </ins> }); }

if (!this._ghostTextMarker) { return; } <ins> const onFirstLine = xterm.buffer.active.cursorY === 0; </ins> this._ghostText = xterm.registerDecoration({ marker: this._ghostTextMarker, layer: 'top', <del> x: xterm.buffer.active.cursorX + 1 ?? 0, </del> <ins> x: onFirstLine ? xterm.buffer.active.cursorX + 4 : xterm.buffer.active.cursorX + 1 ?? 0, </ins> }); this._ghostText?.onRender((e: HTMLElement) => { e.classList.add('terminal-voice-progress-text'); e.textContent = text; <del> e.style.width = 'fit-content'; </del> <ins> e.style.width = (xterm.cols - xterm.buffer.active.cursorX) / xterm.cols * 100 + '%'; </ins> }); } }
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 <!-- 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: Version: 1.86.0-insider Commit: OS Version: Windows 11 + NixOS-WSL I get an error from On NixOS, libstdc++ is not at /usr/lib, but in the nix store. I use which deals with the dynamic loading and that works fine, but the recently check- script is overly pessimistic and refuses to start the code-server. If I manually delete the check, everything works fine again. I see that there is a --skip-requirements-check flag that skips the check, but I don't see a way to configure vscode to supply that flag to the code-server. ping looks like you were working on this recently. Do you have any ideas how I could handle 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!
/verified

Discussion:
found_required_glibc=0 found_required_glibcxx=0 <ins> # Extract the ID value from /etc/os-release OS_ID="$(cat /etc/os-release | grep -Eo 'ID=([^"]+)' | sed 's/ID=//')" if [ "$OS_ID" = "nixos" ]; then echo "Warning: NixOS detected, skipping GLIBC check" exit 0 fi </ins> # Based on https://github.com/bminor/glibc/blob/520b1df08de68a3de328b65a25b86300a7ddf512/elf/cache.c#L162-L245 case $ARCH in x86_64) LDCONFIG_ARCH="x86-64";;
Change:
Type: <bBug</bIt's unexpected to switch to editor window and notice micophone appeared in status bar with tooltip "Waiting for voice chat to end" (very strange message for because it looks like it listens everything at this moment) at the end of meeting. ! Clicking on it opens settings with search for , but only result is Extenions Experimental: Deferred Startup Finished Activation (), which adds to confusion. I won't expect to see this status item until I gave explicit approval to use mic. VS Code version: Code - Insiders 1.86.0-insider (, 2024-01-19T05:37:08.195Z) OS version: WindowsNT x64 10.0. Modes: <details<summarySystem Info</summary </detailsExtensions: none <!-- generated by issue reporter --
/assign bpasero I think you are latest committer that changed activation
Same here, how do i disable this feature? Cant find it in settings
This is related only to Insiders version and will be gone with today's Insiders build.
<!-- 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!
/verified

Discussion:
`); }); <ins> function supportsKeywordActivation(configurationService: IConfigurationService, speechService: ISpeechService): boolean { if (!speechService.hasSpeechProvider) { return false; } const value = configurationService.getValue(KeywordActivationContribution.SETTINGS_ID); return typeof value === 'string' && value !== KeywordActivationContribution.SETTINGS_VALUE.OFF; } </ins> export class KeywordActivationContribution extends Disposable implements IWorkbenchContribution { static SETTINGS_ID = 'accessibility.voice.keywordActivation';

private handleKeywordActivation(): void { const enabled = <del> this.speechService.hasSpeechProvider && this.configurationService.getValue(KeywordActivationContribution.SETTINGS_ID) !== KeywordActivationContribution.SETTINGS_VALUE.OFF && </del> <ins> supportsKeywordActivation(this.configurationService, this.speechService) && </ins> !this.speechService.hasActiveSpeechToTextSession; if ( (enabled && this.activeSession) ||

} private updateStatusEntry(): void { <del> const visible = this.configurationService.getValue(KeywordActivationContribution.SETTINGS_ID) !== KeywordActivationContribution.SETTINGS_VALUE.OFF; </del> <ins> const visible = supportsKeywordActivation(this.configurationService, this.speechService); </ins> if (visible) { if (!this.entry.value) { this.createStatusEntry();
Change:
run code-oss open light bulb menu error below is printed
do you know if this is related to
I looked at the file and the stack trace refers to the method and that the inside of appears to be undefined. I think this is probably not linked to It looks however that the diagnostics array is empty, and the code is trying to access the first non-existent diagnostic.
yep I see that now! looks like some flow from the light bulb widget exposed a bug with which i wrote a few months ago taking a look now ~
I have encountered this today when running code-oss. Find the unminified trace below. I believe the flaw is accessing the array of diagnostics because there is no check that it has any elements. Hence it continues with
yep, realized that the fix I pushed last week was not an actual fix this PR should do it, checking that the array is not empty. just for personal reference, I am curious which code action was giving this error? I wasn't able to see the error on any of the actions or copilot actions
Hard to say but since I am seeing this with insiders and code-oss means it must be an extension that is installed in both and that's either TS or copilot.
gotcha, that makes sense. iirc, it could be both, since code actions from the lightbulb, when there are no errors in the line, shouldn't have diagnostics attached to them. either way, if you could verify the fix that would be great
Change looks good,
makes sense! that was something I in the first PR quickly since I thought that would fix the initial issue, removing now for debt

Discussion:
const decorations: IModelDeltaDecoration[] = action.action.diagnostics.map(diagnostic => ({ range: diagnostic, options: CodeActionController.DECORATION })); currentDecorations.set(decorations); const diagnostic = action.action.diagnostics[0]; <del> const selectionText = this._editor.getModel()?.getWordAtPosition({ lineNumber: diagnostic.startLineNumber, column: diagnostic.startColumn })?.word; aria.status(localize('editingNewSelection', "Context: {0} at line {1} and column {2}.", selectionText, diagnostic.startLineNumber, diagnostic.startColumn)); </del> <ins> if (diagnostic.startLineNumber && diagnostic.startColumn) { const selectionText = this._editor.getModel()?.getWordAtPosition({ lineNumber: diagnostic.startLineNumber, column: diagnostic.startColumn })?.word; aria.status(localize('editingNewSelection', "Context: {0} at line {1} and column {2}.", selectionText, diagnostic.startLineNumber, diagnostic.startColumn)); } </ins> } else { currentDecorations.clear(); }
Change:
We use in some places to get at the currently focused code editor. To my surprise, this method seems to be returning that are used for example as Copilot chat input. I would argue that in most if not all our usages, we only care about text editors that contain contents of a document, but not input fields like that. Can we add some kind of filter logic or a way for the caller to know if the returned editor is used as input field?
I don't know exactly what uses, but can be used to find out if this editor instance is an "input field".
Got it, I am not sure how big of an issue this is today for everyone using the API, but I will check for my usages.
Yeah, that's what I use too

Discussion:
// find it in our text file models. Currently, only textual editors // support embedded editors. const focusedCodeEditor = codeEditorService.getFocusedCodeEditor(); <del> if (focusedCodeEditor instanceof EmbeddedCodeEditorWidget) { </del> <ins> if (focusedCodeEditor instanceof EmbeddedCodeEditorWidget && !focusedCodeEditor.isSimpleWidget) { </ins> const resource = focusedCodeEditor.getModel()?.uri; // Check that the resource of the model was not saved already

import { extractFileListData } from 'vs/platform/dnd/browser/dnd'; import { Iterable } from 'vs/base/common/iterator'; import { WebFileSystemAccess } from 'vs/platform/files/browser/webFileSystemAccess'; <ins> import { EmbeddedCodeEditorWidget } from 'vs/editor/browser/widget/embeddedCodeEditorWidget'; </ins> export class FileDialogService extends AbstractFileDialogService implements IFileDialogService {

// When saving, try to just download the contents // of the active text editor if any as a workaround if (context === 'save') { <del> const activeTextModel = this.codeEditorService.getActiveCodeEditor()?.getModel(); if (activeTextModel) { triggerDownload(VSBuffer.fromString(activeTextModel.getValue()).buffer, basename(activeTextModel.uri)); return; </del> <ins> const activeCodeEditor = this.codeEditorService.getActiveCodeEditor(); if (!(activeCodeEditor instanceof EmbeddedCodeEditorWidget)) { const activeTextModel = activeCodeEditor?.getModel(); if (activeTextModel) { triggerDownload(VSBuffer.fromString(activeTextModel.getValue()).buffer, basename(activeTextModel.uri)); return; } </ins> } }
Change:
Sighted users see preview text as a voice recording occurs and they see the resultant output, which could be drastically different from what they might expect. To make this clear for SR users, after the recording has stopped, we should alert with the content that was inserted in at least the terminal. Unclear if this would also be desirable to do in the chat input boxes
Do you move over to using braille when using the speech functionality Otherwise, doesn't the mic pick up on what the screen reader is saying?

Discussion:
import { IXtermMarker } from 'vs/platform/terminal/common/capabilities/capabilities'; import { ThemeIcon } from 'vs/base/common/themables'; import { Codicon } from 'vs/base/common/codicons'; <ins> import { alert } from 'vs/base/browser/ui/aria/aria'; import { localize } from 'vs/nls'; </ins> const symbolMap: { [key: string]: string } = { 'Ampersand': '&',

voiceTimeout = SpeechTimeoutDefault; } this._acceptTranscriptionScheduler = this._disposables.add(new RunOnceScheduler(() => { <del> this._terminalService.activeInstance?.sendText(this._input, false); </del> <ins> this._sendText(); </ins> this.stop(); }, voiceTimeout)); this._cancellationTokenSource = this._register(new CancellationTokenSource());

this._setInactive(); if (send) { this._acceptTranscriptionScheduler!.cancel(); <del> this._terminalService.activeInstance?.sendText(this._input, false); </del> <ins> this._sendText(); </ins> } this._marker?.dispose(); this._ghostTextMarker?.dispose();

this._input = ''; } <ins> private _sendText(): void { this._terminalService.activeInstance?.sendText(this._input, false); alert(localize('terminalVoiceTextInserted', '{0} inserted', this._input)); } </ins> private _updateInput(e: ISpeechToTextEvent): void { if (e.text) { let input = e.text.replaceAll(/[.,?;!]/g, '');

if (!xterm) { return; } <del> this._marker = activeInstance.registerMarker(-1); </del> <ins> const onFirstLine = xterm.buffer.active.cursorY === 0; this._marker = activeInstance.registerMarker(onFirstLine ? 0 : -1); </ins> if (!this._marker) { return; }

}); this._decoration?.onRender((e: HTMLElement) => { e.classList.add(...ThemeIcon.asClassNameArray(Codicon.micFilled), 'terminal-voice', 'recording'); <del> e.style.transform = 'translate(-5px, -5px)'; </del> <ins> e.style.transform = onFirstLine ? 'translate(10px, -2px)' : 'translate(-6px, -5px)'; </ins> }); }

if (!this._ghostTextMarker) { return; } <ins> const onFirstLine = xterm.buffer.active.cursorY === 0; </ins> this._ghostText = xterm.registerDecoration({ marker: this._ghostTextMarker, layer: 'top', <del> x: xterm.buffer.active.cursorX + 1 ?? 0, </del> <ins> x: onFirstLine ? xterm.buffer.active.cursorX + 4 : xterm.buffer.active.cursorX + 1 ?? 0, </ins> }); this._ghostText?.onRender((e: HTMLElement) => { e.classList.add('terminal-voice-progress-text'); e.textContent = text; <del> e.style.width = 'fit-content'; </del> <ins> e.style.width = (xterm.cols - xterm.buffer.active.cursorX) / xterm.cols * 100 + '%'; </ins> }); } }
Change:
empty profile open terminal, run or any other command that prints something press to clear the terminal :bug: the keyboard system is waiting for chord to be completed

Discussion:
import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; import { Emitter, Event } from 'vs/base/common/event'; import { DisposableStore } from 'vs/base/common/lifecycle'; <ins> import { EditorContextKeys } from 'vs/editor/common/editorContextKeys'; </ins> const CTX_QUICK_CHAT_IN_PROGRESS = new RawContextKey<boolean>('inlineChat.quickChatInProgress', false);

id: 'inlineChat.quickVoice.start', title: localize2('start', "Start Inline Voice Chat"), category: AbstractInlineChatAction.category, <del> precondition: ContextKeyExpr.and(HasSpeechProvider, CTX_QUICK_CHAT_IN_PROGRESS.toNegated()), </del> <ins> precondition: ContextKeyExpr.and(HasSpeechProvider, CTX_QUICK_CHAT_IN_PROGRESS.toNegated(), EditorContextKeys.focus), </ins> f1: true, keybinding: { primary: KeyChord(KeyMod.CtrlCmd | KeyCode.KeyK, KeyCode.KeyI),
Change:
Due to rearranging things, this rule adds a margin to a child element not matched by That first rule should target the parent element, but we can't do that because we don't know that the parent element is a codeblock. the codeblock container came out of the markdown rendered with a class but it was removed by this sanitization: Can I change that to keep the code class? Why do we sanitize class names?
Removing classnames prevents rendered markdown from unexpectedly picking up styling from core VS Code. There are two main concerns : It leaks our implementation to extensions/user content which makes changes more difficult It could enable an attack where untrusted content is able to render a link or similar just like our UI which users will intuitively trust For sanitization, can you pass in an allowlist that just includes the classnames you want to preserve?
Makes sense, I can use an allowlist
Friendly ping! Looks like this issue requires some further steps to be verified. Please provide us with the steps necessary to verify this issue.

Discussion:
display: initial !important; } <del> .interactive-result-code-block { </del> <ins> .interactive-item-container .value .rendered-markdown [data-code] { </ins> margin: 16px 0; }
Change:
Testing While testing I noticed that when I moved my cursor on a line with an error, the word was read, but the contents of that line were no longer read. I was wondering if this is intended? I noticed that sometimes the beginning of the text on the line is read, before it breaks off and reads the alerts.
I noticed that sometimes when I put my cursor on a line with a breakpoint, it does not read the word . Is the alert only supposed to sound at specific moments? Ie, for example the first time the cursor is placed on an active line with a breakpoint?
alerts interrupt whatever else might be read by design. And yes, it looks like in your case, you're using mouse clicks vs arrow keys to navigate between the lines. We listen to arrow keys, thus it's expected that you wouldn't hear the cues.
Additionally, I have checked with our power SR users and the alerts are working as expected in the editor.
I am going to open an issue to get more feedback on this.
Hi thank you for the clarification, that makes sense.
We are going to use instead here because editor content is the priority.

Discussion:
*--------------------------------------------------------------------------------------------*/ import { addDisposableListener } from 'vs/base/browser/dom'; <del> import { alert } from 'vs/base/browser/ui/aria/aria'; </del> <ins> import { alert, status } from 'vs/base/browser/ui/aria/aria'; </ins> import { mainWindow } from 'vs/base/browser/window'; import { Emitter, Event } from 'vs/base/common/event'; import { Disposable } from 'vs/base/common/lifecycle';

alert(message: string): void { alert(message); } <ins> status(message: string): void { status(message); } </ins> }

getAccessibilitySupport(): AccessibilitySupport; setAccessibilitySupport(accessibilitySupport: AccessibilitySupport): void; alert(message: string): void; <ins> status(message: string): void; </ins> } export const enum AccessibilitySupport {

setAccessibilitySupport(accessibilitySupport: AccessibilitySupport): void { } getAccessibilitySupport(): AccessibilitySupport { return AccessibilitySupport.Unknown; } alert(message: string): void { } <ins> status(message: string): void { } </ins> }

public async playAudioCue(cue: AudioCue, options: IAudioCueOptions = {}): Promise<void> { const alertMessage = cue.alertMessage; if (this.isAlertEnabled(cue, options.userGesture) && alertMessage) { <del> this.accessibilityService.alert(alertMessage); </del> <ins> this.accessibilityService.status(alertMessage); </ins> } if (this.isCueEnabled(cue, options.userGesture)) {

const cueArray = cues.map(c => 'cue' in c ? c.cue : c); const alerts = cueArray.filter(cue => this.isAlertEnabled(cue)).map(c => c.alertMessage); if (alerts.length) { <del> this.accessibilityService.alert(alerts.join(', ')); </del> <ins> this.accessibilityService.status(alerts.join(', ')); </ins> } // Some audio cues might reuse sounds. Don't play the same sound twice.
Change:
Testing It seems whenever I add the setting word wrap is off and when I remove it it is turned on (it is off for the setting without language selector):

Discussion:
// editor.wordWrap const wordWrapConfig = this.configurationService.inspect('editor.wordWrap', { overrideIdentifier: 'scminput' }); <del> const wordWrap = wordWrapConfig.overrideIdentifiers?.includes('scminput') ? EditorOptions.wordWrap.validate(wordWrapConfig) : 'on'; </del> <ins> const wordWrap = wordWrapConfig.overrideIdentifiers?.includes('scminput') ? EditorOptions.wordWrap.validate(wordWrapConfig.value) : 'on'; </ins> return { rulers, wordWrap }; }
Change:
A possible regression from
Addressed by , Electron 27-x-y PR has not merged in I will backport it for endgame.
Backport created

Discussion:
disturl "https://electronjs.org/headers" target "27.2.3" <del> ms_build_id "26378995" </del> <ins> ms_build_id "26495564" </ins> runtime "electron" build_from_source "true"

{ "name": "code-oss-dev", "version": "1.86.0", <del> "distro": "2124c72ef2dcad044b30293f7548a7cc63f113fe", </del> <ins> "distro": "bfe80ecb51ea0f99e6c250ba625938dcc55461c1", </ins> "author": { "name": "Microsoft Corporation" },
Change:
Testing Files are sometimes auto saved even though there is an error. This happens when the language server detects the error after the file has already been saved. Maybe when this feature is used, it should never auto save before the language server has analysed the file? !
I am pushing a change to update the description of the setting: In reality, I am not aware of a way to reliably tell that there is a pending task that might produce error markers. My understanding is that error markers can come in anytime after making changes to the document. I do not think we can prolong auto save artificially without having a clear method that would also have to be adopted by extensions. As such, this setting will do it as best as it can.

Discussion:
'files.autoSaveWhenNoErrors': { 'type': 'boolean', 'default': false, <del> 'markdownDescription': nls.localize({ comment: ['This is the description for a setting. Values surrounded by single quotes are not to be translated.'], key: 'autoSaveWhenNoErrors' }, "When enabled, will limit [auto save](https://code.visualstudio.com/docs/editor/codebasics#_save-auto-save) of editors to files that have no errors reported in them. Only applies when `#files.autoSave#` is enabled."), </del> <ins> 'markdownDescription': nls.localize({ comment: ['This is the description for a setting. Values surrounded by single quotes are not to be translated.'], key: 'autoSaveWhenNoErrors' }, "When enabled, will limit [auto save](https://code.visualstudio.com/docs/editor/codebasics#_save-auto-save) of editors to files that have no errors reported in them at the time the auto save is triggered. Only applies when `#files.autoSave#` is enabled."), </ins> scope: ConfigurationScope.LANGUAGE_OVERRIDABLE }, 'files.watcherExclude': {