jiebi/CodeConvo huggingface dataset:
Change:
Build: Changes: Related:
I've a whole lot of logging via Unfortunately we need to wait for this to happen again to learn more.
Closing until we see this again. We will have more logs then.

Discussion:
return new Promise<number>((resolve, reject) => { const oldTestRunnerCallback = (error: Error, failures: number | undefined) => { if (error) { <ins> if (isCI) { this._logService.error(`Test runner called back with error`, error); } </ins> reject(error); } else { <ins> if (isCI) { if (failures) { this._logService.info(`Test runner called back with ${failures} failures.`); } else { this._logService.info(`Test runner called back with successful outcome.`); } } </ins> resolve((typeof failures === 'number' && failures > 0) ? 1 /* ERROR */ : 0 /* OK */); } };

if (runResult && runResult.then) { runResult .then(() => { <ins> if (isCI) { this._logService.info(`Test runner finished successfully.`); } </ins> resolve(0); }) .catch((err: unknown) => { <ins> if (isCI) { this._logService.error(`Test runner finished with error`, err); } </ins> reject(err instanceof Error && err.stack ? err.stack : String(err)); }); }

let exitCode: number; try { exitCode = await extensionHostManager.extensionTestsExecute(); <ins> if (isCI) { this._logService.info(`Extension host test runner exit code: ${exitCode}`); } </ins> } catch (err) { <ins> if (isCI) { this._logService.error(`Extension host test runner error`, err); } </ins> console.error(err); exitCode = 1 /* ERROR */; }

if (parseExtensionDevOptions(this._environmentService).isExtensionDevTestFromCli) { // When CLI testing make sure to exit with proper exit code <ins> if (isCI) { this._logService.info(`Asking native host service to exit with code ${code}.`); } </ins> this._nativeHostService.exit(code); } else { // Expected development extension termination: When the extension host goes down we also shutdown the window
Change:
<!-- Do Not Delete This! featurerequesttemplate --<!-- Please read our Rules of Conduct: --<!-- Please search existing issues to avoid creating duplicates. --<!-- Describe the feature you'd like. --With any port forwarding command, the devcontainer launches the output that looks similar to: <img width="448" alt="Port forwarding notification" src=""Hidden under the "ports" tab is the label associated with the forwarded application, e.g. <img width="609" alt="Example of Port forwarded name" src=""This yields a moment of confusion as to what "your application" is. Thus, it would be great if the name in could be specified in place of . So, the proposal is if the following entry in is present: We would want the notification panel to show the value in the field instead of : <img width="442" alt="Display RStudio name in notification panel associated with port forwarding" src=""
<!-- -96bd-47a8-a0e8- --This feature request is now a candidate for our backlog. The community has 60 days to the issue. If it receives 20 upvotes we will move it to our backlog. If not, we will close it. To learn more about how we handle feature requests, please see our . Happy Coding!
I don't know that all labels will make sense as a substitute for "Your application...". I will change it to be "Your application (RStudio)..."
thank you so much for working on the issue and submitting a fix! :)

Discussion:
}); } <del> private basicMessage(tunnel: RemoteTunnel) { return nls.localize('remote.tunnelsView.automaticForward', "Your application running on port {0} is available.  ", </del> <ins> private async basicMessage(tunnel: RemoteTunnel) { const properties = await this.remoteExplorerService.tunnelModel.getAttributes([{ host: tunnel.tunnelRemoteHost, port: tunnel.tunnelRemotePort }], false); const label = properties?.get(tunnel.tunnelRemotePort)?.label; return nls.localize('remote.tunnelsView.automaticForward', "Your application{0} running on port {1} is available.  ", label ? ` (${label})` : '', </ins> tunnel.tunnelRemotePort); }

} this.lastNotification?.close(); <del> let message = this.basicMessage(tunnel); </del> <ins> let message = await this.basicMessage(tunnel); </ins> const choices = [this.openBrowserChoice(tunnel)]; if (!isWeb || openPreviewEnabledContext.getValue(this.contextKeyService)) { choices.push(this.openPreviewChoice(tunnel));

this.lastNotification?.close(); this.lastShownPort = newTunnel.tunnelRemotePort; this.lastNotification = this.notificationService.prompt(Severity.Info, <del> this.basicMessage(newTunnel) + this.linkMessage(), </del> <ins> await this.basicMessage(newTunnel) + this.linkMessage(), </ins> [this.openBrowserChoice(newTunnel), this.openPreviewChoice(tunnel)], { neverShowAgain: { id: 'remote.tunnelsView.autoForwardNeverShow', isSecondary: true } }); this.lastNotification.onDidClose(() => {
Change:
Hi, The terminal option is not deleting and terminal option is not renaming correctly in command palette. Version: Commit: 8b617bd08fd9e3fc94d14adb8d358b56e3f72314Edition: Version: OS build: : Id: Description: Fluent product icons for Visual Studio Code Version: 0.0.18 Publisher: Miguel Solorio : Id: Description: Material Design Icons for Visual Studio Code Version: 4.30.1 Publisher: Philipp Kief Vscode. internal terminals. command palatte type to list terminals. to a terminal using delete icon button. to a terminal using rename icon button. corresponding terminal on clicking . corresponding terminal on clicking . not deleted ( clicking did nothing ). last terminal in the list of terminals instead of corresponding terminal. error when tried to delete terminal: ! Also, can we change the rename terminal icon to codicon. It would be much easier to understand than codicon.
works for me but I can repro not working.
Hi, let me explain the terminal rename issue again Steps to reproduce the issue 3 terminals ! 2nd terminal rename option ! terminal name from to ! but After rename, 3rd terminal is renamed instead of 2nd terminal ! My VSCode settings:

Discussion:
} async function renameWithQuickPick(c: ITerminalServicesCollection, accessor: ServicesAccessor, resource?: unknown) { <del> const instance = getResourceOrActiveInstance(c, resource); </del> <ins> let instance: ITerminalInstance | undefined = resource as ITerminalInstance; if (!instance) { instance = getResourceOrActiveInstance(c, resource); } </ins> if (instance) { const title = await accessor.get(IQuickInputService).input({ value: instance.title,

constructor( @IEditorService private readonly _editorService: IEditorService, <del> @ITerminalEditorService private readonly _terminalService: ITerminalService, </del> <ins> @ITerminalService private readonly _terminalService: ITerminalService, </ins> @ITerminalEditorService private readonly _terminalEditorService: ITerminalEditorService, @ITerminalGroupService private readonly _terminalGroupService: ITerminalGroupService, @ICommandService private readonly _commandService: ICommandService,
Change:
Type: <bBug</bWhen I'm copying and pasting text from Onenote into VS Code editor it comes up like this . How do I correct this VS Code version: Code 1.82.0 (, 2023-09-06T22:07:07.438Z) OS version: Windows_NT x64 10.0. Modes: <details<summaryExtensions (59)</summaryExtensionVersion ------ better-comments3.0.2 aws-toolkit-vscode1.89.0 LinkCheckMD0.3.1 excel-to-markdown-table1.3.0 vscode-markdownlint0.51.0 docs-article-templates1.0.3 docs-authoring-pack1.0.0 docs-build0.4.1 docs-images1.0.1 docs-linting0.0.13 docs-markdown1.0.2 docs-metadata1.0.9 docs-preview1.0.3 docs-scaffolding1.0.0 docs-yaml1.0.1 gitlens14.3.0 pythonsnippets1.0.2 codespaces1.15.1 remotehub0.60.0 vscode-github-actions0.26.2 vscode-pull-request-github0.72.0 go0.39.1 terraform2.27.2 vsc-python-indent1.18.0 vscode-docker1.26.0 vscode-kubernetes-tools1.3.13 data-workspace-vscode0.5.0 mssql1.20.1 sql-bindings-vscode0.4.0 sql-database-projects-vscode1.2.0 isort2023.10.1 python2023.16.0 vscode-pylance2023.9.10 jupyter2023.8. jupyter-keymap1.1.2 jupyter-renderers1.0.17 vscode-jupyter-cell-tags0.1.8 vscode-jupyter-slideshow0.1.5 remote-containers0.309.0 remote-ssh0.106.3 remote-ssh-edit0.86.0 remote-wsl0.81.3 vscode-remote-extensionpack0.24.0 powershell2023.6.0 remote-explorer0.4.1 remote-repositories0.38.1 remote-server1.4.3 vscode-markdown-notebook0.0.26 vsliveshare1.0.5883 vsliveshare-pack0.4.0 vscode-sanddance4.1.0 autodocstring0.6.1 vscode-yaml1.14.0 vscode-taskexplorer2.13.2 code-spell-checker3.0.1 intellicode-api-usage-examples0.2.8 vscodeintellicode1.2.30 vscodeintellicode-completions1.0.22 vscode-icons12.5.0 (7 theme extensions excluded) </details<details<summaryA/B Experiments</summary</details<!-- generated by issue reporter --
Can i work on this issue?

Discussion:
})), token); const edits = coalesce(results ?? []); <del> sortEditsByYieldTo(edits); return edits; </del> <ins> return sortEditsByYieldTo(edits); </ins> } private async applyDefaultPasteHandler(dataTransfer: VSDataTransfer, metadata: CopyMetadata | undefined, token: CancellationToken) {
Change:
trigger inline chat and send a command press the reload button in the chat press escape notice that it keeps the last result (and does not restore the initial document) When I don't click the reload button, pressing escape restores the initial document. ! Context:

Discussion:
if (!needsMargin) { this._zone.value.setWidgetMargins(widgetPosition, 0); } <ins> } if (this._activeSession) { </ins> this._zone.value.updateBackgroundColor(widgetPosition, this._activeSession.wholeRange.value); } this._zone.value.show(widgetPosition);

this._messages.fire(msg); })); <ins> const altVersionNow = this._editor.getModel()?.getAlternativeVersionId(); </ins> this._sessionStore.add(this._editor.onDidChangeModelContent(e => { if (!this._ignoreModelContentChanged && this._strategy?.hasFocus()) { <del> this._ctxUserDidEdit.set(true); </del> <ins> this._ctxUserDidEdit.set(altVersionNow !== this._editor.getModel()?.getAlternativeVersionId()); </ins> } if (this._ignoreModelContentChanged || this._strategy?.hasFocus()) {

const { lastExchange } = this._activeSession; this._activeSession.addInput(lastExchange.prompt.retry()); if (lastExchange.response instanceof EditResponse) { <del> await this._strategy.undoChanges(lastExchange.response); </del> <ins> try { this._ignoreModelContentChanged = true; await this._strategy.undoChanges(lastExchange.response); } finally { this._ignoreModelContentChanged = false; } </ins> } return State.MAKE_REQUEST; }
Change:
We support for auto-populating selected text to quick search (), but setting overrides this. This is because takes precedence over any default string (even if is defined). (from )
To me, this feels backwards... I'd want whatever was passed in to take precedence... and only if the default is set to the default value (aka the prefix) should the LAST be restored. was there a reason for this behavior that maybe I don't know about?
I do not remember. I assume you already bisected this to the origins?
the origin of this change came from: I now understand why this code behaves like it does. It's because it's provider (& prefix) agnostic. This code actually knows nothing about the prefix and nothing about the provider except the last accepted value per-provider. So basically, it's up to the caller of to say no don't .
I've sent a PR that makes the search one work as we expect.
verif steps: command, then search for some text and select one of the results. step 2, but make sure that the input that previously had is retained once you run the command. something in the pick to close it, then highlight some text in the editor. again. You should see your highlighted text in the input box.

Discussion:
override async run(accessor: ServicesAccessor, match: RenderableMatch | undefined): Promise<any> { const quickInputService = accessor.get(IQuickInputService); const searchText = getSearchText(accessor) ?? ''; <del> quickInputService.quickAccess.show(TEXT_SEARCH_QUICK_ACCESS_PREFIX + searchText); </del> <ins> quickInputService.quickAccess.show(TEXT_SEARCH_QUICK_ACCESS_PREFIX + searchText, { preserveValue: !!searchText }); </ins> } });
Change:
Find in Files and Show Settings provide no value, just noise: ! Not sure who owns this, I remember Christof but maybe not?
Verification Steps: Remove key bindings for "Find in Files" and verify that it does not how up in the editor watermark

Discussion:
const update = () => { clearNode(box); selected.map(entry => { <ins> const keys = this.keybindingService.lookupKeybinding(entry.id); if (!keys) { return; } </ins> const dl = append(box, $('dl')); const dt = append(dl, $('dt')); dt.textContent = entry.text; const dd = append(dl, $('dd')); const keybinding = new KeybindingLabel(dd, OS, { renderUnboundKeybindings: true, ...defaultKeybindingLabelStyles }); <del> keybinding.set(this.keybindingService.lookupKeybinding(entry.id)); </del> <ins> keybinding.set(keys); </ins> }); };
Change:
When discussing with how we're going to improve accessibility for GitHub Pull Requests and Issues when opening a PR description we found that the built in Extensions view does the following: Arrow keys are used to navigate between list/tree items Enter opens the extension item and moves focus to the extension description webview editor Space opens the extension item and keeps focus in the tree Extension trees don't work the same way: Arrow keys are used to navigate between list/tree items (same as above) Both enter and space run the tree item command and keep focus in the tree We already have special handling for and command run from the tree view so that we can keep things ctrl+click as open to the side. We should also handle enter and space as the Extensions view does.
Actually, looks like this already works. The problem was that we were preserving focus in the PR extension: I did find another issue while investigating this though:

Discussion:
if (item) { this.focus(true, item); this.tree.setFocus([item]); <del> } else { </del> <ins> } else if (this.tree.getFocus().length === 0) { </ins> this.tree.setFocus([]); } }
Change:
I have linters to ensure files have the right header, when i created the empty ts file, i get the linter error as well as chat prompt However when I add an empty line, you can see the caht prompt does not appear and linter error is in the second line ! !

Discussion:
import { Extensions, IConfigurationMigrationRegistry } from 'vs/workbench/common/configuration'; import { LOG_MODE_ID, OUTPUT_MODE_ID } from 'vs/workbench/services/output/common/output'; import { SEARCH_RESULT_LANGUAGE_ID } from 'vs/workbench/services/search/common/search'; <del> import { GHOST_TEXT_DESCRIPTION } from 'vs/editor/contrib/inlineCompletions/browser/ghostTextWidget'; </del> const $ = dom.$;

this.toDispose = []; this.toDispose.push(this.editor.onDidChangeModel(() => this.update())); this.toDispose.push(this.editor.onDidChangeModelLanguage(() => this.update())); <ins> this.toDispose.push(this.editor.onDidChangeModelDecorations(() => this.update())); </ins> this.toDispose.push(this.configurationService.onDidChangeConfiguration(e => { if (e.affectsConfiguration(emptyTextEditorHintSetting)) { this.update();

return false; } <del> const hasGhostText = this.editor.getLineDecorations(0)?.find((d) => d.options.description === GHOST_TEXT_DESCRIPTION); if (hasGhostText) { </del> <ins> const model = this.editor.getModel(); const languageId = model?.getLanguageId(); if (!model || languageId === OUTPUT_MODE_ID || languageId === LOG_MODE_ID || languageId === SEARCH_RESULT_LANGUAGE_ID) { </ins> return false; } <del> const model = this.editor.getModel(); const languageId = model?.getLanguageId(); if (languageId === OUTPUT_MODE_ID || languageId === LOG_MODE_ID || languageId === SEARCH_RESULT_LANGUAGE_ID) { </del> <ins> const conflictingDecoration = this.editor.getLineDecorations(1)?.find((d) => d.options.beforeContentClassName || d.options.afterContentClassName || d.options.before?.content || d.options.after?.content ); if (conflictingDecoration) { </ins> return false; }
Change:
Type: <bBug</bSteps to reproduce: need a git repo with origin (your fork) and upstream (the project you forked). now you have: origin/main and upstream/main the VSCode statusbar click "Select Branch/Tag...", so that the menu with "Select branch or tag for checkout..." opens menu contains additional links for "origin/main" and "upstream/main" entries: the first icon is Github - "Open on Github" the second icon is World - "Checkout on " Issue: When you click the "Open on Github" icon for the repo it will open the repository website for = URL . This is also true for all other branches. In other words: all links point to the webpage of the parent repo . You can not open webpages for branches like . This results in 404, because it tries to open the webpage for branch on , which exists only on the child repo. Output of : Expected: When clicking "Open on Github" for the webpage for the origin repo should open. When clicking "Open on Github" for the webpage for the upstream repo should open. ! VS Code version: Code 1.82.2 (, 2023-09-14T05:55:25.390Z) OS version: Windows_NT x64 10.0. Modes: <!-- generated by issue reporter --
I see the opposite behaviour. I forked and cloned my fork locally, then opened the folder in VS Code. In the branch quickpick I typed and was offered , and . The GH buttons on the latter two both take me to my fork in a browser (i.e. origin/main). Here's my info:
I am able to reproduce the issue using a fork of , could you please take a look? Thanks!

Discussion:
// Button(s) if (item.refRemote) { const matchingRemote = this.repository.remotes.find((remote) => remote.name === item.refRemote); <del> const remoteUrl = matchingRemote?.pushUrl ?? matchingRemote?.fetchUrl; if (remoteUrl) { item.buttons = this.buttons.get(item.refRemote); </del> <ins> const buttons = []; if (matchingRemote?.pushUrl) { buttons.push(...this.buttons.get(matchingRemote.pushUrl) ?? []); } if (matchingRemote?.fetchUrl && matchingRemote.fetchUrl !== matchingRemote.pushUrl) { buttons.push(...this.buttons.get(matchingRemote.fetchUrl) ?? []); } if (buttons.length) { item.buttons = buttons; </ins> } } else { item.buttons = this.defaultButtons;
Change:
<!-- Do Not Delete This! featurerequesttemplate --<!-- Please read our Rules of Conduct: --<!-- Please search existing issues to avoid creating duplicates. --<!-- Describe the feature you'd like. --When the user starts an extension defined terminal through the "Split Terminal" submenu of "New Terminal", the new terminal is always created in a new terminal tab, instead of a split. When the user opens a terminal through this menu, VS Code should override the field of the new terminal profile to make it split, as the user requested.
is this not what you're seeing or am I doing something wrong? !
Only when the custom terminal profile is created with . I have a terminal profile that is created with , that looks like this: This terminal profile is created like this:

Discussion:
} <del> public async createExtensionTerminal(location?: TerminalLocation | vscode.TerminalEditorLocationOptions | vscode.TerminalSplitLocationOptions, parentTerminal?: ExtHostTerminalIdentifier, iconPath?: TerminalIcon, color?: ThemeColor): Promise<number> { </del> <ins> public async createExtensionTerminal(location?: TerminalLocation | vscode.TerminalEditorLocationOptions | vscode.TerminalSplitLocationOptions, internalOptions?: ITerminalInternalOptions, parentTerminal?: ExtHostTerminalIdentifier, iconPath?: TerminalIcon, color?: ThemeColor): Promise<number> { </ins> if (typeof this._id !== 'string') { throw new Error('Terminal has already been created'); }

isExtensionCustomPtyTerminal: true, icon: iconPath, color: ThemeColor.isThemeColor(color) ? color.id : undefined, <del> location: this._serializeParentTerminal(location, parentTerminal), </del> <ins> location: internalOptions?.location || this._serializeParentTerminal(location, parentTerminal), </ins> isTransient: true }); // At this point, the id has been set via `$acceptTerminalOpened`

public createExtensionTerminal(options: vscode.ExtensionTerminalOptions, internalOptions?: ITerminalInternalOptions): vscode.Terminal { const terminal = new ExtHostTerminal(this._proxy, generateUuid(), options, options.name); const p = new ExtHostPseudoterminal(options.pty); <del> terminal.createExtensionTerminal(options.location, this._serializeParentTerminal(options, internalOptions).resolvedExtHostIdentifier, asTerminalIcon(options.iconPath), asTerminalColor(options.color)).then(id => { </del> <ins> terminal.createExtensionTerminal(options.location, internalOptions, this._serializeParentTerminal(options, internalOptions).resolvedExtHostIdentifier, asTerminalIcon(options.iconPath), asTerminalColor(options.color)).then(id => { </ins> const disposable = this._setupExtHostProcessListeners(id, p); this._terminalProcessDisposables[id] = disposable; });
Change:
I'm not certain if this is a bug (in the tests), but while looking at the completion ranking I noticed there are some tests cases for the fuzzy scoring annotated with "direct case match" that don't appear to match exactly - the order of the lowercase/capital is reversed: It's possible this is deliberate (because VS Code handles some swapped characters), but if so I would've thought an exact match would be included also (to ensure it ranks above the entry with the reverse characters) and the comment would be more explicit. There are other tests in the same file with the same mismatch.

Discussion:
suite('Fuzzy Scorer', () => { test('score (fuzzy)', function () { <del> const target = 'HeLlo-World'; </del> <ins> const target = 'HelLo-World'; </ins> const scores: FuzzyScore[] = []; scores.push(_doScore(target, 'HelLo-World', true)); // direct case match

}); test('score (non fuzzy)', function () { <del> const target = 'HeLlo-World'; </del> <ins> const target = 'HelLo-World'; </ins> assert.ok(_doScore(target, 'HelLo-World', false)[0] > 0); assert.strictEqual(_doScore(target, 'HelLo-World', false)[1].length, 'HelLo-World'.length);

}); test('fuzzyScore2 (matching)', function () { <del> const target = 'HeLlo-World'; </del> <ins> const target = 'HelLo-World'; </ins> for (const offset of [0, 3]) { <del> let [score, matches] = _doScore2(offset === 0 ? target : `123${target}`, 'HeLlo-World', offset); </del> <ins> let [score, matches] = _doScore2(offset === 0 ? target : `123${target}`, 'HelLo-World', offset); </ins> assert.ok(score); assert.strictEqual(matches.length, 1);

}); test('fuzzyScore2 (multiple queries)', function () { <del> const target = 'HeLlo-World'; </del> <ins> const target = 'HelLo-World'; </ins> const [firstSingleScore, firstSingleMatches] = _doScore2(target, 'HelLo'); const [secondSingleScore, secondSingleMatches] = _doScore2(target, 'World');