Change:
[X] Notebooks (.ipynb files) [ ] Interactive Window and/or Cell Scripts (.py files with #%% markers) When a cell successfully executes, I get a little green check mark to indicate success. Sometimes these marks keep getting instead of just re-using the first one. So I end up with 15+ checks across the bottom of my cell. This looks weird. ! Version: 1.70.1 (user setup) Commit: Date: 2022-08-10T06:08:33.642Z Electron: 18.3.5 Chromium: 100.0.4896.160 16.13.2 V8: 10.0.139.17-electron.0 OS: WindowsNT x64 10.0. 2022.7.110 (12 Aug 2022) No response No response No response_ Local
Thanks for filing this. Have not seen something like this before. I'll look at reproing it. Anything in particular that triggers this behavior? Or just something that shows up to you relatively often?
I've just started noticing it recently. I have not recognized a pattern yet. But I do frequently have exceptions, so maybe having something around it fail and then succeed gets it in a weird state? I'll try to pay more attention to when it starts happening.
I also restart my kernel a lot, which may have something to do with it too.
Hm, we had these issues in the past, but I thought all the bugs were squashed Edited - actually, I was just able to repro this by scrolling around while executing a cell. Not a recent regression

Discussion:
*--------------------------------------------------------------------------------------------*/ import { disposableTimeout, RunOnceScheduler } from 'vs/base/common/async'; <del> import { Disposable, dispose, IDisposable } from 'vs/base/common/lifecycle'; </del> <ins> import { Disposable, dispose, IDisposable, MutableDisposable } from 'vs/base/common/lifecycle'; </ins> import { localize } from 'vs/nls'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { themeColorFromId, ThemeIcon } from 'vs/platform/theme/common/themeService';

return; } <del> for (const newCell of e.added) { this._visibleCells.set(newCell.handle, this._itemFactory(vm, newCell)); } </del> for (const oldCell of e.removed) { this._visibleCells.get(oldCell.handle)?.dispose(); this._visibleCells.delete(oldCell.handle); } <ins> for (const newCell of e.added) { this._visibleCells.set(newCell.handle, this._itemFactory(vm, newCell)); } </ins> } override dispose(): void {

private _currentItemIds: string[] = []; private _showedExecutingStateTime: number | undefined; <del> private _clearExecutingStateTimer: IDisposable | undefined; </del> <ins> private _clearExecutingStateTimer = this._register(new MutableDisposable()); </ins> constructor( private readonly _notebookViewModel: INotebookViewModel,

} else if (runState?.state !== NotebookCellExecutionState.Executing && typeof this._showedExecutingStateTime === 'number') { const timeUntilMin = ExecutionStateCellStatusBarItem.MIN_SPINNER_TIME - (Date.now() - this._showedExecutingStateTime); if (timeUntilMin > 0) { <del> if (!this._clearExecutingStateTimer) { this._clearExecutingStateTimer = disposableTimeout(() => { </del> <ins> if (!this._clearExecutingStateTimer.value) { this._clearExecutingStateTimer.value = disposableTimeout(() => { </ins> this._showedExecutingStateTime = undefined; <del> this._clearExecutingStateTimer = undefined; </del> <ins> this._clearExecutingStateTimer.clear(); </ins> this._update(); }, timeUntilMin); }