Skip to content

Release 0.0.10-beta.1: landscape insets, one-hand mode, keyboard height drag, double pinyin and wubi, handwriting, self-built pinyin engine, lite APK - #137

Merged
Slacker-LLC merged 2 commits into
mainfrom
release/0.0.10-beta.1
Oct 14, 2026
Merged

Slacker-LLC merged 2 commits into
mainfrom
release/0.0.10-beta.1

Conversation

@Slacker-LLC

Copy link
Copy Markdown
Owner

Release 0.0.10-beta.1 (versionCode 1001). Beta pre-release, not the stable release.

Highlights

  • Landscape alignment with the reference skin: the key area is inset by the reference fractions (6.485% per side for the 26-key and digit surfaces, 9.5% for the nine-key), the toolbar by 8.2% and the expanded candidate strip by 9.5% (ReferenceLandscapeInsets), with a landscape regression test.
  • One-hand mode and keyboard height drag from the toolbar, with the height kept per orientation.
  • New input methods: double pinyin (小鹤 and 自然码), Wubi 86, handwriting (stroke-table matcher) — plus the handwriting entry in the 切换键盘 panel.
  • Clean-room pinyin engine (engine/): full-path syllable DAG, affix expansion, Viterbi bigram bonus and fuzzy-pinyin penalties, used when the imported data is present.
  • Voice: hot words, endpointing (VAD) policy, model import (zip/tar with zip-slip checks) from 设置 → 语音模型.
  • English: local word-list completion; floating keyboard remembers its position per orientation, and the panel opens from 切换键盘.
  • Lite APK: a second release asset without the offline voice models (OPENIME_LITE=1), same key, installs over the full build.
  • Clipboard history: copy watcher with suppression fingerprints; clipboard panel captures no longer persist after the panel closes.
  • Candidate preview filtered to Chinese-only entries (CandidatePreviewPolicy).

Data

scripts/import_doubao_data.py and scripts/build_imengine_data.py regenerate the merged dictionaries locally. The four tracked data files they rewrite and the git-ignored derived assets stay out of the repository; CI builds with the dictionaries already in git.

Checks

  • python3 scripts/release_check.py check → OK: 0.0.10-beta.1 (versionCode 1001)
  • Unit tests, 133 instrumented tests on the emulator, :app:lintRelease: pass
  • scripts/typing_stress_e2e.py on the emulator: 14/14 cases pass

🤖 Generated with Claude Code

Slacker-LLC and others added 2 commits October 14, 2026 20:26
…ode, keyboard height drag, double pinyin and wubi, handwriting, self-built pinyin engine, importable voice model, lite APK

Co-Authored-By: Claude Code <[email protected]>
Below API 28 a ClipboardManager builds its Handler on the calling thread, so
getSystemService throws "Can't create handler inside thread that has not
called Looper.prepare()". The API 26 compatibility job calls clearAll() from
the instrumentation thread and failed on it. Every caller in the app runs on
the UI thread, so the read is skipped where it cannot be made.

Co-Authored-By: Claude Code <[email protected]>
@Slacker-LLC
Slacker-LLC merged commit cb3bc2a into main Oct 14, 2026
7 checks passed
@Slacker-LLC
Slacker-LLC deleted the release/0.0.10-beta.1 branch October 14, 2026 14:45
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