Skip to content

Release LeanTypeDual 3.11.0#120

Draft
AsafMah wants to merge 5 commits into
devfrom
chore/release-3.11.0
Draft

Release LeanTypeDual 3.11.0#120
AsafMah wants to merge 5 commits into
devfrom
chore/release-3.11.0

Conversation

@AsafMah

@AsafMah AsafMah commented Jul 12, 2026

Copy link
Copy Markdown
Owner

Summary

  • Bump LeanTypeDual to 3.11.0 (versionCode 4100) after the LeanBitLab/LeanType v3.9.5 sync in merge: sync LeanBitLab v3.9.5 #118.
  • Add dated changelog, Fastlane metadata, and release notes for direct IME switching, persistent custom layouts, suggestion controls, Java gesture improvements, Text Expander fixes, and dictionary hardening.
  • Refresh the downloadable dictionary catalog to the current repository inventory and fix tools/release.py to read dictionary metadata as UTF-8 on Windows.
  • Fix direct target-IME switching on Android 6–8 by routing through the legacy InputMethodManager APIs, with positive and null-token SDK-27 regressions.
  • Keep ordinary lowercase words such as to, no, and meet lowercase when typing or swiping without Shift, while preserving I, acronyms, mixed-case words, and shifted/locked behavior.

Refs #119.

Verification completed

  • ./gradlew.bat :app:assembleRelease --no-daemon --console=plain — all four variants build successfully.
  • Focused offline-debug regressions pass: KeySpecParserTest, KeyboardStateTest, DirectImeSwitchTest, ImeCompatTest, SuggestTest, SwipeGestureEngineTest, DictionaryGroupTest, and SettingsContainerTest.
  • Capitalization regression suites pass for exact tap/swipe samples, captured OFF/AUTO_SHIFTED/SHIFT_LOCKED modes, I/RJ/iPhone, live-converge behavior, leading punctuation, supplementary-plane letters, and Turkish dotted-I; broader runTests variants of SuggestTest, InputLogicTest, and StringUtilsTest pass.
  • python -m unittest tools.test_release passes.
  • GitHub Actions Unit tests run #29364972720 passes for commit fb071ffb8.
  • All 276 dictionary catalog URLs were HEAD-checked: 145 emoji CLDR, 50 experimental, and 81 main; no failures.
  • APK manifests report 3.11.0 / 4100, expected package IDs and minSdk values, and no INTERNET permission in Offline/Offline Lite.
  • High-effort independent cross-model reviews completed. The pre-Android-9 direct-IME, null-token, tap/swipe capitalization, and first-letter Unicode findings were reproduced, fixed, and regression-tested; final assessments had no unresolved correctness blocker.

Hard release gates — do not merge/tag/publish yet

  • Signing identity unavailable: the local keystore.properties contains placeholder credentials, and all four final APKs fail apksigner verify --verbose --print-certs with no release signature. Do not generate a replacement key; obtain the established LeanTypeDual release credentials, rebuild, and confirm the certificate fingerprint.
  • Physical-device smoke unavailable: wireless ADB endpoints for both phone and tablet are offline. Signed APKs must be installed and exercised on both devices before merge/tag/publication.
  • Translation refresh was not applied because Weblate returned a bot-challenge HTML payload instead of the ZIP.
  • Khipro mapping refresh was not applied because the configured upstream touchscreen.json source has been retired (404); the checked-in mapping is unchanged.

Required device smoke

On both phone and tablet with a correctly signed Standard Full APK:

  • Confirm upgrade install succeeds and settings/dictionaries are retained.
  • Enable/select LeanTypeDual and type in a real editor.
  • Verify direct IME switching with both an IME-only target and a target subtype.
  • Verify a custom layout slot survives symbols mode, rotation, and keyboard reload.
  • Toggle multi-word suggestion filtering and verify visible behavior.
  • Verify to, no, and meet remain lowercase for both taps and swipes without Shift; verify shifted and locked gesture casing still produces title case and all caps.
  • Re-run apksigner verify --verbose --print-certs on every release APK and compare the certificate SHA-256 to the established release identity.

After those gates pass: mark this PR ready, merge into dev, promote dev to main, tag v3.11.0, and publish the signed artifacts.

@AsafMah AsafMah mentioned this pull request Jul 12, 2026
12 tasks
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