Skip to content

v0.6.0

Latest

Choose a tag to compare

@github-actions github-actions released this 23 Aug 23:01
· 10 commits to main since this release

v0.6.0 — Major Feature Release

Full changelog from v0.5.1. Jump from v0.5.1 to v0.6.0 (skipped v0.8.0 which was renamed for semantic versioning).


New Features

Preference Dialog

  • 6-tab GTK3 settings UI (General, Model, Engine, Window, User Dictionary, Shortcuts) — accessible from IBus menu or via ibus-engine-handwrite-chinese --setup

On-Demand Model Download

  • Download PP-OCRv6 models (tiny/small/medium) directly from the preference dialog
  • Automatic pkexec permission elevation for system-wide install
  • Auto-download prompt when selecting a missing model tier

Configurable Keyboard Shortcuts

  • Customize all keybindings (ESC, Enter, Backspace, page up/down, cycle theme, open settings) via the Shortcuts tab

User Dictionary

  • Per-user stroke→character learning via local SQLite database
  • Boosts recognized characters you select in future recognition

TOML Configuration System

  • All settings stored in ~/.config/ibus-handwrite-chinese/config.toml
  • Overridable via IBUS_HANDWRITE_* environment variables
  • Settings: theme, log level, model tier, stroke width, window dimensions, momentum, keybindings, user dict options

Light Theme & HiDPI Support

  • Light/dark/auto theme cycling
  • HiDPI-aware rendering with per-monitor scale factor

Structured Logging

  • Converted to Python logging module with RotatingFileHandler
  • Configurable log level and log path via preference dialog

SHA256 Model Verification

  • SHA256 integrity check on downloaded PP-OCRv6 models
  • Fallback download from mirror when primary source fails

Bug Fixes (13 total)

  1. Dict index corruption: line.strip() stripped U+3000 (ideographic space) from dict entries, shifting character indices. Fixed with line.rstrip('\n').
  2. Confidence pooling: np.mean averaged across all CTC time steps including blank frames, diluting confidence by ~10×. Fixed with np.max (MAX pooling).
  3. Stroke line width: Increased from 6px to 8px to match training data distribution.
  4. ESC key reliability & Enter pass-through: ESC state machine refined — Enter only commits when candidates exist, passes through otherwise.
  5. --test mode keyboard focus: Fixed set_accept_focus(False) blocking GTK keyboard events.
  6. Firefox ESC compatibility: ESC now handled regardless of IBUS_RELEASE_MASK press/release state; 150ms debounce prevents double-fire.
  7. ESC pause when no text field focused: Removed timer, set accept_focus(True) in do_enable().
  8. Auto-pause on non-text area focus loss: Added focus-out-event handler with 50ms debounce for Firefox title bar / desktop clicks.
  9. present() skipped on second activation: Always call present() regardless of _focused_since_enable.
  10. X11 property flush timing: Call set_accept_focus(True) in do_enable() before present() so X11 flushes the WM_HINTS property.
  11. Model download permission error: Download to /tmp instead of root-owned dir; use pkexec cp fallback.
  12. Display stroke width ignored preference: Cairo drawing now reads CONFIG["engine"]["stroke_width"] instead of hardcoding.
  13. Config cleanup: Removed dead keys model.variant and engine.max_strokes.

Packaging

  • Debian/Ubuntu/Mint .deb package
  • Fedora/openSUSE .rpm package
  • Arch Linux PKGBUILD (reference in packaging/)
  • Cross-distro bootstrap: bash <(curl -s .../bootstrap.sh) auto-detects distro

CI/CD

  • 21-job CI matrix: lint, bootstrap, install-deps, GTK write tests across Debian 11/12, Ubuntu 22.04/24.04, Fedora 40/41/latest, Arch Linux, openSUSE Leap/Tumbleweed
  • Automated release: builds .deb, .rpm, source tarball, tests packages on all distros, uploads to GitHub Release

Recognition Accuracy

Metric Result
Top-1 accuracy 40/40 (100%)
Average confidence 94.97%
Similar pairs tested 7 groups, 14/14 correct

Validated with 40 real handwriting characters including 7 similar-pair groups (土/士, 未/末, 日/曰, 人/入, 大/太, 已/己, 上/下).


Full changelog: see README.md