Repository navigation
Conversation
The transform engine now always draws DWM's own pointer (native cursor). Removed: txNativeCursor and every !nativeSession_ branch of TransformModel (zoom-in sprite bridge, shell-panel real-pointer branch, sprite draw branch), CursorSprite shape rendering (refreshShape, renderMaskShape, shape cache), spriteBand16, spriteCapturable and the cursorSprite knob (the blanker and the Inspect crosshair sprite are now always created, which also fixes cursorSprite=0 disabling the hide-cursor hotkey), the shell-panel pointer freeze (panelPointer, panelFreeze, ex.realPointer), txFreeCursor=0, txDwmCentre=0, idle context release (txIdleReleaseMs) and the sprite telemetry columns. Kept: the Inspect crosshair, the blanker, the hide-cursor hotkey path, the locked/Inspect weld, the cursor lens and public-API prime fallback, cursorBandAuto/zorderBand for the crosshair. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011zPmivSAQeivGUdBjTsaMu
…rshalling txHookWrite (default off, incompatible with DWM centring) is gone with everything that existed only for it: hook_transform.*, hook_geometry.h, the WH_MOUSE_LL inline write and arming in RunTick, PresentExtras::suppressTransformWrite, DwmCentreIn::hookWrite, the hook-era lag and swim telemetry columns (w_hook, lag_px) and the composite frame gate. mag_thread.* only marshalled onto the hook thread when that path claimed the runtime; with no claim every MagThreadInvoke already ran inline. Verified every user (mag_host, color_filter, render_engine, transform_model, input_router) and unwrapped them to direct calls, so the cursor lens and every other Magnification call behave exactly as before. MagHost loses setTransformOwned and the *Owned acquire/release split. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011zPmivSAQeivGUdBjTsaMu
… and the wobble cage Measured-negative experiments that shipped off and are no longer reachable from the UI: txWriteHz, txMinOffsetPx (tx_cadence.h and its tests), txLevelStep, txGrid, warm modes 2-4 (same-value, input-transform, level epsilon) with txWarmMaxLevel, txWarmWindowMs and txWarmLevelEps, txPace 1 and 2 (the composite pulse thread and the hitch recorder's pulse fields and causes) and the WobbleCage diagnostic (wobble_cage.*, txWobbleCage[Size]). Every changed tick is written, exactly what the defaults already did. The shipped 1px warm pulse (txWarmMode 1, txWarmHz) stays for the views Wind writes itself (locked, Inspect, detached); retired warm values read as 1. The trace now marks pulse ticks in its warm column, which stayed empty in the shipped mode. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011zPmivSAQeivGUdBjTsaMu
…removal WallBinding (replaced by NearWall) and its test, the swapModelVk field and its test, the drag-follow weldActive argument (always true), trackGlideMode 0 with GlideToward (the spring is the only tracking glide), the shell input panel watcher in the focus tracker (its only reader was the removed panel pointer freeze, so the cloak WinEvent hook and the 250 ms idle timer go too) and the empty TransformModel::onActivate override. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011zPmivSAQeivGUdBjTsaMu
Rewrite the cursor, transform-engine, tick-loop, config and instrumentation chapters, CLAUDE.md and the findings records for the removed sprite cursor, hook writes, cadence gates, warm modes 2-4, composite pulse pacing and wobble cage. The default ini template and the architecture docs no longer name removed keys. Tools tied to removed knobs are deleted (dualcursor.ps1, wind_cadence_ab.ps1) or adjusted (gpu_ab, zoom_response_ab, the wobble probes now ignore a hidden crosshair window). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011zPmivSAQeivGUdBjTsaMu
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Closes #384. From the 2026-10-08 full review (research/wind/2026-10-08-full-review.md).
The transform engine is native-cursor only now. Removed: the txNativeCursor=0 sprite session and the sprite's cursor-shape rendering (the Inspect crosshair stays), cursorSprite/spriteBand16/spriteCapturable, the shell-panel pointer freeze, the txHookWrite hook write path and mag_thread marshalling (nothing claimed it, so every call already ran inline on the tick thread), txFreeCursor=0, txDwmCentre=0, the cadence gates (txWriteHz, txMinOffsetPx, txLevelStep, txGrid), warm modes 2-4, txPace experiments, the wobble cage, idle-release members, WallBinding, swapModelVk, trackGlideMode 0 + GlideToward. Kept: render engine and its cursor, lock path (mouselook keeps the weld), Inspect, cursor lens, nudges, DWM centring, cursor tint, edgeClip, churny apps, device-lost backstop. Old keys in user inis are ignored. 709 insertions, 3656 deletions.
Verified on this PC with all four PRs combined (signed UIAccess deploy): unit suite passes; frame-capture harness: held-button shake 0 jumps (27 writes / 564 moves), free and forced-lock pointer 0 px spread at ~6x; unreadable-ini test passes; tray layout key mid-zoom keeps the zoom; Inspect enters and exits cleanly (the crosshair is capture-excluded, so it was not seen by the capture). Not tested: mouselook in a real game (pointer hidden), which keeps the weld path.
🤖 Generated with Claude Code
https://claude.ai/code/session_011zPmivSAQeivGUdBjTsaMu