jiebi/CodeConvo huggingface dataset:
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 <!-- 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.87.2 OS Version: MacOS/Linux Steps to Reproduce: Drag AVIF image from MacOS Finder / KDE Dolphin to VS code markdown image copied to workspace, and to be to markdown result: AVIF file not copied, and is to markdown
<!-- -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!
Hi I am working in this feature. Please let me know if any concerns.
Hi again Thia happened to be faster than I thought! Please have a look at my proposal on and please don't hesitate to tell me if you have any concern. Best, /Bruno
<!-- -a7ce-58b9-b1f9- --This feature request has not yet received the 20 community it takes to make to our backlog. 10 days to go. To learn more about how we handle feature requests, please see our . Happy Coding!
<!-- -b8df-69ca-c20a- --:slightlyfrowningface: In the last 60 days, this feature request has received less than 20 community upvotes and we closed it. Still a big Thank You to you for taking the time to create this issue! To learn more about how we handle feature requests, please see our . Happy Coding!

Discussion:
export const mediaFileExtensions = new Map<string, MediaKind>([ // Images <ins> ['avif', MediaKind.Image], </ins> ['bmp', MediaKind.Image], ['gif', MediaKind.Image], ['ico', MediaKind.Image],

} as const; export const mediaMimes = new Set([ <ins> 'image/avif', </ins> 'image/bmp', 'image/gif', 'image/jpeg',
Change:
todays insiders open quick chat the RHS toolbar hangs off the view <img width="171" alt="Screenshot 2024-03-22 at 14 05 50" src=""

Discussion:
const followupsHeight = this.followupsContainer.offsetHeight; const inputPartBorder = 1; <del> const inputPartHorizontalPadding = this.options.renderStyle === 'compact' ? 0 : 40; </del> <ins> const inputPartHorizontalPadding = this.options.renderStyle === 'compact' ? 8 : 40; </ins> const inputPartVerticalPadding = this.options.renderStyle === 'compact' ? 12 : 24; const inputEditorHeight = Math.min(this._inputEditor.getContentHeight(), height - followupsHeight - inputPartHorizontalPadding - inputPartBorder, INPUT_EDITOR_MAX_HEIGHT); const implicitContextHeight = this.implicitContextContainer.offsetHeight;
Change:
I find myself accidentally copying he entire file recently, turns out this is because we no longer copy a line when there is no selection but the whole file. When I enable keybinding troubleshooting I see it's being handled by chat-codeblock: I didn't have chat open at the time
This is from I don't fully understand the , but this should be trying to determine whether this codeblock belongs to some chat view, but it just returns the passed in editor all the time.
Since Megan is out, if you want to do some quick fix I think there is a scheme for all chat codeblocks that Matt and we could just add a check for that in here.

Discussion:
} this._register(this._chatCodeBlockContextProviderService.registerProvider({ getCodeBlockContext: (editor) => { <del> const chatWidget = this.chatWidget; if (!chatWidget) { return; } if (!editor) { </del> <ins> if (!editor || !this._chatWidget?.hasValue || !this.hasFocus()) { </ins> return; } return {
Change:
a notebook with a code cell and a markdown cell right after it shift+enter on the code cell to run it :bug: focus moves to the markdown cell, but the code cell does not run not a recent regression
I was wrong, this is a regression, just for caused by cc
we wait for the editor to attach for that setting, but a markdown cell in preview might never trigger that event

Discussion:
// wait for the editor to be created if the cell is in editing mode cell.getEditState() === CellEditState.Editing // wait for the editor to be created if we are revealing the first line of the cell <del> || revealType === CellRevealType.FirstLineIfOutsideViewport </del> <ins> || (revealType === CellRevealType.FirstLineIfOutsideViewport && cell.cellKind === CellKind.Code) </ins> ) && !cell.editorAttached) { return getEditorAttachedPromise(cell); }
Change:
I set a 'placeholder' editor decoration here: I noticed that when the chat input had multiple lines of text in it, then the placeholder doesn't show up. Here I show it not working, then working with a single line of text. ! Maybe it's related somehow to the issue we had in I can't debug this on my own, but it reproes 100% of the time for me, happy to help investigate.
This fixes it, but it sucks. it looks like cannot be used when certain events are fired. Looks like the view fires a scroll change event, which causes the event queue to flush, which causes a content change event, which calls the callback that sets the decoration...
AFAIK nothing changed here in the editor recently, so not sure if this is bad enough to add the workaround Henning found for this release on your side. IMHO we need to add proper placeholder API to the editor instead of doing this from the outside with injected text. We now have something like 3 or 4 places implementing placeholder text via injected text, which doesn't make sense to me.
Created for the placeholder API. Feel free to close this one in favor of
The event stack is quite complicated. Below is the stack of where the decoration is set. The core problem is that fires an event and allows event handlers to run immediately: ! Error at eval at at at at at at at at at at at at at at at at at at at at at at func at safeInvokeNoArg at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at

Discussion:
if (!this._modelData || !this._modelData.hasRealView) { return; } <del> this._modelData.view.render(true, forceRedraw); </del> <ins> this._modelData.viewModel.batchEvents(() => { this._modelData!.view.render(true, forceRedraw); }); </ins> } public setAriaOptions(options: editorBrowser.IEditorAriaOptions): void {

//#region viewLayout changeWhitespace(callback: (accessor: IWhitespaceChangeAccessor) => void): void; //#endregion <ins> batchEvents(callback: () => void): void; </ins> } export interface IViewLayout {

} } <ins> public batchEvents(callback: () => void): void { this._withViewEventsCollector(() => { callback(); }); } </ins> normalizePosition(position: Position, affinity: PositionAffinity): Position { return this._lines.normalizePosition(position, affinity); }
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. --A reboot of , the original issue hasn't been solved in 3 YEARS!. Since both Search and Extensions panel support pressing to clear text input, I think it makes sense for the Source Control panel to have this feature as well. A GIF demonstrates what I mean: !
as far as I can tell does not clear the extension/search field out of the box and keybindings have to be configured for that behaviour. Could you please confirm that you have explicitly set up those keybindings? Thank you!
Yes, through keybindings, but the scm input box doesn't have a command to bind to, that's the issue.
Verifications steps: Open a folder/workspace that contains a git repository Make changes to one or more file Enter a commit message Press ESC and confirm that the commit message is cleared

Discussion:
} }); <ins> KeybindingsRegistry.registerCommandAndKeybindingRule({ id: 'scm.clearInput', weight: KeybindingWeight.WorkbenchContrib, when: ContextKeyExpr.has('scmRepository'), primary: KeyCode.Escape, handler: async (accessor) => { const scmService = accessor.get(ISCMService); const contextKeyService = accessor.get(IContextKeyService); const context = contextKeyService.getContext(getActiveElement()); const repositoryId = context.getValue<string | undefined>('scmRepository'); const repository = repositoryId ? scmService.getRepository(repositoryId) : undefined; repository?.input.setValue('', true); } }); </ins> const viewNextCommitCommand = { description: { description: localize('scm view next commit', "Source Control: View Next Commit"), args: [] }, weight: KeybindingWeight.WorkbenchContrib,
Change:
Testing When turning off , the decorations disappear. When turning back on, they do not reappear automatically. !

Discussion:
import { Repository, GitResourceGroup } from './repository'; import { Model } from './model'; import { debounce } from './decorators'; <del> import { filterEvent, dispose, anyEvent, fireEvent, PromiseSource, combinedDisposable } from './util'; </del> <ins> import { filterEvent, dispose, anyEvent, fireEvent, PromiseSource, combinedDisposable, runAndSubscribeEvent } from './util'; </ins> import { Change, GitErrorCodes, Status } from './api/git'; class GitIgnoreDecorationProvider implements FileDecorationProvider {

constructor(private repository: Repository) { this.disposables.push( window.registerFileDecorationProvider(this), <del> repository.onDidRunGitStatus(this.onDidRunGitStatus, this) </del> <ins> runAndSubscribeEvent(repository.onDidRunGitStatus, () => this.onDidRunGitStatus()) </ins> ); }

private readonly disposables: Disposable[] = []; constructor(private readonly repository: Repository) { <del> this.disposables.push(window.registerFileDecorationProvider(this)); repository.historyProvider.onDidChangeCurrentHistoryItemGroup(this.onDidChangeCurrentHistoryItemGroup, this, this.disposables); </del> <ins> this.disposables.push( window.registerFileDecorationProvider(this), runAndSubscribeEvent(repository.historyProvider.onDidChangeCurrentHistoryItemGroup, () => this.onDidChangeCurrentHistoryItemGroup()) ); </ins> } private async onDidChangeCurrentHistoryItemGroup(): Promise<void> {

return (listener: (e: T) => any, thisArgs?: any, disposables?: Disposable[]) => event(e => filter(e) && listener.call(thisArgs, e), null, disposables); } <ins> export function runAndSubscribeEvent<T>(event: Event<T>, handler: (e: T) => any, initial: T): IDisposable; export function runAndSubscribeEvent<T>(event: Event<T>, handler: (e: T | undefined) => any): IDisposable; export function runAndSubscribeEvent<T>(event: Event<T>, handler: (e: T | undefined) => any, initial?: T): IDisposable { handler(initial); return event(e => handler(e)); } </ins> export function anyEvent<T>(...events: Event<T>[]): Event<T> { return (listener: (e: T) => any, thisArgs?: any, disposables?: Disposable[]) => { const result = combinedDisposable(events.map(event => event(i => listener.call(thisArgs, i))));
Change:
Testing The action shows the submenu for a fraction of a second before disappearing again when clicked. The submenu correctly shows in panel chat. !
We shouldn't have this drop down menu in inline chat
This is the problem:
caused by
Moving to April for more cleanup

Discussion:
}, hiddenItemStrategy: HiddenItemStrategy.Ignore, // keep it lean when hiding items and avoid a "..." overflow menu actionViewItemProvider: (action, options) => { <del> if ((action.id === SubmitAction.ID || action.id === CancelAction.ID) && action instanceof MenuItemAction) { const dropdownAction = this.instantiationService.createInstance(MenuItemAction, { id: 'chat.moreExecuteActions', title: localize('notebook.moreExecuteActionsLabel', "More..."), icon: Codicon.chevronDown }, undefined, undefined, undefined); return this.instantiationService.createInstance(ChatSubmitDropdownActionItem, action, dropdownAction); </del> <ins> if (this.location === ChatAgentLocation.Panel) { if ((action.id === SubmitAction.ID || action.id === CancelAction.ID) && action instanceof MenuItemAction) { const dropdownAction = this.instantiationService.createInstance(MenuItemAction, { id: 'chat.moreExecuteActions', title: localize('notebook.moreExecuteActionsLabel', "More..."), icon: Codicon.chevronDown }, undefined, undefined, undefined); return this.instantiationService.createInstance(ChatSubmitDropdownActionItem, action, dropdownAction); } </ins> } return undefined;

const isTempMessage = typeof ops.resetAfter === 'number'; if (isTempMessage && !this._elements.statusLabel.dataset['state']) { const statusLabel = this._elements.statusLabel.innerText; <ins> const title = this._elements.statusLabel.dataset['title']; </ins> const classes = Array.from(this._elements.statusLabel.classList.values()); setTimeout(() => { <del> this.updateStatus(statusLabel, { classes, keepMessage: true }); </del> <ins> this.updateStatus(statusLabel, { classes, keepMessage: true, title }); </ins> }, ops.resetAfter); } const renderedMessage = renderLabelWithIcons(message);

delete this._elements.statusLabel.dataset['state']; } <del> this._elements.statusLabel.dataset['title'] = ops.title; </del> <ins> if (ops.title) { this._elements.statusLabel.dataset['title'] = ops.title; } else { delete this._elements.statusLabel.dataset['title']; } </ins> this._onDidChangeHeight.fire(); }
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. --It would be great if VS Code would support URIs. For example, Gradle will write the following in the terminal after running Java tests: ! (I had to redact some parts of the path, but imagine that it's a full URI starting at and ending at .) Doing CTRL+click on the URI doesn't open the file, because VS Code is trying to interpret the entire string as a file path, including the part. It would also be great if the dialog would also support URIs. This can be useful when copying and pasting text into it.
The terminal should support this, maybe you're hitting some edge case: <img width="636" alt="Screenshot 2024-03-25 at 5 35 17 AM" src=""Could you try on the and if it happens there could you try get a trace log when you hover the link? cc about supporting file:// paths in quick pick.
I'm installing and setting up insiders. In the meantime, I got some more info. CTRL + hover over the path underlines it, so VS Code does recognize it: ! (You don't see the cursor in the screenshot, because I could only do a screenshot with Print Screen, which seems to remove the cursor. The cursor was over the text.) Clicking the link shows the following: ! It seems to have trouble with the leading . Running in WSL 2, Ubuntu, and VS Code is running in Windows, in case it makes a difference.
I get the same behavior with both VS Code 1.87.2 and 1.88.0-insider.
This is what I see in the terminal trace (in the Insiders version): ! and further up I actually see something related to the URI: !
I just tried this in a "real" Linux. There it did work, I could CTRL+click on the . It seems that WSL might be the issue.
were you using the Remote - WSL extension or just a WSL terminal?
With remote connection: ! So, this extension: !
Can reproduce: ! !

Discussion:
} async resolveLink(processManager: Pick<ITerminalProcessManager, 'initialCwd' | 'os' | 'remoteAuthority' | 'userHome'> & { backend?: Pick<ITerminalBackend, 'getWslPath'> }, link: string, uri?: URI): Promise<ResolvedLink> { <ins> // Correct scheme and authority for remote terminals if (uri && uri.scheme === Schemas.file && processManager.remoteAuthority) { uri = uri.with({ scheme: Schemas.vscodeRemote, authority: processManager.remoteAuthority }); } </ins> // Get the link cache let cache = this._resolvedLinkCaches.get(processManager.remoteAuthority ?? ''); if (!cache) {
Change:
Testing ! In the end everything will be text edits. So not sure how useful this message is. My be we can combine it with the info. Something like Made one textual changes. Please Accept or Discard them.
related to
Agree, it's merely a placeholder and needs tweaking. I like the idea of combining and I would like to but the diff-toggle there
I tweaked the working but we aren't in a position to make this more rich. The message "Made changes" is defined by the data model, the number of hunks is defined by the view model which also does the progressive typing. Moving to April - with some debt/feature work we might be in a better position for this
Closing this as duplicate of The "Made changes" messages only shows when not other textual reply was provided and we wanna change things so that the extension spells out what it did, like already does it today

Discussion:
} } if (madeChanges) { <del> dom.append(templateData.value, $('.interactive-edits-summary', undefined, localize('editsSummary', "Made text edits"))); </del> <ins> dom.append(templateData.value, $('.interactive-edits-summary', undefined, localize('editsSummary', "Made changes."))); </ins> } }
Change:
Perhaps we forgot to update the distro json files (for stable, insiders, oss)?
!
it was to distro weeks and many commits ago. I'm not seeing the same error, even when that API is used in insiders/pre-release. - Do you know if I forgot a step for enabling this?
I think there's a typo, in of distro you have `"NotebookCellExecution", and in jupyter extension you have , notice the casing of the first char

Discussion:
{ "name": "code-oss-dev", "version": "1.88.0", <del> "distro": "37f287ed9d23ce03684ef672b6b295c13afc9fa5", </del> <ins> "distro": "340432a8308f66007779ec2133ee39e6995006cb", </ins> "author": { "name": "Microsoft Corporation" },
Change:
!
Is this in web? Whats your setup?
Yes, this is in web. When you open and reload the page, does it open as text for you?
I can reproduce. My guess is it has something to do with the extension not being present on restore
This is strange: the first time I did this, the notebook opened as text. But now when I try to open the link, I am always getting put back to the readme as preview Did we somehow miss the ability to deep-link a file on or is it just me?
This works for me.
Whenever I click the link I get the notebook as text regardless of having the extension installed . I don't get the readme preview though.
!

Discussion:
} } <del> registerWorkbenchContribution2(InteractiveDocumentContribution.ID, InteractiveDocumentContribution, WorkbenchPhase.AfterRestored); </del> <ins> registerWorkbenchContribution2(InteractiveDocumentContribution.ID, InteractiveDocumentContribution, WorkbenchPhase.BlockRestore); </ins> registerWorkbenchContribution2(InteractiveInputContentProvider.ID, InteractiveInputContentProvider, { editorTypeId: INTERACTIVE_WINDOW_EDITOR_ID });
Change:
Testing There's a double close parenthesis here: <img width="305" alt="image" src=""
Also a missing on the line

Discussion:
private _getAccessibleViewHelpDialogContent(providerHasSymbols?: boolean): string { const navigationHint = this._getNavigationHint(); const goToSymbolHint = this._getGoToSymbolHint(providerHasSymbols); <del> const toolbarHint = localize('toolbar', "Navigate to the toolbar (Shift+Tab))."); </del> <ins> const toolbarHint = localize('toolbar', "Navigate to the toolbar (Shift+Tab)."); </ins> const chatHints = this._getChatHints(); let hint = localize('intro', "In the accessible view, you can:n");

if (insertIntoNewFileKb) { hint += localize('insertIntoNewFile', " - Insert the code block into a new file ({0}).n", insertIntoNewFileKb); } else { <del> hint += localize('insertIntoNewFileNoKb', " - Insert the code block into a new file by configuring a keybinding for the Chat: Insert at Cursor command.n"); </del> <ins> hint += localize('insertIntoNewFileNoKb', " - Insert the code block into a new file by configuring a keybinding for the Chat: Insert into New File command.n"); </ins> } if (runInTerminalKb) { hint += localize('runInTerminal', " - Run the code block in the terminal ({0}).n", runInTerminalKb);

let goToSymbolHint = ''; if (providerHasSymbols) { if (goToSymbolKb) { <del> goToSymbolHint = localize('goToSymbolHint', 'Go to a symbol ({0})', goToSymbolKb); </del> <ins> goToSymbolHint = localize('goToSymbolHint', 'Go to a symbol ({0}).', goToSymbolKb); </ins> } else { goToSymbolHint = localize('goToSymbolHintNoKb', 'To go to a symbol, configure a keybinding for the command Go To Symbol in Accessible View'); }
Change:
and interactive window and run a cell that will cause thow an error eg the line that errored in the cell is underlined and an unfixable problem is to the problems window can't even delete the cell to remove the error
edit: didn't realize this was for interactive windows. verifying that this is okay in the problems panel though? !
yeah, that's from pylance, different issue I guess verification should be to run this in the IW, since it won't fail a static check

Discussion:
) { super(); <del> this.updateEnabled(); </del> <ins> if (cell.viewType !== 'interactive') { this.updateEnabled(); </ins> <del> this._register(inlineChatService.onDidChangeProviders(() => this.updateEnabled())); this._register(configurationService.onDidChangeConfiguration((e) => { if (e.affectsConfiguration(NotebookSetting.cellFailureDiagnostics)) { this.updateEnabled(); } })); </del> <ins> this._register(inlineChatService.onDidChangeProviders(() => this.updateEnabled())); this._register(configurationService.onDidChangeConfiguration((e) => { if (e.affectsConfiguration(NotebookSetting.cellFailureDiagnostics)) { this.updateEnabled(); } })); } </ins> } private updateEnabled() {

}; } <ins> override dispose() { super.dispose(); this.clear(); } </ins> }
Change:
Testing <img width="822" alt="image" src="""When is not set to "multiple"`, but that setting is only a boolean, what is this referring to?

Discussion:
}, 'workbench.editor.enablePreviewFromQuickOpen': { 'type': 'boolean', <del> 'markdownDescription': localize({ comment: ['{0}, {1} will be a setting name rendered as a link'], key: 'enablePreviewFromQuickOpen' }, "Controls whether editors opened from Quick Open show as preview editors. Preview editors do not stay open, and are reused until explicitly set to be kept open (via double-click or editing). When enabled, hold Ctrl before selection to open an editor as a non-preview. This value is ignored when {0} is not set to {1}.", '`#workbench.editor.enablePreview#`', '`multiple`'), </del> <ins> 'markdownDescription': localize({ comment: ['{0}, {1} will be a setting name rendered as a link'], key: 'enablePreviewFromQuickOpen' }, "Controls whether editors opened from Quick Open show as preview editors. Preview editors do not stay open, and are reused until explicitly set to be kept open (via double-click or editing). When enabled, hold Ctrl before selection to open an editor as a non-preview. This value is ignored when {0} is not set to {1}.", '`#workbench.editor.showTabs#`', '`multiple`'), </ins> 'default': false }, 'workbench.editor.enablePreviewFromCodeNavigation': { 'type': 'boolean', <del> 'markdownDescription': localize({ comment: ['{0}, {1} will be a setting name rendered as a link'], key: 'enablePreviewFromCodeNavigation' }, "Controls whether editors remain in preview when a code navigation is started from them. Preview editors do not stay open, and are reused until explicitly set to be kept open (via double-click or editing). This value is ignored when {0} is not set to {1}.", '`#workbench.editor.enablePreview#`', '`multiple`'), </del> <ins> 'markdownDescription': localize({ comment: ['{0}, {1} will be a setting name rendered as a link'], key: 'enablePreviewFromCodeNavigation' }, "Controls whether editors remain in preview when a code navigation is started from them. Preview editors do not stay open, and are reused until explicitly set to be kept open (via double-click or editing). This value is ignored when {0} is not set to {1}.", '`#workbench.editor.showTabs#`', '`multiple`'), </ins> 'default': false }, 'workbench.editor.closeOnFileDelete': {