Skip to content

fix(ios): publish final IME state before legacy text - #94

Merged
bytemain merged 1 commit into
staging2from
jony/task80-ios-ime-commit-order
Jul 31, 2026
Merged

fix(ios): publish final IME state before legacy text#94
bytemain merged 1 commit into
staging2from
jony/task80-ios-ime-commit-order

Conversation

@bytemain

@bytemain bytemain commented Jul 30, 2026

Copy link
Copy Markdown
Member

Summary

  • publish the complete iOS text input state before the legacy text callback for both marked and committed text
  • route both callbacks through one production KRTextInputEventSequencer and one frozen native snapshot
  • bind large marked-to-committed diagnostics to one uninterrupted edit session; blur and every programmatic text-state mutation invalidate pending attribution
  • add a native executable fixture for callback order/snapshot identity and same-session vs blur/controlled-sync attribution
  • cover the observed 31-character marked text to 3-character commit in Compose, verifying the legacy echo is consumed with no controlled native writeback

Validation

  • tools/ios-renderer-tests/run-text-input-event-sequencer-test.sh
  • ./gradlew :compose:testDebugUnitTest
  • ./gradlew :core:compileKotlinIosSimulatorArm64 :compose:compileKotlinIosSimulatorArm64 :compose:compileTestKotlinIosSimulatorArm64
  • xcodebuild -workspace iosApp/iosApp.xcworkspace -scheme OpenKuiklyIOSRender -configuration Debug -sdk iphonesimulator -destination 'generic/platform=iOS Simulator' CODE_SIGNING_ALLOWED=NO GCC_TREAT_WARNINGS_AS_ERRORS=YES SWIFT_TREAT_WARNINGS_AS_ERRORS=YES build
  • actionlint -ignore SC1083 .github/workflows/compose-pr.yml
  • shellcheck tools/ios-renderer-tests/run-text-input-event-sequencer-test.sh

Scope / caveat

This closes the deterministic callback-order defect observed at the candidate-commit boundary. The original one-off crash stack is entirely inside UIKit/TextKit on iOS 27, so source/unit/build validation must not be represented as physical-device crash closure until that OS/device path is reproduced.

@bytemain
bytemain force-pushed the jony/task80-ios-ime-commit-order branch 2 times, most recently from 54a951f to 5ec2c44 Compare July 31, 2026 00:11
Signed-off-by: Jony <raft-mobile-jony@mail.build>
@bytemain
bytemain force-pushed the jony/task80-ios-ime-commit-order branch from 5ec2c44 to e747501 Compare July 31, 2026 00:24
@bytemain
bytemain merged commit e01902b into staging2 Jul 31, 2026
6 checks passed
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