Skip to content

Preserve protected text and keep Writing Tools sessions active during edits - #455

Merged
simonbs merged 1 commit into
mainfrom
codex/writing-tools-followups
Oct 25, 2026
Merged

simonbs merged 1 commit into
mainfrom
codex/writing-tools-followups

Conversation

@simonbs

@simonbs simonbs commented Oct 25, 2026 •

Copy link
Copy Markdown
Owner

Writing Tools previously ended as soon as the user typed or undid an edit, and hosts could not protect code or other literal text. Add a current-text exclusion provider, native exclusion attributes, and replacement integrity checks. Report ordinary edits and undo/redo through the coordinator while separating suggestion checkpoints from user undo history. Reentrant document switches cannot apply an old indentation selection.

Explicit selections honor exclusions. Unsupported bulk edits and generated syntax changes that alter protection outside the replacement retire their contexts. No dedicated button or custom proofreading UI is added. The README documents why iOS 27's public grammar checker does not by itself supply a complete native presentation workflow for this custom editor.

Validation: all 231 framework unit tests pass on iOS 18.6, including protected ranges, active sessions, rendering, indentation, undo, and reentrant cancellation. Strict SwiftLint passes for changed implementation/tests. App integration tests with a local override passed on iOS 26.5. Live Apple Intelligence interaction remains unverified in this change.

Matching exact dependency update: simonbs/TreeSitterLanguages#37.

@simonbs
simonbs marked this pull request as ready for review October 25, 2026 16:46
@simonbs
simonbs merged commit a10c06a into main Oct 25, 2026
9 checks passed
@simonbs
simonbs deleted the codex/writing-tools-followups branch October 25, 2026 16:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant