Code change:
class HitTestRequest extends BareHitTestRequest { private readonly _ctx: HitTestContext; <del> public readonly target: HTMLElement | null; public readonly targetPath: Uint8Array; </del> <ins> private readonly _eventTarget: HTMLElement | null; public readonly hitTestResult = new Lazy(() => MouseTargetFactory.doHitTest(this._ctx, this)); private _useHitTestTarget: boolean; private _targetPathCacheElement: HTMLElement | null = null; private _targetPathCacheValue: Uint8Array = new Uint8Array(0); public get target(): HTMLElement | null { if (this._useHitTestTarget) { return this.hitTestResult.value.hitTarget; } return this._eventTarget; } </ins> <del> constructor(ctx: HitTestContext, editorPos: EditorPagePosition, pos: PageCoordinates, relativePos: CoordinatesRelativeToEditor, target: HTMLElement | null) { </del> <ins> public get targetPath(): Uint8Array { if (this._targetPathCacheElement !== this.target) { this._targetPathCacheElement = this.target; this._targetPathCacheValue = PartFingerprints.collect(this.target, this._ctx.viewDomNode); } return this._targetPathCacheValue; } constructor(ctx: HitTestContext, editorPos: EditorPagePosition, pos: PageCoordinates, relativePos: CoordinatesRelativeToEditor, eventTarget: HTMLElement | null) { </ins> super(ctx, editorPos, pos, relativePos); this._ctx = ctx; <ins> this._eventTarget = eventTarget; </ins> <del> if (target) { this.target = target; this.targetPath = PartFingerprints.collect(target, ctx.viewDomNode); } else { this.target = null; this.targetPath = new Uint8Array(0); } </del> <ins> // If no event target is passed in, we will use the hit test target const hasEventTarget = Boolean(this._eventTarget); this._useHitTestTarget = !hasEventTarget; </ins> } public override toString(): string { return `pos(${this.pos.x},${this.pos.y}), editorPos(${this.editorPos.x},${this.editorPos.y}), relativePos(${this.relativePos.x},${this.relativePos.y}), mouseVerticalOffset: ${this.mouseVerticalOffset}, mouseContentHorizontalOffset: ${this.mouseContentHorizontalOffset}nttarget: ${this.target ? (<HTMLElement>this.target).outerHTML : null}`; } <ins> public get wouldBenefitFromHitTestTargetSwitch(): boolean { return ( !this._useHitTestTarget && this.hitTestResult.value.hitTarget !== null && this.target !== this.hitTestResult.value.hitTarget ); } public switchToHitTestTarget(): void { this._useHitTestTarget = true; } </ins> private _getMouseColumn(position: Position | null = null): number { if (position && position.column < this._ctx.viewModel.getLineMaxColumn(position.lineNumber)) { // Most likely, the line contains foreign decorations...

Related discussion:
text: Here's a side by side of two versions of the dev build: <img width="1680" alt="image" src=""You can see when I click to the right of a line, the older (working) build has the correct position here, while the newer broken build has column 1. Here are the links to these versions: Working: Broken: I believe this is out of both of our depths at this point so I'm passing to you This is a regression so I think it should be fixed before we release (assuming I'm not the only one to repro)
Did a bisect using and it points to
In that case, it is most likely .