Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion mac/Sources/Wind/ClearCursor.swift
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,9 @@ final class ClearCursor: @unchecked Sendable {
let first = NSCursor.currentSystem
lock.lock()
active = true; stalled = false; session += 1
if let c = first, !isClear(c) { appCursor = c; shapeGen += 1 }
// The key goes with the shape: a key left from the last session (an arrow) made the next arrow read
// a repeat, and a first-frame I-beam was drawn until Wind zoomed out (owner 2026-11-07).
if let c = first, !isClear(c) { appCursor = c; appKey = nil; shapeGen += 1 }
beat = CACurrentMediaTime()
let s = session
lock.unlock()
Expand Down
2 changes: 1 addition & 1 deletion mac/VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.5.5
0.5.6
4 changes: 3 additions & 1 deletion mac/docs/architecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -767,7 +767,9 @@ through) and macOS zoom itself are not involved (research/wind-mac/re/2026-11-02
unless the cursor seed moved since, and Wind's transparent set moves it, so at 1x those sets cost
nothing (0 seed bumps) and zoomed each one showed the real cursor until the poll's re-set (owner
2026-11-04, ChatGPT: flicker while moving). `ClearCursor` reads the same shape (pixels) set twice within
1 s as that signature: for 0.5 s after each such set the poll thread also hides the real cursor, which no
1 s as that signature (the pixel key is cleared with each new shape `start` takes: a key left from the
last session made the next arrow a "repeat" and a first-frame I-beam stuck until zoom-out, owner
2026-11-07): for 0.5 s after each such set the poll thread also hides the real cursor, which no
set shows through. It hides on that thread with its own balanced hide count (per process): on the main
thread each hide stopped the tick 10-30 ms. The poll keeps re-setting the transparent image meanwhile:
an app switch force-shows even a hidden cursor (the poll re-hides it). Hover arriving during the hide is ignored, and
Expand Down
Loading