Repository navigation
fix: retry unresolved sparse focus ownership - #348
Merged
Merged
Conversation
Contributor
|
I'll fix CI failures and address comments from users with write access. I'll skip comments containing "(aside)".
|
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.
Summary
Reuse a cached sparse focus row only when the native responder still matches and that row remains live. A nil or removed row now retries the existing coordinate lookup on the next ownership refresh; a valid cached row keeps its identity even when geometry changes. No new API, timer, pin source, schema, dependency, or default is introduced.
The existing full-width identifier test now requires an active native field editor and verifies that it is the window's first responder before waiting for a pinned-row callback.
Validation: the actual cache-decision source fragment was executed in an isolated Swift counterfactual without AppKit: the base failed nil/invalid-cache recovery, the change passed both, and valid-row identity was retained. The temporary harness was removed.
swift build --build-testspassed; existing pure Swift contracts passed 8/8, OCaml build/tests passed 234/234, and schema tests passed 12/12. Strict Swift formatting still reports seven identical public-base diagnostics outside the changed lines; no new diagnostics.CI: all 16 checks passed. Apple logs explicitly show the full-width callback test passing and a complete Swift summary of 212 tests in 14 suites; the existing bounded native test also passed separately.
Evidence boundary: no AppKit/window test was rerun locally. The stronger native preconditions were compiled locally and exercised by the passing callback test in CI; that test does not deterministically exercise both cache-recovery branches. The earlier
pins=[]assertion reproduces on untouched public base, but its actual responder/geometry cause remains unproven; this PR fixes the independently established cache-recovery hole, not a claimed diagnosis of those logs.Link to Devin session: https://app.devin.ai/sessions/eccad85c243745debb033bc62ba68c4e
Open in Devin Desktop: https://app.devin.ai/desktop/session/eccad85c243745debb033bc62ba68c4e?variant=devin
Requested by: @tiensonqin