jiebi/CodeConvo huggingface dataset:
Change:
<del> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path fill="#646465" d="M11 10H5.344L11 4.414V10z"/></svg> </del>  No newline at end of file

Discussion:
Noticed how the process explorer is bundling and still. Can we not use Codicons for this? //cc
Oh this seems to be used in the issue reporter, not process explorer. But not sure how to actually see it...
are we actually using these icons? I'm not seeing it: !
it looks like these are only used when VSCode is connected to a remote to show the remote processes as well. I didn't even know we had that, pretty cool: ! Anyhow, my request still seems valid.
PR up at !
Change:
for (let i = 0; i < resources.length; i += maxConcurrent) { const resourceBatch = resources.slice(i, i + maxConcurrent); <del> const documentBatch = (await Promise.all(resourceBatch.map(this.getMarkdownDocument))).filter((doc) => !!doc) as SkinnyTextDocument[]; </del> <ins> const documentBatch = (await Promise.all(resourceBatch.map(x => this.getMarkdownDocument(x)))).filter((doc) => !!doc) as SkinnyTextDocument[]; </ins> docList.push(...documentBatch); } return docList;

Discussion:
Issue Type: <bBug</bThe above option is not working for markdown files after the 1.60.0 (Augutst 2021) update. When I restored the July update, the same started working again. Please look into this Thank you VS Code version: Code 1.60.0 (, 2021-09-01T10:41:52.311Z) OS version: WindowsNT x64 10.0. Restricted Mode: No <details<summarySystem Info</summary </details<details<summaryExtensions (40)</summaryExtensionVersion ------ add-to-snippet0.2.1 project-manager12.3.0 code-sum-up0.1.0 insertnumbers0.9.1 All-Autocomplete0.0.23 vscode-django1.6.0 file-browser0.2.10 bracket-pair-colorizer1.0.61 vscode-mysql-client24.1.4 githistory0.6.18 python-extension-pack1.6.0 xml2.5.1 gitlens11.6.0 remotehub0.14.0 vbnet1.0.2 gc-excelviewer3.0.44 selected-lines-count1.4.0 google-translate1.2.3 vscode-JS-CSS-HTML-formatter0.2.3 MagicPython1.1.0 python2021.9. vscode-pylance2021.9.1 jupyter2021.8. jupyter-keymap1.0.0 vsliveshare1.0.4761 color-highlight2.4.0 emoji1.0.1 material-icon-theme4.10.0 calc2.0.1 LiveServer5.6.1 vscode-fileutils3.4.5 vscode-autohotkey0.2.2 numbermonger0.5.0 python0.2.3 pdf1.1.0 vscodeintellicode1.2.14 vscode-icons11.6.0 jinja0.0.8 local-history1.8.1 file-size1.0.0 (1 theme extensions excluded) </details<details<summaryA/B Experiments</summary</details<!-- generated by issue reporter --
Change:
}, 'scm.showActionButton': { type: 'boolean', <del> markdownDescription: localize('showActionButton', "Controls whether an action button can be shown in the SCM view."), </del> <ins> markdownDescription: localize('showActionButton', "Controls whether an action button can be shown in the Source Control view."), </ins> default: true } }

Discussion:
Within the UI in VS Code there are differing names for the SCM view depending on whereabouts you are in the UI. Under the "View Menu" there is an entry from "SCM" but everywhere else it is referred to as Source Control. (Hovering over the icon in the activity bar names it Source Control, the view container title says Source Control and in the command palette, the command is listed as "Source Control: Focus on Source Control View".) Then under settings there is a group "Features SCM" For consistency, it would be better to keep with a single (user facing) name that is used in all places.
I don't like using of abbreviations in the program GUI, especially if they are not as much popular and known. It took me a while to understand what is that SCM thing.
fixing this makes sense to me, though I might be missing some historical context.
Yeah the correct term is Source Control. SCM is just an internal name, should not be surfaced.
I've pushed a small PR that should rename this in all the places I could find.
Merged! thank you very much for the contribution!
Change:
} extension.contributes?.walkthroughs?.forEach(section => { <del> const categoryID = extension.identifier.value + '#walkthrough#' + section.id; </del> <ins> const categoryID = extension.identifier.value + '#' + section.id; </ins> section.steps.forEach(step => { const fullyQualifiedID = extension.identifier.value + '#' + section.id + '#' + step.id; this.steps.delete(fullyQualifiedID);

Discussion:
Testing Have one profile with GitLens installed and other without. Notice how walkthrough shows up in Welcome page on profile without GitLens <img width="1653" alt="image" src="https://user-"
It seems welcome page is not updating when extensions are removed. This has to be fixed in walk throughs / welcome page component. Not sure who owns this now. Can you please assign it to the corresponding owner?
It appears we are handling it correctly here
I see is being invoked for gitlens extension when switching profiles, but I do not know why the walk through page is still showing it. I do not know the implementation of it. Can you please investigate from walk through component perspective first to see why it is still being shown?
I disabled gitlens and used the button to reload the window. The walkthrough is no longer there. is that expected?
!
I changed profiles to the one with Gitlens still enabled and there's still no walkthrough
Hmmm I cannot repro this. Can you provide a gif? If I have the walkthrough open and reload my window the walkthrough page doesn't dissapear
https://user-
Change:
return extHostTerminalService.onDidChangeTerminalDimensions(listener, thisArg, disposables); }, onDidChangeTerminalState(listener, thisArg?, disposables?) { <del> checkProposedApiEnabled(extension); </del> return extHostTerminalService.onDidChangeTerminalState(listener, thisArg, disposables); }, onDidWriteTerminalData(listener, thisArg?, disposables?) {

Discussion:
We finalized this API this iteration:
Closing this as I see the PR is merged to release branch.
Change:
"vscode-proxy-agent": "^0.5.2", "vscode-ripgrep": "^1.8.0", "vscode-textmate": "5.2.0", <del> "xterm": "4.9.0-beta.8", </del> <ins> "xterm": "4.9.0-beta.24", </ins> "xterm-addon-search": "0.7.0", "xterm-addon-unicode11": "0.2.0", "xterm-addon-webgl": "0.8.0",

Discussion:
Since we don't know when links are no longer cached by , we cannot drop the objects. Upstream part:
Change:
throw new Error(userCancelled ? CANCELLATION_ERROR : 'No auth flow succeeded.'); } <ins> public async logout(session: vscode.AuthenticationSession): Promise<void> { this._logger.trace(`Deleting session (${session.id}) from server...`); if (!Config.gitHubClientSecret) { this._logger.warn('No client secret configured for GitHub authentication. The token has been deleted with best effort on this system, but we are unable to delete the token on server without the client secret.'); return; } // Only attempt to delete OAuth tokens. They are always prefixed with `gho_`. // https://docs.github.com/en/rest/apps/oauth-applications#about-oauth-apps-and-oauth-authorizations-of-github-apps if (!session.accessToken.startsWith('gho_')) { this._logger.warn('The token being deleted is not an OAuth token. It has been deleted locally, but we cannot delete it on server.'); return; } if (!isSupportedTarget(this._type, this._ghesUri)) { this._logger.trace('GitHub.com and GitHub hosted GitHub Enterprise are the only options that support deleting tokens on the server. Skipping.'); return; } const authHeader = 'Basic ' + base64Encode(`${Config.gitHubClientId}:${Config.gitHubClientSecret}`); const uri = this.getServerUri(`/applications/${Config.gitHubClientId}/token`); try { // Defined here: https://docs.github.com/en/rest/apps/oauth-applications?apiVersion=2022-11-28#delete-an-app-token const result = await fetching(uri.toString(true), { method: 'DELETE', headers: { Accept: 'application/vnd.github+json', Authorization: authHeader, 'X-GitHub-Api-Version': '2022-11-28', 'User-Agent': `${vscode.env.appName} (${vscode.env.appHost})` }, body: JSON.stringify({ access_token: session.accessToken }), }); if (result.status === 204) { this._logger.trace(`Successfully deleted token from session (${session.id}) from server.`); return; } try { const body = await result.text(); throw new Error(body); } catch (e) { throw new Error(`${result.status} ${result.statusText}`); } } catch (e) { this._logger.warn('Failed to delete token from server.' + e.message ?? e); } } </ins> private getServerUri(path: string = '') { const apiUri = this.baseUri; // github.com and Hosted GitHub Enterprise instances

Discussion:
<!-- Do Not Delete This! featurerequesttemplate --<!-- Please read our Rules of Conduct: --<!-- Please search existing issues to avoid creating duplicates. --Currently signing out of your GitHub account only removes the token from the secret store but the token continues to be valid, which means that if it was leaked the attacker can continue to make use of it. To mitigate this, VS Code should revoke the token on sign out, see this API:
I wish this API didn't require the client secret...
Change:
if (startLine === endLine) { return undefined; } <del> if (outputMatcher?.length && (endLine - startLine) < outputMatcher.length) { return undefined; } </del> let line: string | undefined; if (outputMatcher?.anchor === 'bottom') { for (let i = endLine - (outputMatcher.offset || 0); i >= startLine; i--) {

Discussion:
Just debugging in Insiders, it looks like the opposite: the free port matcher doesn't match anything unless the output is more than its configured 20 lines <img width="499" alt="image" src="https://user-"If I add then it works. THat should be enough for me to verify the UI side of this... Originally posted by in
remove this completely
<!-- 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!
Change:
export class IndexTree<T, TFilterData = void> extends AbstractTree<T, TFilterData, number[]> { <del> declare model: IndexTreeModel<T, TFilterData>; </del> <ins> protected declare model: IndexTreeModel<T, TFilterData>; </ins> constructor( user: string,

Discussion:
This is a follow-up on and where I simply make the model-property of the tree public. Tho, a better fix might be needed here
Change:
import { parseTerminalUri } from 'vs/workbench/contrib/terminal/browser/terminalUri'; import { terminalStrings } from 'vs/workbench/contrib/terminal/common/terminalStrings'; import { IEditorResolverService, RegisteredEditorPriority } from 'vs/workbench/services/editor/common/editorResolverService'; <ins> import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService'; import { ILifecycleService, LifecyclePhase } from 'vs/workbench/services/lifecycle/common/lifecycle'; </ins> import { IEmbedderTerminalService } from 'vs/workbench/services/terminal/common/embedderTerminalService'; /**

Discussion:
changed to move to but this caused a feature for Codespaces to stop working where the terminal will start streaming in the init logs before the workbench has fully loaded. Ideally we would start it up on Starting only on remote, if we can't do that we need to move it back to Starting in the meantime. cc
We know if we are connected to a remote from the environment service via probing for .
We don't have access to services at workbench contrib registration do we?
no, but you could have 1 eager workbench contrib that depends on the environment service to decide if a second thing should get instantiated or not.
Marked verified, only can properly verify it
this seems to still be failing, the terminal does not show up until the codespace is fully created and the workbench initialized
Verified by
Change:
'Content-Length': String(data.length), }; <del> const startTime = new Date().getTime(); </del> <ins> const stopWatch = new StopWatch(); </ins> let context: IRequestContext | undefined, error: any, total: number = 0; try {

Discussion:
I was just looking at the field of our event and I noticed that a lot of the durations are negative. Looking at the code here It looks like we are computing the miliseconds since 1970. I guess that we are hitting some overflow, and thus the numbers are negative. I suggest that we instead use the class that Joh is using here for example I can go ahead and push a fix for this.
I am not 100% sure if using would fix this. at the end of the day uses , and you were using . It looks like getTime treats timezones differently. So my proposed fix might fix the problem or it might not. What do you think Here's the Kusto query to see the events with the negative durations
I have pushed a potential fix for this. To verify run the above query in kusto Make sure that no events are happening in the latest VS Code Stable / Insiders version (thus that the fix indeed fixes it). I am assigning this to September to give it some time for the data to settle in.
Thanks for the fix. Using is the right thing here.
Change:
this.registerExtensionAction({ id: 'workbench.extensions.action.copyExtensionId', <del> title: { value: localize('workbench.extensions.action.copyExtensionId', "Copy Extension Id"), original: 'Copy Extension Id' }, </del> <ins> title: { value: localize('workbench.extensions.action.copyExtensionId', "Copy Extension ID"), original: 'Copy Extension ID' }, </ins> menu: { id: MenuId.ExtensionContext, group: '1_copy'

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.59.0 OS Version: macOS 11.5.2 (20G95) Steps to Reproduce: -click on an extension. "Copy Extension Id". Both "Id" and "ID" are used: Language Id Copy Extension Id Copy Command ID Copy Setting ID The use of "ID" appears to be consistent in the translations, in for example.
Change:
requireError = error; } <del> // Execute the runner if it follows our spec </del> <ins> // Execute the runner if it follows the old `run` spec </ins> if (testRunner && typeof testRunner.run === 'function') { return new Promise<void>((c, e) => { <del> testRunner!.run(extensionTestsPath, (error, failures) => { </del> <ins> const oldTestRunnerCallback = (error: Error, failures: number | undefined) => { </ins> if (error) { e(error.toString()); } else {

Discussion:
Testing create a TS extension as described in and look at 'runTests' is called with testRunnerPath. The hover of says: ts import as testRunner from 'vscode/lib/testrunner'; module.exports = testRunner; Looking at I don't see a testRunner exported.
Ok, thanks. But now my question is about What is the ? How does the user define it? Is it necessary? Why do we use the style. Our APIs typically use Promises...
So the testRunner is the module name passed to . Did we change the contract? Before it had to export a now it has to export a ?
We didn't. That's what the old test runner does: We use the old API since we don't want to break backwards compat. I'd suggest we come up with a better API (see my comment here: ), but it has to be a different name, such as . Here's the relevant code:
I don't really like us having to have this API, but for people who are still importing from , if they don't migrate we don't want to break them.
Actually, for people who have been importing from , they haven't used the signature directly. So if we do add a better signature with a different name such as , we might not need to expose .
The change is to add a new function signature for : When the function returns a promise, wait for the promise, otherwise use the old logic.
Change:
// a) there is no stored query model, but there is a word. This signals the editor that drove the highlight is disposed (cell out of viewport, etc) // b) the queried model is not the current model. This signals that the editor that drove the highlight is still in the viewport, but we are highlighting a different cell // otherwise, we send null in place of the word, and the model and selection are used to compute the word <ins> // TODO: @Yoyokrazy -- investigate this logic for sendWord </ins> const sendWord = (!WordHighlighter.query.modelInfo && WordHighlighter.query.word) || (WordHighlighter.query.modelInfo?.model.uri !== this.model.uri) ? true : false;

Discussion:
There is a strange issue in vs code when i split the window, and click on any code or syntax , it will highlight similar code/syntax but the highlig ht is persistent, it wont go away, it works fine in the first window but when it gets split to the right it doesnt work if i click anywhere else in the window, in the left side the currentCrew is highlighted now, it just wont clear. sys info Version: 1.84.2 (Universal) Commit: Date: 2023-11-09T10:52:33.687Z (1 wk ago) Electron: 25.9.2 ElectronBuildId: Chromium: 114.0.5735.289 18.15.0 V8: 11.4.183.29-electron.0 OS: Darwin x64 21.6.0 <img width="1680" alt="Screen Shot 2023-11-22 at 9 42 52 AM" src=""
could you help with triaging this issue? Thanks!
Change:
}); private static readonly MANUALLY_EXPANDED_AUTO_HIDE_VISUAL_DECORATION = ModelDecorationOptions.register({ <del> description: 'folding-manually-expanded-visual-decoration', </del> <ins> description: 'folding-manually-expanded-auto-hide-visual-decoration', </ins> stickiness: TrackedRangeStickiness.AlwaysGrowsWhenTypingAtEdges, isWholeLine: true, firstLineDecorationClassName: ThemeIcon.asClassName(foldingManualExpandedIcon) }); <ins> private static readonly NO_CONTROLS_EXPANDED_RANGE_DECORATION = ModelDecorationOptions.register({ description: 'folding-no-controls-range-decoration', stickiness: TrackedRangeStickiness.AlwaysGrowsWhenTypingAtEdges, isWholeLine: true }); </ins> private static readonly HIDDEN_RANGE_DECORATION = ModelDecorationOptions.register({ description: 'folding-hidden-range-decoration',

Discussion:
Expected: only gutter controls are removed, background and ellipsis - preserved Actual: The background color no longer applied & the ellipsis is missing on the folded lines.VS Code Version: 1.70.0 (user setup) OS Version: Windows_NT x64 10.0.
Change:
this._onDidChangeHeight.fire(); } <del> updateStatus(message: string, ops: { classes?: string[]; resetAfter?: number; keepMessage?: boolean } = {}) { </del> <ins> updateStatus(message: string, ops: { classes?: string[]; resetAfter?: number; keepMessage?: boolean; title?: string } = {}) { </ins> const isTempMessage = typeof ops.resetAfter === 'number'; if (isTempMessage && !this._elements.statusLabel.dataset['state']) { const statusLabel = this._elements.statusLabel.innerText;

Discussion:
When inline chat changes more than one hunk it just shows "N changes". We should make that more explicit, e.g that it is todo-list-like and something that we need to accept explicit per change
I made the message more explicit, the info icon, and a hover message. This is how it now looks <img width="1136" alt="image" src=""
Change:
return this.userConfiguration.value!.loadConfiguration(); } <del> async reload(): Promise<ConfigurationModel> { </del> <ins> async reload(settingsConfiguration?: ConfigurationModel): Promise<ConfigurationModel> { </ins> if (this.hasTasksLoaded) { return this.userConfiguration.value!.loadConfiguration(); } <del> return this.reset(this.settingsResource, this.tasksResource, this.configurationParseOptions); </del> <ins> return this.doReset(settingsConfiguration); </ins> } reparse(parseOptions?: Partial<ConfigurationParseOptions>): ConfigurationModel {

Discussion:
apply the patch that logs fs calls which is included below run open a folder and open a single css file don't modify it (i.e. avoid hot exit) and reload the window <details<summaryPatch</summary</detailsObserve the following fs calls that occur before the first editor rendering: IMHO the following fs calls should be postponed: [ ] [ ] [ ] [x] I also noticed that we read the following files twice: [ ]
I have no clue what we use install source for, but lots of digging reveals this commit:
Updating the list - is only read once.
is read twice because First time during initialising configuration without user tasks User tasks is read later when there is an idle time - by reloading user configuration - during which settings and tasks files are read.
Install source is a common telemetry property. It can be set after installing VS Code. It came as an ask from Anaconda, to know how many installations came from them. We decided to go with creating a new file rather than updating existing files, to avoid scenarios where we'd break important files (eg or ). I don't have great ideas to work around this other than refactoring the code until the first telemetry event gets submitted, which is still pretty early. Will ask around to learn whether this common telemetry property is still in use.
is gone!
Tasks and Launches are part of Config and they are accessed sync from config service. In order to prevent reading these files during start up we should loading them until they are needed. (probably workbench restored phase) an assertion to make sure no component is reading them until then
This needs considerable refactoring and I do not think it is worth a change for the gain given that these files are resolved in parallel. Hence marking this as no fix.
Change:
return; } <ins> this._HEAD = this.repository.HEAD; </ins> // Check if HEAD does not support incoming/outgoing (detached commit, tag) if (!this.repository.HEAD?.name || !this.repository.HEAD?.commit || this.repository.HEAD.type === RefType.Tag) { this.logger.trace('GitHistoryProvider:onDidRunGitStatus - HEAD does not support incoming/outgoing'); this.currentHistoryItemGroup = undefined; <del> this._HEAD = this.repository.HEAD; </del> return; }

Discussion:
No steps yet, but it happened twice today that I have seen stale decorations, e.g after pull <img width="1367" alt="Screenshot 2024-02-14 at 12 26 08" src=""
Change:
const position = new Position(change.modifiedStartLineNumber, 1); outerEditor.setPosition(position); <del> outerEditor.revealPosition(position); </del> <ins> outerEditor.revealPositionInCenter(position); </ins> } } registerEditorAction(MoveToPreviousChangeAction);

Discussion:
I have these keybinding: Currently it doesn't center the viewport like F3, which makes it less nice.
You mean you want it to center the viewport when the editor needs to be scrolled?
I'm interested to work on this as my first issue. Will you point me in the right direction
Looks like a PR is already out