Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
From "Multiple Lines" to "Path Filling"
The Issue: The original code used a loop for (let yoffset=0; yoffset<=3; yoffset++) to draw three separate parallel lines. If your cursor height (sizeY) was large or the line width was small, visible gaps appeared between these lines, making it look like a "striped" trail rather than a solid block.
The Fix: The new logic traces a single continuous path. It starts by drawing the top edge of the trail (from the cursor to the end of the tail) and then traces back along the bottom edge. By calling context.fill(), the entire area between those two lines is filled with color, creating a solid, manifold geometric shape.
Enhanced Smoothing with lineCap and lineJoin
The Improvement: I added context.lineCap = "round" and context.lineJoin = "round".
The Reason: Without these, the "joints" of the trail could appear jagged or sharp when you make sudden, fast movements or sharp turns with your mouse. Setting these to "round" ensures that every segment connection is smooth and pill-shaped, mimicking the fluid, liquid-like motion seen in Neovide.
Property Synchronization
The Fix: I ensured that context.fillStyle is explicitly set to the same color as context.strokeStyle.
The Reason: The fill() command relies on the fillStyle property. In the previous version, if only the stroke color was set, the block might have appeared invisible or used a default color (like black) when attempting to fill the path.